detached 7d292f2

initial commit

commit
7d292f29a68fd087b8058504ca73618ab33315eb
author
jwijenbergh · · 2023-06-17 08:52 UTC
committer
jwijenbergh · · 2023-08-15 10:50 UTC
parent
none (root commit)
signature
GPG Unverified1A2298F6C34F96E5 The key is unknown
696 files · +745353 -0
A LICENSE +21 -0
@@ -0,0 +1,21 @@
1+MIT License
2+
3+Copyright (c) 2023 Jeroen Wijenbergh
4+
5+Permission is hereby granted, free of charge, to any person obtaining a copy
6+of this software and associated documentation files (the "Software"), to deal
7+in the Software without restriction, including without limitation the rights
8+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+copies of the Software, and to permit persons to whom the Software is
10+furnished to do so, subject to the following conditions:
11+
12+The above copyright notice and this permission notice shall be included in all
13+copies or substantial portions of the Software.
14+
15+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+SOFTWARE.
A README.md +95 -0
@@ -0,0 +1,95 @@
1+# Puregotk
2+
3+> **_NOTE:_** This library is currently expiremental and needs thorough testing. Some APIs might be incorrectly exposed
4+
5+Autogenerated GTK4+Adwaita bindings for Go leveraging [purego](https://github.com/ebitengine/purego)
6+
7+# Motivation
8+I created this library because I found that alternative libraries using Cgo had much too slow compilation speed. For my laptop around 15 minutes to build a simple example for [gotk3](https://github.com/gotk3/gotk3) and also [gotk4](https://github.com/diamondburned/gotk4).
9+This is not a fault for these libraries as CGo compilation is just inherently slow in Go. In this project I want to test a new approach by levering purego which allows you to load libraries using dlopen without needing cgo.
10+
11+Compilation speed currently is around 40 seconds for me on basic examples.
12+
13+## Advantages
14+
15+No Cgo needed, thus:
16+* Easy cross compilation
17+* No C toolchain needed
18+* Much faster compile times than alternatives like [gotk3](https://github.com/gotk3/gotk3) & [gotk4](https://github.com/diamondburned/gotk4)
19+
20+## Disadvantages
21+
22+Limitations of this library as compared to the alternatives using cgo:
23+* Some APIs are not possible due to purego not currently supporting struct arguments (that are not pointers)
24+* Currently only support for x86, for ARM I need to figure out how to get callbacks working in purego and contribute to purego
25+
26+# Planned features
27+In order of priority:
28+* General code cleanup
29+* ARM support
30+* Support for OS other than Linux (I only test on Linux currently)
31+* GTK 3 support
32+
33+# Basic example
34+
35+```go
36+package main
37+
38+import (
39+ "os"
40+ "github.com/jwijenbergh/puregotk/v4/gtk"
41+ "github.com/jwijenbergh/puregotk/v4/gio"
42+)
43+
44+func main() {
45+ app := gtk.NewApplication("com.github.jwijenbergh.puregotk.gtk4.hello", gio.GApplicationFlagsNoneValue)
46+ defer app.Unref()
47+ app.ConnectActivate(func (_ gio.Application) {
48+ activate(app)
49+ })
50+
51+ if code := app.Run(len(os.Args), os.Args); code > 0 {
52+ os.Exit(code)
53+ }
54+}
55+
56+func activate(app gtk.Application) {
57+ var window gtk.ApplicationWindow
58+ gtk.NewApplicationWindow(app).Cast(&window)
59+ window.SetTitle("purego")
60+ window.SetChild(gtk.NewLabel("Hello, World!"))
61+ window.SetDefaultSize(500, 500)
62+ window.Show()
63+}
64+```
65+
66+Save this to a main.go and then build & run with
67+
68+```bash
69+CGO_ENABLED=0 go run main.go
70+```
71+
72+> **_NOTE:_** Passing CGO_ENABLED=0 is currently required
73+
74+# Generating the library
75+This library is automatically generated by reading GIR files.
76+
77+To generate the library, run:
78+
79+```bash
80+./gen.sh
81+```
82+
83+In the root of the project. This needs:
84+
85+- Go >= 1.20
86+- [goimports](https://pkg.go.dev/golang.org/x/tools/cmd/goimports)
87+
88+# License
89+
90+[MIT](./LICENSE)
91+
92+# Acknowledgements
93+* [Purego](https://github.com/ebitengine/purego) and the ebitengine team for their great work
94+* [gotk4](https://github.com/diamondburned/gotk4) for some GIR type definitions
95+* [gtk](https://gitlab.com/gnome/gtk) of course
A gen.go +47 -0
@@ -0,0 +1,47 @@
1+package main
2+
3+import (
4+ "os"
5+ "path/filepath"
6+ "strings"
7+ "text/template"
8+
9+ "github.com/jwijenbergh/puregotk/internal/gir/pass"
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+//go:generate go run gen.go
14+
15+func main() {
16+ dir := "v4"
17+ os.RemoveAll(dir)
18+ var girs []string
19+ filepath.Walk("internal/gir/spec", func(path string, f os.FileInfo, err error) error {
20+ if !strings.HasSuffix(path, ".gir") {
21+ return nil
22+ }
23+ girs = append(girs, path)
24+ return nil
25+ })
26+ p, err := pass.New(girs)
27+ if err != nil {
28+ panic(err)
29+ }
30+ // collect basic type info
31+ p.First()
32+
33+ // Create the template
34+ gotemp, err := template.New("go").Funcs(template.FuncMap{"conv": util.ConvertArgs, "convc": util.ConvertArgsComma}).ParseFiles("templates/go")
35+ if err != nil {
36+ panic(err)
37+ }
38+
39+ // Write go files by making the second pass
40+ p.Second(dir, gotemp)
41+
42+ // Finally copy some extra code that we want in the API
43+ data, err := os.ReadFile("templates/gobject")
44+ if err == nil {
45+ os.WriteFile("v4/gobject/more.go", data, 0o644)
46+ }
47+}
A gen.sh +18 -0
@@ -0,0 +1,18 @@
1+#!/usr/bin/env bash
2+
3+set -e
4+
5+echo "generating go files..."
6+go generate
7+
8+tmp=$(mktemp -d)
9+
10+echo "making sure imports are correct..."
11+GOPATH="$tmp" goimports --srcdir . -w v4 || { rm -r "$tmp"; exit 1; }
12+rm -r "$tmp"
13+
14+echo "formatting files..."
15+go fmt "github.com/jwijenbergh/puregotk/v4/..."
16+
17+echo "running go vet..."
18+go vet ./v4/...
A go.mod +7 -0
@@ -0,0 +1,7 @@
1+module github.com/jwijenbergh/puregotk
2+
3+go 1.20
4+
5+require github.com/jwijenbergh/purego v0.0.0-20230815104821-b26146068cfb
6+
7+require golang.org/x/sys v0.11.0 // indirect
A go.sum +4 -0 generated file: collapsed
A internal/core/core.go +138 -0
@@ -0,0 +1,138 @@
1+// package core implements core functionality for the generated files
2+// this core lib is imported by the generated code
3+package core
4+
5+import (
6+ "bytes"
7+ "fmt"
8+ "os"
9+ "os/exec"
10+ "path/filepath"
11+ "strings"
12+
13+ "github.com/jwijenbergh/purego"
14+)
15+
16+func PuregoSafeRegister(fptr interface{}, handle uintptr, name string) error {
17+ sym, err := purego.Dlsym(handle, name)
18+ if err != nil {
19+ return err
20+ }
21+ purego.RegisterFunc(fptr, sym)
22+ return nil
23+}
24+
25+// paths to where the shared object files should be located
26+// TODO: This needs to be split in architecture and more paths should be added
27+var paths = []string{
28+ "/usr/lib/x86_64-linux-gnu/",
29+}
30+
31+// names is a lookup from library names to shared object filenames
32+var names = map[string][]string{
33+ "ADW": {"libadwaita-1.so"},
34+ "CAIRO": {"libcairo.so"},
35+ "GDK": {"libgtk-4.so"},
36+ "GDKPIXBUF": {"libgdk_pixbuf-2.0.so"},
37+ "GIO": {"libgio-2.0.so"},
38+ "GLIB": {"libglib-2.0.so"},
39+ "GMODULE": {"libgmodule-2.0.so"},
40+ "GOBJECT": {"libgobject-2.0.so"},
41+ "GRAPHENE": {"libgraphene-1.0.so"},
42+ "GSK": {"libgtk-4.so"},
43+ "GTK": {"libgtk-4.so"},
44+ "PANGO": {"libpango-1.0.so"},
45+ "PANGOCAIRO": {"libpangocairo-1.0.so"},
46+}
47+
48+// pkgConfNames is a lookup from library names to pkg-config library names
49+// TODO: Get this from the package name in the gir files with a fallback to gtk's package name
50+var pkgConfNames = map[string]string{
51+ "ADW": "libadwaita-1",
52+ "CAIRO": "cairo",
53+ "GDK": "gtk4",
54+ "GDKPIXBUF": "gdk-pixbuf-2.0",
55+ "GIO": "gio-2.0",
56+ "GLIB": "glib-2.0",
57+ "GMODULE": "gmodule-2.0",
58+ "GOBJECT": "gobject-2.0",
59+ "GRAPHENE": "graphene-gobject-1.0",
60+ "GSK": "gtk4",
61+ "GTK": "gtk4",
62+ "PANGO": "pango",
63+ "PANGOCAIRO": "pangocairo",
64+}
65+
66+// findSo tries to find a shared object from a path and a library name
67+// It does this by mapping the library name to a suitable shared object filename and then trying some suffixes
68+func findSo(path string, name string) string {
69+ for _, n := range names[name] {
70+ suffixes := []string{"", ".0", ".1", ".2"}
71+ fn := filepath.Join(path, n)
72+ for _, s := range suffixes {
73+ if _, err := os.Stat(fn + s); err == nil {
74+ return fn
75+ }
76+ }
77+ }
78+ return ""
79+}
80+
81+// findPkgConf finds a shared object file with pkg-config
82+// it does this by running pkg-config --libs-only-L libname
83+// and then it loops over the directories returned and finds a suitable one
84+func findPkgConf(name string) string {
85+ // try to get with pkg-config
86+ cmd := exec.Command("pkg-config", "--libs-only-L", pkgConfNames[name])
87+ var out, outerr bytes.Buffer
88+ cmd.Stdout = &out
89+ cmd.Stderr = &outerr
90+ err := cmd.Run()
91+ if err != nil {
92+ fmt.Fprintf(os.Stderr, "pkg-config, failed with: %v and stderr: %s\n", err, outerr.String())
93+ return ""
94+ }
95+ outs := strings.Split(out.String(), "-L")
96+ for _, v := range outs {
97+ c := strings.TrimSpace(v)
98+ if c == "" {
99+ continue
100+ }
101+ g := findSo(c, name)
102+ if g != "" {
103+ return g
104+ }
105+ }
106+ return ""
107+}
108+
109+// GetPath gets a shared object file from a library name
110+// it does it in the following order
111+// see if PUREGOTK_LIBNAME_PATH is set
112+// go over the hardcoded paths
113+// find a library name with pkg-config
114+// panic if failed
115+// TODO: Hardcore a library shared object with linker -X flag
116+// This is useful for packaging
117+func GetPath(name string) string {
118+ // try to get from env var
119+ ev := fmt.Sprintf("PUREGOTK_%s_PATH", name)
120+ if v := os.Getenv(ev); v != "" {
121+ return v
122+ }
123+
124+ // try to loop over paths
125+ for _, p := range paths {
126+ g := findSo(p, name)
127+ if g != "" {
128+ return g
129+ }
130+
131+ }
132+ g := findPkgConf(name)
133+ if g != "" {
134+ return g
135+ }
136+
137+ panic(fmt.Sprintf("Path for library: %s not found. Please set the path to this library shared object file manually with env variable: %s. Or make sure pkg-config is setup correctly", strings.ToLower(name), ev))
138+}
A internal/gir/pass/pass.go +303 -0
@@ -0,0 +1,303 @@
1+// package pass implements the first and second pass to go from gir files to go files
2+// the first pass collects basic type information
3+// the second pass uses the basic type information to go over the gir files again and convert it to go files
4+package pass
5+
6+import (
7+ "encoding/xml"
8+ "fmt"
9+ "os"
10+ "strings"
11+ "text/template"
12+
13+ "github.com/jwijenbergh/puregotk/internal/gir/types"
14+ "github.com/jwijenbergh/puregotk/internal/gir/util"
15+)
16+
17+type Pass struct {
18+ Parsed []types.Repository
19+ Types types.KindMap
20+}
21+
22+// New creates a new pass struct by parsing gir files in the string slice
23+// This pass object will then be used to go over these files multiple times up until we have the full info to convert it to go files
24+func New(files []string) (*Pass, error) {
25+ p := Pass{
26+ Parsed: make([]types.Repository, len(files)),
27+ Types: make(types.KindMap),
28+ }
29+ for i, f := range files {
30+ b, err := os.ReadFile(f)
31+ if err != nil {
32+ return nil, err
33+ }
34+ var r types.Repository
35+ err = xml.Unmarshal(b, &r)
36+ if err != nil {
37+ return nil, err
38+ }
39+ p.Parsed[i] = r
40+ }
41+ return &p, nil
42+}
43+
44+func (p *Pass) collectTypes(r types.Repository) {
45+ ns := r.Namespaces[0]
46+ for _, cls := range ns.Classes {
47+ p.Types.Add(ns.Name, cls.Name, types.ClassesType, cls)
48+ }
49+ for _, rec := range ns.Records {
50+ p.Types.Add(ns.Name, rec.Name, types.RecordsType, rec)
51+ }
52+ for _, en := range ns.Enums {
53+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
54+ p.Types.Add(ns.Name, en.Name, types.AliasType, en)
55+ }
56+ for _, cb := range ns.Callbacks {
57+ p.Types.Add(ns.Name, cb.Name, types.CallbackType, cb)
58+ }
59+ for _, b := range ns.Bitfields {
60+ // TODO: This probably shouldn't be aliastype, but we should make dedicated types
61+ p.Types.Add(ns.Name, b.Name, types.AliasType, b)
62+ }
63+ for _, inter := range ns.Interfaces {
64+ p.Types.Add(ns.Name, inter.Name, types.InterfacesType, inter)
65+ }
66+}
67+
68+// First does a "first pass" meaning it collects basic type information for all the repositories
69+func (p *Pass) First() {
70+ for _, r := range p.Parsed {
71+ p.collectTypes(r)
72+ }
73+}
74+
75+func (p *Pass) writeGo(r types.Repository, gotemp *template.Template, dir string) {
76+ ns := r.Namespaces[0]
77+
78+ aliases := make(map[string][]types.AliasTemplate)
79+ enums := make(map[string][]types.EnumTemplate)
80+ var files []string
81+ for _, el := range ns.Bitfields {
82+ temp := el.Template(ns.Name)
83+ fn := el.FilenameSafe()
84+ files = append(files, fn)
85+ enums[fn] = append(enums[fn], temp)
86+ }
87+
88+ for _, el := range ns.Enums {
89+ temp := el.Template(ns.Name)
90+ fn := el.FilenameSafe()
91+ files = append(files, fn)
92+ enums[fn] = append(enums[fn], temp)
93+ }
94+
95+ records := make(map[string][]types.RecordTemplate)
96+ recordLookup := make(map[string]bool)
97+ for _, rec := range ns.Records {
98+ name := util.SnakeToCamel(rec.Name)
99+ fields := make([]types.RecordField, len(rec.Fields))
100+ fn := rec.FilenameSafe()
101+ files = append(files, fn)
102+ for _, f := range rec.Fields {
103+ _type := f.Translate(ns.Name, p.Types)
104+ if _type == "" {
105+ continue
106+ }
107+ fields = append(fields, types.RecordField{
108+ Name: util.SnakeToCamel(f.Name),
109+ Type: _type,
110+ })
111+ }
112+ records[fn] = append(records[fn], types.RecordTemplate{
113+ Name: name,
114+ Doc: rec.Doc.StringSafe(),
115+ Fields: fields,
116+ })
117+ recordLookup[name] = true
118+ }
119+
120+ callbacks := make(map[string][]types.CallbackTemplate)
121+ // set every callback equal to uintptr as well
122+ for _, cb := range ns.Callbacks {
123+ fn := cb.FilenameSafe()
124+ files = append(files, fn)
125+ cbT := types.CallbackTemplate{
126+ Doc: cb.Doc.StringSafe(),
127+ Name: cb.Name,
128+ Args: cb.Parameters.Template(ns.Name, "", p.Types),
129+ Ret: cb.ReturnValue.Template(ns.Name, "", p.Types),
130+ }
131+ callbacks[fn] = append(callbacks[fn], cbT)
132+ }
133+
134+ interfaces := make(map[string][]types.InterfaceTemplate)
135+ for _, inter := range ns.Interfaces {
136+ fn := inter.FilenameSafe()
137+ files = append(files, fn)
138+ interfaces[fn] = append(interfaces[fn], types.ConvertInterface(ns.Name, "", inter, nil, p.Types))
139+ }
140+
141+ for _, union := range ns.Unions {
142+ fn := union.FilenameSafe()
143+ files = append(files, fn)
144+ name := util.SnakeToCamel(union.Name)
145+ interT := types.AliasTemplate{
146+ Doc: union.Doc.StringSafe(),
147+ Name: name,
148+ // structs are not yet supported in CGO
149+ Value: "uintptr",
150+ }
151+ aliases[fn] = append(aliases[fn], interT)
152+ }
153+
154+ for _, alias := range ns.Aliases {
155+ fn := alias.FilenameSafe()
156+ files = append(files, fn)
157+ typeName := alias.Type.Template(ns.Name, p.Types)
158+ if typeName == "" {
159+ typeName = "uintptr"
160+ }
161+ name := util.SnakeToCamel(alias.Name)
162+ aliasT := types.AliasTemplate{
163+ Doc: alias.Doc.StringSafe(),
164+ Name: name,
165+ // structs are not yet supported in CGO
166+ Value: typeName,
167+ }
168+ aliases[fn] = append(aliases[fn], aliasT)
169+ }
170+
171+ functions := make(map[string][]types.FuncTemplate)
172+ for _, f := range ns.Functions {
173+ name := util.SnakeToCamel(f.Name)
174+ if p.Types.Kind(ns.Name, name) != types.UnknownType {
175+ name = "New" + name
176+ }
177+ fn := f.FilenameSafe()
178+ files = append(files, fn)
179+ functions[fn] = append(functions[fn], types.FuncTemplate{
180+ Name: name,
181+ CName: f.CIdentifier,
182+ Doc: f.Doc.StringSafe(),
183+ Args: f.Parameters.Template(ns.Name, "", p.Types),
184+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
185+ })
186+ }
187+
188+ classes := make(map[string][]types.ClassTemplate)
189+ for _, cls := range ns.Classes {
190+ implemented := make(map[string]bool)
191+ constructors := make([]types.FuncTemplate, len(cls.Constructors))
192+ fn := cls.FilenameSafe()
193+ files = append(files, fn)
194+
195+ for i, c := range cls.Constructors {
196+ name := util.SnakeToCamel(c.Name)
197+ constructors[i] = types.FuncTemplate{
198+ Name: name,
199+ CName: c.CIdentifier,
200+ Doc: c.Doc.StringSafe(),
201+ Args: c.Parameters.Template(ns.Name, "", p.Types),
202+ Ret: c.ReturnValue.Template(ns.Name, "", p.Types),
203+ }
204+ }
205+ signals := make([]types.SignalsTemplate, len(cls.Signals))
206+ for i, s := range cls.Signals {
207+ signals[i] = types.SignalsTemplate{
208+ Doc: s.Doc.StringSafe(),
209+ Name: util.DashToCamel(s.Name),
210+ CName: s.Name,
211+ Args: s.Parameters.Template(ns.Name, "", p.Types),
212+ Ret: s.ReturnValue.Template(ns.Name, "", p.Types),
213+ }
214+ }
215+ receivers := make([]types.FuncTemplate, len(cls.Methods))
216+ for i, f := range cls.Methods {
217+ name := util.SnakeToCamel(f.Name)
218+ implemented[name] = true
219+ receivers[i] = types.FuncTemplate{
220+ Doc: f.Doc.StringSafe(),
221+ Name: name,
222+ CName: f.CIdentifier,
223+ Args: f.Parameters.Template(ns.Name, "", p.Types),
224+ Ret: f.ReturnValue.Template(ns.Name, "", p.Types),
225+ }
226+ }
227+ var interfaces []types.InterfaceTemplate
228+ for _, impl := range cls.Implements {
229+ interfaces = append(interfaces, types.GetInterfaceFuncs(ns.Name, impl.Name, implemented, p.Types))
230+ }
231+ classes[fn] = append(classes[fn], types.ClassTemplate{
232+ Doc: cls.Doc.StringSafe(),
233+ Name: cls.Name,
234+ Parent: util.NormalizeNamespace(ns.Name, cls.Parent, true),
235+ Constructors: constructors,
236+ Receivers: receivers,
237+ Interfaces: interfaces,
238+ Signals: signals,
239+ })
240+ }
241+
242+ pkgName := strings.ToLower(ns.Name)
243+ for _, fn := range files {
244+ var includesSlice []string
245+ //includesSlice := make([]string, len(includes[fn]))
246+ //i := 0
247+ //for k, v := range includes[fn] {
248+ // if v {
249+ // includesSlice[i] = k
250+ // }
251+ // i++
252+ //}
253+ methods := 0
254+ for _, i := range interfaces[fn] {
255+ for range i.Methods {
256+ methods += 1
257+ }
258+ }
259+ for _, i := range classes[fn] {
260+ for range i.Constructors {
261+ methods += 1
262+ }
263+ for range i.Receivers {
264+ methods += 1
265+ }
266+ }
267+ // we do not need to add the length of interfaces in here
268+ // as they should only be loaded when there are classes
269+ needsInit := (len(functions[fn]) + methods) > 0
270+
271+ args := types.TemplateArg{
272+ PkgName: pkgName,
273+ PkgEnv: strings.ToUpper(pkgName),
274+ NeedsInit: needsInit,
275+ Imports: includesSlice,
276+ Aliases: aliases[fn],
277+ Callbacks: callbacks[fn],
278+ Records: records[fn],
279+ Enums: enums[fn],
280+ Functions: functions[fn],
281+ Interfaces: interfaces[fn],
282+ Classes: classes[fn],
283+ }
284+
285+ os.MkdirAll(fmt.Sprintf(dir+"/%s", pkgName), 0o755)
286+
287+ f, err := os.Create(fmt.Sprintf(dir+"/%s/%s", pkgName, fn))
288+ if err != nil {
289+ panic(err)
290+ }
291+ err = gotemp.Execute(f, args)
292+ if err != nil {
293+ panic(err)
294+ }
295+
296+ }
297+}
298+
299+func (p *Pass) Second(dir string, gotemp *template.Template) {
300+ for _, r := range p.Parsed {
301+ p.writeGo(r, gotemp, dir)
302+ }
303+}
A internal/gir/spec/Adw-1.gir +29130 -0 large diff (29130 lines changed): collapsed
A internal/gir/spec/GLib-2.0.gir +83214 -0 large diff (83214 lines changed): collapsed
A internal/gir/spec/GModule-2.0.gir +522 -0
@@ -0,0 +1,522 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GLib" version="2.0"/>
10+ <package name="gmodule-2.0"/>
11+ <c:include name="gmodule.h"/>
12+ <namespace name="GModule"
13+ version="2.0"
14+ shared-library="libgmodule-2.0.so.0"
15+ c:identifier-prefixes="G"
16+ c:symbol-prefixes="g">
17+ <record name="Module" c:type="GModule" disguised="1">
18+ <doc xml:space="preserve"
19+ filename="gmodule-2.0.c"
20+ line="5">The #GModule struct is an opaque data structure to represent a
21+[dynamically-loaded module][glib-Dynamic-Loading-of-Modules].
22+It should only be accessed via the following functions.</doc>
23+ <source-position filename="gmodule.h" line="65"/>
24+ <method name="close" c:identifier="g_module_close">
25+ <doc xml:space="preserve"
26+ filename="gmodule-2.0.c"
27+ line="185">Closes a module.</doc>
28+ <source-position filename="gmodule.h" line="105"/>
29+ <return-value transfer-ownership="none">
30+ <doc xml:space="preserve"
31+ filename="gmodule-2.0.c"
32+ line="191">%TRUE on success</doc>
33+ <type name="gboolean" c:type="gboolean"/>
34+ </return-value>
35+ <parameters>
36+ <instance-parameter name="module" transfer-ownership="none">
37+ <doc xml:space="preserve"
38+ filename="gmodule-2.0.c"
39+ line="187">a #GModule to close</doc>
40+ <type name="Module" c:type="GModule*"/>
41+ </instance-parameter>
42+ </parameters>
43+ </method>
44+ <method name="make_resident" c:identifier="g_module_make_resident">
45+ <doc xml:space="preserve"
46+ filename="gmodule-2.0.c"
47+ line="204">Ensures that a module will never be unloaded.
48+Any future g_module_close() calls on the module will be ignored.</doc>
49+ <source-position filename="gmodule.h" line="109"/>
50+ <return-value transfer-ownership="none">
51+ <type name="none" c:type="void"/>
52+ </return-value>
53+ <parameters>
54+ <instance-parameter name="module" transfer-ownership="none">
55+ <doc xml:space="preserve"
56+ filename="gmodule-2.0.c"
57+ line="206">a #GModule to make permanently resident</doc>
58+ <type name="Module" c:type="GModule*"/>
59+ </instance-parameter>
60+ </parameters>
61+ </method>
62+ <method name="name" c:identifier="g_module_name">
63+ <doc xml:space="preserve"
64+ filename="gmodule-2.0.c"
65+ line="213">Returns the filename that the module was opened with.
66+
67+If @module refers to the application itself, "main" is returned.</doc>
68+ <source-position filename="gmodule.h" line="123"/>
69+ <return-value transfer-ownership="none">
70+ <doc xml:space="preserve"
71+ filename="gmodule-2.0.c"
72+ line="221">the filename of the module</doc>
73+ <type name="utf8" c:type="const gchar*"/>
74+ </return-value>
75+ <parameters>
76+ <instance-parameter name="module" transfer-ownership="none">
77+ <doc xml:space="preserve"
78+ filename="gmodule-2.0.c"
79+ line="215">a #GModule</doc>
80+ <type name="Module" c:type="GModule*"/>
81+ </instance-parameter>
82+ </parameters>
83+ </method>
84+ <method name="symbol" c:identifier="g_module_symbol">
85+ <doc xml:space="preserve"
86+ filename="gmodule-2.0.c"
87+ line="273">Gets a symbol pointer from a module, such as one exported
88+by %G_MODULE_EXPORT. Note that a valid symbol can be %NULL.</doc>
89+ <source-position filename="gmodule.h" line="117"/>
90+ <return-value transfer-ownership="none">
91+ <doc xml:space="preserve"
92+ filename="gmodule-2.0.c"
93+ line="282">%TRUE on success</doc>
94+ <type name="gboolean" c:type="gboolean"/>
95+ </return-value>
96+ <parameters>
97+ <instance-parameter name="module" transfer-ownership="none">
98+ <doc xml:space="preserve"
99+ filename="gmodule-2.0.c"
100+ line="275">a #GModule</doc>
101+ <type name="Module" c:type="GModule*"/>
102+ </instance-parameter>
103+ <parameter name="symbol_name" transfer-ownership="none">
104+ <doc xml:space="preserve"
105+ filename="gmodule-2.0.c"
106+ line="276">the name of the symbol to find</doc>
107+ <type name="utf8" c:type="const gchar*"/>
108+ </parameter>
109+ <parameter name="symbol"
110+ direction="out"
111+ caller-allocates="0"
112+ transfer-ownership="full"
113+ nullable="1">
114+ <doc xml:space="preserve"
115+ filename="gmodule-2.0.c"
116+ line="277">returns the pointer to the symbol value</doc>
117+ <type name="gpointer" c:type="gpointer*"/>
118+ </parameter>
119+ </parameters>
120+ </method>
121+ <function name="build_path" c:identifier="g_module_build_path">
122+ <doc xml:space="preserve"
123+ filename="gmodule-2.0.c"
124+ line="159">A portable way to build the filename of a module. The platform-specific
125+prefix and suffix are added to the filename, if needed, and the result
126+is added to the directory, using the correct separator character.
127+
128+The directory should specify the directory where the module can be found.
129+It can be %NULL or an empty string to indicate that the module is in a
130+standard platform-specific directory, though this is not recommended
131+since the wrong module may be found.
132+
133+For example, calling g_module_build_path() on a Linux system with a
134+@directory of `/lib` and a @module_name of "mylibrary" will return
135+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
136+directory it will return `\Windows\mylibrary.dll`.</doc>
137+ <source-position filename="gmodule.h" line="137"/>
138+ <return-value transfer-ownership="full">
139+ <doc xml:space="preserve"
140+ filename="gmodule-2.0.c"
141+ line="180">the complete path of the module, including the standard library
142+ prefix and suffix. This should be freed when no longer needed</doc>
143+ <type name="utf8" c:type="gchar*"/>
144+ </return-value>
145+ <parameters>
146+ <parameter name="directory"
147+ transfer-ownership="none"
148+ nullable="1"
149+ allow-none="1">
150+ <doc xml:space="preserve"
151+ filename="gmodule-2.0.c"
152+ line="161">the directory where the module is. This can be
153+ %NULL or the empty string to indicate that the standard platform-specific
154+ directories will be used, though that is not recommended</doc>
155+ <type name="utf8" c:type="const gchar*"/>
156+ </parameter>
157+ <parameter name="module_name" transfer-ownership="none">
158+ <doc xml:space="preserve"
159+ filename="gmodule-2.0.c"
160+ line="164">the name of the module</doc>
161+ <type name="utf8" c:type="const gchar*"/>
162+ </parameter>
163+ </parameters>
164+ </function>
165+ <function name="error" c:identifier="g_module_error">
166+ <doc xml:space="preserve"
167+ filename="gmodule-2.0.c"
168+ line="195">Gets a string describing the last module error.</doc>
169+ <source-position filename="gmodule.h" line="113"/>
170+ <return-value transfer-ownership="none">
171+ <doc xml:space="preserve"
172+ filename="gmodule-2.0.c"
173+ line="200">a string describing the last module error</doc>
174+ <type name="utf8" c:type="const gchar*"/>
175+ </return-value>
176+ </function>
177+ <function name="error_quark" c:identifier="g_module_error_quark">
178+ <return-value transfer-ownership="none">
179+ <type name="GLib.Quark" c:type="GQuark"/>
180+ </return-value>
181+ </function>
182+ <function name="open" c:identifier="g_module_open" introspectable="0">
183+ <doc xml:space="preserve"
184+ filename="gmodule-2.0.c"
185+ line="225">A thin wrapper function around g_module_open_full()</doc>
186+ <source-position filename="gmodule.h" line="95"/>
187+ <return-value>
188+ <doc xml:space="preserve"
189+ filename="gmodule-2.0.c"
190+ line="234">a #GModule on success, or %NULL on failure</doc>
191+ <type name="Module" c:type="GModule*"/>
192+ </return-value>
193+ <parameters>
194+ <parameter name="file_name"
195+ transfer-ownership="none"
196+ nullable="1"
197+ allow-none="1">
198+ <doc xml:space="preserve"
199+ filename="gmodule-2.0.c"
200+ line="227">the name of the file containing the module, or %NULL
201+ to obtain a #GModule representing the main program itself</doc>
202+ <type name="utf8" c:type="const gchar*"/>
203+ </parameter>
204+ <parameter name="flags" transfer-ownership="none">
205+ <doc xml:space="preserve"
206+ filename="gmodule-2.0.c"
207+ line="229">the flags used for opening the module. This can be the
208+ logical OR of any of the #GModuleFlags.</doc>
209+ <type name="ModuleFlags" c:type="GModuleFlags"/>
210+ </parameter>
211+ </parameters>
212+ </function>
213+ <function name="open_full"
214+ c:identifier="g_module_open_full"
215+ version="2.70"
216+ introspectable="0"
217+ throws="1">
218+ <doc xml:space="preserve"
219+ filename="gmodule-2.0.c"
220+ line="238">Opens a module. If the module has already been opened,
221+its reference count is incremented.
222+
223+First of all g_module_open_full() tries to open @file_name as a module.
224+If that fails and @file_name has the ".la"-suffix (and is a libtool
225+archive) it tries to open the corresponding module. If that fails
226+and it doesn't have the proper module suffix for the platform
227+(%G_MODULE_SUFFIX), this suffix will be appended and the corresponding
228+module will be opened. If that fails and @file_name doesn't have the
229+".la"-suffix, this suffix is appended and g_module_open_full() tries to open
230+the corresponding module. If eventually that fails as well, %NULL is
231+returned.</doc>
232+ <source-position filename="gmodule.h" line="99"/>
233+ <return-value>
234+ <doc xml:space="preserve"
235+ filename="gmodule-2.0.c"
236+ line="259">a #GModule on success, or %NULL on failure</doc>
237+ <type name="Module" c:type="GModule*"/>
238+ </return-value>
239+ <parameters>
240+ <parameter name="file_name"
241+ transfer-ownership="none"
242+ nullable="1"
243+ allow-none="1">
244+ <doc xml:space="preserve"
245+ filename="gmodule-2.0.c"
246+ line="240">the name of the file containing the module, or %NULL
247+ to obtain a #GModule representing the main program itself</doc>
248+ <type name="utf8" c:type="const gchar*"/>
249+ </parameter>
250+ <parameter name="flags" transfer-ownership="none">
251+ <doc xml:space="preserve"
252+ filename="gmodule-2.0.c"
253+ line="242">the flags used for opening the module. This can be the
254+ logical OR of any of the #GModuleFlags</doc>
255+ <type name="ModuleFlags" c:type="GModuleFlags"/>
256+ </parameter>
257+ </parameters>
258+ </function>
259+ <function name="supported" c:identifier="g_module_supported">
260+ <doc xml:space="preserve"
261+ filename="gmodule-2.0.c"
262+ line="264">Checks if modules are supported on the current platform.</doc>
263+ <source-position filename="gmodule.h" line="91"/>
264+ <return-value transfer-ownership="none">
265+ <doc xml:space="preserve"
266+ filename="gmodule-2.0.c"
267+ line="269">%TRUE if modules are supported</doc>
268+ <type name="gboolean" c:type="gboolean"/>
269+ </return-value>
270+ </function>
271+ </record>
272+ <callback name="ModuleCheckInit" c:type="GModuleCheckInit">
273+ <doc xml:space="preserve"
274+ filename="gmodule-2.0.c"
275+ line="14">Specifies the type of the module initialization function.
276+If a module contains a function named g_module_check_init() it is called
277+automatically when the module is loaded. It is passed the #GModule structure
278+and should return %NULL on success or a string describing the initialization
279+error.</doc>
280+ <source-position filename="gmodule.h" line="66"/>
281+ <return-value transfer-ownership="none">
282+ <doc xml:space="preserve"
283+ filename="gmodule-2.0.c"
284+ line="24">%NULL on success, or a string describing the initialization error</doc>
285+ <type name="utf8" c:type="const gchar*"/>
286+ </return-value>
287+ <parameters>
288+ <parameter name="module" transfer-ownership="none">
289+ <doc xml:space="preserve"
290+ filename="gmodule-2.0.c"
291+ line="16">the #GModule corresponding to the module which has just been loaded</doc>
292+ <type name="Module" c:type="GModule*"/>
293+ </parameter>
294+ </parameters>
295+ </callback>
296+ <enumeration name="ModuleError"
297+ version="2.70"
298+ c:type="GModuleError"
299+ glib:error-domain="g-module-error-quark">
300+ <doc xml:space="preserve"
301+ filename="gmodule.h"
302+ line="73">Errors returned by g_module_open_full().</doc>
303+ <source-position filename="gmodule.h" line="86"/>
304+ <member name="failed" value="0" c:identifier="G_MODULE_ERROR_FAILED">
305+ <doc xml:space="preserve"
306+ filename="gmodule.h"
307+ line="75">there was an error loading or opening a module file</doc>
308+ </member>
309+ <member name="check_failed"
310+ value="1"
311+ c:identifier="G_MODULE_ERROR_CHECK_FAILED">
312+ <doc xml:space="preserve"
313+ filename="gmodule.h"
314+ line="76">a module returned an error from its `g_module_check_init()` function</doc>
315+ </member>
316+ </enumeration>
317+ <bitfield name="ModuleFlags" c:type="GModuleFlags">
318+ <doc xml:space="preserve"
319+ filename="gmodule.h"
320+ line="44">Flags passed to g_module_open().
321+Note that these flags are not supported on all platforms.</doc>
322+ <source-position filename="gmodule.h" line="63"/>
323+ <member name="lazy" value="1" c:identifier="G_MODULE_BIND_LAZY">
324+ <doc xml:space="preserve"
325+ filename="gmodule.h"
326+ line="46">specifies that symbols are only resolved when
327+ needed. The default action is to bind all symbols when the module
328+ is loaded.</doc>
329+ </member>
330+ <member name="local" value="2" c:identifier="G_MODULE_BIND_LOCAL">
331+ <doc xml:space="preserve"
332+ filename="gmodule.h"
333+ line="49">specifies that symbols in the module should
334+ not be added to the global name space. The default action on most
335+ platforms is to place symbols in the module in the global name space,
336+ which may cause conflicts with existing symbols.</doc>
337+ </member>
338+ <member name="mask" value="3" c:identifier="G_MODULE_BIND_MASK">
339+ <doc xml:space="preserve"
340+ filename="gmodule.h"
341+ line="53">mask for all flags.</doc>
342+ </member>
343+ </bitfield>
344+ <callback name="ModuleUnload" c:type="GModuleUnload">
345+ <doc xml:space="preserve"
346+ filename="gmodule-2.0.c"
347+ line="28">Specifies the type of the module function called when it is unloaded.
348+If a module contains a function named g_module_unload() it is called
349+automatically when the module is unloaded.
350+It is passed the #GModule structure.</doc>
351+ <source-position filename="gmodule.h" line="67"/>
352+ <return-value transfer-ownership="none">
353+ <type name="none" c:type="void"/>
354+ </return-value>
355+ <parameters>
356+ <parameter name="module" transfer-ownership="none">
357+ <doc xml:space="preserve"
358+ filename="gmodule-2.0.c"
359+ line="30">the #GModule about to be unloaded</doc>
360+ <type name="Module" c:type="GModule*"/>
361+ </parameter>
362+ </parameters>
363+ </callback>
364+ <function name="module_build_path"
365+ c:identifier="g_module_build_path"
366+ moved-to="Module.build_path">
367+ <doc xml:space="preserve"
368+ filename="gmodule-2.0.c"
369+ line="159">A portable way to build the filename of a module. The platform-specific
370+prefix and suffix are added to the filename, if needed, and the result
371+is added to the directory, using the correct separator character.
372+
373+The directory should specify the directory where the module can be found.
374+It can be %NULL or an empty string to indicate that the module is in a
375+standard platform-specific directory, though this is not recommended
376+since the wrong module may be found.
377+
378+For example, calling g_module_build_path() on a Linux system with a
379+@directory of `/lib` and a @module_name of "mylibrary" will return
380+`/lib/libmylibrary.so`. On a Windows system, using `\Windows` as the
381+directory it will return `\Windows\mylibrary.dll`.</doc>
382+ <source-position filename="gmodule.h" line="137"/>
383+ <return-value transfer-ownership="full">
384+ <doc xml:space="preserve"
385+ filename="gmodule-2.0.c"
386+ line="180">the complete path of the module, including the standard library
387+ prefix and suffix. This should be freed when no longer needed</doc>
388+ <type name="utf8" c:type="gchar*"/>
389+ </return-value>
390+ <parameters>
391+ <parameter name="directory"
392+ transfer-ownership="none"
393+ nullable="1"
394+ allow-none="1">
395+ <doc xml:space="preserve"
396+ filename="gmodule-2.0.c"
397+ line="161">the directory where the module is. This can be
398+ %NULL or the empty string to indicate that the standard platform-specific
399+ directories will be used, though that is not recommended</doc>
400+ <type name="utf8" c:type="const gchar*"/>
401+ </parameter>
402+ <parameter name="module_name" transfer-ownership="none">
403+ <doc xml:space="preserve"
404+ filename="gmodule-2.0.c"
405+ line="164">the name of the module</doc>
406+ <type name="utf8" c:type="const gchar*"/>
407+ </parameter>
408+ </parameters>
409+ </function>
410+ <function name="module_error"
411+ c:identifier="g_module_error"
412+ moved-to="Module.error">
413+ <doc xml:space="preserve"
414+ filename="gmodule-2.0.c"
415+ line="195">Gets a string describing the last module error.</doc>
416+ <source-position filename="gmodule.h" line="113"/>
417+ <return-value transfer-ownership="none">
418+ <doc xml:space="preserve"
419+ filename="gmodule-2.0.c"
420+ line="200">a string describing the last module error</doc>
421+ <type name="utf8" c:type="const gchar*"/>
422+ </return-value>
423+ </function>
424+ <function name="module_error_quark"
425+ c:identifier="g_module_error_quark"
426+ moved-to="Module.error_quark">
427+ <return-value transfer-ownership="none">
428+ <type name="GLib.Quark" c:type="GQuark"/>
429+ </return-value>
430+ </function>
431+ <function name="module_supported"
432+ c:identifier="g_module_supported"
433+ moved-to="Module.supported">
434+ <doc xml:space="preserve"
435+ filename="gmodule-2.0.c"
436+ line="264">Checks if modules are supported on the current platform.</doc>
437+ <source-position filename="gmodule.h" line="91"/>
438+ <return-value transfer-ownership="none">
439+ <doc xml:space="preserve"
440+ filename="gmodule-2.0.c"
441+ line="269">%TRUE if modules are supported</doc>
442+ <type name="gboolean" c:type="gboolean"/>
443+ </return-value>
444+ </function>
445+ <docsection name="modules">
446+ <doc xml:space="preserve"
447+ filename="gmodule-2.0.c"
448+ line="79">These functions provide a portable way to dynamically load object files
449+(commonly known as 'plug-ins'). The current implementation supports all
450+systems that provide an implementation of dlopen() (e.g. Linux/Sun), as
451+well as Windows platforms via DLLs.
452+
453+A program which wants to use these functions must be linked to the
454+libraries output by the command `pkg-config --libs gmodule-2.0`.
455+
456+To use them you must first determine whether dynamic loading
457+is supported on the platform by calling g_module_supported().
458+If it is, you can open a module with g_module_open(),
459+find the module's symbols (e.g. function names) with g_module_symbol(),
460+and later close the module with g_module_close().
461+g_module_name() will return the file name of a currently opened module.
462+
463+If any of the above functions fail, the error status can be found with
464+g_module_error().
465+
466+The #GModule implementation features reference counting for opened modules,
467+and supports hook functions within a module which are called when the
468+module is loaded and unloaded (see #GModuleCheckInit and #GModuleUnload).
469+
470+If your module introduces static data to common subsystems in the running
471+program, e.g. through calling
472+`g_quark_from_static_string ("my-module-stuff")`,
473+it must ensure that it is never unloaded, by calling g_module_make_resident().
474+
475+Example: Calling a function defined in a GModule
476+|[&lt;!-- language="C" --&gt;
477+// the function signature for 'say_hello'
478+typedef void (* SayHelloFunc) (const char *message);
479+
480+gboolean
481+just_say_hello (const char *filename, GError **error)
482+{
483+ SayHelloFunc say_hello;
484+ GModule *module;
485+
486+ module = g_module_open (filename, G_MODULE_BIND_LAZY);
487+ if (!module)
488+ {
489+ g_set_error (error, FOO_ERROR, FOO_ERROR_BLAH,
490+ "%s", g_module_error ());
491+ return FALSE;
492+ }
493+
494+ if (!g_module_symbol (module, "say_hello", (gpointer *)&amp;say_hello))
495+ {
496+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
497+ "%s: %s", filename, g_module_error ());
498+ if (!g_module_close (module))
499+ g_warning ("%s: %s", filename, g_module_error ());
500+ return FALSE;
501+ }
502+
503+ if (say_hello == NULL)
504+ {
505+ g_set_error (error, SAY_ERROR, SAY_ERROR_OPEN,
506+ "symbol say_hello is NULL");
507+ if (!g_module_close (module))
508+ g_warning ("%s: %s", filename, g_module_error ());
509+ return FALSE;
510+ }
511+
512+ // call our function in the module
513+ say_hello ("Hello world!");
514+
515+ if (!g_module_close (module))
516+ g_warning ("%s: %s", filename, g_module_error ());
517+ return TRUE;
518+ }
519+]|</doc>
520+ </docsection>
521+ </namespace>
522+</repository>
A internal/gir/spec/GObject-2.0.gir +27133 -0
@@ -0,0 +1,27133 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GLib" version="2.0"/>
10+ <package name="gobject-2.0"/>
11+ <c:include name="glib-object.h"/>
12+ <namespace name="GObject"
13+ version="2.0"
14+ shared-library="libgobject-2.0.so.0"
15+ c:identifier-prefixes="G"
16+ c:symbol-prefixes="g">
17+ <alias name="SignalCMarshaller" c:type="GSignalCMarshaller">
18+ <doc xml:space="preserve"
19+ filename="gsignal.h"
20+ line="34">This is the signature of marshaller functions, required to marshall
21+arrays of parameter values to signal emissions into C language callback
22+invocations.
23+
24+It is merely an alias to #GClosureMarshal since the #GClosure mechanism
25+takes over responsibility of actual function invocation for the signal
26+system.</doc>
27+ <source-position filename="gsignal.h" line="45"/>
28+ <type name="ClosureMarshal" c:type="GClosureMarshal"/>
29+ </alias>
30+ <alias name="SignalCVaMarshaller" c:type="GSignalCVaMarshaller">
31+ <doc xml:space="preserve"
32+ filename="gsignal.h"
33+ line="46">This is the signature of va_list marshaller functions, an optional
34+marshaller that can be used in some situations to avoid
35+marshalling the signal argument into GValues.</doc>
36+ <source-position filename="gsignal.h" line="53"/>
37+ <type name="VaClosureMarshal" c:type="GVaClosureMarshal"/>
38+ </alias>
39+ <alias name="Type" c:type="GType">
40+ <doc xml:space="preserve"
41+ filename="gtype.h"
42+ line="393">A numerical value which represents the unique identifier of a registered
43+type.</doc>
44+ <source-position filename="gtype.h" line="400"/>
45+ <type name="gsize" c:type="gsize"/>
46+ </alias>
47+ <function-macro name="ADD_PRIVATE"
48+ c:identifier="G_ADD_PRIVATE"
49+ version="2.38"
50+ introspectable="0">
51+ <doc xml:space="preserve"
52+ filename="gtype.h"
53+ line="1965">A convenience macro to ease adding private data to instances of a new type
54+in the @_C_ section of G_DEFINE_TYPE_WITH_CODE() or
55+G_DEFINE_ABSTRACT_TYPE_WITH_CODE().
56+
57+For instance:
58+
59+|[&lt;!-- language="C" --&gt;
60+ typedef struct _MyObject MyObject;
61+ typedef struct _MyObjectClass MyObjectClass;
62+
63+ typedef struct {
64+ gint foo;
65+ gint bar;
66+ } MyObjectPrivate;
67+
68+ G_DEFINE_TYPE_WITH_CODE (MyObject, my_object, G_TYPE_OBJECT,
69+ G_ADD_PRIVATE (MyObject))
70+]|
71+
72+Will add `MyObjectPrivate` as the private data to any instance of the
73+`MyObject` type.
74+
75+`G_DEFINE_TYPE_*` macros will automatically create a private function
76+based on the arguments to this macro, which can be used to safely
77+retrieve the private data from an instance of the type; for instance:
78+
79+|[&lt;!-- language="C" --&gt;
80+ gint
81+ my_object_get_foo (MyObject *obj)
82+ {
83+ MyObjectPrivate *priv = my_object_get_instance_private (obj);
84+
85+ g_return_val_if_fail (MY_IS_OBJECT (obj), 0);
86+
87+ return priv-&gt;foo;
88+ }
89+
90+ void
91+ my_object_set_bar (MyObject *obj,
92+ gint bar)
93+ {
94+ MyObjectPrivate *priv = my_object_get_instance_private (obj);
95+
96+ g_return_if_fail (MY_IS_OBJECT (obj));
97+
98+ if (priv-&gt;bar != bar)
99+ priv-&gt;bar = bar;
100+ }
101+]|
102+
103+Since GLib 2.72, the returned `MyObjectPrivate` pointer is guaranteed to be
104+aligned to at least the alignment of the largest basic GLib type (typically
105+this is #guint64 or #gdouble). If you need larger alignment for an element in
106+the struct, you should allocate it on the heap (aligned), or arrange for your
107+`MyObjectPrivate` struct to be appropriately padded.
108+
109+Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
110+macros, since it depends on variable names from those macros.
111+
112+Also note that private structs added with these macros must have a struct
113+name of the form `TypeNamePrivate`.
114+
115+It is safe to call the `_get_instance_private` function on %NULL or invalid
116+objects since it's only adding an offset to the instance pointer. In that
117+case the returned pointer must not be dereferenced.</doc>
118+ <source-position filename="gtype.h" line="2037"/>
119+ <parameters>
120+ <parameter name="TypeName">
121+ <doc xml:space="preserve"
122+ filename="gtype.h"
123+ line="1967">the name of the type in CamelCase</doc>
124+ </parameter>
125+ </parameters>
126+ </function-macro>
127+ <function-macro name="ADD_PRIVATE_DYNAMIC"
128+ c:identifier="G_ADD_PRIVATE_DYNAMIC"
129+ version="2.38"
130+ introspectable="0">
131+ <doc xml:space="preserve"
132+ filename="gtypemodule.h"
133+ line="250">A convenience macro to ease adding private data to instances of a new dynamic
134+type in the @_C_ section of G_DEFINE_DYNAMIC_TYPE_EXTENDED().
135+
136+See G_ADD_PRIVATE() for details, it is similar but for static types.
137+
138+Note that this macro can only be used together with the
139+G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable
140+names from that macro.</doc>
141+ <source-position filename="gtypemodule.h" line="265"/>
142+ <parameters>
143+ <parameter name="TypeName">
144+ <doc xml:space="preserve"
145+ filename="gtypemodule.h"
146+ line="252">the name of the type in CamelCase</doc>
147+ </parameter>
148+ </parameters>
149+ </function-macro>
150+ <function-macro name="BINDING" c:identifier="G_BINDING" introspectable="0">
151+ <source-position filename="gbinding.h" line="36"/>
152+ <parameters>
153+ <parameter name="obj">
154+ </parameter>
155+ </parameters>
156+ </function-macro>
157+ <function-macro name="BINDING_GROUP"
158+ c:identifier="G_BINDING_GROUP"
159+ introspectable="0">
160+ <source-position filename="gbindinggroup.h" line="35"/>
161+ <parameters>
162+ <parameter name="obj">
163+ </parameter>
164+ </parameters>
165+ </function-macro>
166+ <callback name="BaseFinalizeFunc" c:type="GBaseFinalizeFunc">
167+ <doc xml:space="preserve"
168+ filename="gtype.h"
169+ line="795">A callback function used by the type system to finalize those portions
170+of a derived types class structure that were setup from the corresponding
171+GBaseInitFunc() function.
172+
173+Class finalization basically works the inverse way in which class
174+initialization is performed.
175+
176+See GClassInitFunc() for a discussion of the class initialization process.</doc>
177+ <source-position filename="gtype.h" line="808"/>
178+ <return-value transfer-ownership="none">
179+ <type name="none" c:type="void"/>
180+ </return-value>
181+ <parameters>
182+ <parameter name="g_class" transfer-ownership="none">
183+ <doc xml:space="preserve"
184+ filename="gtype.h"
185+ line="797">The #GTypeClass structure to finalize</doc>
186+ <type name="TypeClass" c:type="gpointer"/>
187+ </parameter>
188+ </parameters>
189+ </callback>
190+ <callback name="BaseInitFunc" c:type="GBaseInitFunc">
191+ <doc xml:space="preserve"
192+ filename="gtype.h"
193+ line="778">A callback function used by the type system to do base initialization
194+of the class structures of derived types.
195+
196+This function is called as part of the initialization process of all derived
197+classes and should reallocate or reset all dynamic class members copied over
198+from the parent class.
199+
200+For example, class members (such as strings) that are not sufficiently
201+handled by a plain memory copy of the parent class into the derived class
202+have to be altered. See GClassInitFunc() for a discussion of the class
203+initialization process.</doc>
204+ <source-position filename="gtype.h" line="794"/>
205+ <return-value transfer-ownership="none">
206+ <type name="none" c:type="void"/>
207+ </return-value>
208+ <parameters>
209+ <parameter name="g_class" transfer-ownership="none">
210+ <doc xml:space="preserve"
211+ filename="gtype.h"
212+ line="780">The #GTypeClass structure to initialize</doc>
213+ <type name="TypeClass" c:type="gpointer"/>
214+ </parameter>
215+ </parameters>
216+ </callback>
217+ <class name="Binding"
218+ c:symbol-prefix="binding"
219+ c:type="GBinding"
220+ version="2.26"
221+ parent="Object"
222+ glib:type-name="GBinding"
223+ glib:get-type="g_binding_get_type">
224+ <doc xml:space="preserve"
225+ filename="gobject-2.0.c"
226+ line="224">#GBinding is the representation of a binding between a property on a
227+#GObject instance (or source) and another property on another #GObject
228+instance (or target).
229+
230+Whenever the source property changes, the same value is applied to the
231+target property; for instance, the following binding:
232+
233+|[&lt;!-- language="C" --&gt;
234+ g_object_bind_property (object1, "property-a",
235+ object2, "property-b",
236+ G_BINDING_DEFAULT);
237+]|
238+
239+will cause the property named "property-b" of @object2 to be updated
240+every time g_object_set() or the specific accessor changes the value of
241+the property "property-a" of @object1.
242+
243+It is possible to create a bidirectional binding between two properties
244+of two #GObject instances, so that if either property changes, the
245+other is updated as well, for instance:
246+
247+|[&lt;!-- language="C" --&gt;
248+ g_object_bind_property (object1, "property-a",
249+ object2, "property-b",
250+ G_BINDING_BIDIRECTIONAL);
251+]|
252+
253+will keep the two properties in sync.
254+
255+It is also possible to set a custom transformation function (in both
256+directions, in case of a bidirectional binding) to apply a custom
257+transformation from the source value to the target value before
258+applying it; for instance, the following binding:
259+
260+|[&lt;!-- language="C" --&gt;
261+ g_object_bind_property_full (adjustment1, "value",
262+ adjustment2, "value",
263+ G_BINDING_BIDIRECTIONAL,
264+ celsius_to_fahrenheit,
265+ fahrenheit_to_celsius,
266+ NULL, NULL);
267+]|
268+
269+will keep the "value" property of the two adjustments in sync; the
270+@celsius_to_fahrenheit function will be called whenever the "value"
271+property of @adjustment1 changes and will transform the current value
272+of the property before applying it to the "value" property of @adjustment2.
273+
274+Vice versa, the @fahrenheit_to_celsius function will be called whenever
275+the "value" property of @adjustment2 changes, and will transform the
276+current value of the property before applying it to the "value" property
277+of @adjustment1.
278+
279+Note that #GBinding does not resolve cycles by itself; a cycle like
280+
281+|[
282+ object1:propertyA -&gt; object2:propertyB
283+ object2:propertyB -&gt; object3:propertyC
284+ object3:propertyC -&gt; object1:propertyA
285+]|
286+
287+might lead to an infinite loop. The loop, in this particular case,
288+can be avoided if the objects emit the #GObject::notify signal only
289+if the value has effectively been changed. A binding is implemented
290+using the #GObject::notify signal, so it is susceptible to all the
291+various ways of blocking a signal emission, like g_signal_stop_emission()
292+or g_signal_handler_block().
293+
294+A binding will be severed, and the resources it allocates freed, whenever
295+either one of the #GObject instances it refers to are finalized, or when
296+the #GBinding instance loses its last reference.
297+
298+Bindings for languages with garbage collection can use
299+g_binding_unbind() to explicitly release a binding between the source
300+and target properties, instead of relying on the last reference on the
301+binding, source, and target instances to drop.
302+
303+#GBinding is available since GObject 2.26</doc>
304+ <method name="dup_source"
305+ c:identifier="g_binding_dup_source"
306+ version="2.68">
307+ <doc xml:space="preserve"
308+ filename="gobject-2.0.c"
309+ line="968">Retrieves the #GObject instance used as the source of the binding.
310+
311+A #GBinding can outlive the source #GObject as the binding does not hold a
312+strong reference to the source. If the source is destroyed before the
313+binding then this function will return %NULL.</doc>
314+ <source-position filename="gbinding.h" line="115"/>
315+ <return-value transfer-ownership="full" nullable="1">
316+ <doc xml:space="preserve"
317+ filename="gobject-2.0.c"
318+ line="978">the source #GObject, or %NULL if the
319+ source does not exist any more.</doc>
320+ <type name="Object" c:type="GObject*"/>
321+ </return-value>
322+ <parameters>
323+ <instance-parameter name="binding" transfer-ownership="none">
324+ <doc xml:space="preserve"
325+ filename="gobject-2.0.c"
326+ line="970">a #GBinding</doc>
327+ <type name="Binding" c:type="GBinding*"/>
328+ </instance-parameter>
329+ </parameters>
330+ </method>
331+ <method name="dup_target"
332+ c:identifier="g_binding_dup_target"
333+ version="2.68">
334+ <doc xml:space="preserve"
335+ filename="gobject-2.0.c"
336+ line="984">Retrieves the #GObject instance used as the target of the binding.
337+
338+A #GBinding can outlive the target #GObject as the binding does not hold a
339+strong reference to the target. If the target is destroyed before the
340+binding then this function will return %NULL.</doc>
341+ <source-position filename="gbinding.h" line="119"/>
342+ <return-value transfer-ownership="full" nullable="1">
343+ <doc xml:space="preserve"
344+ filename="gobject-2.0.c"
345+ line="994">the target #GObject, or %NULL if the
346+ target does not exist any more.</doc>
347+ <type name="Object" c:type="GObject*"/>
348+ </return-value>
349+ <parameters>
350+ <instance-parameter name="binding" transfer-ownership="none">
351+ <doc xml:space="preserve"
352+ filename="gobject-2.0.c"
353+ line="986">a #GBinding</doc>
354+ <type name="Binding" c:type="GBinding*"/>
355+ </instance-parameter>
356+ </parameters>
357+ </method>
358+ <method name="get_flags"
359+ c:identifier="g_binding_get_flags"
360+ glib:get-property="flags"
361+ version="2.26">
362+ <doc xml:space="preserve"
363+ filename="gobject-2.0.c"
364+ line="1000">Retrieves the flags passed when constructing the #GBinding.</doc>
365+ <source-position filename="gbinding.h" line="111"/>
366+ <return-value transfer-ownership="none">
367+ <doc xml:space="preserve"
368+ filename="gobject-2.0.c"
369+ line="1006">the #GBindingFlags used by the #GBinding</doc>
370+ <type name="BindingFlags" c:type="GBindingFlags"/>
371+ </return-value>
372+ <parameters>
373+ <instance-parameter name="binding" transfer-ownership="none">
374+ <doc xml:space="preserve"
375+ filename="gobject-2.0.c"
376+ line="1002">a #GBinding</doc>
377+ <type name="Binding" c:type="GBinding*"/>
378+ </instance-parameter>
379+ </parameters>
380+ </method>
381+ <method name="get_source"
382+ c:identifier="g_binding_get_source"
383+ glib:get-property="source"
384+ version="2.26"
385+ deprecated="1"
386+ deprecated-version="2.68">
387+ <doc xml:space="preserve"
388+ filename="gobject-2.0.c"
389+ line="1011">Retrieves the #GObject instance used as the source of the binding.
390+
391+A #GBinding can outlive the source #GObject as the binding does not hold a
392+strong reference to the source. If the source is destroyed before the
393+binding then this function will return %NULL.
394+
395+Use g_binding_dup_source() if the source or binding are used from different
396+threads as otherwise the pointer returned from this function might become
397+invalid if the source is finalized from another thread in the meantime.</doc>
398+ <doc-deprecated xml:space="preserve">Use g_binding_dup_source() for a safer version of this
399+function.</doc-deprecated>
400+ <source-position filename="gbinding.h" line="113"/>
401+ <return-value transfer-ownership="none" nullable="1">
402+ <doc xml:space="preserve"
403+ filename="gobject-2.0.c"
404+ line="1025">the source #GObject, or %NULL if the
405+ source does not exist any more.</doc>
406+ <type name="Object" c:type="GObject*"/>
407+ </return-value>
408+ <parameters>
409+ <instance-parameter name="binding" transfer-ownership="none">
410+ <doc xml:space="preserve"
411+ filename="gobject-2.0.c"
412+ line="1013">a #GBinding</doc>
413+ <type name="Binding" c:type="GBinding*"/>
414+ </instance-parameter>
415+ </parameters>
416+ </method>
417+ <method name="get_source_property"
418+ c:identifier="g_binding_get_source_property"
419+ glib:get-property="source-property"
420+ version="2.26">
421+ <doc xml:space="preserve"
422+ filename="gobject-2.0.c"
423+ line="1033">Retrieves the name of the property of #GBinding:source used as the source
424+of the binding.</doc>
425+ <source-position filename="gbinding.h" line="121"/>
426+ <return-value transfer-ownership="none">
427+ <doc xml:space="preserve"
428+ filename="gobject-2.0.c"
429+ line="1040">the name of the source property</doc>
430+ <type name="utf8" c:type="const gchar*"/>
431+ </return-value>
432+ <parameters>
433+ <instance-parameter name="binding" transfer-ownership="none">
434+ <doc xml:space="preserve"
435+ filename="gobject-2.0.c"
436+ line="1035">a #GBinding</doc>
437+ <type name="Binding" c:type="GBinding*"/>
438+ </instance-parameter>
439+ </parameters>
440+ </method>
441+ <method name="get_target"
442+ c:identifier="g_binding_get_target"
443+ glib:get-property="target"
444+ version="2.26"
445+ deprecated="1"
446+ deprecated-version="2.68">
447+ <doc xml:space="preserve"
448+ filename="gobject-2.0.c"
449+ line="1045">Retrieves the #GObject instance used as the target of the binding.
450+
451+A #GBinding can outlive the target #GObject as the binding does not hold a
452+strong reference to the target. If the target is destroyed before the
453+binding then this function will return %NULL.
454+
455+Use g_binding_dup_target() if the target or binding are used from different
456+threads as otherwise the pointer returned from this function might become
457+invalid if the target is finalized from another thread in the meantime.</doc>
458+ <doc-deprecated xml:space="preserve">Use g_binding_dup_target() for a safer version of this
459+function.</doc-deprecated>
460+ <source-position filename="gbinding.h" line="117"/>
461+ <return-value transfer-ownership="none" nullable="1">
462+ <doc xml:space="preserve"
463+ filename="gobject-2.0.c"
464+ line="1059">the target #GObject, or %NULL if the
465+ target does not exist any more.</doc>
466+ <type name="Object" c:type="GObject*"/>
467+ </return-value>
468+ <parameters>
469+ <instance-parameter name="binding" transfer-ownership="none">
470+ <doc xml:space="preserve"
471+ filename="gobject-2.0.c"
472+ line="1047">a #GBinding</doc>
473+ <type name="Binding" c:type="GBinding*"/>
474+ </instance-parameter>
475+ </parameters>
476+ </method>
477+ <method name="get_target_property"
478+ c:identifier="g_binding_get_target_property"
479+ glib:get-property="target-property"
480+ version="2.26">
481+ <doc xml:space="preserve"
482+ filename="gobject-2.0.c"
483+ line="1067">Retrieves the name of the property of #GBinding:target used as the target
484+of the binding.</doc>
485+ <source-position filename="gbinding.h" line="123"/>
486+ <return-value transfer-ownership="none">
487+ <doc xml:space="preserve"
488+ filename="gobject-2.0.c"
489+ line="1074">the name of the target property</doc>
490+ <type name="utf8" c:type="const gchar*"/>
491+ </return-value>
492+ <parameters>
493+ <instance-parameter name="binding" transfer-ownership="none">
494+ <doc xml:space="preserve"
495+ filename="gobject-2.0.c"
496+ line="1069">a #GBinding</doc>
497+ <type name="Binding" c:type="GBinding*"/>
498+ </instance-parameter>
499+ </parameters>
500+ </method>
501+ <method name="unbind" c:identifier="g_binding_unbind" version="2.38">
502+ <doc xml:space="preserve"
503+ filename="gobject-2.0.c"
504+ line="1191">Explicitly releases the binding between the source and the target
505+property expressed by @binding.
506+
507+This function will release the reference that is being held on
508+the @binding instance if the binding is still bound; if you want to hold on
509+to the #GBinding instance after calling g_binding_unbind(), you will need
510+to hold a reference to it.
511+
512+Note however that this function does not take ownership of @binding, it
513+only unrefs the reference that was initially created by
514+g_object_bind_property() and is owned by the binding.</doc>
515+ <source-position filename="gbinding.h" line="125"/>
516+ <return-value transfer-ownership="none">
517+ <type name="none" c:type="void"/>
518+ </return-value>
519+ <parameters>
520+ <instance-parameter name="binding" transfer-ownership="none">
521+ <doc xml:space="preserve"
522+ filename="gobject-2.0.c"
523+ line="1193">a #GBinding</doc>
524+ <type name="Binding" c:type="GBinding*"/>
525+ </instance-parameter>
526+ </parameters>
527+ </method>
528+ <property name="flags"
529+ version="2.26"
530+ writable="1"
531+ construct-only="1"
532+ transfer-ownership="none"
533+ getter="get_flags">
534+ <doc xml:space="preserve"
535+ filename="gobject-2.0.c"
536+ line="5">Flags to be used to control the #GBinding</doc>
537+ <type name="BindingFlags"/>
538+ </property>
539+ <property name="source"
540+ version="2.26"
541+ writable="1"
542+ construct-only="1"
543+ transfer-ownership="none"
544+ getter="get_source">
545+ <doc xml:space="preserve"
546+ filename="gobject-2.0.c"
547+ line="14">The #GObject that should be used as the source of the binding</doc>
548+ <type name="Object"/>
549+ </property>
550+ <property name="source-property"
551+ version="2.26"
552+ writable="1"
553+ construct-only="1"
554+ transfer-ownership="none"
555+ getter="get_source_property">
556+ <doc xml:space="preserve"
557+ filename="gobject-2.0.c"
558+ line="23">The name of the property of #GBinding:source that should be used
559+as the source of the binding.
560+
561+This should be in [canonical form][canonical-parameter-names] to get the
562+best performance.</doc>
563+ <type name="utf8" c:type="gchar*"/>
564+ </property>
565+ <property name="target"
566+ version="2.26"
567+ writable="1"
568+ construct-only="1"
569+ transfer-ownership="none"
570+ getter="get_target">
571+ <doc xml:space="preserve"
572+ filename="gobject-2.0.c"
573+ line="36">The #GObject that should be used as the target of the binding</doc>
574+ <type name="Object"/>
575+ </property>
576+ <property name="target-property"
577+ version="2.26"
578+ writable="1"
579+ construct-only="1"
580+ transfer-ownership="none"
581+ getter="get_target_property">
582+ <doc xml:space="preserve"
583+ filename="gobject-2.0.c"
584+ line="45">The name of the property of #GBinding:target that should be used
585+as the target of the binding.
586+
587+This should be in [canonical form][canonical-parameter-names] to get the
588+best performance.</doc>
589+ <type name="utf8" c:type="gchar*"/>
590+ </property>
591+ </class>
592+ <bitfield name="BindingFlags"
593+ version="2.26"
594+ glib:type-name="GBindingFlags"
595+ glib:get-type="g_binding_flags_get_type"
596+ c:type="GBindingFlags">
597+ <doc xml:space="preserve"
598+ filename="gbinding.h"
599+ line="74">Flags to be passed to g_object_bind_property() or
600+g_object_bind_property_full().
601+
602+This enumeration can be extended at later date.</doc>
603+ <member name="default"
604+ value="0"
605+ c:identifier="G_BINDING_DEFAULT"
606+ glib:nick="default"
607+ glib:name="G_BINDING_DEFAULT">
608+ <doc xml:space="preserve"
609+ filename="gbinding.h"
610+ line="76">The default binding; if the source property
611+ changes, the target property is updated with its value.</doc>
612+ </member>
613+ <member name="bidirectional"
614+ value="1"
615+ c:identifier="G_BINDING_BIDIRECTIONAL"
616+ glib:nick="bidirectional"
617+ glib:name="G_BINDING_BIDIRECTIONAL">
618+ <doc xml:space="preserve"
619+ filename="gbinding.h"
620+ line="78">Bidirectional binding; if either the
621+ property of the source or the property of the target changes,
622+ the other is updated.</doc>
623+ </member>
624+ <member name="sync_create"
625+ value="2"
626+ c:identifier="G_BINDING_SYNC_CREATE"
627+ glib:nick="sync-create"
628+ glib:name="G_BINDING_SYNC_CREATE">
629+ <doc xml:space="preserve"
630+ filename="gbinding.h"
631+ line="81">Synchronize the values of the source and
632+ target properties when creating the binding; the direction of
633+ the synchronization is always from the source to the target.</doc>
634+ </member>
635+ <member name="invert_boolean"
636+ value="4"
637+ c:identifier="G_BINDING_INVERT_BOOLEAN"
638+ glib:nick="invert-boolean"
639+ glib:name="G_BINDING_INVERT_BOOLEAN">
640+ <doc xml:space="preserve"
641+ filename="gbinding.h"
642+ line="84">If the two properties being bound are
643+ booleans, setting one to %TRUE will result in the other being
644+ set to %FALSE and vice versa. This flag will only work for
645+ boolean properties, and cannot be used when passing custom
646+ transformation functions to g_object_bind_property_full().</doc>
647+ </member>
648+ </bitfield>
649+ <class name="BindingGroup"
650+ c:symbol-prefix="binding_group"
651+ c:type="GBindingGroup"
652+ version="2.72"
653+ parent="Object"
654+ glib:type-name="GBindingGroup"
655+ glib:get-type="g_binding_group_get_type">
656+ <doc xml:space="preserve"
657+ filename="gobject-2.0.c"
658+ line="310">The #GBindingGroup can be used to bind multiple properties
659+from an object collectively.
660+
661+Use the various methods to bind properties from a single source
662+object to multiple destination objects. Properties can be bound
663+bidirectionally and are connected when the source object is set
664+with g_binding_group_set_source().</doc>
665+ <constructor name="new"
666+ c:identifier="g_binding_group_new"
667+ version="2.72">
668+ <doc xml:space="preserve"
669+ filename="gobject-2.0.c"
670+ line="1165">Creates a new #GBindingGroup.</doc>
671+ <source-position filename="gbindinggroup.h" line="52"/>
672+ <return-value transfer-ownership="full">
673+ <doc xml:space="preserve"
674+ filename="gobject-2.0.c"
675+ line="1170">a new #GBindingGroup</doc>
676+ <type name="BindingGroup" c:type="GBindingGroup*"/>
677+ </return-value>
678+ </constructor>
679+ <method name="bind" c:identifier="g_binding_group_bind" version="2.72">
680+ <doc xml:space="preserve"
681+ filename="gobject-2.0.c"
682+ line="1079">Creates a binding between @source_property on the source object
683+and @target_property on @target. Whenever the @source_property
684+is changed the @target_property is updated using the same value.
685+The binding flag %G_BINDING_SYNC_CREATE is automatically specified.
686+
687+See g_object_bind_property() for more information.</doc>
688+ <source-position filename="gbindinggroup.h" line="59"/>
689+ <return-value transfer-ownership="none">
690+ <type name="none" c:type="void"/>
691+ </return-value>
692+ <parameters>
693+ <instance-parameter name="self" transfer-ownership="none">
694+ <doc xml:space="preserve"
695+ filename="gobject-2.0.c"
696+ line="1081">the #GBindingGroup</doc>
697+ <type name="BindingGroup" c:type="GBindingGroup*"/>
698+ </instance-parameter>
699+ <parameter name="source_property" transfer-ownership="none">
700+ <doc xml:space="preserve"
701+ filename="gobject-2.0.c"
702+ line="1082">the property on the source to bind</doc>
703+ <type name="utf8" c:type="const gchar*"/>
704+ </parameter>
705+ <parameter name="target" transfer-ownership="none">
706+ <doc xml:space="preserve"
707+ filename="gobject-2.0.c"
708+ line="1083">the target #GObject</doc>
709+ <type name="Object" c:type="gpointer"/>
710+ </parameter>
711+ <parameter name="target_property" transfer-ownership="none">
712+ <doc xml:space="preserve"
713+ filename="gobject-2.0.c"
714+ line="1084">the property on @target to bind</doc>
715+ <type name="utf8" c:type="const gchar*"/>
716+ </parameter>
717+ <parameter name="flags" transfer-ownership="none">
718+ <doc xml:space="preserve"
719+ filename="gobject-2.0.c"
720+ line="1085">the flags used to create the #GBinding</doc>
721+ <type name="BindingFlags" c:type="GBindingFlags"/>
722+ </parameter>
723+ </parameters>
724+ </method>
725+ <method name="bind_full"
726+ c:identifier="g_binding_group_bind_full"
727+ shadowed-by="bind_with_closures"
728+ version="2.72">
729+ <doc xml:space="preserve"
730+ filename="gobject-2.0.c"
731+ line="1098">Creates a binding between @source_property on the source object and
732+@target_property on @target, allowing you to set the transformation
733+functions to be used by the binding. The binding flag
734+%G_BINDING_SYNC_CREATE is automatically specified.
735+
736+See g_object_bind_property_full() for more information.</doc>
737+ <source-position filename="gbindinggroup.h" line="65"/>
738+ <return-value transfer-ownership="none">
739+ <type name="none" c:type="void"/>
740+ </return-value>
741+ <parameters>
742+ <instance-parameter name="self" transfer-ownership="none">
743+ <doc xml:space="preserve"
744+ filename="gobject-2.0.c"
745+ line="1100">the #GBindingGroup</doc>
746+ <type name="BindingGroup" c:type="GBindingGroup*"/>
747+ </instance-parameter>
748+ <parameter name="source_property" transfer-ownership="none">
749+ <doc xml:space="preserve"
750+ filename="gobject-2.0.c"
751+ line="1101">the property on the source to bind</doc>
752+ <type name="utf8" c:type="const gchar*"/>
753+ </parameter>
754+ <parameter name="target" transfer-ownership="none">
755+ <doc xml:space="preserve"
756+ filename="gobject-2.0.c"
757+ line="1102">the target #GObject</doc>
758+ <type name="Object" c:type="gpointer"/>
759+ </parameter>
760+ <parameter name="target_property" transfer-ownership="none">
761+ <doc xml:space="preserve"
762+ filename="gobject-2.0.c"
763+ line="1103">the property on @target to bind</doc>
764+ <type name="utf8" c:type="const gchar*"/>
765+ </parameter>
766+ <parameter name="flags" transfer-ownership="none">
767+ <doc xml:space="preserve"
768+ filename="gobject-2.0.c"
769+ line="1104">the flags used to create the #GBinding</doc>
770+ <type name="BindingFlags" c:type="GBindingFlags"/>
771+ </parameter>
772+ <parameter name="transform_to"
773+ transfer-ownership="none"
774+ nullable="1"
775+ allow-none="1"
776+ scope="notified">
777+ <doc xml:space="preserve"
778+ filename="gobject-2.0.c"
779+ line="1105">the transformation function
780+ from the source object to the @target, or %NULL to use the default</doc>
781+ <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
782+ </parameter>
783+ <parameter name="transform_from"
784+ transfer-ownership="none"
785+ nullable="1"
786+ allow-none="1"
787+ scope="notified"
788+ closure="6"
789+ destroy="7">
790+ <doc xml:space="preserve"
791+ filename="gobject-2.0.c"
792+ line="1107">the transformation function
793+ from the @target to the source object, or %NULL to use the default</doc>
794+ <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
795+ </parameter>
796+ <parameter name="user_data"
797+ transfer-ownership="none"
798+ nullable="1"
799+ allow-none="1">
800+ <doc xml:space="preserve"
801+ filename="gobject-2.0.c"
802+ line="1109">custom data to be passed to the transformation
803+ functions, or %NULL</doc>
804+ <type name="gpointer" c:type="gpointer"/>
805+ </parameter>
806+ <parameter name="user_data_destroy"
807+ transfer-ownership="none"
808+ scope="async">
809+ <doc xml:space="preserve"
810+ filename="gobject-2.0.c"
811+ line="1111">function to be called when disposing the binding,
812+ to free the resources used by the transformation functions</doc>
813+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
814+ </parameter>
815+ </parameters>
816+ </method>
817+ <method name="bind_with_closures"
818+ c:identifier="g_binding_group_bind_with_closures"
819+ shadows="bind_full"
820+ version="2.72">
821+ <doc xml:space="preserve"
822+ filename="gobject-2.0.c"
823+ line="1125">Creates a binding between @source_property on the source object and
824+@target_property on @target, allowing you to set the transformation
825+functions to be used by the binding. The binding flag
826+%G_BINDING_SYNC_CREATE is automatically specified.
827+
828+This function is the language bindings friendly version of
829+g_binding_group_bind_property_full(), using #GClosures
830+instead of function pointers.
831+
832+See g_object_bind_property_with_closures() for more information.</doc>
833+ <source-position filename="gbindinggroup.h" line="75"/>
834+ <return-value transfer-ownership="none">
835+ <type name="none" c:type="void"/>
836+ </return-value>
837+ <parameters>
838+ <instance-parameter name="self" transfer-ownership="none">
839+ <doc xml:space="preserve"
840+ filename="gobject-2.0.c"
841+ line="1127">the #GBindingGroup</doc>
842+ <type name="BindingGroup" c:type="GBindingGroup*"/>
843+ </instance-parameter>
844+ <parameter name="source_property" transfer-ownership="none">
845+ <doc xml:space="preserve"
846+ filename="gobject-2.0.c"
847+ line="1128">the property on the source to bind</doc>
848+ <type name="utf8" c:type="const gchar*"/>
849+ </parameter>
850+ <parameter name="target" transfer-ownership="none">
851+ <doc xml:space="preserve"
852+ filename="gobject-2.0.c"
853+ line="1129">the target #GObject</doc>
854+ <type name="Object" c:type="gpointer"/>
855+ </parameter>
856+ <parameter name="target_property" transfer-ownership="none">
857+ <doc xml:space="preserve"
858+ filename="gobject-2.0.c"
859+ line="1130">the property on @target to bind</doc>
860+ <type name="utf8" c:type="const gchar*"/>
861+ </parameter>
862+ <parameter name="flags" transfer-ownership="none">
863+ <doc xml:space="preserve"
864+ filename="gobject-2.0.c"
865+ line="1131">the flags used to create the #GBinding</doc>
866+ <type name="BindingFlags" c:type="GBindingFlags"/>
867+ </parameter>
868+ <parameter name="transform_to"
869+ transfer-ownership="none"
870+ nullable="1"
871+ allow-none="1">
872+ <doc xml:space="preserve"
873+ filename="gobject-2.0.c"
874+ line="1132">a #GClosure wrapping the
875+ transformation function from the source object to the @target,
876+ or %NULL to use the default</doc>
877+ <type name="Closure" c:type="GClosure*"/>
878+ </parameter>
879+ <parameter name="transform_from"
880+ transfer-ownership="none"
881+ nullable="1"
882+ allow-none="1">
883+ <doc xml:space="preserve"
884+ filename="gobject-2.0.c"
885+ line="1135">a #GClosure wrapping the
886+ transformation function from the @target to the source object,
887+ or %NULL to use the default</doc>
888+ <type name="Closure" c:type="GClosure*"/>
889+ </parameter>
890+ </parameters>
891+ </method>
892+ <method name="dup_source"
893+ c:identifier="g_binding_group_dup_source"
894+ version="2.72">
895+ <doc xml:space="preserve"
896+ filename="gobject-2.0.c"
897+ line="1154">Gets the source object used for binding properties.</doc>
898+ <source-position filename="gbindinggroup.h" line="54"/>
899+ <return-value transfer-ownership="none" nullable="1">
900+ <doc xml:space="preserve"
901+ filename="gobject-2.0.c"
902+ line="1160">a #GObject or %NULL.</doc>
903+ <type name="Object" c:type="gpointer"/>
904+ </return-value>
905+ <parameters>
906+ <instance-parameter name="self" transfer-ownership="none">
907+ <doc xml:space="preserve"
908+ filename="gobject-2.0.c"
909+ line="1156">the #GBindingGroup</doc>
910+ <type name="BindingGroup" c:type="GBindingGroup*"/>
911+ </instance-parameter>
912+ </parameters>
913+ </method>
914+ <method name="set_source"
915+ c:identifier="g_binding_group_set_source"
916+ glib:set-property="source"
917+ version="2.72">
918+ <doc xml:space="preserve"
919+ filename="gobject-2.0.c"
920+ line="1175">Sets @source as the source object used for creating property
921+bindings. If there is already a source object all bindings from it
922+will be removed.
923+
924+Note that all properties that have been bound must exist on @source.</doc>
925+ <source-position filename="gbindinggroup.h" line="56"/>
926+ <return-value transfer-ownership="none">
927+ <type name="none" c:type="void"/>
928+ </return-value>
929+ <parameters>
930+ <instance-parameter name="self" transfer-ownership="none">
931+ <doc xml:space="preserve"
932+ filename="gobject-2.0.c"
933+ line="1177">the #GBindingGroup</doc>
934+ <type name="BindingGroup" c:type="GBindingGroup*"/>
935+ </instance-parameter>
936+ <parameter name="source"
937+ transfer-ownership="none"
938+ nullable="1"
939+ allow-none="1">
940+ <doc xml:space="preserve"
941+ filename="gobject-2.0.c"
942+ line="1178">the source #GObject,
943+ or %NULL to clear it</doc>
944+ <type name="Object" c:type="gpointer"/>
945+ </parameter>
946+ </parameters>
947+ </method>
948+ <property name="source"
949+ version="2.72"
950+ writable="1"
951+ transfer-ownership="none"
952+ setter="set_source">
953+ <doc xml:space="preserve"
954+ filename="gobject-2.0.c"
955+ line="58">The source object used for binding properties.</doc>
956+ <type name="Object"/>
957+ </property>
958+ </class>
959+ <callback name="BindingTransformFunc"
960+ c:type="GBindingTransformFunc"
961+ version="2.26">
962+ <doc xml:space="preserve"
963+ filename="gbinding.h"
964+ line="49">A function to be called to transform @from_value to @to_value.
965+
966+If this is the @transform_to function of a binding, then @from_value
967+is the @source_property on the @source object, and @to_value is the
968+@target_property on the @target object. If this is the
969+@transform_from function of a %G_BINDING_BIDIRECTIONAL binding,
970+then those roles are reversed.</doc>
971+ <source-position filename="gbinding.h" line="69"/>
972+ <return-value transfer-ownership="none">
973+ <doc xml:space="preserve"
974+ filename="gbinding.h"
975+ line="64">%TRUE if the transformation was successful, and %FALSE
976+ otherwise</doc>
977+ <type name="gboolean" c:type="gboolean"/>
978+ </return-value>
979+ <parameters>
980+ <parameter name="binding" transfer-ownership="none">
981+ <doc xml:space="preserve"
982+ filename="gbinding.h"
983+ line="51">a #GBinding</doc>
984+ <type name="Binding" c:type="GBinding*"/>
985+ </parameter>
986+ <parameter name="from_value" transfer-ownership="none">
987+ <doc xml:space="preserve"
988+ filename="gbinding.h"
989+ line="52">the #GValue containing the value to transform</doc>
990+ <type name="Value" c:type="const GValue*"/>
991+ </parameter>
992+ <parameter name="to_value" transfer-ownership="none">
993+ <doc xml:space="preserve"
994+ filename="gbinding.h"
995+ line="53">the #GValue in which to store the transformed value</doc>
996+ <type name="Value" c:type="GValue*"/>
997+ </parameter>
998+ <parameter name="user_data"
999+ transfer-ownership="none"
1000+ nullable="1"
1001+ allow-none="1"
1002+ closure="3">
1003+ <doc xml:space="preserve"
1004+ filename="gbinding.h"
1005+ line="54">data passed to the transform function</doc>
1006+ <type name="gpointer" c:type="gpointer"/>
1007+ </parameter>
1008+ </parameters>
1009+ </callback>
1010+ <callback name="BoxedCopyFunc" c:type="GBoxedCopyFunc">
1011+ <doc xml:space="preserve"
1012+ filename="gboxed.h"
1013+ line="47">This function is provided by the user and should produce a copy
1014+of the passed in boxed structure.</doc>
1015+ <source-position filename="gboxed.h" line="56"/>
1016+ <return-value transfer-ownership="none">
1017+ <doc xml:space="preserve"
1018+ filename="gboxed.h"
1019+ line="54">The newly created copy of the boxed structure.</doc>
1020+ <type name="gpointer" c:type="gpointer"/>
1021+ </return-value>
1022+ <parameters>
1023+ <parameter name="boxed" transfer-ownership="none">
1024+ <doc xml:space="preserve"
1025+ filename="gboxed.h"
1026+ line="49">The boxed structure to be copied.</doc>
1027+ <type name="gpointer" c:type="gpointer"/>
1028+ </parameter>
1029+ </parameters>
1030+ </callback>
1031+ <callback name="BoxedFreeFunc" c:type="GBoxedFreeFunc">
1032+ <doc xml:space="preserve"
1033+ filename="gboxed.h"
1034+ line="58">This function is provided by the user and should free the boxed
1035+structure passed.</doc>
1036+ <source-position filename="gboxed.h" line="65"/>
1037+ <return-value transfer-ownership="none">
1038+ <type name="none" c:type="void"/>
1039+ </return-value>
1040+ <parameters>
1041+ <parameter name="boxed" transfer-ownership="none">
1042+ <doc xml:space="preserve"
1043+ filename="gboxed.h"
1044+ line="60">The boxed structure to be freed.</doc>
1045+ <type name="gpointer" c:type="gpointer"/>
1046+ </parameter>
1047+ </parameters>
1048+ </callback>
1049+ <function-macro name="CALLBACK"
1050+ c:identifier="G_CALLBACK"
1051+ introspectable="0">
1052+ <doc xml:space="preserve"
1053+ filename="gclosure.h"
1054+ line="65">Cast a function pointer to a #GCallback.</doc>
1055+ <source-position filename="gclosure.h" line="71"/>
1056+ <parameters>
1057+ <parameter name="f">
1058+ <doc xml:space="preserve"
1059+ filename="gclosure.h"
1060+ line="67">a function pointer.</doc>
1061+ </parameter>
1062+ </parameters>
1063+ </function-macro>
1064+ <function-macro name="CCLOSURE_SWAP_DATA"
1065+ c:identifier="G_CCLOSURE_SWAP_DATA"
1066+ introspectable="0">
1067+ <doc xml:space="preserve"
1068+ filename="gclosure.h"
1069+ line="55">Checks whether the user data of the #GCClosure should be passed as the
1070+first parameter to the callback. See g_cclosure_new_swap().</doc>
1071+ <source-position filename="gclosure.h" line="64"/>
1072+ <parameters>
1073+ <parameter name="cclosure">
1074+ <doc xml:space="preserve"
1075+ filename="gclosure.h"
1076+ line="57">a #GCClosure</doc>
1077+ </parameter>
1078+ </parameters>
1079+ </function-macro>
1080+ <record name="CClosure" c:type="GCClosure">
1081+ <doc xml:space="preserve"
1082+ filename="gclosure.h"
1083+ line="154">A #GCClosure is a specialization of #GClosure for C function callbacks.</doc>
1084+ <source-position filename="gclosure.h" line="224"/>
1085+ <field name="closure" writable="1">
1086+ <doc xml:space="preserve"
1087+ filename="gclosure.h"
1088+ line="156">the #GClosure</doc>
1089+ <type name="Closure" c:type="GClosure"/>
1090+ </field>
1091+ <field name="callback" writable="1">
1092+ <doc xml:space="preserve"
1093+ filename="gclosure.h"
1094+ line="157">the callback function</doc>
1095+ <type name="gpointer" c:type="gpointer"/>
1096+ </field>
1097+ <function name="marshal_BOOLEAN__BOXED_BOXED"
1098+ c:identifier="g_cclosure_marshal_BOOLEAN__BOXED_BOXED">
1099+ <doc xml:space="preserve"
1100+ filename="gobject-2.0.c"
1101+ line="1252">A #GClosureMarshal function for use with signals with handlers that
1102+take two boxed pointers as arguments and return a boolean. If you
1103+have such a signal, you will probably also need to use an
1104+accumulator, such as g_signal_accumulator_true_handled().</doc>
1105+ <source-position filename="gmarshal.h" line="399"/>
1106+ <return-value transfer-ownership="none">
1107+ <type name="none" c:type="void"/>
1108+ </return-value>
1109+ <parameters>
1110+ <parameter name="closure" transfer-ownership="none">
1111+ <doc xml:space="preserve"
1112+ filename="gobject-2.0.c"
1113+ line="1254">A #GClosure.</doc>
1114+ <type name="Closure" c:type="GClosure*"/>
1115+ </parameter>
1116+ <parameter name="return_value" transfer-ownership="none">
1117+ <doc xml:space="preserve"
1118+ filename="gobject-2.0.c"
1119+ line="1255">A #GValue to store the return value. May be %NULL
1120+ if the callback of closure doesn't return a value.</doc>
1121+ <type name="Value" c:type="GValue*"/>
1122+ </parameter>
1123+ <parameter name="n_param_values" transfer-ownership="none">
1124+ <doc xml:space="preserve"
1125+ filename="gobject-2.0.c"
1126+ line="1257">The length of the @param_values array.</doc>
1127+ <type name="guint" c:type="guint"/>
1128+ </parameter>
1129+ <parameter name="param_values" transfer-ownership="none">
1130+ <doc xml:space="preserve"
1131+ filename="gobject-2.0.c"
1132+ line="1258">An array of #GValues holding the arguments
1133+ on which to invoke the callback of closure.</doc>
1134+ <type name="Value" c:type="const GValue*"/>
1135+ </parameter>
1136+ <parameter name="invocation_hint"
1137+ transfer-ownership="none"
1138+ nullable="1"
1139+ allow-none="1">
1140+ <doc xml:space="preserve"
1141+ filename="gobject-2.0.c"
1142+ line="1260">The invocation hint given as the last argument to
1143+ g_closure_invoke().</doc>
1144+ <type name="gpointer" c:type="gpointer"/>
1145+ </parameter>
1146+ <parameter name="marshal_data"
1147+ transfer-ownership="none"
1148+ nullable="1"
1149+ allow-none="1">
1150+ <doc xml:space="preserve"
1151+ filename="gobject-2.0.c"
1152+ line="1262">Additional data specified when registering the
1153+ marshaller, see g_closure_set_marshal() and
1154+ g_closure_set_meta_marshal()</doc>
1155+ <type name="gpointer" c:type="gpointer"/>
1156+ </parameter>
1157+ </parameters>
1158+ </function>
1159+ <function name="marshal_BOOLEAN__BOXED_BOXEDv"
1160+ c:identifier="g_cclosure_marshal_BOOLEAN__BOXED_BOXEDv"
1161+ introspectable="0">
1162+ <doc xml:space="preserve"
1163+ filename="gobject-2.0.c"
1164+ line="1273">The #GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__BOXED_BOXED().</doc>
1165+ <source-position filename="gmarshal.h" line="406"/>
1166+ <return-value transfer-ownership="none">
1167+ <type name="none" c:type="void"/>
1168+ </return-value>
1169+ <parameters>
1170+ <parameter name="closure" transfer-ownership="none">
1171+ <doc xml:space="preserve"
1172+ filename="gobject-2.0.c"
1173+ line="1275">the #GClosure to which the marshaller belongs</doc>
1174+ <type name="Closure" c:type="GClosure*"/>
1175+ </parameter>
1176+ <parameter name="return_value"
1177+ transfer-ownership="none"
1178+ nullable="1"
1179+ allow-none="1">
1180+ <doc xml:space="preserve"
1181+ filename="gobject-2.0.c"
1182+ line="1276">a #GValue to store the return
1183+ value. May be %NULL if the callback of @closure doesn't return a
1184+ value.</doc>
1185+ <type name="Value" c:type="GValue*"/>
1186+ </parameter>
1187+ <parameter name="instance" transfer-ownership="none">
1188+ <doc xml:space="preserve"
1189+ filename="gobject-2.0.c"
1190+ line="1279">the instance on which the closure is invoked.</doc>
1191+ <type name="TypeInstance" c:type="gpointer"/>
1192+ </parameter>
1193+ <parameter name="args" transfer-ownership="none">
1194+ <doc xml:space="preserve"
1195+ filename="gobject-2.0.c"
1196+ line="1280">va_list of arguments to be passed to the closure.</doc>
1197+ <type name="va_list" c:type="va_list"/>
1198+ </parameter>
1199+ <parameter name="marshal_data"
1200+ transfer-ownership="none"
1201+ nullable="1"
1202+ allow-none="1">
1203+ <doc xml:space="preserve"
1204+ filename="gobject-2.0.c"
1205+ line="1281">additional data specified when
1206+ registering the marshaller, see g_closure_set_marshal() and
1207+ g_closure_set_meta_marshal()</doc>
1208+ <type name="gpointer" c:type="gpointer"/>
1209+ </parameter>
1210+ <parameter name="n_params" transfer-ownership="none">
1211+ <doc xml:space="preserve"
1212+ filename="gobject-2.0.c"
1213+ line="1284">the length of the @param_types array</doc>
1214+ <type name="gint" c:type="int"/>
1215+ </parameter>
1216+ <parameter name="param_types" transfer-ownership="none">
1217+ <doc xml:space="preserve"
1218+ filename="gobject-2.0.c"
1219+ line="1285">the #GType of each argument from
1220+ @args.</doc>
1221+ <array length="5" zero-terminated="0" c:type="GType*">
1222+ <type name="GType" c:type="GType"/>
1223+ </array>
1224+ </parameter>
1225+ </parameters>
1226+ </function>
1227+ <function name="marshal_BOOLEAN__FLAGS"
1228+ c:identifier="g_cclosure_marshal_BOOLEAN__FLAGS">
1229+ <doc xml:space="preserve"
1230+ filename="gobject-2.0.c"
1231+ line="1292">A marshaller for a #GCClosure with a callback of type
1232+`gboolean (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter
1233+denotes a flags type.</doc>
1234+ <source-position filename="gmarshal.h" line="347"/>
1235+ <return-value transfer-ownership="none">
1236+ <type name="none" c:type="void"/>
1237+ </return-value>
1238+ <parameters>
1239+ <parameter name="closure" transfer-ownership="none">
1240+ <doc xml:space="preserve"
1241+ filename="gobject-2.0.c"
1242+ line="1294">the #GClosure to which the marshaller belongs</doc>
1243+ <type name="Closure" c:type="GClosure*"/>
1244+ </parameter>
1245+ <parameter name="return_value" transfer-ownership="none">
1246+ <doc xml:space="preserve"
1247+ filename="gobject-2.0.c"
1248+ line="1295">a #GValue which can store the returned #gboolean</doc>
1249+ <type name="Value" c:type="GValue*"/>
1250+ </parameter>
1251+ <parameter name="n_param_values" transfer-ownership="none">
1252+ <doc xml:space="preserve"
1253+ filename="gobject-2.0.c"
1254+ line="1296">2</doc>
1255+ <type name="guint" c:type="guint"/>
1256+ </parameter>
1257+ <parameter name="param_values" transfer-ownership="none">
1258+ <doc xml:space="preserve"
1259+ filename="gobject-2.0.c"
1260+ line="1297">a #GValue array holding instance and arg1</doc>
1261+ <type name="Value" c:type="const GValue*"/>
1262+ </parameter>
1263+ <parameter name="invocation_hint"
1264+ transfer-ownership="none"
1265+ nullable="1"
1266+ allow-none="1">
1267+ <doc xml:space="preserve"
1268+ filename="gobject-2.0.c"
1269+ line="1298">the invocation hint given as the last argument
1270+ to g_closure_invoke()</doc>
1271+ <type name="gpointer" c:type="gpointer"/>
1272+ </parameter>
1273+ <parameter name="marshal_data"
1274+ transfer-ownership="none"
1275+ nullable="1"
1276+ allow-none="1">
1277+ <doc xml:space="preserve"
1278+ filename="gobject-2.0.c"
1279+ line="1300">additional data specified when registering the marshaller</doc>
1280+ <type name="gpointer" c:type="gpointer"/>
1281+ </parameter>
1282+ </parameters>
1283+ </function>
1284+ <function name="marshal_BOOLEAN__FLAGSv"
1285+ c:identifier="g_cclosure_marshal_BOOLEAN__FLAGSv"
1286+ introspectable="0">
1287+ <doc xml:space="preserve"
1288+ filename="gobject-2.0.c"
1289+ line="1308">The #GVaClosureMarshal equivalent to g_cclosure_marshal_BOOLEAN__FLAGS().</doc>
1290+ <source-position filename="gmarshal.h" line="354"/>
1291+ <return-value transfer-ownership="none">
1292+ <type name="none" c:type="void"/>
1293+ </return-value>
1294+ <parameters>
1295+ <parameter name="closure" transfer-ownership="none">
1296+ <doc xml:space="preserve"
1297+ filename="gobject-2.0.c"
1298+ line="1310">the #GClosure to which the marshaller belongs</doc>
1299+ <type name="Closure" c:type="GClosure*"/>
1300+ </parameter>
1301+ <parameter name="return_value"
1302+ transfer-ownership="none"
1303+ nullable="1"
1304+ allow-none="1">
1305+ <doc xml:space="preserve"
1306+ filename="gobject-2.0.c"
1307+ line="1311">a #GValue to store the return
1308+ value. May be %NULL if the callback of @closure doesn't return a
1309+ value.</doc>
1310+ <type name="Value" c:type="GValue*"/>
1311+ </parameter>
1312+ <parameter name="instance" transfer-ownership="none">
1313+ <doc xml:space="preserve"
1314+ filename="gobject-2.0.c"
1315+ line="1314">the instance on which the closure is invoked.</doc>
1316+ <type name="TypeInstance" c:type="gpointer"/>
1317+ </parameter>
1318+ <parameter name="args" transfer-ownership="none">
1319+ <doc xml:space="preserve"
1320+ filename="gobject-2.0.c"
1321+ line="1315">va_list of arguments to be passed to the closure.</doc>
1322+ <type name="va_list" c:type="va_list"/>
1323+ </parameter>
1324+ <parameter name="marshal_data"
1325+ transfer-ownership="none"
1326+ nullable="1"
1327+ allow-none="1">
1328+ <doc xml:space="preserve"
1329+ filename="gobject-2.0.c"
1330+ line="1316">additional data specified when
1331+ registering the marshaller, see g_closure_set_marshal() and
1332+ g_closure_set_meta_marshal()</doc>
1333+ <type name="gpointer" c:type="gpointer"/>
1334+ </parameter>
1335+ <parameter name="n_params" transfer-ownership="none">
1336+ <doc xml:space="preserve"
1337+ filename="gobject-2.0.c"
1338+ line="1319">the length of the @param_types array</doc>
1339+ <type name="gint" c:type="int"/>
1340+ </parameter>
1341+ <parameter name="param_types" transfer-ownership="none">
1342+ <doc xml:space="preserve"
1343+ filename="gobject-2.0.c"
1344+ line="1320">the #GType of each argument from
1345+ @args.</doc>
1346+ <array length="5" zero-terminated="0" c:type="GType*">
1347+ <type name="GType" c:type="GType"/>
1348+ </array>
1349+ </parameter>
1350+ </parameters>
1351+ </function>
1352+ <function name="marshal_STRING__OBJECT_POINTER"
1353+ c:identifier="g_cclosure_marshal_STRING__OBJECT_POINTER">
1354+ <doc xml:space="preserve"
1355+ filename="gobject-2.0.c"
1356+ line="1351">A marshaller for a #GCClosure with a callback of type
1357+`gchar* (*callback) (gpointer instance, GObject *arg1, gpointer arg2, gpointer user_data)`.</doc>
1358+ <source-position filename="gmarshal.h" line="382"/>
1359+ <return-value transfer-ownership="none">
1360+ <type name="none" c:type="void"/>
1361+ </return-value>
1362+ <parameters>
1363+ <parameter name="closure" transfer-ownership="none">
1364+ <doc xml:space="preserve"
1365+ filename="gobject-2.0.c"
1366+ line="1353">the #GClosure to which the marshaller belongs</doc>
1367+ <type name="Closure" c:type="GClosure*"/>
1368+ </parameter>
1369+ <parameter name="return_value" transfer-ownership="none">
1370+ <doc xml:space="preserve"
1371+ filename="gobject-2.0.c"
1372+ line="1354">a #GValue, which can store the returned string</doc>
1373+ <type name="Value" c:type="GValue*"/>
1374+ </parameter>
1375+ <parameter name="n_param_values" transfer-ownership="none">
1376+ <doc xml:space="preserve"
1377+ filename="gobject-2.0.c"
1378+ line="1355">3</doc>
1379+ <type name="guint" c:type="guint"/>
1380+ </parameter>
1381+ <parameter name="param_values" transfer-ownership="none">
1382+ <doc xml:space="preserve"
1383+ filename="gobject-2.0.c"
1384+ line="1356">a #GValue array holding instance, arg1 and arg2</doc>
1385+ <type name="Value" c:type="const GValue*"/>
1386+ </parameter>
1387+ <parameter name="invocation_hint"
1388+ transfer-ownership="none"
1389+ nullable="1"
1390+ allow-none="1">
1391+ <doc xml:space="preserve"
1392+ filename="gobject-2.0.c"
1393+ line="1357">the invocation hint given as the last argument
1394+ to g_closure_invoke()</doc>
1395+ <type name="gpointer" c:type="gpointer"/>
1396+ </parameter>
1397+ <parameter name="marshal_data"
1398+ transfer-ownership="none"
1399+ nullable="1"
1400+ allow-none="1">
1401+ <doc xml:space="preserve"
1402+ filename="gobject-2.0.c"
1403+ line="1359">additional data specified when registering the marshaller</doc>
1404+ <type name="gpointer" c:type="gpointer"/>
1405+ </parameter>
1406+ </parameters>
1407+ </function>
1408+ <function name="marshal_STRING__OBJECT_POINTERv"
1409+ c:identifier="g_cclosure_marshal_STRING__OBJECT_POINTERv"
1410+ introspectable="0">
1411+ <doc xml:space="preserve"
1412+ filename="gobject-2.0.c"
1413+ line="1366">The #GVaClosureMarshal equivalent to g_cclosure_marshal_STRING__OBJECT_POINTER().</doc>
1414+ <source-position filename="gmarshal.h" line="389"/>
1415+ <return-value transfer-ownership="none">
1416+ <type name="none" c:type="void"/>
1417+ </return-value>
1418+ <parameters>
1419+ <parameter name="closure" transfer-ownership="none">
1420+ <doc xml:space="preserve"
1421+ filename="gobject-2.0.c"
1422+ line="1368">the #GClosure to which the marshaller belongs</doc>
1423+ <type name="Closure" c:type="GClosure*"/>
1424+ </parameter>
1425+ <parameter name="return_value"
1426+ transfer-ownership="none"
1427+ nullable="1"
1428+ allow-none="1">
1429+ <doc xml:space="preserve"
1430+ filename="gobject-2.0.c"
1431+ line="1369">a #GValue to store the return
1432+ value. May be %NULL if the callback of @closure doesn't return a
1433+ value.</doc>
1434+ <type name="Value" c:type="GValue*"/>
1435+ </parameter>
1436+ <parameter name="instance" transfer-ownership="none">
1437+ <doc xml:space="preserve"
1438+ filename="gobject-2.0.c"
1439+ line="1372">the instance on which the closure is invoked.</doc>
1440+ <type name="TypeInstance" c:type="gpointer"/>
1441+ </parameter>
1442+ <parameter name="args" transfer-ownership="none">
1443+ <doc xml:space="preserve"
1444+ filename="gobject-2.0.c"
1445+ line="1373">va_list of arguments to be passed to the closure.</doc>
1446+ <type name="va_list" c:type="va_list"/>
1447+ </parameter>
1448+ <parameter name="marshal_data"
1449+ transfer-ownership="none"
1450+ nullable="1"
1451+ allow-none="1">
1452+ <doc xml:space="preserve"
1453+ filename="gobject-2.0.c"
1454+ line="1374">additional data specified when
1455+ registering the marshaller, see g_closure_set_marshal() and
1456+ g_closure_set_meta_marshal()</doc>
1457+ <type name="gpointer" c:type="gpointer"/>
1458+ </parameter>
1459+ <parameter name="n_params" transfer-ownership="none">
1460+ <doc xml:space="preserve"
1461+ filename="gobject-2.0.c"
1462+ line="1377">the length of the @param_types array</doc>
1463+ <type name="gint" c:type="int"/>
1464+ </parameter>
1465+ <parameter name="param_types" transfer-ownership="none">
1466+ <doc xml:space="preserve"
1467+ filename="gobject-2.0.c"
1468+ line="1378">the #GType of each argument from
1469+ @args.</doc>
1470+ <array length="5" zero-terminated="0" c:type="GType*">
1471+ <type name="GType" c:type="GType"/>
1472+ </array>
1473+ </parameter>
1474+ </parameters>
1475+ </function>
1476+ <function name="marshal_VOID__BOOLEAN"
1477+ c:identifier="g_cclosure_marshal_VOID__BOOLEAN">
1478+ <doc xml:space="preserve"
1479+ filename="gobject-2.0.c"
1480+ line="1385">A marshaller for a #GCClosure with a callback of type
1481+`void (*callback) (gpointer instance, gboolean arg1, gpointer user_data)`.</doc>
1482+ <source-position filename="gmarshal.h" line="41"/>
1483+ <return-value transfer-ownership="none">
1484+ <type name="none" c:type="void"/>
1485+ </return-value>
1486+ <parameters>
1487+ <parameter name="closure" transfer-ownership="none">
1488+ <doc xml:space="preserve"
1489+ filename="gobject-2.0.c"
1490+ line="1387">the #GClosure to which the marshaller belongs</doc>
1491+ <type name="Closure" c:type="GClosure*"/>
1492+ </parameter>
1493+ <parameter name="return_value" transfer-ownership="none">
1494+ <doc xml:space="preserve"
1495+ filename="gobject-2.0.c"
1496+ line="1388">ignored</doc>
1497+ <type name="Value" c:type="GValue*"/>
1498+ </parameter>
1499+ <parameter name="n_param_values" transfer-ownership="none">
1500+ <doc xml:space="preserve"
1501+ filename="gobject-2.0.c"
1502+ line="1389">2</doc>
1503+ <type name="guint" c:type="guint"/>
1504+ </parameter>
1505+ <parameter name="param_values" transfer-ownership="none">
1506+ <doc xml:space="preserve"
1507+ filename="gobject-2.0.c"
1508+ line="1390">a #GValue array holding the instance and the #gboolean parameter</doc>
1509+ <type name="Value" c:type="const GValue*"/>
1510+ </parameter>
1511+ <parameter name="invocation_hint"
1512+ transfer-ownership="none"
1513+ nullable="1"
1514+ allow-none="1">
1515+ <doc xml:space="preserve"
1516+ filename="gobject-2.0.c"
1517+ line="1391">the invocation hint given as the last argument
1518+ to g_closure_invoke()</doc>
1519+ <type name="gpointer" c:type="gpointer"/>
1520+ </parameter>
1521+ <parameter name="marshal_data"
1522+ transfer-ownership="none"
1523+ nullable="1"
1524+ allow-none="1">
1525+ <doc xml:space="preserve"
1526+ filename="gobject-2.0.c"
1527+ line="1393">additional data specified when registering the marshaller</doc>
1528+ <type name="gpointer" c:type="gpointer"/>
1529+ </parameter>
1530+ </parameters>
1531+ </function>
1532+ <function name="marshal_VOID__BOOLEANv"
1533+ c:identifier="g_cclosure_marshal_VOID__BOOLEANv"
1534+ introspectable="0">
1535+ <doc xml:space="preserve"
1536+ filename="gobject-2.0.c"
1537+ line="1400">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOOLEAN().</doc>
1538+ <source-position filename="gmarshal.h" line="48"/>
1539+ <return-value transfer-ownership="none">
1540+ <type name="none" c:type="void"/>
1541+ </return-value>
1542+ <parameters>
1543+ <parameter name="closure" transfer-ownership="none">
1544+ <doc xml:space="preserve"
1545+ filename="gobject-2.0.c"
1546+ line="1402">the #GClosure to which the marshaller belongs</doc>
1547+ <type name="Closure" c:type="GClosure*"/>
1548+ </parameter>
1549+ <parameter name="return_value"
1550+ transfer-ownership="none"
1551+ nullable="1"
1552+ allow-none="1">
1553+ <doc xml:space="preserve"
1554+ filename="gobject-2.0.c"
1555+ line="1403">a #GValue to store the return
1556+ value. May be %NULL if the callback of @closure doesn't return a
1557+ value.</doc>
1558+ <type name="Value" c:type="GValue*"/>
1559+ </parameter>
1560+ <parameter name="instance" transfer-ownership="none">
1561+ <doc xml:space="preserve"
1562+ filename="gobject-2.0.c"
1563+ line="1406">the instance on which the closure is invoked.</doc>
1564+ <type name="TypeInstance" c:type="gpointer"/>
1565+ </parameter>
1566+ <parameter name="args" transfer-ownership="none">
1567+ <doc xml:space="preserve"
1568+ filename="gobject-2.0.c"
1569+ line="1407">va_list of arguments to be passed to the closure.</doc>
1570+ <type name="va_list" c:type="va_list"/>
1571+ </parameter>
1572+ <parameter name="marshal_data"
1573+ transfer-ownership="none"
1574+ nullable="1"
1575+ allow-none="1">
1576+ <doc xml:space="preserve"
1577+ filename="gobject-2.0.c"
1578+ line="1408">additional data specified when
1579+ registering the marshaller, see g_closure_set_marshal() and
1580+ g_closure_set_meta_marshal()</doc>
1581+ <type name="gpointer" c:type="gpointer"/>
1582+ </parameter>
1583+ <parameter name="n_params" transfer-ownership="none">
1584+ <doc xml:space="preserve"
1585+ filename="gobject-2.0.c"
1586+ line="1411">the length of the @param_types array</doc>
1587+ <type name="gint" c:type="int"/>
1588+ </parameter>
1589+ <parameter name="param_types" transfer-ownership="none">
1590+ <doc xml:space="preserve"
1591+ filename="gobject-2.0.c"
1592+ line="1412">the #GType of each argument from
1593+ @args.</doc>
1594+ <array length="5" zero-terminated="0" c:type="GType*">
1595+ <type name="GType" c:type="GType"/>
1596+ </array>
1597+ </parameter>
1598+ </parameters>
1599+ </function>
1600+ <function name="marshal_VOID__BOXED"
1601+ c:identifier="g_cclosure_marshal_VOID__BOXED">
1602+ <doc xml:space="preserve"
1603+ filename="gobject-2.0.c"
1604+ line="1419">A marshaller for a #GCClosure with a callback of type
1605+`void (*callback) (gpointer instance, GBoxed *arg1, gpointer user_data)`.</doc>
1606+ <source-position filename="gmarshal.h" line="262"/>
1607+ <return-value transfer-ownership="none">
1608+ <type name="none" c:type="void"/>
1609+ </return-value>
1610+ <parameters>
1611+ <parameter name="closure" transfer-ownership="none">
1612+ <doc xml:space="preserve"
1613+ filename="gobject-2.0.c"
1614+ line="1421">the #GClosure to which the marshaller belongs</doc>
1615+ <type name="Closure" c:type="GClosure*"/>
1616+ </parameter>
1617+ <parameter name="return_value" transfer-ownership="none">
1618+ <doc xml:space="preserve"
1619+ filename="gobject-2.0.c"
1620+ line="1422">ignored</doc>
1621+ <type name="Value" c:type="GValue*"/>
1622+ </parameter>
1623+ <parameter name="n_param_values" transfer-ownership="none">
1624+ <doc xml:space="preserve"
1625+ filename="gobject-2.0.c"
1626+ line="1423">2</doc>
1627+ <type name="guint" c:type="guint"/>
1628+ </parameter>
1629+ <parameter name="param_values" transfer-ownership="none">
1630+ <doc xml:space="preserve"
1631+ filename="gobject-2.0.c"
1632+ line="1424">a #GValue array holding the instance and the #GBoxed* parameter</doc>
1633+ <type name="Value" c:type="const GValue*"/>
1634+ </parameter>
1635+ <parameter name="invocation_hint"
1636+ transfer-ownership="none"
1637+ nullable="1"
1638+ allow-none="1">
1639+ <doc xml:space="preserve"
1640+ filename="gobject-2.0.c"
1641+ line="1425">the invocation hint given as the last argument
1642+ to g_closure_invoke()</doc>
1643+ <type name="gpointer" c:type="gpointer"/>
1644+ </parameter>
1645+ <parameter name="marshal_data"
1646+ transfer-ownership="none"
1647+ nullable="1"
1648+ allow-none="1">
1649+ <doc xml:space="preserve"
1650+ filename="gobject-2.0.c"
1651+ line="1427">additional data specified when registering the marshaller</doc>
1652+ <type name="gpointer" c:type="gpointer"/>
1653+ </parameter>
1654+ </parameters>
1655+ </function>
1656+ <function name="marshal_VOID__BOXEDv"
1657+ c:identifier="g_cclosure_marshal_VOID__BOXEDv"
1658+ introspectable="0">
1659+ <doc xml:space="preserve"
1660+ filename="gobject-2.0.c"
1661+ line="1434">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__BOXED().</doc>
1662+ <source-position filename="gmarshal.h" line="269"/>
1663+ <return-value transfer-ownership="none">
1664+ <type name="none" c:type="void"/>
1665+ </return-value>
1666+ <parameters>
1667+ <parameter name="closure" transfer-ownership="none">
1668+ <doc xml:space="preserve"
1669+ filename="gobject-2.0.c"
1670+ line="1436">the #GClosure to which the marshaller belongs</doc>
1671+ <type name="Closure" c:type="GClosure*"/>
1672+ </parameter>
1673+ <parameter name="return_value"
1674+ transfer-ownership="none"
1675+ nullable="1"
1676+ allow-none="1">
1677+ <doc xml:space="preserve"
1678+ filename="gobject-2.0.c"
1679+ line="1437">a #GValue to store the return
1680+ value. May be %NULL if the callback of @closure doesn't return a
1681+ value.</doc>
1682+ <type name="Value" c:type="GValue*"/>
1683+ </parameter>
1684+ <parameter name="instance" transfer-ownership="none">
1685+ <doc xml:space="preserve"
1686+ filename="gobject-2.0.c"
1687+ line="1440">the instance on which the closure is invoked.</doc>
1688+ <type name="TypeInstance" c:type="gpointer"/>
1689+ </parameter>
1690+ <parameter name="args" transfer-ownership="none">
1691+ <doc xml:space="preserve"
1692+ filename="gobject-2.0.c"
1693+ line="1441">va_list of arguments to be passed to the closure.</doc>
1694+ <type name="va_list" c:type="va_list"/>
1695+ </parameter>
1696+ <parameter name="marshal_data"
1697+ transfer-ownership="none"
1698+ nullable="1"
1699+ allow-none="1">
1700+ <doc xml:space="preserve"
1701+ filename="gobject-2.0.c"
1702+ line="1442">additional data specified when
1703+ registering the marshaller, see g_closure_set_marshal() and
1704+ g_closure_set_meta_marshal()</doc>
1705+ <type name="gpointer" c:type="gpointer"/>
1706+ </parameter>
1707+ <parameter name="n_params" transfer-ownership="none">
1708+ <doc xml:space="preserve"
1709+ filename="gobject-2.0.c"
1710+ line="1445">the length of the @param_types array</doc>
1711+ <type name="gint" c:type="int"/>
1712+ </parameter>
1713+ <parameter name="param_types" transfer-ownership="none">
1714+ <doc xml:space="preserve"
1715+ filename="gobject-2.0.c"
1716+ line="1446">the #GType of each argument from
1717+ @args.</doc>
1718+ <array length="5" zero-terminated="0" c:type="GType*">
1719+ <type name="GType" c:type="GType"/>
1720+ </array>
1721+ </parameter>
1722+ </parameters>
1723+ </function>
1724+ <function name="marshal_VOID__CHAR"
1725+ c:identifier="g_cclosure_marshal_VOID__CHAR">
1726+ <doc xml:space="preserve"
1727+ filename="gobject-2.0.c"
1728+ line="1453">A marshaller for a #GCClosure with a callback of type
1729+`void (*callback) (gpointer instance, gchar arg1, gpointer user_data)`.</doc>
1730+ <source-position filename="gmarshal.h" line="58"/>
1731+ <return-value transfer-ownership="none">
1732+ <type name="none" c:type="void"/>
1733+ </return-value>
1734+ <parameters>
1735+ <parameter name="closure" transfer-ownership="none">
1736+ <doc xml:space="preserve"
1737+ filename="gobject-2.0.c"
1738+ line="1455">the #GClosure to which the marshaller belongs</doc>
1739+ <type name="Closure" c:type="GClosure*"/>
1740+ </parameter>
1741+ <parameter name="return_value" transfer-ownership="none">
1742+ <doc xml:space="preserve"
1743+ filename="gobject-2.0.c"
1744+ line="1456">ignored</doc>
1745+ <type name="Value" c:type="GValue*"/>
1746+ </parameter>
1747+ <parameter name="n_param_values" transfer-ownership="none">
1748+ <doc xml:space="preserve"
1749+ filename="gobject-2.0.c"
1750+ line="1457">2</doc>
1751+ <type name="guint" c:type="guint"/>
1752+ </parameter>
1753+ <parameter name="param_values" transfer-ownership="none">
1754+ <doc xml:space="preserve"
1755+ filename="gobject-2.0.c"
1756+ line="1458">a #GValue array holding the instance and the #gchar parameter</doc>
1757+ <type name="Value" c:type="const GValue*"/>
1758+ </parameter>
1759+ <parameter name="invocation_hint"
1760+ transfer-ownership="none"
1761+ nullable="1"
1762+ allow-none="1">
1763+ <doc xml:space="preserve"
1764+ filename="gobject-2.0.c"
1765+ line="1459">the invocation hint given as the last argument
1766+ to g_closure_invoke()</doc>
1767+ <type name="gpointer" c:type="gpointer"/>
1768+ </parameter>
1769+ <parameter name="marshal_data"
1770+ transfer-ownership="none"
1771+ nullable="1"
1772+ allow-none="1">
1773+ <doc xml:space="preserve"
1774+ filename="gobject-2.0.c"
1775+ line="1461">additional data specified when registering the marshaller</doc>
1776+ <type name="gpointer" c:type="gpointer"/>
1777+ </parameter>
1778+ </parameters>
1779+ </function>
1780+ <function name="marshal_VOID__CHARv"
1781+ c:identifier="g_cclosure_marshal_VOID__CHARv"
1782+ introspectable="0">
1783+ <doc xml:space="preserve"
1784+ filename="gobject-2.0.c"
1785+ line="1468">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__CHAR().</doc>
1786+ <source-position filename="gmarshal.h" line="65"/>
1787+ <return-value transfer-ownership="none">
1788+ <type name="none" c:type="void"/>
1789+ </return-value>
1790+ <parameters>
1791+ <parameter name="closure" transfer-ownership="none">
1792+ <doc xml:space="preserve"
1793+ filename="gobject-2.0.c"
1794+ line="1470">the #GClosure to which the marshaller belongs</doc>
1795+ <type name="Closure" c:type="GClosure*"/>
1796+ </parameter>
1797+ <parameter name="return_value"
1798+ transfer-ownership="none"
1799+ nullable="1"
1800+ allow-none="1">
1801+ <doc xml:space="preserve"
1802+ filename="gobject-2.0.c"
1803+ line="1471">a #GValue to store the return
1804+ value. May be %NULL if the callback of @closure doesn't return a
1805+ value.</doc>
1806+ <type name="Value" c:type="GValue*"/>
1807+ </parameter>
1808+ <parameter name="instance" transfer-ownership="none">
1809+ <doc xml:space="preserve"
1810+ filename="gobject-2.0.c"
1811+ line="1474">the instance on which the closure is invoked.</doc>
1812+ <type name="TypeInstance" c:type="gpointer"/>
1813+ </parameter>
1814+ <parameter name="args" transfer-ownership="none">
1815+ <doc xml:space="preserve"
1816+ filename="gobject-2.0.c"
1817+ line="1475">va_list of arguments to be passed to the closure.</doc>
1818+ <type name="va_list" c:type="va_list"/>
1819+ </parameter>
1820+ <parameter name="marshal_data"
1821+ transfer-ownership="none"
1822+ nullable="1"
1823+ allow-none="1">
1824+ <doc xml:space="preserve"
1825+ filename="gobject-2.0.c"
1826+ line="1476">additional data specified when
1827+ registering the marshaller, see g_closure_set_marshal() and
1828+ g_closure_set_meta_marshal()</doc>
1829+ <type name="gpointer" c:type="gpointer"/>
1830+ </parameter>
1831+ <parameter name="n_params" transfer-ownership="none">
1832+ <doc xml:space="preserve"
1833+ filename="gobject-2.0.c"
1834+ line="1479">the length of the @param_types array</doc>
1835+ <type name="gint" c:type="int"/>
1836+ </parameter>
1837+ <parameter name="param_types" transfer-ownership="none">
1838+ <doc xml:space="preserve"
1839+ filename="gobject-2.0.c"
1840+ line="1480">the #GType of each argument from
1841+ @args.</doc>
1842+ <array length="5" zero-terminated="0" c:type="GType*">
1843+ <type name="GType" c:type="GType"/>
1844+ </array>
1845+ </parameter>
1846+ </parameters>
1847+ </function>
1848+ <function name="marshal_VOID__DOUBLE"
1849+ c:identifier="g_cclosure_marshal_VOID__DOUBLE">
1850+ <doc xml:space="preserve"
1851+ filename="gobject-2.0.c"
1852+ line="1487">A marshaller for a #GCClosure with a callback of type
1853+`void (*callback) (gpointer instance, gdouble arg1, gpointer user_data)`.</doc>
1854+ <source-position filename="gmarshal.h" line="211"/>
1855+ <return-value transfer-ownership="none">
1856+ <type name="none" c:type="void"/>
1857+ </return-value>
1858+ <parameters>
1859+ <parameter name="closure" transfer-ownership="none">
1860+ <doc xml:space="preserve"
1861+ filename="gobject-2.0.c"
1862+ line="1489">the #GClosure to which the marshaller belongs</doc>
1863+ <type name="Closure" c:type="GClosure*"/>
1864+ </parameter>
1865+ <parameter name="return_value" transfer-ownership="none">
1866+ <doc xml:space="preserve"
1867+ filename="gobject-2.0.c"
1868+ line="1490">ignored</doc>
1869+ <type name="Value" c:type="GValue*"/>
1870+ </parameter>
1871+ <parameter name="n_param_values" transfer-ownership="none">
1872+ <doc xml:space="preserve"
1873+ filename="gobject-2.0.c"
1874+ line="1491">2</doc>
1875+ <type name="guint" c:type="guint"/>
1876+ </parameter>
1877+ <parameter name="param_values" transfer-ownership="none">
1878+ <doc xml:space="preserve"
1879+ filename="gobject-2.0.c"
1880+ line="1492">a #GValue array holding the instance and the #gdouble parameter</doc>
1881+ <type name="Value" c:type="const GValue*"/>
1882+ </parameter>
1883+ <parameter name="invocation_hint"
1884+ transfer-ownership="none"
1885+ nullable="1"
1886+ allow-none="1">
1887+ <doc xml:space="preserve"
1888+ filename="gobject-2.0.c"
1889+ line="1493">the invocation hint given as the last argument
1890+ to g_closure_invoke()</doc>
1891+ <type name="gpointer" c:type="gpointer"/>
1892+ </parameter>
1893+ <parameter name="marshal_data"
1894+ transfer-ownership="none"
1895+ nullable="1"
1896+ allow-none="1">
1897+ <doc xml:space="preserve"
1898+ filename="gobject-2.0.c"
1899+ line="1495">additional data specified when registering the marshaller</doc>
1900+ <type name="gpointer" c:type="gpointer"/>
1901+ </parameter>
1902+ </parameters>
1903+ </function>
1904+ <function name="marshal_VOID__DOUBLEv"
1905+ c:identifier="g_cclosure_marshal_VOID__DOUBLEv"
1906+ introspectable="0">
1907+ <doc xml:space="preserve"
1908+ filename="gobject-2.0.c"
1909+ line="1502">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__DOUBLE().</doc>
1910+ <source-position filename="gmarshal.h" line="218"/>
1911+ <return-value transfer-ownership="none">
1912+ <type name="none" c:type="void"/>
1913+ </return-value>
1914+ <parameters>
1915+ <parameter name="closure" transfer-ownership="none">
1916+ <doc xml:space="preserve"
1917+ filename="gobject-2.0.c"
1918+ line="1504">the #GClosure to which the marshaller belongs</doc>
1919+ <type name="Closure" c:type="GClosure*"/>
1920+ </parameter>
1921+ <parameter name="return_value"
1922+ transfer-ownership="none"
1923+ nullable="1"
1924+ allow-none="1">
1925+ <doc xml:space="preserve"
1926+ filename="gobject-2.0.c"
1927+ line="1505">a #GValue to store the return
1928+ value. May be %NULL if the callback of @closure doesn't return a
1929+ value.</doc>
1930+ <type name="Value" c:type="GValue*"/>
1931+ </parameter>
1932+ <parameter name="instance" transfer-ownership="none">
1933+ <doc xml:space="preserve"
1934+ filename="gobject-2.0.c"
1935+ line="1508">the instance on which the closure is invoked.</doc>
1936+ <type name="TypeInstance" c:type="gpointer"/>
1937+ </parameter>
1938+ <parameter name="args" transfer-ownership="none">
1939+ <doc xml:space="preserve"
1940+ filename="gobject-2.0.c"
1941+ line="1509">va_list of arguments to be passed to the closure.</doc>
1942+ <type name="va_list" c:type="va_list"/>
1943+ </parameter>
1944+ <parameter name="marshal_data"
1945+ transfer-ownership="none"
1946+ nullable="1"
1947+ allow-none="1">
1948+ <doc xml:space="preserve"
1949+ filename="gobject-2.0.c"
1950+ line="1510">additional data specified when
1951+ registering the marshaller, see g_closure_set_marshal() and
1952+ g_closure_set_meta_marshal()</doc>
1953+ <type name="gpointer" c:type="gpointer"/>
1954+ </parameter>
1955+ <parameter name="n_params" transfer-ownership="none">
1956+ <doc xml:space="preserve"
1957+ filename="gobject-2.0.c"
1958+ line="1513">the length of the @param_types array</doc>
1959+ <type name="gint" c:type="int"/>
1960+ </parameter>
1961+ <parameter name="param_types" transfer-ownership="none">
1962+ <doc xml:space="preserve"
1963+ filename="gobject-2.0.c"
1964+ line="1514">the #GType of each argument from
1965+ @args.</doc>
1966+ <array length="5" zero-terminated="0" c:type="GType*">
1967+ <type name="GType" c:type="GType"/>
1968+ </array>
1969+ </parameter>
1970+ </parameters>
1971+ </function>
1972+ <function name="marshal_VOID__ENUM"
1973+ c:identifier="g_cclosure_marshal_VOID__ENUM">
1974+ <doc xml:space="preserve"
1975+ filename="gobject-2.0.c"
1976+ line="1521">A marshaller for a #GCClosure with a callback of type
1977+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter denotes an enumeration type..</doc>
1978+ <source-position filename="gmarshal.h" line="160"/>
1979+ <return-value transfer-ownership="none">
1980+ <type name="none" c:type="void"/>
1981+ </return-value>
1982+ <parameters>
1983+ <parameter name="closure" transfer-ownership="none">
1984+ <doc xml:space="preserve"
1985+ filename="gobject-2.0.c"
1986+ line="1523">the #GClosure to which the marshaller belongs</doc>
1987+ <type name="Closure" c:type="GClosure*"/>
1988+ </parameter>
1989+ <parameter name="return_value" transfer-ownership="none">
1990+ <doc xml:space="preserve"
1991+ filename="gobject-2.0.c"
1992+ line="1524">ignored</doc>
1993+ <type name="Value" c:type="GValue*"/>
1994+ </parameter>
1995+ <parameter name="n_param_values" transfer-ownership="none">
1996+ <doc xml:space="preserve"
1997+ filename="gobject-2.0.c"
1998+ line="1525">2</doc>
1999+ <type name="guint" c:type="guint"/>
2000+ </parameter>
2001+ <parameter name="param_values" transfer-ownership="none">
2002+ <doc xml:space="preserve"
2003+ filename="gobject-2.0.c"
2004+ line="1526">a #GValue array holding the instance and the enumeration parameter</doc>
2005+ <type name="Value" c:type="const GValue*"/>
2006+ </parameter>
2007+ <parameter name="invocation_hint"
2008+ transfer-ownership="none"
2009+ nullable="1"
2010+ allow-none="1">
2011+ <doc xml:space="preserve"
2012+ filename="gobject-2.0.c"
2013+ line="1527">the invocation hint given as the last argument
2014+ to g_closure_invoke()</doc>
2015+ <type name="gpointer" c:type="gpointer"/>
2016+ </parameter>
2017+ <parameter name="marshal_data"
2018+ transfer-ownership="none"
2019+ nullable="1"
2020+ allow-none="1">
2021+ <doc xml:space="preserve"
2022+ filename="gobject-2.0.c"
2023+ line="1529">additional data specified when registering the marshaller</doc>
2024+ <type name="gpointer" c:type="gpointer"/>
2025+ </parameter>
2026+ </parameters>
2027+ </function>
2028+ <function name="marshal_VOID__ENUMv"
2029+ c:identifier="g_cclosure_marshal_VOID__ENUMv"
2030+ introspectable="0">
2031+ <doc xml:space="preserve"
2032+ filename="gobject-2.0.c"
2033+ line="1536">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ENUM().</doc>
2034+ <source-position filename="gmarshal.h" line="167"/>
2035+ <return-value transfer-ownership="none">
2036+ <type name="none" c:type="void"/>
2037+ </return-value>
2038+ <parameters>
2039+ <parameter name="closure" transfer-ownership="none">
2040+ <doc xml:space="preserve"
2041+ filename="gobject-2.0.c"
2042+ line="1538">the #GClosure to which the marshaller belongs</doc>
2043+ <type name="Closure" c:type="GClosure*"/>
2044+ </parameter>
2045+ <parameter name="return_value"
2046+ transfer-ownership="none"
2047+ nullable="1"
2048+ allow-none="1">
2049+ <doc xml:space="preserve"
2050+ filename="gobject-2.0.c"
2051+ line="1539">a #GValue to store the return
2052+ value. May be %NULL if the callback of @closure doesn't return a
2053+ value.</doc>
2054+ <type name="Value" c:type="GValue*"/>
2055+ </parameter>
2056+ <parameter name="instance" transfer-ownership="none">
2057+ <doc xml:space="preserve"
2058+ filename="gobject-2.0.c"
2059+ line="1542">the instance on which the closure is invoked.</doc>
2060+ <type name="TypeInstance" c:type="gpointer"/>
2061+ </parameter>
2062+ <parameter name="args" transfer-ownership="none">
2063+ <doc xml:space="preserve"
2064+ filename="gobject-2.0.c"
2065+ line="1543">va_list of arguments to be passed to the closure.</doc>
2066+ <type name="va_list" c:type="va_list"/>
2067+ </parameter>
2068+ <parameter name="marshal_data"
2069+ transfer-ownership="none"
2070+ nullable="1"
2071+ allow-none="1">
2072+ <doc xml:space="preserve"
2073+ filename="gobject-2.0.c"
2074+ line="1544">additional data specified when
2075+ registering the marshaller, see g_closure_set_marshal() and
2076+ g_closure_set_meta_marshal()</doc>
2077+ <type name="gpointer" c:type="gpointer"/>
2078+ </parameter>
2079+ <parameter name="n_params" transfer-ownership="none">
2080+ <doc xml:space="preserve"
2081+ filename="gobject-2.0.c"
2082+ line="1547">the length of the @param_types array</doc>
2083+ <type name="gint" c:type="int"/>
2084+ </parameter>
2085+ <parameter name="param_types" transfer-ownership="none">
2086+ <doc xml:space="preserve"
2087+ filename="gobject-2.0.c"
2088+ line="1548">the #GType of each argument from
2089+ @args.</doc>
2090+ <array length="5" zero-terminated="0" c:type="GType*">
2091+ <type name="GType" c:type="GType"/>
2092+ </array>
2093+ </parameter>
2094+ </parameters>
2095+ </function>
2096+ <function name="marshal_VOID__FLAGS"
2097+ c:identifier="g_cclosure_marshal_VOID__FLAGS">
2098+ <doc xml:space="preserve"
2099+ filename="gobject-2.0.c"
2100+ line="1555">A marshaller for a #GCClosure with a callback of type
2101+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter denotes a flags type.</doc>
2102+ <source-position filename="gmarshal.h" line="177"/>
2103+ <return-value transfer-ownership="none">
2104+ <type name="none" c:type="void"/>
2105+ </return-value>
2106+ <parameters>
2107+ <parameter name="closure" transfer-ownership="none">
2108+ <doc xml:space="preserve"
2109+ filename="gobject-2.0.c"
2110+ line="1557">the #GClosure to which the marshaller belongs</doc>
2111+ <type name="Closure" c:type="GClosure*"/>
2112+ </parameter>
2113+ <parameter name="return_value" transfer-ownership="none">
2114+ <doc xml:space="preserve"
2115+ filename="gobject-2.0.c"
2116+ line="1558">ignored</doc>
2117+ <type name="Value" c:type="GValue*"/>
2118+ </parameter>
2119+ <parameter name="n_param_values" transfer-ownership="none">
2120+ <doc xml:space="preserve"
2121+ filename="gobject-2.0.c"
2122+ line="1559">2</doc>
2123+ <type name="guint" c:type="guint"/>
2124+ </parameter>
2125+ <parameter name="param_values" transfer-ownership="none">
2126+ <doc xml:space="preserve"
2127+ filename="gobject-2.0.c"
2128+ line="1560">a #GValue array holding the instance and the flags parameter</doc>
2129+ <type name="Value" c:type="const GValue*"/>
2130+ </parameter>
2131+ <parameter name="invocation_hint"
2132+ transfer-ownership="none"
2133+ nullable="1"
2134+ allow-none="1">
2135+ <doc xml:space="preserve"
2136+ filename="gobject-2.0.c"
2137+ line="1561">the invocation hint given as the last argument
2138+ to g_closure_invoke()</doc>
2139+ <type name="gpointer" c:type="gpointer"/>
2140+ </parameter>
2141+ <parameter name="marshal_data"
2142+ transfer-ownership="none"
2143+ nullable="1"
2144+ allow-none="1">
2145+ <doc xml:space="preserve"
2146+ filename="gobject-2.0.c"
2147+ line="1563">additional data specified when registering the marshaller</doc>
2148+ <type name="gpointer" c:type="gpointer"/>
2149+ </parameter>
2150+ </parameters>
2151+ </function>
2152+ <function name="marshal_VOID__FLAGSv"
2153+ c:identifier="g_cclosure_marshal_VOID__FLAGSv"
2154+ introspectable="0">
2155+ <doc xml:space="preserve"
2156+ filename="gobject-2.0.c"
2157+ line="1570">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLAGS().</doc>
2158+ <source-position filename="gmarshal.h" line="184"/>
2159+ <return-value transfer-ownership="none">
2160+ <type name="none" c:type="void"/>
2161+ </return-value>
2162+ <parameters>
2163+ <parameter name="closure" transfer-ownership="none">
2164+ <doc xml:space="preserve"
2165+ filename="gobject-2.0.c"
2166+ line="1572">the #GClosure to which the marshaller belongs</doc>
2167+ <type name="Closure" c:type="GClosure*"/>
2168+ </parameter>
2169+ <parameter name="return_value"
2170+ transfer-ownership="none"
2171+ nullable="1"
2172+ allow-none="1">
2173+ <doc xml:space="preserve"
2174+ filename="gobject-2.0.c"
2175+ line="1573">a #GValue to store the return
2176+ value. May be %NULL if the callback of @closure doesn't return a
2177+ value.</doc>
2178+ <type name="Value" c:type="GValue*"/>
2179+ </parameter>
2180+ <parameter name="instance" transfer-ownership="none">
2181+ <doc xml:space="preserve"
2182+ filename="gobject-2.0.c"
2183+ line="1576">the instance on which the closure is invoked.</doc>
2184+ <type name="TypeInstance" c:type="gpointer"/>
2185+ </parameter>
2186+ <parameter name="args" transfer-ownership="none">
2187+ <doc xml:space="preserve"
2188+ filename="gobject-2.0.c"
2189+ line="1577">va_list of arguments to be passed to the closure.</doc>
2190+ <type name="va_list" c:type="va_list"/>
2191+ </parameter>
2192+ <parameter name="marshal_data"
2193+ transfer-ownership="none"
2194+ nullable="1"
2195+ allow-none="1">
2196+ <doc xml:space="preserve"
2197+ filename="gobject-2.0.c"
2198+ line="1578">additional data specified when
2199+ registering the marshaller, see g_closure_set_marshal() and
2200+ g_closure_set_meta_marshal()</doc>
2201+ <type name="gpointer" c:type="gpointer"/>
2202+ </parameter>
2203+ <parameter name="n_params" transfer-ownership="none">
2204+ <doc xml:space="preserve"
2205+ filename="gobject-2.0.c"
2206+ line="1581">the length of the @param_types array</doc>
2207+ <type name="gint" c:type="int"/>
2208+ </parameter>
2209+ <parameter name="param_types" transfer-ownership="none">
2210+ <doc xml:space="preserve"
2211+ filename="gobject-2.0.c"
2212+ line="1582">the #GType of each argument from
2213+ @args.</doc>
2214+ <array length="5" zero-terminated="0" c:type="GType*">
2215+ <type name="GType" c:type="GType"/>
2216+ </array>
2217+ </parameter>
2218+ </parameters>
2219+ </function>
2220+ <function name="marshal_VOID__FLOAT"
2221+ c:identifier="g_cclosure_marshal_VOID__FLOAT">
2222+ <doc xml:space="preserve"
2223+ filename="gobject-2.0.c"
2224+ line="1589">A marshaller for a #GCClosure with a callback of type
2225+`void (*callback) (gpointer instance, gfloat arg1, gpointer user_data)`.</doc>
2226+ <source-position filename="gmarshal.h" line="194"/>
2227+ <return-value transfer-ownership="none">
2228+ <type name="none" c:type="void"/>
2229+ </return-value>
2230+ <parameters>
2231+ <parameter name="closure" transfer-ownership="none">
2232+ <doc xml:space="preserve"
2233+ filename="gobject-2.0.c"
2234+ line="1591">the #GClosure to which the marshaller belongs</doc>
2235+ <type name="Closure" c:type="GClosure*"/>
2236+ </parameter>
2237+ <parameter name="return_value" transfer-ownership="none">
2238+ <doc xml:space="preserve"
2239+ filename="gobject-2.0.c"
2240+ line="1592">ignored</doc>
2241+ <type name="Value" c:type="GValue*"/>
2242+ </parameter>
2243+ <parameter name="n_param_values" transfer-ownership="none">
2244+ <doc xml:space="preserve"
2245+ filename="gobject-2.0.c"
2246+ line="1593">2</doc>
2247+ <type name="guint" c:type="guint"/>
2248+ </parameter>
2249+ <parameter name="param_values" transfer-ownership="none">
2250+ <doc xml:space="preserve"
2251+ filename="gobject-2.0.c"
2252+ line="1594">a #GValue array holding the instance and the #gfloat parameter</doc>
2253+ <type name="Value" c:type="const GValue*"/>
2254+ </parameter>
2255+ <parameter name="invocation_hint"
2256+ transfer-ownership="none"
2257+ nullable="1"
2258+ allow-none="1">
2259+ <doc xml:space="preserve"
2260+ filename="gobject-2.0.c"
2261+ line="1595">the invocation hint given as the last argument
2262+ to g_closure_invoke()</doc>
2263+ <type name="gpointer" c:type="gpointer"/>
2264+ </parameter>
2265+ <parameter name="marshal_data"
2266+ transfer-ownership="none"
2267+ nullable="1"
2268+ allow-none="1">
2269+ <doc xml:space="preserve"
2270+ filename="gobject-2.0.c"
2271+ line="1597">additional data specified when registering the marshaller</doc>
2272+ <type name="gpointer" c:type="gpointer"/>
2273+ </parameter>
2274+ </parameters>
2275+ </function>
2276+ <function name="marshal_VOID__FLOATv"
2277+ c:identifier="g_cclosure_marshal_VOID__FLOATv"
2278+ introspectable="0">
2279+ <doc xml:space="preserve"
2280+ filename="gobject-2.0.c"
2281+ line="1604">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__FLOAT().</doc>
2282+ <source-position filename="gmarshal.h" line="201"/>
2283+ <return-value transfer-ownership="none">
2284+ <type name="none" c:type="void"/>
2285+ </return-value>
2286+ <parameters>
2287+ <parameter name="closure" transfer-ownership="none">
2288+ <doc xml:space="preserve"
2289+ filename="gobject-2.0.c"
2290+ line="1606">the #GClosure to which the marshaller belongs</doc>
2291+ <type name="Closure" c:type="GClosure*"/>
2292+ </parameter>
2293+ <parameter name="return_value"
2294+ transfer-ownership="none"
2295+ nullable="1"
2296+ allow-none="1">
2297+ <doc xml:space="preserve"
2298+ filename="gobject-2.0.c"
2299+ line="1607">a #GValue to store the return
2300+ value. May be %NULL if the callback of @closure doesn't return a
2301+ value.</doc>
2302+ <type name="Value" c:type="GValue*"/>
2303+ </parameter>
2304+ <parameter name="instance" transfer-ownership="none">
2305+ <doc xml:space="preserve"
2306+ filename="gobject-2.0.c"
2307+ line="1610">the instance on which the closure is invoked.</doc>
2308+ <type name="TypeInstance" c:type="gpointer"/>
2309+ </parameter>
2310+ <parameter name="args" transfer-ownership="none">
2311+ <doc xml:space="preserve"
2312+ filename="gobject-2.0.c"
2313+ line="1611">va_list of arguments to be passed to the closure.</doc>
2314+ <type name="va_list" c:type="va_list"/>
2315+ </parameter>
2316+ <parameter name="marshal_data"
2317+ transfer-ownership="none"
2318+ nullable="1"
2319+ allow-none="1">
2320+ <doc xml:space="preserve"
2321+ filename="gobject-2.0.c"
2322+ line="1612">additional data specified when
2323+ registering the marshaller, see g_closure_set_marshal() and
2324+ g_closure_set_meta_marshal()</doc>
2325+ <type name="gpointer" c:type="gpointer"/>
2326+ </parameter>
2327+ <parameter name="n_params" transfer-ownership="none">
2328+ <doc xml:space="preserve"
2329+ filename="gobject-2.0.c"
2330+ line="1615">the length of the @param_types array</doc>
2331+ <type name="gint" c:type="int"/>
2332+ </parameter>
2333+ <parameter name="param_types" transfer-ownership="none">
2334+ <doc xml:space="preserve"
2335+ filename="gobject-2.0.c"
2336+ line="1616">the #GType of each argument from
2337+ @args.</doc>
2338+ <array length="5" zero-terminated="0" c:type="GType*">
2339+ <type name="GType" c:type="GType"/>
2340+ </array>
2341+ </parameter>
2342+ </parameters>
2343+ </function>
2344+ <function name="marshal_VOID__INT"
2345+ c:identifier="g_cclosure_marshal_VOID__INT">
2346+ <doc xml:space="preserve"
2347+ filename="gobject-2.0.c"
2348+ line="1623">A marshaller for a #GCClosure with a callback of type
2349+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)`.</doc>
2350+ <source-position filename="gmarshal.h" line="92"/>
2351+ <return-value transfer-ownership="none">
2352+ <type name="none" c:type="void"/>
2353+ </return-value>
2354+ <parameters>
2355+ <parameter name="closure" transfer-ownership="none">
2356+ <doc xml:space="preserve"
2357+ filename="gobject-2.0.c"
2358+ line="1625">the #GClosure to which the marshaller belongs</doc>
2359+ <type name="Closure" c:type="GClosure*"/>
2360+ </parameter>
2361+ <parameter name="return_value" transfer-ownership="none">
2362+ <doc xml:space="preserve"
2363+ filename="gobject-2.0.c"
2364+ line="1626">ignored</doc>
2365+ <type name="Value" c:type="GValue*"/>
2366+ </parameter>
2367+ <parameter name="n_param_values" transfer-ownership="none">
2368+ <doc xml:space="preserve"
2369+ filename="gobject-2.0.c"
2370+ line="1627">2</doc>
2371+ <type name="guint" c:type="guint"/>
2372+ </parameter>
2373+ <parameter name="param_values" transfer-ownership="none">
2374+ <doc xml:space="preserve"
2375+ filename="gobject-2.0.c"
2376+ line="1628">a #GValue array holding the instance and the #gint parameter</doc>
2377+ <type name="Value" c:type="const GValue*"/>
2378+ </parameter>
2379+ <parameter name="invocation_hint"
2380+ transfer-ownership="none"
2381+ nullable="1"
2382+ allow-none="1">
2383+ <doc xml:space="preserve"
2384+ filename="gobject-2.0.c"
2385+ line="1629">the invocation hint given as the last argument
2386+ to g_closure_invoke()</doc>
2387+ <type name="gpointer" c:type="gpointer"/>
2388+ </parameter>
2389+ <parameter name="marshal_data"
2390+ transfer-ownership="none"
2391+ nullable="1"
2392+ allow-none="1">
2393+ <doc xml:space="preserve"
2394+ filename="gobject-2.0.c"
2395+ line="1631">additional data specified when registering the marshaller</doc>
2396+ <type name="gpointer" c:type="gpointer"/>
2397+ </parameter>
2398+ </parameters>
2399+ </function>
2400+ <function name="marshal_VOID__INTv"
2401+ c:identifier="g_cclosure_marshal_VOID__INTv"
2402+ introspectable="0">
2403+ <doc xml:space="preserve"
2404+ filename="gobject-2.0.c"
2405+ line="1638">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__INT().</doc>
2406+ <source-position filename="gmarshal.h" line="99"/>
2407+ <return-value transfer-ownership="none">
2408+ <type name="none" c:type="void"/>
2409+ </return-value>
2410+ <parameters>
2411+ <parameter name="closure" transfer-ownership="none">
2412+ <doc xml:space="preserve"
2413+ filename="gobject-2.0.c"
2414+ line="1640">the #GClosure to which the marshaller belongs</doc>
2415+ <type name="Closure" c:type="GClosure*"/>
2416+ </parameter>
2417+ <parameter name="return_value"
2418+ transfer-ownership="none"
2419+ nullable="1"
2420+ allow-none="1">
2421+ <doc xml:space="preserve"
2422+ filename="gobject-2.0.c"
2423+ line="1641">a #GValue to store the return
2424+ value. May be %NULL if the callback of @closure doesn't return a
2425+ value.</doc>
2426+ <type name="Value" c:type="GValue*"/>
2427+ </parameter>
2428+ <parameter name="instance" transfer-ownership="none">
2429+ <doc xml:space="preserve"
2430+ filename="gobject-2.0.c"
2431+ line="1644">the instance on which the closure is invoked.</doc>
2432+ <type name="TypeInstance" c:type="gpointer"/>
2433+ </parameter>
2434+ <parameter name="args" transfer-ownership="none">
2435+ <doc xml:space="preserve"
2436+ filename="gobject-2.0.c"
2437+ line="1645">va_list of arguments to be passed to the closure.</doc>
2438+ <type name="va_list" c:type="va_list"/>
2439+ </parameter>
2440+ <parameter name="marshal_data"
2441+ transfer-ownership="none"
2442+ nullable="1"
2443+ allow-none="1">
2444+ <doc xml:space="preserve"
2445+ filename="gobject-2.0.c"
2446+ line="1646">additional data specified when
2447+ registering the marshaller, see g_closure_set_marshal() and
2448+ g_closure_set_meta_marshal()</doc>
2449+ <type name="gpointer" c:type="gpointer"/>
2450+ </parameter>
2451+ <parameter name="n_params" transfer-ownership="none">
2452+ <doc xml:space="preserve"
2453+ filename="gobject-2.0.c"
2454+ line="1649">the length of the @param_types array</doc>
2455+ <type name="gint" c:type="int"/>
2456+ </parameter>
2457+ <parameter name="param_types" transfer-ownership="none">
2458+ <doc xml:space="preserve"
2459+ filename="gobject-2.0.c"
2460+ line="1650">the #GType of each argument from
2461+ @args.</doc>
2462+ <array length="5" zero-terminated="0" c:type="GType*">
2463+ <type name="GType" c:type="GType"/>
2464+ </array>
2465+ </parameter>
2466+ </parameters>
2467+ </function>
2468+ <function name="marshal_VOID__LONG"
2469+ c:identifier="g_cclosure_marshal_VOID__LONG">
2470+ <doc xml:space="preserve"
2471+ filename="gobject-2.0.c"
2472+ line="1657">A marshaller for a #GCClosure with a callback of type
2473+`void (*callback) (gpointer instance, glong arg1, gpointer user_data)`.</doc>
2474+ <source-position filename="gmarshal.h" line="126"/>
2475+ <return-value transfer-ownership="none">
2476+ <type name="none" c:type="void"/>
2477+ </return-value>
2478+ <parameters>
2479+ <parameter name="closure" transfer-ownership="none">
2480+ <doc xml:space="preserve"
2481+ filename="gobject-2.0.c"
2482+ line="1659">the #GClosure to which the marshaller belongs</doc>
2483+ <type name="Closure" c:type="GClosure*"/>
2484+ </parameter>
2485+ <parameter name="return_value" transfer-ownership="none">
2486+ <doc xml:space="preserve"
2487+ filename="gobject-2.0.c"
2488+ line="1660">ignored</doc>
2489+ <type name="Value" c:type="GValue*"/>
2490+ </parameter>
2491+ <parameter name="n_param_values" transfer-ownership="none">
2492+ <doc xml:space="preserve"
2493+ filename="gobject-2.0.c"
2494+ line="1661">2</doc>
2495+ <type name="guint" c:type="guint"/>
2496+ </parameter>
2497+ <parameter name="param_values" transfer-ownership="none">
2498+ <doc xml:space="preserve"
2499+ filename="gobject-2.0.c"
2500+ line="1662">a #GValue array holding the instance and the #glong parameter</doc>
2501+ <type name="Value" c:type="const GValue*"/>
2502+ </parameter>
2503+ <parameter name="invocation_hint"
2504+ transfer-ownership="none"
2505+ nullable="1"
2506+ allow-none="1">
2507+ <doc xml:space="preserve"
2508+ filename="gobject-2.0.c"
2509+ line="1663">the invocation hint given as the last argument
2510+ to g_closure_invoke()</doc>
2511+ <type name="gpointer" c:type="gpointer"/>
2512+ </parameter>
2513+ <parameter name="marshal_data"
2514+ transfer-ownership="none"
2515+ nullable="1"
2516+ allow-none="1">
2517+ <doc xml:space="preserve"
2518+ filename="gobject-2.0.c"
2519+ line="1665">additional data specified when registering the marshaller</doc>
2520+ <type name="gpointer" c:type="gpointer"/>
2521+ </parameter>
2522+ </parameters>
2523+ </function>
2524+ <function name="marshal_VOID__LONGv"
2525+ c:identifier="g_cclosure_marshal_VOID__LONGv"
2526+ introspectable="0">
2527+ <doc xml:space="preserve"
2528+ filename="gobject-2.0.c"
2529+ line="1672">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__LONG().</doc>
2530+ <source-position filename="gmarshal.h" line="133"/>
2531+ <return-value transfer-ownership="none">
2532+ <type name="none" c:type="void"/>
2533+ </return-value>
2534+ <parameters>
2535+ <parameter name="closure" transfer-ownership="none">
2536+ <doc xml:space="preserve"
2537+ filename="gobject-2.0.c"
2538+ line="1674">the #GClosure to which the marshaller belongs</doc>
2539+ <type name="Closure" c:type="GClosure*"/>
2540+ </parameter>
2541+ <parameter name="return_value"
2542+ transfer-ownership="none"
2543+ nullable="1"
2544+ allow-none="1">
2545+ <doc xml:space="preserve"
2546+ filename="gobject-2.0.c"
2547+ line="1675">a #GValue to store the return
2548+ value. May be %NULL if the callback of @closure doesn't return a
2549+ value.</doc>
2550+ <type name="Value" c:type="GValue*"/>
2551+ </parameter>
2552+ <parameter name="instance" transfer-ownership="none">
2553+ <doc xml:space="preserve"
2554+ filename="gobject-2.0.c"
2555+ line="1678">the instance on which the closure is invoked.</doc>
2556+ <type name="TypeInstance" c:type="gpointer"/>
2557+ </parameter>
2558+ <parameter name="args" transfer-ownership="none">
2559+ <doc xml:space="preserve"
2560+ filename="gobject-2.0.c"
2561+ line="1679">va_list of arguments to be passed to the closure.</doc>
2562+ <type name="va_list" c:type="va_list"/>
2563+ </parameter>
2564+ <parameter name="marshal_data"
2565+ transfer-ownership="none"
2566+ nullable="1"
2567+ allow-none="1">
2568+ <doc xml:space="preserve"
2569+ filename="gobject-2.0.c"
2570+ line="1680">additional data specified when
2571+ registering the marshaller, see g_closure_set_marshal() and
2572+ g_closure_set_meta_marshal()</doc>
2573+ <type name="gpointer" c:type="gpointer"/>
2574+ </parameter>
2575+ <parameter name="n_params" transfer-ownership="none">
2576+ <doc xml:space="preserve"
2577+ filename="gobject-2.0.c"
2578+ line="1683">the length of the @param_types array</doc>
2579+ <type name="gint" c:type="int"/>
2580+ </parameter>
2581+ <parameter name="param_types" transfer-ownership="none">
2582+ <doc xml:space="preserve"
2583+ filename="gobject-2.0.c"
2584+ line="1684">the #GType of each argument from
2585+ @args.</doc>
2586+ <array length="5" zero-terminated="0" c:type="GType*">
2587+ <type name="GType" c:type="GType"/>
2588+ </array>
2589+ </parameter>
2590+ </parameters>
2591+ </function>
2592+ <function name="marshal_VOID__OBJECT"
2593+ c:identifier="g_cclosure_marshal_VOID__OBJECT">
2594+ <doc xml:space="preserve"
2595+ filename="gobject-2.0.c"
2596+ line="1691">A marshaller for a #GCClosure with a callback of type
2597+`void (*callback) (gpointer instance, GObject *arg1, gpointer user_data)`.</doc>
2598+ <source-position filename="gmarshal.h" line="296"/>
2599+ <return-value transfer-ownership="none">
2600+ <type name="none" c:type="void"/>
2601+ </return-value>
2602+ <parameters>
2603+ <parameter name="closure" transfer-ownership="none">
2604+ <doc xml:space="preserve"
2605+ filename="gobject-2.0.c"
2606+ line="1693">the #GClosure to which the marshaller belongs</doc>
2607+ <type name="Closure" c:type="GClosure*"/>
2608+ </parameter>
2609+ <parameter name="return_value" transfer-ownership="none">
2610+ <doc xml:space="preserve"
2611+ filename="gobject-2.0.c"
2612+ line="1694">ignored</doc>
2613+ <type name="Value" c:type="GValue*"/>
2614+ </parameter>
2615+ <parameter name="n_param_values" transfer-ownership="none">
2616+ <doc xml:space="preserve"
2617+ filename="gobject-2.0.c"
2618+ line="1695">2</doc>
2619+ <type name="guint" c:type="guint"/>
2620+ </parameter>
2621+ <parameter name="param_values" transfer-ownership="none">
2622+ <doc xml:space="preserve"
2623+ filename="gobject-2.0.c"
2624+ line="1696">a #GValue array holding the instance and the #GObject* parameter</doc>
2625+ <type name="Value" c:type="const GValue*"/>
2626+ </parameter>
2627+ <parameter name="invocation_hint"
2628+ transfer-ownership="none"
2629+ nullable="1"
2630+ allow-none="1">
2631+ <doc xml:space="preserve"
2632+ filename="gobject-2.0.c"
2633+ line="1697">the invocation hint given as the last argument
2634+ to g_closure_invoke()</doc>
2635+ <type name="gpointer" c:type="gpointer"/>
2636+ </parameter>
2637+ <parameter name="marshal_data"
2638+ transfer-ownership="none"
2639+ nullable="1"
2640+ allow-none="1">
2641+ <doc xml:space="preserve"
2642+ filename="gobject-2.0.c"
2643+ line="1699">additional data specified when registering the marshaller</doc>
2644+ <type name="gpointer" c:type="gpointer"/>
2645+ </parameter>
2646+ </parameters>
2647+ </function>
2648+ <function name="marshal_VOID__OBJECTv"
2649+ c:identifier="g_cclosure_marshal_VOID__OBJECTv"
2650+ introspectable="0">
2651+ <doc xml:space="preserve"
2652+ filename="gobject-2.0.c"
2653+ line="1706">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__OBJECT().</doc>
2654+ <source-position filename="gmarshal.h" line="303"/>
2655+ <return-value transfer-ownership="none">
2656+ <type name="none" c:type="void"/>
2657+ </return-value>
2658+ <parameters>
2659+ <parameter name="closure" transfer-ownership="none">
2660+ <doc xml:space="preserve"
2661+ filename="gobject-2.0.c"
2662+ line="1708">the #GClosure to which the marshaller belongs</doc>
2663+ <type name="Closure" c:type="GClosure*"/>
2664+ </parameter>
2665+ <parameter name="return_value"
2666+ transfer-ownership="none"
2667+ nullable="1"
2668+ allow-none="1">
2669+ <doc xml:space="preserve"
2670+ filename="gobject-2.0.c"
2671+ line="1709">a #GValue to store the return
2672+ value. May be %NULL if the callback of @closure doesn't return a
2673+ value.</doc>
2674+ <type name="Value" c:type="GValue*"/>
2675+ </parameter>
2676+ <parameter name="instance" transfer-ownership="none">
2677+ <doc xml:space="preserve"
2678+ filename="gobject-2.0.c"
2679+ line="1712">the instance on which the closure is invoked.</doc>
2680+ <type name="TypeInstance" c:type="gpointer"/>
2681+ </parameter>
2682+ <parameter name="args" transfer-ownership="none">
2683+ <doc xml:space="preserve"
2684+ filename="gobject-2.0.c"
2685+ line="1713">va_list of arguments to be passed to the closure.</doc>
2686+ <type name="va_list" c:type="va_list"/>
2687+ </parameter>
2688+ <parameter name="marshal_data"
2689+ transfer-ownership="none"
2690+ nullable="1"
2691+ allow-none="1">
2692+ <doc xml:space="preserve"
2693+ filename="gobject-2.0.c"
2694+ line="1714">additional data specified when
2695+ registering the marshaller, see g_closure_set_marshal() and
2696+ g_closure_set_meta_marshal()</doc>
2697+ <type name="gpointer" c:type="gpointer"/>
2698+ </parameter>
2699+ <parameter name="n_params" transfer-ownership="none">
2700+ <doc xml:space="preserve"
2701+ filename="gobject-2.0.c"
2702+ line="1717">the length of the @param_types array</doc>
2703+ <type name="gint" c:type="int"/>
2704+ </parameter>
2705+ <parameter name="param_types" transfer-ownership="none">
2706+ <doc xml:space="preserve"
2707+ filename="gobject-2.0.c"
2708+ line="1718">the #GType of each argument from
2709+ @args.</doc>
2710+ <array length="5" zero-terminated="0" c:type="GType*">
2711+ <type name="GType" c:type="GType"/>
2712+ </array>
2713+ </parameter>
2714+ </parameters>
2715+ </function>
2716+ <function name="marshal_VOID__PARAM"
2717+ c:identifier="g_cclosure_marshal_VOID__PARAM">
2718+ <doc xml:space="preserve"
2719+ filename="gobject-2.0.c"
2720+ line="1725">A marshaller for a #GCClosure with a callback of type
2721+`void (*callback) (gpointer instance, GParamSpec *arg1, gpointer user_data)`.</doc>
2722+ <source-position filename="gmarshal.h" line="245"/>
2723+ <return-value transfer-ownership="none">
2724+ <type name="none" c:type="void"/>
2725+ </return-value>
2726+ <parameters>
2727+ <parameter name="closure" transfer-ownership="none">
2728+ <doc xml:space="preserve"
2729+ filename="gobject-2.0.c"
2730+ line="1727">the #GClosure to which the marshaller belongs</doc>
2731+ <type name="Closure" c:type="GClosure*"/>
2732+ </parameter>
2733+ <parameter name="return_value" transfer-ownership="none">
2734+ <doc xml:space="preserve"
2735+ filename="gobject-2.0.c"
2736+ line="1728">ignored</doc>
2737+ <type name="Value" c:type="GValue*"/>
2738+ </parameter>
2739+ <parameter name="n_param_values" transfer-ownership="none">
2740+ <doc xml:space="preserve"
2741+ filename="gobject-2.0.c"
2742+ line="1729">2</doc>
2743+ <type name="guint" c:type="guint"/>
2744+ </parameter>
2745+ <parameter name="param_values" transfer-ownership="none">
2746+ <doc xml:space="preserve"
2747+ filename="gobject-2.0.c"
2748+ line="1730">a #GValue array holding the instance and the #GParamSpec* parameter</doc>
2749+ <type name="Value" c:type="const GValue*"/>
2750+ </parameter>
2751+ <parameter name="invocation_hint"
2752+ transfer-ownership="none"
2753+ nullable="1"
2754+ allow-none="1">
2755+ <doc xml:space="preserve"
2756+ filename="gobject-2.0.c"
2757+ line="1731">the invocation hint given as the last argument
2758+ to g_closure_invoke()</doc>
2759+ <type name="gpointer" c:type="gpointer"/>
2760+ </parameter>
2761+ <parameter name="marshal_data"
2762+ transfer-ownership="none"
2763+ nullable="1"
2764+ allow-none="1">
2765+ <doc xml:space="preserve"
2766+ filename="gobject-2.0.c"
2767+ line="1733">additional data specified when registering the marshaller</doc>
2768+ <type name="gpointer" c:type="gpointer"/>
2769+ </parameter>
2770+ </parameters>
2771+ </function>
2772+ <function name="marshal_VOID__PARAMv"
2773+ c:identifier="g_cclosure_marshal_VOID__PARAMv"
2774+ introspectable="0">
2775+ <doc xml:space="preserve"
2776+ filename="gobject-2.0.c"
2777+ line="1740">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__PARAM().</doc>
2778+ <source-position filename="gmarshal.h" line="252"/>
2779+ <return-value transfer-ownership="none">
2780+ <type name="none" c:type="void"/>
2781+ </return-value>
2782+ <parameters>
2783+ <parameter name="closure" transfer-ownership="none">
2784+ <doc xml:space="preserve"
2785+ filename="gobject-2.0.c"
2786+ line="1742">the #GClosure to which the marshaller belongs</doc>
2787+ <type name="Closure" c:type="GClosure*"/>
2788+ </parameter>
2789+ <parameter name="return_value"
2790+ transfer-ownership="none"
2791+ nullable="1"
2792+ allow-none="1">
2793+ <doc xml:space="preserve"
2794+ filename="gobject-2.0.c"
2795+ line="1743">a #GValue to store the return
2796+ value. May be %NULL if the callback of @closure doesn't return a
2797+ value.</doc>
2798+ <type name="Value" c:type="GValue*"/>
2799+ </parameter>
2800+ <parameter name="instance" transfer-ownership="none">
2801+ <doc xml:space="preserve"
2802+ filename="gobject-2.0.c"
2803+ line="1746">the instance on which the closure is invoked.</doc>
2804+ <type name="TypeInstance" c:type="gpointer"/>
2805+ </parameter>
2806+ <parameter name="args" transfer-ownership="none">
2807+ <doc xml:space="preserve"
2808+ filename="gobject-2.0.c"
2809+ line="1747">va_list of arguments to be passed to the closure.</doc>
2810+ <type name="va_list" c:type="va_list"/>
2811+ </parameter>
2812+ <parameter name="marshal_data"
2813+ transfer-ownership="none"
2814+ nullable="1"
2815+ allow-none="1">
2816+ <doc xml:space="preserve"
2817+ filename="gobject-2.0.c"
2818+ line="1748">additional data specified when
2819+ registering the marshaller, see g_closure_set_marshal() and
2820+ g_closure_set_meta_marshal()</doc>
2821+ <type name="gpointer" c:type="gpointer"/>
2822+ </parameter>
2823+ <parameter name="n_params" transfer-ownership="none">
2824+ <doc xml:space="preserve"
2825+ filename="gobject-2.0.c"
2826+ line="1751">the length of the @param_types array</doc>
2827+ <type name="gint" c:type="int"/>
2828+ </parameter>
2829+ <parameter name="param_types" transfer-ownership="none">
2830+ <doc xml:space="preserve"
2831+ filename="gobject-2.0.c"
2832+ line="1752">the #GType of each argument from
2833+ @args.</doc>
2834+ <array length="5" zero-terminated="0" c:type="GType*">
2835+ <type name="GType" c:type="GType"/>
2836+ </array>
2837+ </parameter>
2838+ </parameters>
2839+ </function>
2840+ <function name="marshal_VOID__POINTER"
2841+ c:identifier="g_cclosure_marshal_VOID__POINTER">
2842+ <doc xml:space="preserve"
2843+ filename="gobject-2.0.c"
2844+ line="1759">A marshaller for a #GCClosure with a callback of type
2845+`void (*callback) (gpointer instance, gpointer arg1, gpointer user_data)`.</doc>
2846+ <source-position filename="gmarshal.h" line="279"/>
2847+ <return-value transfer-ownership="none">
2848+ <type name="none" c:type="void"/>
2849+ </return-value>
2850+ <parameters>
2851+ <parameter name="closure" transfer-ownership="none">
2852+ <doc xml:space="preserve"
2853+ filename="gobject-2.0.c"
2854+ line="1761">the #GClosure to which the marshaller belongs</doc>
2855+ <type name="Closure" c:type="GClosure*"/>
2856+ </parameter>
2857+ <parameter name="return_value" transfer-ownership="none">
2858+ <doc xml:space="preserve"
2859+ filename="gobject-2.0.c"
2860+ line="1762">ignored</doc>
2861+ <type name="Value" c:type="GValue*"/>
2862+ </parameter>
2863+ <parameter name="n_param_values" transfer-ownership="none">
2864+ <doc xml:space="preserve"
2865+ filename="gobject-2.0.c"
2866+ line="1763">2</doc>
2867+ <type name="guint" c:type="guint"/>
2868+ </parameter>
2869+ <parameter name="param_values" transfer-ownership="none">
2870+ <doc xml:space="preserve"
2871+ filename="gobject-2.0.c"
2872+ line="1764">a #GValue array holding the instance and the #gpointer parameter</doc>
2873+ <type name="Value" c:type="const GValue*"/>
2874+ </parameter>
2875+ <parameter name="invocation_hint"
2876+ transfer-ownership="none"
2877+ nullable="1"
2878+ allow-none="1">
2879+ <doc xml:space="preserve"
2880+ filename="gobject-2.0.c"
2881+ line="1765">the invocation hint given as the last argument
2882+ to g_closure_invoke()</doc>
2883+ <type name="gpointer" c:type="gpointer"/>
2884+ </parameter>
2885+ <parameter name="marshal_data"
2886+ transfer-ownership="none"
2887+ nullable="1"
2888+ allow-none="1">
2889+ <doc xml:space="preserve"
2890+ filename="gobject-2.0.c"
2891+ line="1767">additional data specified when registering the marshaller</doc>
2892+ <type name="gpointer" c:type="gpointer"/>
2893+ </parameter>
2894+ </parameters>
2895+ </function>
2896+ <function name="marshal_VOID__POINTERv"
2897+ c:identifier="g_cclosure_marshal_VOID__POINTERv"
2898+ introspectable="0">
2899+ <doc xml:space="preserve"
2900+ filename="gobject-2.0.c"
2901+ line="1774">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__POINTER().</doc>
2902+ <source-position filename="gmarshal.h" line="286"/>
2903+ <return-value transfer-ownership="none">
2904+ <type name="none" c:type="void"/>
2905+ </return-value>
2906+ <parameters>
2907+ <parameter name="closure" transfer-ownership="none">
2908+ <doc xml:space="preserve"
2909+ filename="gobject-2.0.c"
2910+ line="1776">the #GClosure to which the marshaller belongs</doc>
2911+ <type name="Closure" c:type="GClosure*"/>
2912+ </parameter>
2913+ <parameter name="return_value"
2914+ transfer-ownership="none"
2915+ nullable="1"
2916+ allow-none="1">
2917+ <doc xml:space="preserve"
2918+ filename="gobject-2.0.c"
2919+ line="1777">a #GValue to store the return
2920+ value. May be %NULL if the callback of @closure doesn't return a
2921+ value.</doc>
2922+ <type name="Value" c:type="GValue*"/>
2923+ </parameter>
2924+ <parameter name="instance" transfer-ownership="none">
2925+ <doc xml:space="preserve"
2926+ filename="gobject-2.0.c"
2927+ line="1780">the instance on which the closure is invoked.</doc>
2928+ <type name="TypeInstance" c:type="gpointer"/>
2929+ </parameter>
2930+ <parameter name="args" transfer-ownership="none">
2931+ <doc xml:space="preserve"
2932+ filename="gobject-2.0.c"
2933+ line="1781">va_list of arguments to be passed to the closure.</doc>
2934+ <type name="va_list" c:type="va_list"/>
2935+ </parameter>
2936+ <parameter name="marshal_data"
2937+ transfer-ownership="none"
2938+ nullable="1"
2939+ allow-none="1">
2940+ <doc xml:space="preserve"
2941+ filename="gobject-2.0.c"
2942+ line="1782">additional data specified when
2943+ registering the marshaller, see g_closure_set_marshal() and
2944+ g_closure_set_meta_marshal()</doc>
2945+ <type name="gpointer" c:type="gpointer"/>
2946+ </parameter>
2947+ <parameter name="n_params" transfer-ownership="none">
2948+ <doc xml:space="preserve"
2949+ filename="gobject-2.0.c"
2950+ line="1785">the length of the @param_types array</doc>
2951+ <type name="gint" c:type="int"/>
2952+ </parameter>
2953+ <parameter name="param_types" transfer-ownership="none">
2954+ <doc xml:space="preserve"
2955+ filename="gobject-2.0.c"
2956+ line="1786">the #GType of each argument from
2957+ @args.</doc>
2958+ <array length="5" zero-terminated="0" c:type="GType*">
2959+ <type name="GType" c:type="GType"/>
2960+ </array>
2961+ </parameter>
2962+ </parameters>
2963+ </function>
2964+ <function name="marshal_VOID__STRING"
2965+ c:identifier="g_cclosure_marshal_VOID__STRING">
2966+ <doc xml:space="preserve"
2967+ filename="gobject-2.0.c"
2968+ line="1793">A marshaller for a #GCClosure with a callback of type
2969+`void (*callback) (gpointer instance, const gchar *arg1, gpointer user_data)`.</doc>
2970+ <source-position filename="gmarshal.h" line="228"/>
2971+ <return-value transfer-ownership="none">
2972+ <type name="none" c:type="void"/>
2973+ </return-value>
2974+ <parameters>
2975+ <parameter name="closure" transfer-ownership="none">
2976+ <doc xml:space="preserve"
2977+ filename="gobject-2.0.c"
2978+ line="1795">the #GClosure to which the marshaller belongs</doc>
2979+ <type name="Closure" c:type="GClosure*"/>
2980+ </parameter>
2981+ <parameter name="return_value" transfer-ownership="none">
2982+ <doc xml:space="preserve"
2983+ filename="gobject-2.0.c"
2984+ line="1796">ignored</doc>
2985+ <type name="Value" c:type="GValue*"/>
2986+ </parameter>
2987+ <parameter name="n_param_values" transfer-ownership="none">
2988+ <doc xml:space="preserve"
2989+ filename="gobject-2.0.c"
2990+ line="1797">2</doc>
2991+ <type name="guint" c:type="guint"/>
2992+ </parameter>
2993+ <parameter name="param_values" transfer-ownership="none">
2994+ <doc xml:space="preserve"
2995+ filename="gobject-2.0.c"
2996+ line="1798">a #GValue array holding the instance and the #gchar* parameter</doc>
2997+ <type name="Value" c:type="const GValue*"/>
2998+ </parameter>
2999+ <parameter name="invocation_hint"
3000+ transfer-ownership="none"
3001+ nullable="1"
3002+ allow-none="1">
3003+ <doc xml:space="preserve"
3004+ filename="gobject-2.0.c"
3005+ line="1799">the invocation hint given as the last argument
3006+ to g_closure_invoke()</doc>
3007+ <type name="gpointer" c:type="gpointer"/>
3008+ </parameter>
3009+ <parameter name="marshal_data"
3010+ transfer-ownership="none"
3011+ nullable="1"
3012+ allow-none="1">
3013+ <doc xml:space="preserve"
3014+ filename="gobject-2.0.c"
3015+ line="1801">additional data specified when registering the marshaller</doc>
3016+ <type name="gpointer" c:type="gpointer"/>
3017+ </parameter>
3018+ </parameters>
3019+ </function>
3020+ <function name="marshal_VOID__STRINGv"
3021+ c:identifier="g_cclosure_marshal_VOID__STRINGv"
3022+ introspectable="0">
3023+ <doc xml:space="preserve"
3024+ filename="gobject-2.0.c"
3025+ line="1808">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__STRING().</doc>
3026+ <source-position filename="gmarshal.h" line="235"/>
3027+ <return-value transfer-ownership="none">
3028+ <type name="none" c:type="void"/>
3029+ </return-value>
3030+ <parameters>
3031+ <parameter name="closure" transfer-ownership="none">
3032+ <doc xml:space="preserve"
3033+ filename="gobject-2.0.c"
3034+ line="1810">the #GClosure to which the marshaller belongs</doc>
3035+ <type name="Closure" c:type="GClosure*"/>
3036+ </parameter>
3037+ <parameter name="return_value"
3038+ transfer-ownership="none"
3039+ nullable="1"
3040+ allow-none="1">
3041+ <doc xml:space="preserve"
3042+ filename="gobject-2.0.c"
3043+ line="1811">a #GValue to store the return
3044+ value. May be %NULL if the callback of @closure doesn't return a
3045+ value.</doc>
3046+ <type name="Value" c:type="GValue*"/>
3047+ </parameter>
3048+ <parameter name="instance" transfer-ownership="none">
3049+ <doc xml:space="preserve"
3050+ filename="gobject-2.0.c"
3051+ line="1814">the instance on which the closure is invoked.</doc>
3052+ <type name="TypeInstance" c:type="gpointer"/>
3053+ </parameter>
3054+ <parameter name="args" transfer-ownership="none">
3055+ <doc xml:space="preserve"
3056+ filename="gobject-2.0.c"
3057+ line="1815">va_list of arguments to be passed to the closure.</doc>
3058+ <type name="va_list" c:type="va_list"/>
3059+ </parameter>
3060+ <parameter name="marshal_data"
3061+ transfer-ownership="none"
3062+ nullable="1"
3063+ allow-none="1">
3064+ <doc xml:space="preserve"
3065+ filename="gobject-2.0.c"
3066+ line="1816">additional data specified when
3067+ registering the marshaller, see g_closure_set_marshal() and
3068+ g_closure_set_meta_marshal()</doc>
3069+ <type name="gpointer" c:type="gpointer"/>
3070+ </parameter>
3071+ <parameter name="n_params" transfer-ownership="none">
3072+ <doc xml:space="preserve"
3073+ filename="gobject-2.0.c"
3074+ line="1819">the length of the @param_types array</doc>
3075+ <type name="gint" c:type="int"/>
3076+ </parameter>
3077+ <parameter name="param_types" transfer-ownership="none">
3078+ <doc xml:space="preserve"
3079+ filename="gobject-2.0.c"
3080+ line="1820">the #GType of each argument from
3081+ @args.</doc>
3082+ <array length="5" zero-terminated="0" c:type="GType*">
3083+ <type name="GType" c:type="GType"/>
3084+ </array>
3085+ </parameter>
3086+ </parameters>
3087+ </function>
3088+ <function name="marshal_VOID__UCHAR"
3089+ c:identifier="g_cclosure_marshal_VOID__UCHAR">
3090+ <doc xml:space="preserve"
3091+ filename="gobject-2.0.c"
3092+ line="1827">A marshaller for a #GCClosure with a callback of type
3093+`void (*callback) (gpointer instance, guchar arg1, gpointer user_data)`.</doc>
3094+ <source-position filename="gmarshal.h" line="75"/>
3095+ <return-value transfer-ownership="none">
3096+ <type name="none" c:type="void"/>
3097+ </return-value>
3098+ <parameters>
3099+ <parameter name="closure" transfer-ownership="none">
3100+ <doc xml:space="preserve"
3101+ filename="gobject-2.0.c"
3102+ line="1829">the #GClosure to which the marshaller belongs</doc>
3103+ <type name="Closure" c:type="GClosure*"/>
3104+ </parameter>
3105+ <parameter name="return_value" transfer-ownership="none">
3106+ <doc xml:space="preserve"
3107+ filename="gobject-2.0.c"
3108+ line="1830">ignored</doc>
3109+ <type name="Value" c:type="GValue*"/>
3110+ </parameter>
3111+ <parameter name="n_param_values" transfer-ownership="none">
3112+ <doc xml:space="preserve"
3113+ filename="gobject-2.0.c"
3114+ line="1831">2</doc>
3115+ <type name="guint" c:type="guint"/>
3116+ </parameter>
3117+ <parameter name="param_values" transfer-ownership="none">
3118+ <doc xml:space="preserve"
3119+ filename="gobject-2.0.c"
3120+ line="1832">a #GValue array holding the instance and the #guchar parameter</doc>
3121+ <type name="Value" c:type="const GValue*"/>
3122+ </parameter>
3123+ <parameter name="invocation_hint"
3124+ transfer-ownership="none"
3125+ nullable="1"
3126+ allow-none="1">
3127+ <doc xml:space="preserve"
3128+ filename="gobject-2.0.c"
3129+ line="1833">the invocation hint given as the last argument
3130+ to g_closure_invoke()</doc>
3131+ <type name="gpointer" c:type="gpointer"/>
3132+ </parameter>
3133+ <parameter name="marshal_data"
3134+ transfer-ownership="none"
3135+ nullable="1"
3136+ allow-none="1">
3137+ <doc xml:space="preserve"
3138+ filename="gobject-2.0.c"
3139+ line="1835">additional data specified when registering the marshaller</doc>
3140+ <type name="gpointer" c:type="gpointer"/>
3141+ </parameter>
3142+ </parameters>
3143+ </function>
3144+ <function name="marshal_VOID__UCHARv"
3145+ c:identifier="g_cclosure_marshal_VOID__UCHARv"
3146+ introspectable="0">
3147+ <doc xml:space="preserve"
3148+ filename="gobject-2.0.c"
3149+ line="1842">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UCHAR().</doc>
3150+ <source-position filename="gmarshal.h" line="82"/>
3151+ <return-value transfer-ownership="none">
3152+ <type name="none" c:type="void"/>
3153+ </return-value>
3154+ <parameters>
3155+ <parameter name="closure" transfer-ownership="none">
3156+ <doc xml:space="preserve"
3157+ filename="gobject-2.0.c"
3158+ line="1844">the #GClosure to which the marshaller belongs</doc>
3159+ <type name="Closure" c:type="GClosure*"/>
3160+ </parameter>
3161+ <parameter name="return_value"
3162+ transfer-ownership="none"
3163+ nullable="1"
3164+ allow-none="1">
3165+ <doc xml:space="preserve"
3166+ filename="gobject-2.0.c"
3167+ line="1845">a #GValue to store the return
3168+ value. May be %NULL if the callback of @closure doesn't return a
3169+ value.</doc>
3170+ <type name="Value" c:type="GValue*"/>
3171+ </parameter>
3172+ <parameter name="instance" transfer-ownership="none">
3173+ <doc xml:space="preserve"
3174+ filename="gobject-2.0.c"
3175+ line="1848">the instance on which the closure is invoked.</doc>
3176+ <type name="TypeInstance" c:type="gpointer"/>
3177+ </parameter>
3178+ <parameter name="args" transfer-ownership="none">
3179+ <doc xml:space="preserve"
3180+ filename="gobject-2.0.c"
3181+ line="1849">va_list of arguments to be passed to the closure.</doc>
3182+ <type name="va_list" c:type="va_list"/>
3183+ </parameter>
3184+ <parameter name="marshal_data"
3185+ transfer-ownership="none"
3186+ nullable="1"
3187+ allow-none="1">
3188+ <doc xml:space="preserve"
3189+ filename="gobject-2.0.c"
3190+ line="1850">additional data specified when
3191+ registering the marshaller, see g_closure_set_marshal() and
3192+ g_closure_set_meta_marshal()</doc>
3193+ <type name="gpointer" c:type="gpointer"/>
3194+ </parameter>
3195+ <parameter name="n_params" transfer-ownership="none">
3196+ <doc xml:space="preserve"
3197+ filename="gobject-2.0.c"
3198+ line="1853">the length of the @param_types array</doc>
3199+ <type name="gint" c:type="int"/>
3200+ </parameter>
3201+ <parameter name="param_types" transfer-ownership="none">
3202+ <doc xml:space="preserve"
3203+ filename="gobject-2.0.c"
3204+ line="1854">the #GType of each argument from
3205+ @args.</doc>
3206+ <array length="5" zero-terminated="0" c:type="GType*">
3207+ <type name="GType" c:type="GType"/>
3208+ </array>
3209+ </parameter>
3210+ </parameters>
3211+ </function>
3212+ <function name="marshal_VOID__UINT"
3213+ c:identifier="g_cclosure_marshal_VOID__UINT">
3214+ <doc xml:space="preserve"
3215+ filename="gobject-2.0.c"
3216+ line="1861">A marshaller for a #GCClosure with a callback of type
3217+`void (*callback) (gpointer instance, guint arg1, gpointer user_data)`.</doc>
3218+ <source-position filename="gmarshal.h" line="109"/>
3219+ <return-value transfer-ownership="none">
3220+ <type name="none" c:type="void"/>
3221+ </return-value>
3222+ <parameters>
3223+ <parameter name="closure" transfer-ownership="none">
3224+ <doc xml:space="preserve"
3225+ filename="gobject-2.0.c"
3226+ line="1863">the #GClosure to which the marshaller belongs</doc>
3227+ <type name="Closure" c:type="GClosure*"/>
3228+ </parameter>
3229+ <parameter name="return_value" transfer-ownership="none">
3230+ <doc xml:space="preserve"
3231+ filename="gobject-2.0.c"
3232+ line="1864">ignored</doc>
3233+ <type name="Value" c:type="GValue*"/>
3234+ </parameter>
3235+ <parameter name="n_param_values" transfer-ownership="none">
3236+ <doc xml:space="preserve"
3237+ filename="gobject-2.0.c"
3238+ line="1865">2</doc>
3239+ <type name="guint" c:type="guint"/>
3240+ </parameter>
3241+ <parameter name="param_values" transfer-ownership="none">
3242+ <doc xml:space="preserve"
3243+ filename="gobject-2.0.c"
3244+ line="1866">a #GValue array holding the instance and the #guint parameter</doc>
3245+ <type name="Value" c:type="const GValue*"/>
3246+ </parameter>
3247+ <parameter name="invocation_hint"
3248+ transfer-ownership="none"
3249+ nullable="1"
3250+ allow-none="1">
3251+ <doc xml:space="preserve"
3252+ filename="gobject-2.0.c"
3253+ line="1867">the invocation hint given as the last argument
3254+ to g_closure_invoke()</doc>
3255+ <type name="gpointer" c:type="gpointer"/>
3256+ </parameter>
3257+ <parameter name="marshal_data"
3258+ transfer-ownership="none"
3259+ nullable="1"
3260+ allow-none="1">
3261+ <doc xml:space="preserve"
3262+ filename="gobject-2.0.c"
3263+ line="1869">additional data specified when registering the marshaller</doc>
3264+ <type name="gpointer" c:type="gpointer"/>
3265+ </parameter>
3266+ </parameters>
3267+ </function>
3268+ <function name="marshal_VOID__UINT_POINTER"
3269+ c:identifier="g_cclosure_marshal_VOID__UINT_POINTER">
3270+ <doc xml:space="preserve"
3271+ filename="gobject-2.0.c"
3272+ line="1876">A marshaller for a #GCClosure with a callback of type
3273+`void (*callback) (gpointer instance, guint arg1, gpointer arg2, gpointer user_data)`.</doc>
3274+ <source-position filename="gmarshal.h" line="330"/>
3275+ <return-value transfer-ownership="none">
3276+ <type name="none" c:type="void"/>
3277+ </return-value>
3278+ <parameters>
3279+ <parameter name="closure" transfer-ownership="none">
3280+ <doc xml:space="preserve"
3281+ filename="gobject-2.0.c"
3282+ line="1878">the #GClosure to which the marshaller belongs</doc>
3283+ <type name="Closure" c:type="GClosure*"/>
3284+ </parameter>
3285+ <parameter name="return_value" transfer-ownership="none">
3286+ <doc xml:space="preserve"
3287+ filename="gobject-2.0.c"
3288+ line="1879">ignored</doc>
3289+ <type name="Value" c:type="GValue*"/>
3290+ </parameter>
3291+ <parameter name="n_param_values" transfer-ownership="none">
3292+ <doc xml:space="preserve"
3293+ filename="gobject-2.0.c"
3294+ line="1880">3</doc>
3295+ <type name="guint" c:type="guint"/>
3296+ </parameter>
3297+ <parameter name="param_values" transfer-ownership="none">
3298+ <doc xml:space="preserve"
3299+ filename="gobject-2.0.c"
3300+ line="1881">a #GValue array holding instance, arg1 and arg2</doc>
3301+ <type name="Value" c:type="const GValue*"/>
3302+ </parameter>
3303+ <parameter name="invocation_hint"
3304+ transfer-ownership="none"
3305+ nullable="1"
3306+ allow-none="1">
3307+ <doc xml:space="preserve"
3308+ filename="gobject-2.0.c"
3309+ line="1882">the invocation hint given as the last argument
3310+ to g_closure_invoke()</doc>
3311+ <type name="gpointer" c:type="gpointer"/>
3312+ </parameter>
3313+ <parameter name="marshal_data"
3314+ transfer-ownership="none"
3315+ nullable="1"
3316+ allow-none="1">
3317+ <doc xml:space="preserve"
3318+ filename="gobject-2.0.c"
3319+ line="1884">additional data specified when registering the marshaller</doc>
3320+ <type name="gpointer" c:type="gpointer"/>
3321+ </parameter>
3322+ </parameters>
3323+ </function>
3324+ <function name="marshal_VOID__UINT_POINTERv"
3325+ c:identifier="g_cclosure_marshal_VOID__UINT_POINTERv"
3326+ introspectable="0">
3327+ <doc xml:space="preserve"
3328+ filename="gobject-2.0.c"
3329+ line="1891">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT_POINTER().</doc>
3330+ <source-position filename="gmarshal.h" line="337"/>
3331+ <return-value transfer-ownership="none">
3332+ <type name="none" c:type="void"/>
3333+ </return-value>
3334+ <parameters>
3335+ <parameter name="closure" transfer-ownership="none">
3336+ <doc xml:space="preserve"
3337+ filename="gobject-2.0.c"
3338+ line="1893">the #GClosure to which the marshaller belongs</doc>
3339+ <type name="Closure" c:type="GClosure*"/>
3340+ </parameter>
3341+ <parameter name="return_value"
3342+ transfer-ownership="none"
3343+ nullable="1"
3344+ allow-none="1">
3345+ <doc xml:space="preserve"
3346+ filename="gobject-2.0.c"
3347+ line="1894">a #GValue to store the return
3348+ value. May be %NULL if the callback of @closure doesn't return a
3349+ value.</doc>
3350+ <type name="Value" c:type="GValue*"/>
3351+ </parameter>
3352+ <parameter name="instance" transfer-ownership="none">
3353+ <doc xml:space="preserve"
3354+ filename="gobject-2.0.c"
3355+ line="1897">the instance on which the closure is invoked.</doc>
3356+ <type name="TypeInstance" c:type="gpointer"/>
3357+ </parameter>
3358+ <parameter name="args" transfer-ownership="none">
3359+ <doc xml:space="preserve"
3360+ filename="gobject-2.0.c"
3361+ line="1898">va_list of arguments to be passed to the closure.</doc>
3362+ <type name="va_list" c:type="va_list"/>
3363+ </parameter>
3364+ <parameter name="marshal_data"
3365+ transfer-ownership="none"
3366+ nullable="1"
3367+ allow-none="1">
3368+ <doc xml:space="preserve"
3369+ filename="gobject-2.0.c"
3370+ line="1899">additional data specified when
3371+ registering the marshaller, see g_closure_set_marshal() and
3372+ g_closure_set_meta_marshal()</doc>
3373+ <type name="gpointer" c:type="gpointer"/>
3374+ </parameter>
3375+ <parameter name="n_params" transfer-ownership="none">
3376+ <doc xml:space="preserve"
3377+ filename="gobject-2.0.c"
3378+ line="1902">the length of the @param_types array</doc>
3379+ <type name="gint" c:type="int"/>
3380+ </parameter>
3381+ <parameter name="param_types" transfer-ownership="none">
3382+ <doc xml:space="preserve"
3383+ filename="gobject-2.0.c"
3384+ line="1903">the #GType of each argument from
3385+ @args.</doc>
3386+ <array length="5" zero-terminated="0" c:type="GType*">
3387+ <type name="GType" c:type="GType"/>
3388+ </array>
3389+ </parameter>
3390+ </parameters>
3391+ </function>
3392+ <function name="marshal_VOID__UINTv"
3393+ c:identifier="g_cclosure_marshal_VOID__UINTv"
3394+ introspectable="0">
3395+ <doc xml:space="preserve"
3396+ filename="gobject-2.0.c"
3397+ line="1910">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__UINT().</doc>
3398+ <source-position filename="gmarshal.h" line="116"/>
3399+ <return-value transfer-ownership="none">
3400+ <type name="none" c:type="void"/>
3401+ </return-value>
3402+ <parameters>
3403+ <parameter name="closure" transfer-ownership="none">
3404+ <doc xml:space="preserve"
3405+ filename="gobject-2.0.c"
3406+ line="1912">the #GClosure to which the marshaller belongs</doc>
3407+ <type name="Closure" c:type="GClosure*"/>
3408+ </parameter>
3409+ <parameter name="return_value"
3410+ transfer-ownership="none"
3411+ nullable="1"
3412+ allow-none="1">
3413+ <doc xml:space="preserve"
3414+ filename="gobject-2.0.c"
3415+ line="1913">a #GValue to store the return
3416+ value. May be %NULL if the callback of @closure doesn't return a
3417+ value.</doc>
3418+ <type name="Value" c:type="GValue*"/>
3419+ </parameter>
3420+ <parameter name="instance" transfer-ownership="none">
3421+ <doc xml:space="preserve"
3422+ filename="gobject-2.0.c"
3423+ line="1916">the instance on which the closure is invoked.</doc>
3424+ <type name="TypeInstance" c:type="gpointer"/>
3425+ </parameter>
3426+ <parameter name="args" transfer-ownership="none">
3427+ <doc xml:space="preserve"
3428+ filename="gobject-2.0.c"
3429+ line="1917">va_list of arguments to be passed to the closure.</doc>
3430+ <type name="va_list" c:type="va_list"/>
3431+ </parameter>
3432+ <parameter name="marshal_data"
3433+ transfer-ownership="none"
3434+ nullable="1"
3435+ allow-none="1">
3436+ <doc xml:space="preserve"
3437+ filename="gobject-2.0.c"
3438+ line="1918">additional data specified when
3439+ registering the marshaller, see g_closure_set_marshal() and
3440+ g_closure_set_meta_marshal()</doc>
3441+ <type name="gpointer" c:type="gpointer"/>
3442+ </parameter>
3443+ <parameter name="n_params" transfer-ownership="none">
3444+ <doc xml:space="preserve"
3445+ filename="gobject-2.0.c"
3446+ line="1921">the length of the @param_types array</doc>
3447+ <type name="gint" c:type="int"/>
3448+ </parameter>
3449+ <parameter name="param_types" transfer-ownership="none">
3450+ <doc xml:space="preserve"
3451+ filename="gobject-2.0.c"
3452+ line="1922">the #GType of each argument from
3453+ @args.</doc>
3454+ <array length="5" zero-terminated="0" c:type="GType*">
3455+ <type name="GType" c:type="GType"/>
3456+ </array>
3457+ </parameter>
3458+ </parameters>
3459+ </function>
3460+ <function name="marshal_VOID__ULONG"
3461+ c:identifier="g_cclosure_marshal_VOID__ULONG">
3462+ <doc xml:space="preserve"
3463+ filename="gobject-2.0.c"
3464+ line="1929">A marshaller for a #GCClosure with a callback of type
3465+`void (*callback) (gpointer instance, gulong arg1, gpointer user_data)`.</doc>
3466+ <source-position filename="gmarshal.h" line="143"/>
3467+ <return-value transfer-ownership="none">
3468+ <type name="none" c:type="void"/>
3469+ </return-value>
3470+ <parameters>
3471+ <parameter name="closure" transfer-ownership="none">
3472+ <doc xml:space="preserve"
3473+ filename="gobject-2.0.c"
3474+ line="1931">the #GClosure to which the marshaller belongs</doc>
3475+ <type name="Closure" c:type="GClosure*"/>
3476+ </parameter>
3477+ <parameter name="return_value" transfer-ownership="none">
3478+ <doc xml:space="preserve"
3479+ filename="gobject-2.0.c"
3480+ line="1932">ignored</doc>
3481+ <type name="Value" c:type="GValue*"/>
3482+ </parameter>
3483+ <parameter name="n_param_values" transfer-ownership="none">
3484+ <doc xml:space="preserve"
3485+ filename="gobject-2.0.c"
3486+ line="1933">2</doc>
3487+ <type name="guint" c:type="guint"/>
3488+ </parameter>
3489+ <parameter name="param_values" transfer-ownership="none">
3490+ <doc xml:space="preserve"
3491+ filename="gobject-2.0.c"
3492+ line="1934">a #GValue array holding the instance and the #gulong parameter</doc>
3493+ <type name="Value" c:type="const GValue*"/>
3494+ </parameter>
3495+ <parameter name="invocation_hint"
3496+ transfer-ownership="none"
3497+ nullable="1"
3498+ allow-none="1">
3499+ <doc xml:space="preserve"
3500+ filename="gobject-2.0.c"
3501+ line="1935">the invocation hint given as the last argument
3502+ to g_closure_invoke()</doc>
3503+ <type name="gpointer" c:type="gpointer"/>
3504+ </parameter>
3505+ <parameter name="marshal_data"
3506+ transfer-ownership="none"
3507+ nullable="1"
3508+ allow-none="1">
3509+ <doc xml:space="preserve"
3510+ filename="gobject-2.0.c"
3511+ line="1937">additional data specified when registering the marshaller</doc>
3512+ <type name="gpointer" c:type="gpointer"/>
3513+ </parameter>
3514+ </parameters>
3515+ </function>
3516+ <function name="marshal_VOID__ULONGv"
3517+ c:identifier="g_cclosure_marshal_VOID__ULONGv"
3518+ introspectable="0">
3519+ <doc xml:space="preserve"
3520+ filename="gobject-2.0.c"
3521+ line="1944">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__ULONG().</doc>
3522+ <source-position filename="gmarshal.h" line="150"/>
3523+ <return-value transfer-ownership="none">
3524+ <type name="none" c:type="void"/>
3525+ </return-value>
3526+ <parameters>
3527+ <parameter name="closure" transfer-ownership="none">
3528+ <doc xml:space="preserve"
3529+ filename="gobject-2.0.c"
3530+ line="1946">the #GClosure to which the marshaller belongs</doc>
3531+ <type name="Closure" c:type="GClosure*"/>
3532+ </parameter>
3533+ <parameter name="return_value"
3534+ transfer-ownership="none"
3535+ nullable="1"
3536+ allow-none="1">
3537+ <doc xml:space="preserve"
3538+ filename="gobject-2.0.c"
3539+ line="1947">a #GValue to store the return
3540+ value. May be %NULL if the callback of @closure doesn't return a
3541+ value.</doc>
3542+ <type name="Value" c:type="GValue*"/>
3543+ </parameter>
3544+ <parameter name="instance" transfer-ownership="none">
3545+ <doc xml:space="preserve"
3546+ filename="gobject-2.0.c"
3547+ line="1950">the instance on which the closure is invoked.</doc>
3548+ <type name="TypeInstance" c:type="gpointer"/>
3549+ </parameter>
3550+ <parameter name="args" transfer-ownership="none">
3551+ <doc xml:space="preserve"
3552+ filename="gobject-2.0.c"
3553+ line="1951">va_list of arguments to be passed to the closure.</doc>
3554+ <type name="va_list" c:type="va_list"/>
3555+ </parameter>
3556+ <parameter name="marshal_data"
3557+ transfer-ownership="none"
3558+ nullable="1"
3559+ allow-none="1">
3560+ <doc xml:space="preserve"
3561+ filename="gobject-2.0.c"
3562+ line="1952">additional data specified when
3563+ registering the marshaller, see g_closure_set_marshal() and
3564+ g_closure_set_meta_marshal()</doc>
3565+ <type name="gpointer" c:type="gpointer"/>
3566+ </parameter>
3567+ <parameter name="n_params" transfer-ownership="none">
3568+ <doc xml:space="preserve"
3569+ filename="gobject-2.0.c"
3570+ line="1955">the length of the @param_types array</doc>
3571+ <type name="gint" c:type="int"/>
3572+ </parameter>
3573+ <parameter name="param_types" transfer-ownership="none">
3574+ <doc xml:space="preserve"
3575+ filename="gobject-2.0.c"
3576+ line="1956">the #GType of each argument from
3577+ @args.</doc>
3578+ <array length="5" zero-terminated="0" c:type="GType*">
3579+ <type name="GType" c:type="GType"/>
3580+ </array>
3581+ </parameter>
3582+ </parameters>
3583+ </function>
3584+ <function name="marshal_VOID__VARIANT"
3585+ c:identifier="g_cclosure_marshal_VOID__VARIANT"
3586+ version="2.26">
3587+ <doc xml:space="preserve"
3588+ filename="gobject-2.0.c"
3589+ line="1963">A marshaller for a #GCClosure with a callback of type
3590+`void (*callback) (gpointer instance, GVariant *arg1, gpointer user_data)`.</doc>
3591+ <source-position filename="gmarshal.h" line="313"/>
3592+ <return-value transfer-ownership="none">
3593+ <type name="none" c:type="void"/>
3594+ </return-value>
3595+ <parameters>
3596+ <parameter name="closure" transfer-ownership="none">
3597+ <doc xml:space="preserve"
3598+ filename="gobject-2.0.c"
3599+ line="1965">the #GClosure to which the marshaller belongs</doc>
3600+ <type name="Closure" c:type="GClosure*"/>
3601+ </parameter>
3602+ <parameter name="return_value" transfer-ownership="none">
3603+ <doc xml:space="preserve"
3604+ filename="gobject-2.0.c"
3605+ line="1966">ignored</doc>
3606+ <type name="Value" c:type="GValue*"/>
3607+ </parameter>
3608+ <parameter name="n_param_values" transfer-ownership="none">
3609+ <doc xml:space="preserve"
3610+ filename="gobject-2.0.c"
3611+ line="1967">2</doc>
3612+ <type name="guint" c:type="guint"/>
3613+ </parameter>
3614+ <parameter name="param_values" transfer-ownership="none">
3615+ <doc xml:space="preserve"
3616+ filename="gobject-2.0.c"
3617+ line="1968">a #GValue array holding the instance and the #GVariant* parameter</doc>
3618+ <type name="Value" c:type="const GValue*"/>
3619+ </parameter>
3620+ <parameter name="invocation_hint"
3621+ transfer-ownership="none"
3622+ nullable="1"
3623+ allow-none="1">
3624+ <doc xml:space="preserve"
3625+ filename="gobject-2.0.c"
3626+ line="1969">the invocation hint given as the last argument
3627+ to g_closure_invoke()</doc>
3628+ <type name="gpointer" c:type="gpointer"/>
3629+ </parameter>
3630+ <parameter name="marshal_data"
3631+ transfer-ownership="none"
3632+ nullable="1"
3633+ allow-none="1">
3634+ <doc xml:space="preserve"
3635+ filename="gobject-2.0.c"
3636+ line="1971">additional data specified when registering the marshaller</doc>
3637+ <type name="gpointer" c:type="gpointer"/>
3638+ </parameter>
3639+ </parameters>
3640+ </function>
3641+ <function name="marshal_VOID__VARIANTv"
3642+ c:identifier="g_cclosure_marshal_VOID__VARIANTv"
3643+ introspectable="0">
3644+ <doc xml:space="preserve"
3645+ filename="gobject-2.0.c"
3646+ line="1980">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VARIANT().</doc>
3647+ <source-position filename="gmarshal.h" line="320"/>
3648+ <return-value transfer-ownership="none">
3649+ <type name="none" c:type="void"/>
3650+ </return-value>
3651+ <parameters>
3652+ <parameter name="closure" transfer-ownership="none">
3653+ <doc xml:space="preserve"
3654+ filename="gobject-2.0.c"
3655+ line="1982">the #GClosure to which the marshaller belongs</doc>
3656+ <type name="Closure" c:type="GClosure*"/>
3657+ </parameter>
3658+ <parameter name="return_value"
3659+ transfer-ownership="none"
3660+ nullable="1"
3661+ allow-none="1">
3662+ <doc xml:space="preserve"
3663+ filename="gobject-2.0.c"
3664+ line="1983">a #GValue to store the return
3665+ value. May be %NULL if the callback of @closure doesn't return a
3666+ value.</doc>
3667+ <type name="Value" c:type="GValue*"/>
3668+ </parameter>
3669+ <parameter name="instance" transfer-ownership="none">
3670+ <doc xml:space="preserve"
3671+ filename="gobject-2.0.c"
3672+ line="1986">the instance on which the closure is invoked.</doc>
3673+ <type name="TypeInstance" c:type="gpointer"/>
3674+ </parameter>
3675+ <parameter name="args" transfer-ownership="none">
3676+ <doc xml:space="preserve"
3677+ filename="gobject-2.0.c"
3678+ line="1987">va_list of arguments to be passed to the closure.</doc>
3679+ <type name="va_list" c:type="va_list"/>
3680+ </parameter>
3681+ <parameter name="marshal_data"
3682+ transfer-ownership="none"
3683+ nullable="1"
3684+ allow-none="1">
3685+ <doc xml:space="preserve"
3686+ filename="gobject-2.0.c"
3687+ line="1988">additional data specified when
3688+ registering the marshaller, see g_closure_set_marshal() and
3689+ g_closure_set_meta_marshal()</doc>
3690+ <type name="gpointer" c:type="gpointer"/>
3691+ </parameter>
3692+ <parameter name="n_params" transfer-ownership="none">
3693+ <doc xml:space="preserve"
3694+ filename="gobject-2.0.c"
3695+ line="1991">the length of the @param_types array</doc>
3696+ <type name="gint" c:type="int"/>
3697+ </parameter>
3698+ <parameter name="param_types" transfer-ownership="none">
3699+ <doc xml:space="preserve"
3700+ filename="gobject-2.0.c"
3701+ line="1992">the #GType of each argument from
3702+ @args.</doc>
3703+ <array length="5" zero-terminated="0" c:type="GType*">
3704+ <type name="GType" c:type="GType"/>
3705+ </array>
3706+ </parameter>
3707+ </parameters>
3708+ </function>
3709+ <function name="marshal_VOID__VOID"
3710+ c:identifier="g_cclosure_marshal_VOID__VOID">
3711+ <doc xml:space="preserve"
3712+ filename="gobject-2.0.c"
3713+ line="1999">A marshaller for a #GCClosure with a callback of type
3714+`void (*callback) (gpointer instance, gpointer user_data)`.</doc>
3715+ <source-position filename="gmarshal.h" line="24"/>
3716+ <return-value transfer-ownership="none">
3717+ <type name="none" c:type="void"/>
3718+ </return-value>
3719+ <parameters>
3720+ <parameter name="closure" transfer-ownership="none">
3721+ <doc xml:space="preserve"
3722+ filename="gobject-2.0.c"
3723+ line="2001">the #GClosure to which the marshaller belongs</doc>
3724+ <type name="Closure" c:type="GClosure*"/>
3725+ </parameter>
3726+ <parameter name="return_value" transfer-ownership="none">
3727+ <doc xml:space="preserve"
3728+ filename="gobject-2.0.c"
3729+ line="2002">ignored</doc>
3730+ <type name="Value" c:type="GValue*"/>
3731+ </parameter>
3732+ <parameter name="n_param_values" transfer-ownership="none">
3733+ <doc xml:space="preserve"
3734+ filename="gobject-2.0.c"
3735+ line="2003">1</doc>
3736+ <type name="guint" c:type="guint"/>
3737+ </parameter>
3738+ <parameter name="param_values" transfer-ownership="none">
3739+ <doc xml:space="preserve"
3740+ filename="gobject-2.0.c"
3741+ line="2004">a #GValue array holding only the instance</doc>
3742+ <type name="Value" c:type="const GValue*"/>
3743+ </parameter>
3744+ <parameter name="invocation_hint"
3745+ transfer-ownership="none"
3746+ nullable="1"
3747+ allow-none="1">
3748+ <doc xml:space="preserve"
3749+ filename="gobject-2.0.c"
3750+ line="2005">the invocation hint given as the last argument
3751+ to g_closure_invoke()</doc>
3752+ <type name="gpointer" c:type="gpointer"/>
3753+ </parameter>
3754+ <parameter name="marshal_data"
3755+ transfer-ownership="none"
3756+ nullable="1"
3757+ allow-none="1">
3758+ <doc xml:space="preserve"
3759+ filename="gobject-2.0.c"
3760+ line="2007">additional data specified when registering the marshaller</doc>
3761+ <type name="gpointer" c:type="gpointer"/>
3762+ </parameter>
3763+ </parameters>
3764+ </function>
3765+ <function name="marshal_VOID__VOIDv"
3766+ c:identifier="g_cclosure_marshal_VOID__VOIDv"
3767+ introspectable="0">
3768+ <doc xml:space="preserve"
3769+ filename="gobject-2.0.c"
3770+ line="2014">The #GVaClosureMarshal equivalent to g_cclosure_marshal_VOID__VOID().</doc>
3771+ <source-position filename="gmarshal.h" line="31"/>
3772+ <return-value transfer-ownership="none">
3773+ <type name="none" c:type="void"/>
3774+ </return-value>
3775+ <parameters>
3776+ <parameter name="closure" transfer-ownership="none">
3777+ <doc xml:space="preserve"
3778+ filename="gobject-2.0.c"
3779+ line="2016">the #GClosure to which the marshaller belongs</doc>
3780+ <type name="Closure" c:type="GClosure*"/>
3781+ </parameter>
3782+ <parameter name="return_value"
3783+ transfer-ownership="none"
3784+ nullable="1"
3785+ allow-none="1">
3786+ <doc xml:space="preserve"
3787+ filename="gobject-2.0.c"
3788+ line="2017">a #GValue to store the return
3789+ value. May be %NULL if the callback of @closure doesn't return a
3790+ value.</doc>
3791+ <type name="Value" c:type="GValue*"/>
3792+ </parameter>
3793+ <parameter name="instance" transfer-ownership="none">
3794+ <doc xml:space="preserve"
3795+ filename="gobject-2.0.c"
3796+ line="2020">the instance on which the closure is invoked.</doc>
3797+ <type name="TypeInstance" c:type="gpointer"/>
3798+ </parameter>
3799+ <parameter name="args" transfer-ownership="none">
3800+ <doc xml:space="preserve"
3801+ filename="gobject-2.0.c"
3802+ line="2021">va_list of arguments to be passed to the closure.</doc>
3803+ <type name="va_list" c:type="va_list"/>
3804+ </parameter>
3805+ <parameter name="marshal_data"
3806+ transfer-ownership="none"
3807+ nullable="1"
3808+ allow-none="1">
3809+ <doc xml:space="preserve"
3810+ filename="gobject-2.0.c"
3811+ line="2022">additional data specified when
3812+ registering the marshaller, see g_closure_set_marshal() and
3813+ g_closure_set_meta_marshal()</doc>
3814+ <type name="gpointer" c:type="gpointer"/>
3815+ </parameter>
3816+ <parameter name="n_params" transfer-ownership="none">
3817+ <doc xml:space="preserve"
3818+ filename="gobject-2.0.c"
3819+ line="2025">the length of the @param_types array</doc>
3820+ <type name="gint" c:type="int"/>
3821+ </parameter>
3822+ <parameter name="param_types" transfer-ownership="none">
3823+ <doc xml:space="preserve"
3824+ filename="gobject-2.0.c"
3825+ line="2026">the #GType of each argument from
3826+ @args.</doc>
3827+ <array length="5" zero-terminated="0" c:type="GType*">
3828+ <type name="GType" c:type="GType"/>
3829+ </array>
3830+ </parameter>
3831+ </parameters>
3832+ </function>
3833+ <function name="marshal_generic"
3834+ c:identifier="g_cclosure_marshal_generic"
3835+ version="2.30">
3836+ <doc xml:space="preserve"
3837+ filename="gobject-2.0.c"
3838+ line="2033">A generic marshaller function implemented via
3839+[libffi](http://sourceware.org/libffi/).
3840+
3841+Normally this function is not passed explicitly to g_signal_new(),
3842+but used automatically by GLib when specifying a %NULL marshaller.</doc>
3843+ <source-position filename="gclosure.h" line="302"/>
3844+ <return-value transfer-ownership="none">
3845+ <type name="none" c:type="void"/>
3846+ </return-value>
3847+ <parameters>
3848+ <parameter name="closure" transfer-ownership="none">
3849+ <doc xml:space="preserve"
3850+ filename="gobject-2.0.c"
3851+ line="2035">A #GClosure.</doc>
3852+ <type name="Closure" c:type="GClosure*"/>
3853+ </parameter>
3854+ <parameter name="return_gvalue" transfer-ownership="none">
3855+ <doc xml:space="preserve"
3856+ filename="gobject-2.0.c"
3857+ line="2036">A #GValue to store the return value. May be %NULL
3858+ if the callback of closure doesn't return a value.</doc>
3859+ <type name="Value" c:type="GValue*"/>
3860+ </parameter>
3861+ <parameter name="n_param_values" transfer-ownership="none">
3862+ <doc xml:space="preserve"
3863+ filename="gobject-2.0.c"
3864+ line="2038">The length of the @param_values array.</doc>
3865+ <type name="guint" c:type="guint"/>
3866+ </parameter>
3867+ <parameter name="param_values" transfer-ownership="none">
3868+ <doc xml:space="preserve"
3869+ filename="gobject-2.0.c"
3870+ line="2039">An array of #GValues holding the arguments
3871+ on which to invoke the callback of closure.</doc>
3872+ <type name="Value" c:type="const GValue*"/>
3873+ </parameter>
3874+ <parameter name="invocation_hint"
3875+ transfer-ownership="none"
3876+ nullable="1"
3877+ allow-none="1">
3878+ <doc xml:space="preserve"
3879+ filename="gobject-2.0.c"
3880+ line="2041">The invocation hint given as the last argument to
3881+ g_closure_invoke().</doc>
3882+ <type name="gpointer" c:type="gpointer"/>
3883+ </parameter>
3884+ <parameter name="marshal_data"
3885+ transfer-ownership="none"
3886+ nullable="1"
3887+ allow-none="1">
3888+ <doc xml:space="preserve"
3889+ filename="gobject-2.0.c"
3890+ line="2043">Additional data specified when registering the
3891+ marshaller, see g_closure_set_marshal() and
3892+ g_closure_set_meta_marshal()</doc>
3893+ <type name="gpointer" c:type="gpointer"/>
3894+ </parameter>
3895+ </parameters>
3896+ </function>
3897+ <function name="marshal_generic_va"
3898+ c:identifier="g_cclosure_marshal_generic_va"
3899+ version="2.30"
3900+ introspectable="0">
3901+ <doc xml:space="preserve"
3902+ filename="gobject-2.0.c"
3903+ line="2057">A generic #GVaClosureMarshal function implemented via
3904+[libffi](http://sourceware.org/libffi/).</doc>
3905+ <source-position filename="gclosure.h" line="310"/>
3906+ <return-value transfer-ownership="none">
3907+ <type name="none" c:type="void"/>
3908+ </return-value>
3909+ <parameters>
3910+ <parameter name="closure" transfer-ownership="none">
3911+ <doc xml:space="preserve"
3912+ filename="gobject-2.0.c"
3913+ line="2059">the #GClosure to which the marshaller belongs</doc>
3914+ <type name="Closure" c:type="GClosure*"/>
3915+ </parameter>
3916+ <parameter name="return_value"
3917+ transfer-ownership="none"
3918+ nullable="1"
3919+ allow-none="1">
3920+ <doc xml:space="preserve"
3921+ filename="gobject-2.0.c"
3922+ line="2060">a #GValue to store the return
3923+ value. May be %NULL if the callback of @closure doesn't return a
3924+ value.</doc>
3925+ <type name="Value" c:type="GValue*"/>
3926+ </parameter>
3927+ <parameter name="instance" transfer-ownership="none">
3928+ <doc xml:space="preserve"
3929+ filename="gobject-2.0.c"
3930+ line="2063">the instance on which the closure is
3931+ invoked.</doc>
3932+ <type name="TypeInstance" c:type="gpointer"/>
3933+ </parameter>
3934+ <parameter name="args_list" transfer-ownership="none">
3935+ <doc xml:space="preserve"
3936+ filename="gobject-2.0.c"
3937+ line="2065">va_list of arguments to be passed to the closure.</doc>
3938+ <type name="va_list" c:type="va_list"/>
3939+ </parameter>
3940+ <parameter name="marshal_data"
3941+ transfer-ownership="none"
3942+ nullable="1"
3943+ allow-none="1">
3944+ <doc xml:space="preserve"
3945+ filename="gobject-2.0.c"
3946+ line="2066">additional data specified when
3947+ registering the marshaller, see g_closure_set_marshal() and
3948+ g_closure_set_meta_marshal()</doc>
3949+ <type name="gpointer" c:type="gpointer"/>
3950+ </parameter>
3951+ <parameter name="n_params" transfer-ownership="none">
3952+ <doc xml:space="preserve"
3953+ filename="gobject-2.0.c"
3954+ line="2069">the length of the @param_types array</doc>
3955+ <type name="gint" c:type="int"/>
3956+ </parameter>
3957+ <parameter name="param_types" transfer-ownership="none">
3958+ <doc xml:space="preserve"
3959+ filename="gobject-2.0.c"
3960+ line="2070">the #GType of each argument from
3961+ @args_list.</doc>
3962+ <array length="5" zero-terminated="0" c:type="GType*">
3963+ <type name="GType" c:type="GType"/>
3964+ </array>
3965+ </parameter>
3966+ </parameters>
3967+ </function>
3968+ <function name="new" c:identifier="g_cclosure_new" introspectable="0">
3969+ <doc xml:space="preserve"
3970+ filename="gobject-2.0.c"
3971+ line="2080">Creates a new closure which invokes @callback_func with @user_data as
3972+the last parameter.
3973+
3974+@destroy_data will be called as a finalize notifier on the #GClosure.</doc>
3975+ <source-position filename="gclosure.h" line="229"/>
3976+ <return-value transfer-ownership="none">
3977+ <doc xml:space="preserve"
3978+ filename="gobject-2.0.c"
3979+ line="2091">a floating reference to a new #GCClosure</doc>
3980+ <type name="Closure" c:type="GClosure*"/>
3981+ </return-value>
3982+ <parameters>
3983+ <parameter name="callback_func"
3984+ transfer-ownership="none"
3985+ nullable="1"
3986+ allow-none="1"
3987+ closure="1">
3988+ <doc xml:space="preserve"
3989+ filename="gobject-2.0.c"
3990+ line="2082">the function to invoke</doc>
3991+ <type name="Callback" c:type="GCallback"/>
3992+ </parameter>
3993+ <parameter name="user_data"
3994+ transfer-ownership="none"
3995+ nullable="1"
3996+ allow-none="1"
3997+ closure="0">
3998+ <doc xml:space="preserve"
3999+ filename="gobject-2.0.c"
4000+ line="2083">user data to pass to @callback_func</doc>
4001+ <type name="gpointer" c:type="gpointer"/>
4002+ </parameter>
4003+ <parameter name="destroy_data" transfer-ownership="none">
4004+ <doc xml:space="preserve"
4005+ filename="gobject-2.0.c"
4006+ line="2084">destroy notify to be called when @user_data is no longer used</doc>
4007+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4008+ </parameter>
4009+ </parameters>
4010+ </function>
4011+ <function name="new_object"
4012+ c:identifier="g_cclosure_new_object"
4013+ introspectable="0">
4014+ <doc xml:space="preserve"
4015+ filename="gobject-2.0.c"
4016+ line="2095">A variant of g_cclosure_new() which uses @object as @user_data and
4017+calls g_object_watch_closure() on @object and the created
4018+closure. This function is useful when you have a callback closely
4019+associated with a #GObject, and want the callback to no longer run
4020+after the object is is freed.</doc>
4021+ <source-position filename="gobject.h" line="635"/>
4022+ <return-value transfer-ownership="full">
4023+ <doc xml:space="preserve"
4024+ filename="gobject-2.0.c"
4025+ line="2106">a new #GCClosure</doc>
4026+ <type name="Closure" c:type="GClosure*"/>
4027+ </return-value>
4028+ <parameters>
4029+ <parameter name="callback_func" transfer-ownership="none">
4030+ <doc xml:space="preserve"
4031+ filename="gobject-2.0.c"
4032+ line="2097">the function to invoke</doc>
4033+ <type name="Callback" c:type="GCallback"/>
4034+ </parameter>
4035+ <parameter name="object" transfer-ownership="none">
4036+ <doc xml:space="preserve"
4037+ filename="gobject-2.0.c"
4038+ line="2098">a #GObject pointer to pass to @callback_func</doc>
4039+ <type name="Object" c:type="GObject*"/>
4040+ </parameter>
4041+ </parameters>
4042+ </function>
4043+ <function name="new_object_swap"
4044+ c:identifier="g_cclosure_new_object_swap"
4045+ introspectable="0">
4046+ <doc xml:space="preserve"
4047+ filename="gobject-2.0.c"
4048+ line="2110">A variant of g_cclosure_new_swap() which uses @object as @user_data
4049+and calls g_object_watch_closure() on @object and the created
4050+closure. This function is useful when you have a callback closely
4051+associated with a #GObject, and want the callback to no longer run
4052+after the object is is freed.</doc>
4053+ <source-position filename="gobject.h" line="638"/>
4054+ <return-value transfer-ownership="full">
4055+ <doc xml:space="preserve"
4056+ filename="gobject-2.0.c"
4057+ line="2121">a new #GCClosure</doc>
4058+ <type name="Closure" c:type="GClosure*"/>
4059+ </return-value>
4060+ <parameters>
4061+ <parameter name="callback_func" transfer-ownership="none">
4062+ <doc xml:space="preserve"
4063+ filename="gobject-2.0.c"
4064+ line="2112">the function to invoke</doc>
4065+ <type name="Callback" c:type="GCallback"/>
4066+ </parameter>
4067+ <parameter name="object" transfer-ownership="none">
4068+ <doc xml:space="preserve"
4069+ filename="gobject-2.0.c"
4070+ line="2113">a #GObject pointer to pass to @callback_func</doc>
4071+ <type name="Object" c:type="GObject*"/>
4072+ </parameter>
4073+ </parameters>
4074+ </function>
4075+ <function name="new_swap"
4076+ c:identifier="g_cclosure_new_swap"
4077+ introspectable="0">
4078+ <doc xml:space="preserve"
4079+ filename="gobject-2.0.c"
4080+ line="2125">Creates a new closure which invokes @callback_func with @user_data as
4081+the first parameter.
4082+
4083+@destroy_data will be called as a finalize notifier on the #GClosure.</doc>
4084+ <source-position filename="gclosure.h" line="233"/>
4085+ <return-value transfer-ownership="none">
4086+ <doc xml:space="preserve"
4087+ filename="gobject-2.0.c"
4088+ line="2136">a floating reference to a new #GCClosure</doc>
4089+ <type name="Closure" c:type="GClosure*"/>
4090+ </return-value>
4091+ <parameters>
4092+ <parameter name="callback_func"
4093+ transfer-ownership="none"
4094+ nullable="1"
4095+ allow-none="1"
4096+ closure="1">
4097+ <doc xml:space="preserve"
4098+ filename="gobject-2.0.c"
4099+ line="2127">the function to invoke</doc>
4100+ <type name="Callback" c:type="GCallback"/>
4101+ </parameter>
4102+ <parameter name="user_data"
4103+ transfer-ownership="none"
4104+ nullable="1"
4105+ allow-none="1"
4106+ closure="0">
4107+ <doc xml:space="preserve"
4108+ filename="gobject-2.0.c"
4109+ line="2128">user data to pass to @callback_func</doc>
4110+ <type name="gpointer" c:type="gpointer"/>
4111+ </parameter>
4112+ <parameter name="destroy_data" transfer-ownership="none">
4113+ <doc xml:space="preserve"
4114+ filename="gobject-2.0.c"
4115+ line="2129">destroy notify to be called when @user_data is no longer used</doc>
4116+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4117+ </parameter>
4118+ </parameters>
4119+ </function>
4120+ </record>
4121+ <function-macro name="CLOSURE_NEEDS_MARSHAL"
4122+ c:identifier="G_CLOSURE_NEEDS_MARSHAL"
4123+ introspectable="0">
4124+ <doc xml:space="preserve"
4125+ filename="gclosure.h"
4126+ line="30">Check if the closure still needs a marshaller. See g_closure_set_marshal().</doc>
4127+ <source-position filename="gclosure.h" line="39"/>
4128+ <parameters>
4129+ <parameter name="closure">
4130+ <doc xml:space="preserve"
4131+ filename="gclosure.h"
4132+ line="32">a #GClosure</doc>
4133+ </parameter>
4134+ </parameters>
4135+ </function-macro>
4136+ <function-macro name="CLOSURE_N_NOTIFIERS"
4137+ c:identifier="G_CLOSURE_N_NOTIFIERS"
4138+ introspectable="0">
4139+ <doc xml:space="preserve"
4140+ filename="gclosure.h"
4141+ line="40">Get the total number of notifiers connected with the closure @cl.
4142+
4143+The count includes the meta marshaller, the finalize and invalidate notifiers
4144+and the marshal guards. Note that each guard counts as two notifiers.
4145+See g_closure_set_meta_marshal(), g_closure_add_finalize_notifier(),
4146+g_closure_add_invalidate_notifier() and g_closure_add_marshal_guards().</doc>
4147+ <source-position filename="gclosure.h" line="53"/>
4148+ <parameters>
4149+ <parameter name="cl">
4150+ <doc xml:space="preserve"
4151+ filename="gclosure.h"
4152+ line="42">a #GClosure</doc>
4153+ </parameter>
4154+ </parameters>
4155+ </function-macro>
4156+ <callback name="Callback" c:type="GCallback">
4157+ <doc xml:space="preserve"
4158+ filename="gclosure.h"
4159+ line="78">The type used for callback functions in structure definitions and function
4160+signatures.
4161+
4162+This doesn't mean that all callback functions must take no parameters and
4163+return void. The required signature of a callback function is determined by
4164+the context in which is used (e.g. the signal to which it is connected).
4165+
4166+Use G_CALLBACK() to cast the callback function to a #GCallback.</doc>
4167+ <source-position filename="gclosure.h" line="90"/>
4168+ <return-value transfer-ownership="none">
4169+ <type name="none" c:type="void"/>
4170+ </return-value>
4171+ </callback>
4172+ <callback name="ClassFinalizeFunc" c:type="GClassFinalizeFunc">
4173+ <doc xml:space="preserve"
4174+ filename="gtype.h"
4175+ line="914">A callback function used by the type system to finalize a class.
4176+
4177+This function is rarely needed, as dynamically allocated class resources
4178+should be handled by GBaseInitFunc() and GBaseFinalizeFunc().
4179+
4180+Also, specification of a GClassFinalizeFunc() in the #GTypeInfo
4181+structure of a static type is invalid, because classes of static types
4182+will never be finalized (they are artificially kept alive when their
4183+reference count drops to zero).</doc>
4184+ <source-position filename="gtype.h" line="929"/>
4185+ <return-value transfer-ownership="none">
4186+ <type name="none" c:type="void"/>
4187+ </return-value>
4188+ <parameters>
4189+ <parameter name="g_class" transfer-ownership="none">
4190+ <doc xml:space="preserve"
4191+ filename="gtype.h"
4192+ line="916">The #GTypeClass structure to finalize</doc>
4193+ <type name="TypeClass" c:type="gpointer"/>
4194+ </parameter>
4195+ <parameter name="class_data"
4196+ transfer-ownership="none"
4197+ nullable="1"
4198+ allow-none="1">
4199+ <doc xml:space="preserve"
4200+ filename="gtype.h"
4201+ line="917">The @class_data member supplied via the #GTypeInfo structure</doc>
4202+ <type name="gpointer" c:type="gpointer"/>
4203+ </parameter>
4204+ </parameters>
4205+ </callback>
4206+ <callback name="ClassInitFunc" c:type="GClassInitFunc">
4207+ <doc xml:space="preserve"
4208+ filename="gtype.h"
4209+ line="809">A callback function used by the type system to initialize the class
4210+of a specific type.
4211+
4212+This function should initialize all static class members.
4213+
4214+The initialization process of a class involves:
4215+
4216+- Copying common members from the parent class over to the
4217+ derived class structure.
4218+- Zero initialization of the remaining members not copied
4219+ over from the parent class.
4220+- Invocation of the GBaseInitFunc() initializers of all parent
4221+ types and the class' type.
4222+- Invocation of the class' GClassInitFunc() initializer.
4223+
4224+Since derived classes are partially initialized through a memory copy
4225+of the parent class, the general rule is that GBaseInitFunc() and
4226+GBaseFinalizeFunc() should take care of necessary reinitialization
4227+and release of those class members that were introduced by the type
4228+that specified these GBaseInitFunc()/GBaseFinalizeFunc().
4229+GClassInitFunc() should only care about initializing static
4230+class members, while dynamic class members (such as allocated strings
4231+or reference counted resources) are better handled by a GBaseInitFunc()
4232+for this type, so proper initialization of the dynamic class members
4233+is performed for class initialization of derived types as well.
4234+
4235+An example may help to correspond the intend of the different class
4236+initializers:
4237+
4238+|[&lt;!-- language="C" --&gt;
4239+typedef struct {
4240+ GObjectClass parent_class;
4241+ gint static_integer;
4242+ gchar *dynamic_string;
4243+} TypeAClass;
4244+static void
4245+type_a_base_class_init (TypeAClass *class)
4246+{
4247+ class-&gt;dynamic_string = g_strdup ("some string");
4248+}
4249+static void
4250+type_a_base_class_finalize (TypeAClass *class)
4251+{
4252+ g_free (class-&gt;dynamic_string);
4253+}
4254+static void
4255+type_a_class_init (TypeAClass *class)
4256+{
4257+ class-&gt;static_integer = 42;
4258+}
4259+
4260+typedef struct {
4261+ TypeAClass parent_class;
4262+ gfloat static_float;
4263+ GString *dynamic_gstring;
4264+} TypeBClass;
4265+static void
4266+type_b_base_class_init (TypeBClass *class)
4267+{
4268+ class-&gt;dynamic_gstring = g_string_new ("some other string");
4269+}
4270+static void
4271+type_b_base_class_finalize (TypeBClass *class)
4272+{
4273+ g_string_free (class-&gt;dynamic_gstring);
4274+}
4275+static void
4276+type_b_class_init (TypeBClass *class)
4277+{
4278+ class-&gt;static_float = 3.14159265358979323846;
4279+}
4280+]|
4281+
4282+Initialization of TypeBClass will first cause initialization of
4283+TypeAClass (derived classes reference their parent classes, see
4284+g_type_class_ref() on this).
4285+
4286+Initialization of TypeAClass roughly involves zero-initializing its fields,
4287+then calling its GBaseInitFunc() type_a_base_class_init() to allocate
4288+its dynamic members (dynamic_string), and finally calling its GClassInitFunc()
4289+type_a_class_init() to initialize its static members (static_integer).
4290+The first step in the initialization process of TypeBClass is then
4291+a plain memory copy of the contents of TypeAClass into TypeBClass and
4292+zero-initialization of the remaining fields in TypeBClass.
4293+The dynamic members of TypeAClass within TypeBClass now need
4294+reinitialization which is performed by calling type_a_base_class_init()
4295+with an argument of TypeBClass.
4296+
4297+After that, the GBaseInitFunc() of TypeBClass, type_b_base_class_init()
4298+is called to allocate the dynamic members of TypeBClass (dynamic_gstring),
4299+and finally the GClassInitFunc() of TypeBClass, type_b_class_init(),
4300+is called to complete the initialization process with the static members
4301+(static_float).
4302+
4303+Corresponding finalization counter parts to the GBaseInitFunc() functions
4304+have to be provided to release allocated resources at class finalization
4305+time.</doc>
4306+ <source-position filename="gtype.h" line="912"/>
4307+ <return-value transfer-ownership="none">
4308+ <type name="none" c:type="void"/>
4309+ </return-value>
4310+ <parameters>
4311+ <parameter name="g_class" transfer-ownership="none">
4312+ <doc xml:space="preserve"
4313+ filename="gtype.h"
4314+ line="811">The #GTypeClass structure to initialize.</doc>
4315+ <type name="TypeClass" c:type="gpointer"/>
4316+ </parameter>
4317+ <parameter name="class_data"
4318+ transfer-ownership="none"
4319+ nullable="1"
4320+ allow-none="1">
4321+ <doc xml:space="preserve"
4322+ filename="gtype.h"
4323+ line="812">The @class_data member supplied via the #GTypeInfo structure.</doc>
4324+ <type name="gpointer" c:type="gpointer"/>
4325+ </parameter>
4326+ </parameters>
4327+ </callback>
4328+ <record name="Closure"
4329+ c:type="GClosure"
4330+ glib:type-name="GClosure"
4331+ glib:get-type="g_closure_get_type"
4332+ c:symbol-prefix="closure">
4333+ <doc xml:space="preserve"
4334+ filename="gobject-2.0.c"
4335+ line="357">A #GClosure represents a callback supplied by the programmer.
4336+
4337+It will generally comprise a function of some kind and a marshaller
4338+used to call it. It is the responsibility of the marshaller to
4339+convert the arguments for the invocation from #GValues into
4340+a suitable form, perform the callback on the converted arguments,
4341+and transform the return value back into a #GValue.
4342+
4343+In the case of C programs, a closure usually just holds a pointer
4344+to a function and maybe a data argument, and the marshaller
4345+converts between #GValue and native C types. The GObject
4346+library provides the #GCClosure type for this purpose. Bindings for
4347+other languages need marshallers which convert between #GValues
4348+and suitable representations in the runtime of the language in
4349+order to use functions written in that language as callbacks. Use
4350+g_closure_set_marshal() to set the marshaller on such a custom
4351+closure implementation.
4352+
4353+Within GObject, closures play an important role in the
4354+implementation of signals. When a signal is registered, the
4355+@c_marshaller argument to g_signal_new() specifies the default C
4356+marshaller for any closure which is connected to this
4357+signal. GObject provides a number of C marshallers for this
4358+purpose, see the g_cclosure_marshal_*() functions. Additional C
4359+marshallers can be generated with the [glib-genmarshal][glib-genmarshal]
4360+utility. Closures can be explicitly connected to signals with
4361+g_signal_connect_closure(), but it usually more convenient to let
4362+GObject create a closure automatically by using one of the
4363+g_signal_connect_*() functions which take a callback function/user
4364+data pair.
4365+
4366+Using closures has a number of important advantages over a simple
4367+callback function/data pointer combination:
4368+
4369+- Closures allow the callee to get the types of the callback parameters,
4370+ which means that language bindings don't have to write individual glue
4371+ for each callback type.
4372+
4373+- The reference counting of #GClosure makes it easy to handle reentrancy
4374+ right; if a callback is removed while it is being invoked, the closure
4375+ and its parameters won't be freed until the invocation finishes.
4376+
4377+- g_closure_invalidate() and invalidation notifiers allow callbacks to be
4378+ automatically removed when the objects they point to go away.</doc>
4379+ <source-position filename="gclosure.h" line="217"/>
4380+ <field name="ref_count" readable="0" bits="15" private="1">
4381+ <type name="guint" c:type="guint"/>
4382+ </field>
4383+ <field name="meta_marshal_nouse" readable="0" bits="1" private="1">
4384+ <type name="guint" c:type="guint"/>
4385+ </field>
4386+ <field name="n_guards" readable="0" bits="1" private="1">
4387+ <type name="guint" c:type="guint"/>
4388+ </field>
4389+ <field name="n_fnotifiers" readable="0" bits="2" private="1">
4390+ <type name="guint" c:type="guint"/>
4391+ </field>
4392+ <field name="n_inotifiers" readable="0" bits="8" private="1">
4393+ <type name="guint" c:type="guint"/>
4394+ </field>
4395+ <field name="in_inotify" readable="0" bits="1" private="1">
4396+ <type name="guint" c:type="guint"/>
4397+ </field>
4398+ <field name="floating" readable="0" bits="1" private="1">
4399+ <type name="guint" c:type="guint"/>
4400+ </field>
4401+ <field name="derivative_flag" readable="0" bits="1" private="1">
4402+ <type name="guint" c:type="guint"/>
4403+ </field>
4404+ <field name="in_marshal" writable="1" bits="1">
4405+ <doc xml:space="preserve"
4406+ filename="gclosure.h"
4407+ line="172">Indicates whether the closure is currently being invoked with
4408+ g_closure_invoke()</doc>
4409+ <type name="guint" c:type="guint"/>
4410+ </field>
4411+ <field name="is_invalid" writable="1" bits="1">
4412+ <doc xml:space="preserve"
4413+ filename="gclosure.h"
4414+ line="174">Indicates whether the closure has been invalidated by
4415+ g_closure_invalidate()</doc>
4416+ <type name="guint" c:type="guint"/>
4417+ </field>
4418+ <field name="marshal">
4419+ <callback name="marshal">
4420+ <source-position filename="gclosure.h" line="197"/>
4421+ <return-value transfer-ownership="none">
4422+ <type name="none" c:type="void"/>
4423+ </return-value>
4424+ <parameters>
4425+ <parameter name="closure" transfer-ownership="none">
4426+ <type name="Closure" c:type="GClosure*"/>
4427+ </parameter>
4428+ <parameter name="return_value" transfer-ownership="none">
4429+ <type name="Value" c:type="GValue*"/>
4430+ </parameter>
4431+ <parameter name="n_param_values" transfer-ownership="none">
4432+ <type name="guint" c:type="guint"/>
4433+ </parameter>
4434+ <parameter name="param_values" transfer-ownership="none">
4435+ <type name="Value" c:type="const GValue*"/>
4436+ </parameter>
4437+ <parameter name="invocation_hint" transfer-ownership="none">
4438+ <type name="gpointer" c:type="gpointer"/>
4439+ </parameter>
4440+ <parameter name="marshal_data" transfer-ownership="none">
4441+ <type name="gpointer" c:type="gpointer"/>
4442+ </parameter>
4443+ </parameters>
4444+ </callback>
4445+ </field>
4446+ <field name="data" readable="0" private="1">
4447+ <type name="gpointer" c:type="gpointer"/>
4448+ </field>
4449+ <field name="notifiers" readable="0" private="1">
4450+ <type name="ClosureNotifyData" c:type="GClosureNotifyData*"/>
4451+ </field>
4452+ <constructor name="new_object" c:identifier="g_closure_new_object">
4453+ <doc xml:space="preserve"
4454+ filename="gobject-2.0.c"
4455+ line="2265">A variant of g_closure_new_simple() which stores @object in the
4456+@data field of the closure and calls g_object_watch_closure() on
4457+@object and the created closure. This function is mainly useful
4458+when implementing new types of closures.</doc>
4459+ <source-position filename="gobject.h" line="641"/>
4460+ <return-value transfer-ownership="full">
4461+ <doc xml:space="preserve"
4462+ filename="gobject-2.0.c"
4463+ line="2277">a newly allocated #GClosure</doc>
4464+ <type name="Closure" c:type="GClosure*"/>
4465+ </return-value>
4466+ <parameters>
4467+ <parameter name="sizeof_closure" transfer-ownership="none">
4468+ <doc xml:space="preserve"
4469+ filename="gobject-2.0.c"
4470+ line="2267">the size of the structure to allocate, must be at least
4471+ `sizeof (GClosure)`</doc>
4472+ <type name="guint" c:type="guint"/>
4473+ </parameter>
4474+ <parameter name="object" transfer-ownership="none">
4475+ <doc xml:space="preserve"
4476+ filename="gobject-2.0.c"
4477+ line="2269">a #GObject pointer to store in the @data field of the newly
4478+ allocated #GClosure</doc>
4479+ <type name="Object" c:type="GObject*"/>
4480+ </parameter>
4481+ </parameters>
4482+ </constructor>
4483+ <constructor name="new_simple" c:identifier="g_closure_new_simple">
4484+ <doc xml:space="preserve"
4485+ filename="gobject-2.0.c"
4486+ line="2281">Allocates a struct of the given size and initializes the initial
4487+part as a #GClosure.
4488+
4489+This function is mainly useful when implementing new types of closures:
4490+
4491+|[&lt;!-- language="C" --&gt;
4492+typedef struct _MyClosure MyClosure;
4493+struct _MyClosure
4494+{
4495+ GClosure closure;
4496+ // extra data goes here
4497+};
4498+
4499+static void
4500+my_closure_finalize (gpointer notify_data,
4501+ GClosure *closure)
4502+{
4503+ MyClosure *my_closure = (MyClosure *)closure;
4504+
4505+ // free extra data here
4506+}
4507+
4508+MyClosure *my_closure_new (gpointer data)
4509+{
4510+ GClosure *closure;
4511+ MyClosure *my_closure;
4512+
4513+ closure = g_closure_new_simple (sizeof (MyClosure), data);
4514+ my_closure = (MyClosure *) closure;
4515+
4516+ // initialize extra data here
4517+
4518+ g_closure_add_finalize_notifier (closure, notify_data,
4519+ my_closure_finalize);
4520+ return my_closure;
4521+}
4522+]|</doc>
4523+ <source-position filename="gclosure.h" line="250"/>
4524+ <return-value transfer-ownership="none">
4525+ <doc xml:space="preserve"
4526+ filename="gobject-2.0.c"
4527+ line="2325">a floating reference to a new #GClosure</doc>
4528+ <type name="Closure" c:type="GClosure*"/>
4529+ </return-value>
4530+ <parameters>
4531+ <parameter name="sizeof_closure" transfer-ownership="none">
4532+ <doc xml:space="preserve"
4533+ filename="gobject-2.0.c"
4534+ line="2283">the size of the structure to allocate, must be at least
4535+ `sizeof (GClosure)`</doc>
4536+ <type name="guint" c:type="guint"/>
4537+ </parameter>
4538+ <parameter name="data"
4539+ transfer-ownership="none"
4540+ nullable="1"
4541+ allow-none="1">
4542+ <doc xml:space="preserve"
4543+ filename="gobject-2.0.c"
4544+ line="2285">data to store in the @data field of the newly allocated #GClosure</doc>
4545+ <type name="gpointer" c:type="gpointer"/>
4546+ </parameter>
4547+ </parameters>
4548+ </constructor>
4549+ <method name="add_finalize_notifier"
4550+ c:identifier="g_closure_add_finalize_notifier"
4551+ introspectable="0">
4552+ <doc xml:space="preserve"
4553+ filename="gobject-2.0.c"
4554+ line="2178">Registers a finalization notifier which will be called when the
4555+reference count of @closure goes down to 0.
4556+
4557+Multiple finalization notifiers on a single closure are invoked in
4558+unspecified order. If a single call to g_closure_unref() results in
4559+the closure being both invalidated and finalized, then the invalidate
4560+notifiers will be run before the finalize notifiers.</doc>
4561+ <source-position filename="gclosure.h" line="253"/>
4562+ <return-value transfer-ownership="none">
4563+ <type name="none" c:type="void"/>
4564+ </return-value>
4565+ <parameters>
4566+ <instance-parameter name="closure" transfer-ownership="none">
4567+ <doc xml:space="preserve"
4568+ filename="gobject-2.0.c"
4569+ line="2180">a #GClosure</doc>
4570+ <type name="Closure" c:type="GClosure*"/>
4571+ </instance-parameter>
4572+ <parameter name="notify_data"
4573+ transfer-ownership="none"
4574+ nullable="1"
4575+ allow-none="1"
4576+ closure="1">
4577+ <doc xml:space="preserve"
4578+ filename="gobject-2.0.c"
4579+ line="2181">data to pass to @notify_func</doc>
4580+ <type name="gpointer" c:type="gpointer"/>
4581+ </parameter>
4582+ <parameter name="notify_func"
4583+ transfer-ownership="none"
4584+ nullable="1"
4585+ allow-none="1">
4586+ <doc xml:space="preserve"
4587+ filename="gobject-2.0.c"
4588+ line="2182">the callback function to register</doc>
4589+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4590+ </parameter>
4591+ </parameters>
4592+ </method>
4593+ <method name="add_invalidate_notifier"
4594+ c:identifier="g_closure_add_invalidate_notifier"
4595+ introspectable="0">
4596+ <doc xml:space="preserve"
4597+ filename="gobject-2.0.c"
4598+ line="2194">Registers an invalidation notifier which will be called when the
4599+@closure is invalidated with g_closure_invalidate().
4600+
4601+Invalidation notifiers are invoked before finalization notifiers,
4602+in an unspecified order.</doc>
4603+ <source-position filename="gclosure.h" line="261"/>
4604+ <return-value transfer-ownership="none">
4605+ <type name="none" c:type="void"/>
4606+ </return-value>
4607+ <parameters>
4608+ <instance-parameter name="closure" transfer-ownership="none">
4609+ <doc xml:space="preserve"
4610+ filename="gobject-2.0.c"
4611+ line="2196">a #GClosure</doc>
4612+ <type name="Closure" c:type="GClosure*"/>
4613+ </instance-parameter>
4614+ <parameter name="notify_data"
4615+ transfer-ownership="none"
4616+ nullable="1"
4617+ allow-none="1"
4618+ closure="1">
4619+ <doc xml:space="preserve"
4620+ filename="gobject-2.0.c"
4621+ line="2197">data to pass to @notify_func</doc>
4622+ <type name="gpointer" c:type="gpointer"/>
4623+ </parameter>
4624+ <parameter name="notify_func"
4625+ transfer-ownership="none"
4626+ nullable="1"
4627+ allow-none="1">
4628+ <doc xml:space="preserve"
4629+ filename="gobject-2.0.c"
4630+ line="2198">the callback function to register</doc>
4631+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4632+ </parameter>
4633+ </parameters>
4634+ </method>
4635+ <method name="add_marshal_guards"
4636+ c:identifier="g_closure_add_marshal_guards"
4637+ introspectable="0">
4638+ <doc xml:space="preserve"
4639+ filename="gobject-2.0.c"
4640+ line="2208">Adds a pair of notifiers which get invoked before and after the
4641+closure callback, respectively.
4642+
4643+This is typically used to protect the extra arguments for the
4644+duration of the callback. See g_object_watch_closure() for an
4645+example of marshal guards.</doc>
4646+ <source-position filename="gclosure.h" line="269"/>
4647+ <return-value transfer-ownership="none">
4648+ <type name="none" c:type="void"/>
4649+ </return-value>
4650+ <parameters>
4651+ <instance-parameter name="closure" transfer-ownership="none">
4652+ <doc xml:space="preserve"
4653+ filename="gobject-2.0.c"
4654+ line="2210">a #GClosure</doc>
4655+ <type name="Closure" c:type="GClosure*"/>
4656+ </instance-parameter>
4657+ <parameter name="pre_marshal_data"
4658+ transfer-ownership="none"
4659+ nullable="1"
4660+ allow-none="1"
4661+ closure="1">
4662+ <doc xml:space="preserve"
4663+ filename="gobject-2.0.c"
4664+ line="2211">data to pass
4665+ to @pre_marshal_notify</doc>
4666+ <type name="gpointer" c:type="gpointer"/>
4667+ </parameter>
4668+ <parameter name="pre_marshal_notify"
4669+ transfer-ownership="none"
4670+ nullable="1"
4671+ allow-none="1"
4672+ closure="2">
4673+ <doc xml:space="preserve"
4674+ filename="gobject-2.0.c"
4675+ line="2213">a function to call before the closure callback</doc>
4676+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4677+ </parameter>
4678+ <parameter name="post_marshal_data"
4679+ transfer-ownership="none"
4680+ nullable="1"
4681+ allow-none="1"
4682+ closure="3">
4683+ <doc xml:space="preserve"
4684+ filename="gobject-2.0.c"
4685+ line="2214">data to pass
4686+ to @post_marshal_notify</doc>
4687+ <type name="gpointer" c:type="gpointer"/>
4688+ </parameter>
4689+ <parameter name="post_marshal_notify"
4690+ transfer-ownership="none"
4691+ nullable="1"
4692+ allow-none="1">
4693+ <doc xml:space="preserve"
4694+ filename="gobject-2.0.c"
4695+ line="2216">a function to call after the closure callback</doc>
4696+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4697+ </parameter>
4698+ </parameters>
4699+ </method>
4700+ <method name="invalidate" c:identifier="g_closure_invalidate">
4701+ <doc xml:space="preserve"
4702+ filename="gobject-2.0.c"
4703+ line="2227">Sets a flag on the closure to indicate that its calling
4704+environment has become invalid, and thus causes any future
4705+invocations of g_closure_invoke() on this @closure to be
4706+ignored.
4707+
4708+Also, invalidation notifiers installed on the closure will
4709+be called at this point. Note that unless you are holding a
4710+reference to the closure yourself, the invalidation notifiers may
4711+unref the closure and cause it to be destroyed, so if you need to
4712+access the closure after calling g_closure_invalidate(), make sure
4713+that you've previously called g_closure_ref().
4714+
4715+Note that g_closure_invalidate() will also be called when the
4716+reference count of a closure drops to zero (unless it has already
4717+been invalidated before).</doc>
4718+ <source-position filename="gclosure.h" line="282"/>
4719+ <return-value transfer-ownership="none">
4720+ <type name="none" c:type="void"/>
4721+ </return-value>
4722+ <parameters>
4723+ <instance-parameter name="closure" transfer-ownership="none">
4724+ <doc xml:space="preserve"
4725+ filename="gobject-2.0.c"
4726+ line="2229">#GClosure to invalidate</doc>
4727+ <type name="Closure" c:type="GClosure*"/>
4728+ </instance-parameter>
4729+ </parameters>
4730+ </method>
4731+ <method name="invoke" c:identifier="g_closure_invoke">
4732+ <doc xml:space="preserve"
4733+ filename="gobject-2.0.c"
4734+ line="2249">Invokes the closure, i.e. executes the callback represented by the @closure.</doc>
4735+ <source-position filename="gclosure.h" line="284"/>
4736+ <return-value transfer-ownership="none">
4737+ <type name="none" c:type="void"/>
4738+ </return-value>
4739+ <parameters>
4740+ <instance-parameter name="closure" transfer-ownership="none">
4741+ <doc xml:space="preserve"
4742+ filename="gobject-2.0.c"
4743+ line="2251">a #GClosure</doc>
4744+ <type name="Closure" c:type="GClosure*"/>
4745+ </instance-parameter>
4746+ <parameter name="return_value"
4747+ direction="out"
4748+ caller-allocates="1"
4749+ transfer-ownership="none"
4750+ optional="1"
4751+ allow-none="1">
4752+ <doc xml:space="preserve"
4753+ filename="gobject-2.0.c"
4754+ line="2252">a #GValue to store the return
4755+ value. May be %NULL if the callback of @closure
4756+ doesn't return a value.</doc>
4757+ <type name="Value" c:type="GValue*"/>
4758+ </parameter>
4759+ <parameter name="n_param_values" transfer-ownership="none">
4760+ <doc xml:space="preserve"
4761+ filename="gobject-2.0.c"
4762+ line="2255">the length of the @param_values array</doc>
4763+ <type name="guint" c:type="guint"/>
4764+ </parameter>
4765+ <parameter name="param_values" transfer-ownership="none">
4766+ <doc xml:space="preserve"
4767+ filename="gobject-2.0.c"
4768+ line="2256">an array of
4769+ #GValues holding the arguments on which to
4770+ invoke the callback of @closure</doc>
4771+ <array length="1" zero-terminated="0" c:type="const GValue*">
4772+ <type name="Value" c:type="GValue"/>
4773+ </array>
4774+ </parameter>
4775+ <parameter name="invocation_hint"
4776+ transfer-ownership="none"
4777+ nullable="1"
4778+ allow-none="1">
4779+ <doc xml:space="preserve"
4780+ filename="gobject-2.0.c"
4781+ line="2259">a context-dependent invocation hint</doc>
4782+ <type name="gpointer" c:type="gpointer"/>
4783+ </parameter>
4784+ </parameters>
4785+ </method>
4786+ <method name="ref" c:identifier="g_closure_ref">
4787+ <doc xml:space="preserve"
4788+ filename="gobject-2.0.c"
4789+ line="2329">Increments the reference count on a closure to force it staying
4790+alive while the caller holds a pointer to it.</doc>
4791+ <source-position filename="gclosure.h" line="243"/>
4792+ <return-value transfer-ownership="none">
4793+ <doc xml:space="preserve"
4794+ filename="gobject-2.0.c"
4795+ line="2336">The @closure passed in, for convenience</doc>
4796+ <type name="Closure" c:type="GClosure*"/>
4797+ </return-value>
4798+ <parameters>
4799+ <instance-parameter name="closure" transfer-ownership="none">
4800+ <doc xml:space="preserve"
4801+ filename="gobject-2.0.c"
4802+ line="2331">#GClosure to increment the reference count on</doc>
4803+ <type name="Closure" c:type="GClosure*"/>
4804+ </instance-parameter>
4805+ </parameters>
4806+ </method>
4807+ <method name="remove_finalize_notifier"
4808+ c:identifier="g_closure_remove_finalize_notifier"
4809+ introspectable="0">
4810+ <doc xml:space="preserve"
4811+ filename="gobject-2.0.c"
4812+ line="2340">Removes a finalization notifier.
4813+
4814+Notice that notifiers are automatically removed after they are run.</doc>
4815+ <source-position filename="gclosure.h" line="257"/>
4816+ <return-value transfer-ownership="none">
4817+ <type name="none" c:type="void"/>
4818+ </return-value>
4819+ <parameters>
4820+ <instance-parameter name="closure" transfer-ownership="none">
4821+ <doc xml:space="preserve"
4822+ filename="gobject-2.0.c"
4823+ line="2342">a #GClosure</doc>
4824+ <type name="Closure" c:type="GClosure*"/>
4825+ </instance-parameter>
4826+ <parameter name="notify_data"
4827+ transfer-ownership="none"
4828+ nullable="1"
4829+ allow-none="1">
4830+ <doc xml:space="preserve"
4831+ filename="gobject-2.0.c"
4832+ line="2343">data which was passed to g_closure_add_finalize_notifier()
4833+ when registering @notify_func</doc>
4834+ <type name="gpointer" c:type="gpointer"/>
4835+ </parameter>
4836+ <parameter name="notify_func" transfer-ownership="none">
4837+ <doc xml:space="preserve"
4838+ filename="gobject-2.0.c"
4839+ line="2345">the callback function to remove</doc>
4840+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4841+ </parameter>
4842+ </parameters>
4843+ </method>
4844+ <method name="remove_invalidate_notifier"
4845+ c:identifier="g_closure_remove_invalidate_notifier"
4846+ introspectable="0">
4847+ <doc xml:space="preserve"
4848+ filename="gobject-2.0.c"
4849+ line="2353">Removes an invalidation notifier.
4850+
4851+Notice that notifiers are automatically removed after they are run.</doc>
4852+ <source-position filename="gclosure.h" line="265"/>
4853+ <return-value transfer-ownership="none">
4854+ <type name="none" c:type="void"/>
4855+ </return-value>
4856+ <parameters>
4857+ <instance-parameter name="closure" transfer-ownership="none">
4858+ <doc xml:space="preserve"
4859+ filename="gobject-2.0.c"
4860+ line="2355">a #GClosure</doc>
4861+ <type name="Closure" c:type="GClosure*"/>
4862+ </instance-parameter>
4863+ <parameter name="notify_data"
4864+ transfer-ownership="none"
4865+ nullable="1"
4866+ allow-none="1">
4867+ <doc xml:space="preserve"
4868+ filename="gobject-2.0.c"
4869+ line="2356">data which was passed to g_closure_add_invalidate_notifier()
4870+ when registering @notify_func</doc>
4871+ <type name="gpointer" c:type="gpointer"/>
4872+ </parameter>
4873+ <parameter name="notify_func" transfer-ownership="none">
4874+ <doc xml:space="preserve"
4875+ filename="gobject-2.0.c"
4876+ line="2358">the callback function to remove</doc>
4877+ <type name="ClosureNotify" c:type="GClosureNotify"/>
4878+ </parameter>
4879+ </parameters>
4880+ </method>
4881+ <method name="set_marshal"
4882+ c:identifier="g_closure_set_marshal"
4883+ introspectable="0">
4884+ <doc xml:space="preserve"
4885+ filename="gobject-2.0.c"
4886+ line="2366">Sets the marshaller of @closure.
4887+
4888+The `marshal_data` of @marshal provides a way for a meta marshaller to
4889+provide additional information to the marshaller.
4890+
4891+For GObject's C predefined marshallers (the `g_cclosure_marshal_*()`
4892+functions), what it provides is a callback function to use instead of
4893+@closure-&gt;callback.
4894+
4895+See also: g_closure_set_meta_marshal()</doc>
4896+ <source-position filename="gclosure.h" line="275"/>
4897+ <return-value transfer-ownership="none">
4898+ <type name="none" c:type="void"/>
4899+ </return-value>
4900+ <parameters>
4901+ <instance-parameter name="closure" transfer-ownership="none">
4902+ <doc xml:space="preserve"
4903+ filename="gobject-2.0.c"
4904+ line="2368">a #GClosure</doc>
4905+ <type name="Closure" c:type="GClosure*"/>
4906+ </instance-parameter>
4907+ <parameter name="marshal" transfer-ownership="none">
4908+ <doc xml:space="preserve"
4909+ filename="gobject-2.0.c"
4910+ line="2369">a #GClosureMarshal function</doc>
4911+ <type name="ClosureMarshal" c:type="GClosureMarshal"/>
4912+ </parameter>
4913+ </parameters>
4914+ </method>
4915+ <method name="set_meta_marshal"
4916+ c:identifier="g_closure_set_meta_marshal"
4917+ introspectable="0">
4918+ <doc xml:space="preserve"
4919+ filename="gobject-2.0.c"
4920+ line="2384">Sets the meta marshaller of @closure.
4921+
4922+A meta marshaller wraps the @closure's marshal and modifies the way
4923+it is called in some fashion. The most common use of this facility
4924+is for C callbacks.
4925+
4926+The same marshallers (generated by [glib-genmarshal][glib-genmarshal]),
4927+are used everywhere, but the way that we get the callback function
4928+differs. In most cases we want to use the @closure's callback, but in
4929+other cases we want to use some different technique to retrieve the
4930+callback function.
4931+
4932+For example, class closures for signals (see
4933+g_signal_type_cclosure_new()) retrieve the callback function from a
4934+fixed offset in the class structure. The meta marshaller retrieves
4935+the right callback and passes it to the marshaller as the
4936+@marshal_data argument.</doc>
4937+ <source-position filename="gclosure.h" line="278"/>
4938+ <return-value transfer-ownership="none">
4939+ <type name="none" c:type="void"/>
4940+ </return-value>
4941+ <parameters>
4942+ <instance-parameter name="closure" transfer-ownership="none">
4943+ <doc xml:space="preserve"
4944+ filename="gobject-2.0.c"
4945+ line="2386">a #GClosure</doc>
4946+ <type name="Closure" c:type="GClosure*"/>
4947+ </instance-parameter>
4948+ <parameter name="marshal_data"
4949+ transfer-ownership="none"
4950+ nullable="1"
4951+ allow-none="1"
4952+ closure="1">
4953+ <doc xml:space="preserve"
4954+ filename="gobject-2.0.c"
4955+ line="2387">context-dependent data to pass
4956+ to @meta_marshal</doc>
4957+ <type name="gpointer" c:type="gpointer"/>
4958+ </parameter>
4959+ <parameter name="meta_marshal"
4960+ transfer-ownership="none"
4961+ nullable="1"
4962+ allow-none="1">
4963+ <doc xml:space="preserve"
4964+ filename="gobject-2.0.c"
4965+ line="2389">a #GClosureMarshal function</doc>
4966+ <type name="ClosureMarshal" c:type="GClosureMarshal"/>
4967+ </parameter>
4968+ </parameters>
4969+ </method>
4970+ <method name="sink" c:identifier="g_closure_sink">
4971+ <doc xml:space="preserve"
4972+ filename="gobject-2.0.c"
4973+ line="2411">Takes over the initial ownership of a closure.
4974+
4975+Each closure is initially created in a "floating" state, which means
4976+that the initial reference count is not owned by any caller.
4977+
4978+This function checks to see if the object is still floating, and if so,
4979+unsets the floating state and decreases the reference count. If the
4980+closure is not floating, g_closure_sink() does nothing.
4981+
4982+The reason for the existence of the floating state is to prevent
4983+cumbersome code sequences like:
4984+
4985+|[&lt;!-- language="C" --&gt;
4986+closure = g_cclosure_new (cb_func, cb_data);
4987+g_source_set_closure (source, closure);
4988+g_closure_unref (closure); // GObject doesn't really need this
4989+]|
4990+
4991+Because g_source_set_closure() (and similar functions) take ownership of the
4992+initial reference count, if it is unowned, we instead can write:
4993+
4994+|[&lt;!-- language="C" --&gt;
4995+g_source_set_closure (source, g_cclosure_new (cb_func, cb_data));
4996+]|
4997+
4998+Generally, this function is used together with g_closure_ref(). An example
4999+of storing a closure for later notification looks like:
5000+
5001+|[&lt;!-- language="C" --&gt;
5002+static GClosure *notify_closure = NULL;
5003+void
5004+foo_notify_set_closure (GClosure *closure)
5005+{
5006+ if (notify_closure)
5007+ g_closure_unref (notify_closure);
5008+ notify_closure = closure;
5009+ if (notify_closure)
5010+ {
5011+ g_closure_ref (notify_closure);
5012+ g_closure_sink (notify_closure);
5013+ }
5014+}
5015+]|
5016+
5017+Because g_closure_sink() may decrement the reference count of a closure
5018+(if it hasn't been called on @closure yet) just like g_closure_unref(),
5019+g_closure_ref() should be called prior to this function.</doc>
5020+ <source-position filename="gclosure.h" line="245"/>
5021+ <return-value transfer-ownership="none">
5022+ <type name="none" c:type="void"/>
5023+ </return-value>
5024+ <parameters>
5025+ <instance-parameter name="closure" transfer-ownership="none">
5026+ <doc xml:space="preserve"
5027+ filename="gobject-2.0.c"
5028+ line="2413">#GClosure to decrement the initial reference count on, if it's
5029+ still being held</doc>
5030+ <type name="Closure" c:type="GClosure*"/>
5031+ </instance-parameter>
5032+ </parameters>
5033+ </method>
5034+ <method name="unref" c:identifier="g_closure_unref">
5035+ <doc xml:space="preserve"
5036+ filename="gobject-2.0.c"
5037+ line="2466">Decrements the reference count of a closure after it was previously
5038+incremented by the same caller.
5039+
5040+If no other callers are using the closure, then the closure will be
5041+destroyed and freed.</doc>
5042+ <source-position filename="gclosure.h" line="247"/>
5043+ <return-value transfer-ownership="none">
5044+ <type name="none" c:type="void"/>
5045+ </return-value>
5046+ <parameters>
5047+ <instance-parameter name="closure" transfer-ownership="none">
5048+ <doc xml:space="preserve"
5049+ filename="gobject-2.0.c"
5050+ line="2468">#GClosure to decrement the reference count on</doc>
5051+ <type name="Closure" c:type="GClosure*"/>
5052+ </instance-parameter>
5053+ </parameters>
5054+ </method>
5055+ </record>
5056+ <callback name="ClosureMarshal" c:type="GClosureMarshal">
5057+ <doc xml:space="preserve"
5058+ filename="gclosure.h"
5059+ line="101">The type used for marshaller functions.</doc>
5060+ <source-position filename="gclosure.h" line="119"/>
5061+ <return-value transfer-ownership="none">
5062+ <type name="none" c:type="void"/>
5063+ </return-value>
5064+ <parameters>
5065+ <parameter name="closure" transfer-ownership="none">
5066+ <doc xml:space="preserve"
5067+ filename="gclosure.h"
5068+ line="103">the #GClosure to which the marshaller belongs</doc>
5069+ <type name="Closure" c:type="GClosure*"/>
5070+ </parameter>
5071+ <parameter name="return_value"
5072+ transfer-ownership="none"
5073+ nullable="1"
5074+ allow-none="1">
5075+ <doc xml:space="preserve"
5076+ filename="gclosure.h"
5077+ line="104">a #GValue to store the return
5078+ value. May be %NULL if the callback of @closure doesn't return a
5079+ value.</doc>
5080+ <type name="Value" c:type="GValue*"/>
5081+ </parameter>
5082+ <parameter name="n_param_values" transfer-ownership="none">
5083+ <doc xml:space="preserve"
5084+ filename="gclosure.h"
5085+ line="107">the length of the @param_values array</doc>
5086+ <type name="guint" c:type="guint"/>
5087+ </parameter>
5088+ <parameter name="param_values" transfer-ownership="none">
5089+ <doc xml:space="preserve"
5090+ filename="gclosure.h"
5091+ line="108">an array of
5092+ #GValues holding the arguments on which to invoke the
5093+ callback of @closure</doc>
5094+ <array length="2" zero-terminated="0" c:type="const GValue*">
5095+ <type name="Value" c:type="GValue"/>
5096+ </array>
5097+ </parameter>
5098+ <parameter name="invocation_hint"
5099+ transfer-ownership="none"
5100+ nullable="1"
5101+ allow-none="1">
5102+ <doc xml:space="preserve"
5103+ filename="gclosure.h"
5104+ line="111">the invocation hint given as the
5105+ last argument to g_closure_invoke()</doc>
5106+ <type name="gpointer" c:type="gpointer"/>
5107+ </parameter>
5108+ <parameter name="marshal_data"
5109+ transfer-ownership="none"
5110+ nullable="1"
5111+ allow-none="1">
5112+ <doc xml:space="preserve"
5113+ filename="gclosure.h"
5114+ line="113">additional data specified when
5115+ registering the marshaller, see g_closure_set_marshal() and
5116+ g_closure_set_meta_marshal()</doc>
5117+ <type name="gpointer" c:type="gpointer"/>
5118+ </parameter>
5119+ </parameters>
5120+ </callback>
5121+ <callback name="ClosureNotify" c:type="GClosureNotify">
5122+ <doc xml:space="preserve"
5123+ filename="gclosure.h"
5124+ line="91">The type used for the various notification callbacks which can be registered
5125+on closures.</doc>
5126+ <source-position filename="gclosure.h" line="99"/>
5127+ <return-value transfer-ownership="none">
5128+ <type name="none" c:type="void"/>
5129+ </return-value>
5130+ <parameters>
5131+ <parameter name="data"
5132+ transfer-ownership="none"
5133+ nullable="1"
5134+ allow-none="1">
5135+ <doc xml:space="preserve"
5136+ filename="gclosure.h"
5137+ line="93">data specified when registering the notification callback</doc>
5138+ <type name="gpointer" c:type="gpointer"/>
5139+ </parameter>
5140+ <parameter name="closure" transfer-ownership="none">
5141+ <doc xml:space="preserve"
5142+ filename="gclosure.h"
5143+ line="94">the #GClosure on which the notification is emitted</doc>
5144+ <type name="Closure" c:type="GClosure*"/>
5145+ </parameter>
5146+ </parameters>
5147+ </callback>
5148+ <record name="ClosureNotifyData" c:type="GClosureNotifyData">
5149+ <source-position filename="gclosure.h" line="169"/>
5150+ <field name="data" writable="1">
5151+ <type name="gpointer" c:type="gpointer"/>
5152+ </field>
5153+ <field name="notify" writable="1">
5154+ <type name="ClosureNotify" c:type="GClosureNotify"/>
5155+ </field>
5156+ </record>
5157+ <bitfield name="ConnectFlags" c:type="GConnectFlags">
5158+ <doc xml:space="preserve"
5159+ filename="gsignal.h"
5160+ line="156">The connection flags are used to specify the behaviour of a signal's
5161+connection.</doc>
5162+ <source-position filename="gsignal.h" line="170"/>
5163+ <member name="after" value="1" c:identifier="G_CONNECT_AFTER">
5164+ <doc xml:space="preserve"
5165+ filename="gsignal.h"
5166+ line="158">whether the handler should be called before or after the
5167+ default handler of the signal.</doc>
5168+ </member>
5169+ <member name="swapped" value="2" c:identifier="G_CONNECT_SWAPPED">
5170+ <doc xml:space="preserve"
5171+ filename="gsignal.h"
5172+ line="160">whether the instance and data should be swapped when
5173+ calling the handler; see g_signal_connect_swapped() for an example.</doc>
5174+ </member>
5175+ </bitfield>
5176+ <function-macro name="DECLARE_DERIVABLE_TYPE"
5177+ c:identifier="G_DECLARE_DERIVABLE_TYPE"
5178+ version="2.44"
5179+ introspectable="0">
5180+ <doc xml:space="preserve"
5181+ filename="gtype.h"
5182+ line="1466">A convenience macro for emitting the usual declarations in the
5183+header file for a type which is intended to be subclassed.
5184+
5185+You might use it in a header as follows:
5186+
5187+|[&lt;!-- language="C" --&gt;
5188+#ifndef _gtk_frobber_h_
5189+#define _gtk_frobber_h_
5190+
5191+#define GTK_TYPE_FROBBER gtk_frobber_get_type ()
5192+GDK_AVAILABLE_IN_3_12
5193+G_DECLARE_DERIVABLE_TYPE (GtkFrobber, gtk_frobber, GTK, FROBBER, GtkWidget)
5194+
5195+struct _GtkFrobberClass
5196+{
5197+ GtkWidgetClass parent_class;
5198+
5199+ void (* handle_frob) (GtkFrobber *frobber,
5200+ guint n_frobs);
5201+
5202+ gpointer padding[12];
5203+};
5204+
5205+GtkWidget * gtk_frobber_new (void);
5206+
5207+...
5208+
5209+#endif
5210+]|
5211+
5212+Since the instance structure is public it is often needed to declare a
5213+private struct as follow in your C file:
5214+
5215+|[&lt;!-- language="C" --&gt;
5216+typedef struct _GtkFrobberPrivate GtkFrobberPrivate;
5217+struct _GtkFrobberPrivate
5218+{
5219+ ...
5220+};
5221+G_DEFINE_TYPE_WITH_PRIVATE (GtkFrobber, gtk_frobber, GTK_TYPE_WIDGET)
5222+]|
5223+
5224+This results in the following things happening:
5225+
5226+- the usual `gtk_frobber_get_type()` function is declared with a return type of #GType
5227+
5228+- the `GtkFrobber` struct is created with `GtkWidget` as the first and only item. You are expected to use
5229+ a private structure from your .c file to store your instance variables.
5230+
5231+- the `GtkFrobberClass` type is defined as a typedef to `struct _GtkFrobberClass`, which is left undefined.
5232+ You should do this from the header file directly after you use the macro.
5233+
5234+- the `GTK_FROBBER()` and `GTK_FROBBER_CLASS()` casts are emitted as `static inline` functions along with
5235+ the `GTK_IS_FROBBER()` and `GTK_IS_FROBBER_CLASS()` type checking functions and `GTK_FROBBER_GET_CLASS()`
5236+ function.
5237+
5238+- g_autoptr() support being added for your type, based on the type of your parent class
5239+
5240+You can only use this function if your parent type also supports g_autoptr().
5241+
5242+Because the type macro (`GTK_TYPE_FROBBER` in the above example) is not a callable, you must continue to
5243+manually define this as a macro for yourself.
5244+
5245+The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro
5246+to be used in the usual way with export control and API versioning macros.
5247+
5248+If you are writing a library, it is important to note that it is possible to convert a type from using
5249+G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you
5250+should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be
5251+subclassed. Once a class structure has been exposed it is not possible to change its size or remove or
5252+reorder items without breaking the API and/or ABI. If you want to declare your own class structure, use
5253+G_DECLARE_DERIVABLE_TYPE(). If you want to declare a class without exposing the class or instance
5254+structures, use G_DECLARE_FINAL_TYPE().
5255+
5256+If you must use G_DECLARE_DERIVABLE_TYPE() you should be sure to include some padding at the bottom of your
5257+class structure to leave space for the addition of future virtual functions.</doc>
5258+ <source-position filename="gtype.h" line="1554"/>
5259+ <parameters>
5260+ <parameter name="ModuleObjName">
5261+ <doc xml:space="preserve"
5262+ filename="gtype.h"
5263+ line="1468">The name of the new type, in camel case (like `GtkWidget`)</doc>
5264+ </parameter>
5265+ <parameter name="module_obj_name">
5266+ <doc xml:space="preserve"
5267+ filename="gtype.h"
5268+ line="1469">The name of the new type in lowercase, with words
5269+ separated by `_` (like `gtk_widget`)</doc>
5270+ </parameter>
5271+ <parameter name="MODULE">
5272+ <doc xml:space="preserve"
5273+ filename="gtype.h"
5274+ line="1471">The name of the module, in all caps (like `GTK`)</doc>
5275+ </parameter>
5276+ <parameter name="OBJ_NAME">
5277+ <doc xml:space="preserve"
5278+ filename="gtype.h"
5279+ line="1472">The bare name of the type, in all caps (like `WIDGET`)</doc>
5280+ </parameter>
5281+ <parameter name="ParentName">
5282+ <doc xml:space="preserve"
5283+ filename="gtype.h"
5284+ line="1473">the name of the parent type, in camel case (like `GtkWidget`)</doc>
5285+ </parameter>
5286+ </parameters>
5287+ </function-macro>
5288+ <function-macro name="DECLARE_FINAL_TYPE"
5289+ c:identifier="G_DECLARE_FINAL_TYPE"
5290+ version="2.44"
5291+ introspectable="0">
5292+ <doc xml:space="preserve"
5293+ filename="gtype.h"
5294+ line="1374">A convenience macro for emitting the usual declarations in the header file
5295+for a type which is not (at the present time) intended to be subclassed.
5296+
5297+You might use it in a header as follows:
5298+
5299+|[&lt;!-- language="C" --&gt;
5300+#ifndef _myapp_window_h_
5301+#define _myapp_window_h_
5302+
5303+#include &lt;gtk/gtk.h&gt;
5304+
5305+#define MY_APP_TYPE_WINDOW my_app_window_get_type ()
5306+G_DECLARE_FINAL_TYPE (MyAppWindow, my_app_window, MY_APP, WINDOW, GtkWindow)
5307+
5308+MyAppWindow * my_app_window_new (void);
5309+
5310+...
5311+
5312+#endif
5313+]|
5314+
5315+And use it as follow in your C file:
5316+
5317+|[&lt;!-- language="C" --&gt;
5318+struct _MyAppWindow
5319+{
5320+ GtkWindow parent;
5321+ ...
5322+};
5323+G_DEFINE_TYPE (MyAppWindow, my_app_window, GTK_TYPE_WINDOW)
5324+]|
5325+
5326+This results in the following things happening:
5327+
5328+- the usual `my_app_window_get_type()` function is declared with a return type of #GType
5329+
5330+- the `MyAppWindow` type is defined as a `typedef` of `struct _MyAppWindow`. The struct itself is not
5331+ defined and should be defined from the .c file before G_DEFINE_TYPE() is used.
5332+
5333+- the `MY_APP_WINDOW()` cast is emitted as `static inline` function along with the `MY_APP_IS_WINDOW()` type
5334+ checking function
5335+
5336+- the `MyAppWindowClass` type is defined as a struct containing `GtkWindowClass`. This is done for the
5337+ convenience of the person defining the type and should not be considered to be part of the ABI. In
5338+ particular, without a firm declaration of the instance structure, it is not possible to subclass the type
5339+ and therefore the fact that the size of the class structure is exposed is not a concern and it can be
5340+ freely changed at any point in the future.
5341+
5342+- g_autoptr() support being added for your type, based on the type of your parent class
5343+
5344+You can only use this function if your parent type also supports g_autoptr().
5345+
5346+Because the type macro (`MY_APP_TYPE_WINDOW` in the above example) is not a callable, you must continue to
5347+manually define this as a macro for yourself.
5348+
5349+The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro
5350+to be used in the usual way with export control and API versioning macros.
5351+
5352+If you want to declare your own class structure, use G_DECLARE_DERIVABLE_TYPE().
5353+
5354+If you are writing a library, it is important to note that it is possible to convert a type from using
5355+G_DECLARE_FINAL_TYPE() to G_DECLARE_DERIVABLE_TYPE() without breaking API or ABI. As a precaution, you
5356+should therefore use G_DECLARE_FINAL_TYPE() until you are sure that it makes sense for your class to be
5357+subclassed. Once a class structure has been exposed it is not possible to change its size or remove or
5358+reorder items without breaking the API and/or ABI.</doc>
5359+ <source-position filename="gtype.h" line="1451"/>
5360+ <parameters>
5361+ <parameter name="ModuleObjName">
5362+ <doc xml:space="preserve"
5363+ filename="gtype.h"
5364+ line="1376">The name of the new type, in camel case (like `GtkWidget`)</doc>
5365+ </parameter>
5366+ <parameter name="module_obj_name">
5367+ <doc xml:space="preserve"
5368+ filename="gtype.h"
5369+ line="1377">The name of the new type in lowercase, with words
5370+ separated by `_` (like `gtk_widget`)</doc>
5371+ </parameter>
5372+ <parameter name="MODULE">
5373+ <doc xml:space="preserve"
5374+ filename="gtype.h"
5375+ line="1379">The name of the module, in all caps (like `GTK`)</doc>
5376+ </parameter>
5377+ <parameter name="OBJ_NAME">
5378+ <doc xml:space="preserve"
5379+ filename="gtype.h"
5380+ line="1380">The bare name of the type, in all caps (like `WIDGET`)</doc>
5381+ </parameter>
5382+ <parameter name="ParentName">
5383+ <doc xml:space="preserve"
5384+ filename="gtype.h"
5385+ line="1381">the name of the parent type, in camel case (like `GtkWidget`)</doc>
5386+ </parameter>
5387+ </parameters>
5388+ </function-macro>
5389+ <function-macro name="DECLARE_INTERFACE"
5390+ c:identifier="G_DECLARE_INTERFACE"
5391+ version="2.44"
5392+ introspectable="0">
5393+ <doc xml:space="preserve"
5394+ filename="gtype.h"
5395+ line="1576">A convenience macro for emitting the usual declarations in the header file for a #GInterface type.
5396+
5397+You might use it in a header as follows:
5398+
5399+|[&lt;!-- language="C" --&gt;
5400+#ifndef _my_model_h_
5401+#define _my_model_h_
5402+
5403+#define MY_TYPE_MODEL my_model_get_type ()
5404+GDK_AVAILABLE_IN_3_12
5405+G_DECLARE_INTERFACE (MyModel, my_model, MY, MODEL, GObject)
5406+
5407+struct _MyModelInterface
5408+{
5409+ GTypeInterface g_iface;
5410+
5411+ gpointer (* get_item) (MyModel *model);
5412+};
5413+
5414+gpointer my_model_get_item (MyModel *model);
5415+
5416+...
5417+
5418+#endif
5419+]|
5420+
5421+And use it as follow in your C file:
5422+
5423+|[&lt;!-- language="C" --&gt;
5424+G_DEFINE_INTERFACE (MyModel, my_model, G_TYPE_OBJECT);
5425+
5426+static void
5427+my_model_default_init (MyModelInterface *iface)
5428+{
5429+ ...
5430+}
5431+]|
5432+
5433+This results in the following things happening:
5434+
5435+- the usual `my_model_get_type()` function is declared with a return type of #GType
5436+
5437+- the `MyModelInterface` type is defined as a typedef to `struct _MyModelInterface`,
5438+ which is left undefined. You should do this from the header file directly after
5439+ you use the macro.
5440+
5441+- the `MY_MODEL()` cast is emitted as `static inline` functions along with
5442+ the `MY_IS_MODEL()` type checking function and `MY_MODEL_GET_IFACE()` function.
5443+
5444+- g_autoptr() support being added for your type, based on your prerequisite type.
5445+
5446+You can only use this function if your prerequisite type also supports g_autoptr().
5447+
5448+Because the type macro (`MY_TYPE_MODEL` in the above example) is not a callable, you must continue to
5449+manually define this as a macro for yourself.
5450+
5451+The declaration of the `_get_type()` function is the first thing emitted by the macro. This allows this macro
5452+to be used in the usual way with export control and API versioning macros.</doc>
5453+ <source-position filename="gtype.h" line="1646"/>
5454+ <parameters>
5455+ <parameter name="ModuleObjName">
5456+ <doc xml:space="preserve"
5457+ filename="gtype.h"
5458+ line="1578">The name of the new type, in camel case (like `GtkWidget`)</doc>
5459+ </parameter>
5460+ <parameter name="module_obj_name">
5461+ <doc xml:space="preserve"
5462+ filename="gtype.h"
5463+ line="1579">The name of the new type in lowercase, with words
5464+ separated by `_` (like `gtk_widget`)</doc>
5465+ </parameter>
5466+ <parameter name="MODULE">
5467+ <doc xml:space="preserve"
5468+ filename="gtype.h"
5469+ line="1581">The name of the module, in all caps (like `GTK`)</doc>
5470+ </parameter>
5471+ <parameter name="OBJ_NAME">
5472+ <doc xml:space="preserve"
5473+ filename="gtype.h"
5474+ line="1582">The bare name of the type, in all caps (like `WIDGET`)</doc>
5475+ </parameter>
5476+ <parameter name="PrerequisiteName">
5477+ <doc xml:space="preserve"
5478+ filename="gtype.h"
5479+ line="1583">the name of the prerequisite type, in camel case (like `GtkWidget`)</doc>
5480+ </parameter>
5481+ </parameters>
5482+ </function-macro>
5483+ <function-macro name="DEFINE_ABSTRACT_TYPE"
5484+ c:identifier="G_DEFINE_ABSTRACT_TYPE"
5485+ version="2.4"
5486+ introspectable="0">
5487+ <doc xml:space="preserve"
5488+ filename="gtype.h"
5489+ line="1720">A convenience macro for type implementations.
5490+
5491+Similar to G_DEFINE_TYPE(), but defines an abstract type.
5492+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5493+ <source-position filename="gtype.h" line="1734"/>
5494+ <parameters>
5495+ <parameter name="TN">
5496+ <doc xml:space="preserve"
5497+ filename="gtype.h"
5498+ line="1722">The name of the new type, in Camel case.</doc>
5499+ </parameter>
5500+ <parameter name="t_n">
5501+ <doc xml:space="preserve"
5502+ filename="gtype.h"
5503+ line="1723">The name of the new type, in lowercase, with words
5504+ separated by `_`.</doc>
5505+ </parameter>
5506+ <parameter name="T_P">
5507+ <doc xml:space="preserve"
5508+ filename="gtype.h"
5509+ line="1725">The #GType of the parent type.</doc>
5510+ </parameter>
5511+ </parameters>
5512+ </function-macro>
5513+ <function-macro name="DEFINE_ABSTRACT_TYPE_WITH_CODE"
5514+ c:identifier="G_DEFINE_ABSTRACT_TYPE_WITH_CODE"
5515+ version="2.4"
5516+ introspectable="0">
5517+ <doc xml:space="preserve"
5518+ filename="gtype.h"
5519+ line="1735">A convenience macro for type implementations.
5520+
5521+Similar to G_DEFINE_TYPE_WITH_CODE(), but defines an abstract type and
5522+allows you to insert custom code into the `*_get_type()` function, e.g.
5523+interface implementations via G_IMPLEMENT_INTERFACE().
5524+
5525+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5526+ <source-position filename="gtype.h" line="1753"/>
5527+ <parameters>
5528+ <parameter name="TN">
5529+ <doc xml:space="preserve"
5530+ filename="gtype.h"
5531+ line="1737">The name of the new type, in Camel case.</doc>
5532+ </parameter>
5533+ <parameter name="t_n">
5534+ <doc xml:space="preserve"
5535+ filename="gtype.h"
5536+ line="1738">The name of the new type, in lowercase, with words
5537+ separated by `_`.</doc>
5538+ </parameter>
5539+ <parameter name="T_P">
5540+ <doc xml:space="preserve"
5541+ filename="gtype.h"
5542+ line="1740">The #GType of the parent type.</doc>
5543+ </parameter>
5544+ <parameter name="_C_">
5545+ <doc xml:space="preserve"
5546+ filename="gtype.h"
5547+ line="1741">Custom code that gets inserted in the `type_name_get_type()` function.</doc>
5548+ </parameter>
5549+ </parameters>
5550+ </function-macro>
5551+ <function-macro name="DEFINE_ABSTRACT_TYPE_WITH_PRIVATE"
5552+ c:identifier="G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE"
5553+ version="2.38"
5554+ introspectable="0">
5555+ <doc xml:space="preserve"
5556+ filename="gtype.h"
5557+ line="1754">Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines an abstract type.
5558+
5559+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5560+ <source-position filename="gtype.h" line="1767"/>
5561+ <parameters>
5562+ <parameter name="TN">
5563+ <doc xml:space="preserve"
5564+ filename="gtype.h"
5565+ line="1756">The name of the new type, in Camel case.</doc>
5566+ </parameter>
5567+ <parameter name="t_n">
5568+ <doc xml:space="preserve"
5569+ filename="gtype.h"
5570+ line="1757">The name of the new type, in lowercase, with words
5571+ separated by `_`.</doc>
5572+ </parameter>
5573+ <parameter name="T_P">
5574+ <doc xml:space="preserve"
5575+ filename="gtype.h"
5576+ line="1759">The #GType of the parent type.</doc>
5577+ </parameter>
5578+ </parameters>
5579+ </function-macro>
5580+ <function-macro name="DEFINE_BOXED_TYPE"
5581+ c:identifier="G_DEFINE_BOXED_TYPE"
5582+ version="2.26"
5583+ introspectable="0">
5584+ <doc xml:space="preserve"
5585+ filename="gtype.h"
5586+ line="2208">A convenience macro for defining a new custom boxed type.
5587+
5588+Using this macro is the recommended way of defining new custom boxed
5589+types, over calling g_boxed_type_register_static() directly. It defines
5590+a `type_name_get_type()` function which will return the newly defined
5591+#GType, enabling lazy instantiation.
5592+
5593+|[&lt;!-- language="C" --&gt;
5594+G_DEFINE_BOXED_TYPE (MyStruct, my_struct, my_struct_copy, my_struct_free)
5595+
5596+void
5597+foo ()
5598+{
5599+ GType type = my_struct_get_type ();
5600+ // ... your code ...
5601+}
5602+]|</doc>
5603+ <source-position filename="gtype.h" line="2236"/>
5604+ <parameters>
5605+ <parameter name="TypeName">
5606+ <doc xml:space="preserve"
5607+ filename="gtype.h"
5608+ line="2210">The name of the new type, in Camel case</doc>
5609+ </parameter>
5610+ <parameter name="type_name">
5611+ <doc xml:space="preserve"
5612+ filename="gtype.h"
5613+ line="2211">The name of the new type, in lowercase, with words
5614+ separated by `_`</doc>
5615+ </parameter>
5616+ <parameter name="copy_func">
5617+ <doc xml:space="preserve"
5618+ filename="gtype.h"
5619+ line="2213">the #GBoxedCopyFunc for the new type</doc>
5620+ </parameter>
5621+ <parameter name="free_func">
5622+ <doc xml:space="preserve"
5623+ filename="gtype.h"
5624+ line="2214">the #GBoxedFreeFunc for the new type</doc>
5625+ </parameter>
5626+ </parameters>
5627+ </function-macro>
5628+ <function-macro name="DEFINE_BOXED_TYPE_WITH_CODE"
5629+ c:identifier="G_DEFINE_BOXED_TYPE_WITH_CODE"
5630+ version="2.26"
5631+ introspectable="0">
5632+ <doc xml:space="preserve"
5633+ filename="gtype.h"
5634+ line="2237">A convenience macro for boxed type implementations.
5635+
5636+Similar to G_DEFINE_BOXED_TYPE(), but allows to insert custom code into the
5637+`type_name_get_type()` function, e.g. to register value transformations with
5638+g_value_register_transform_func(), for instance:
5639+
5640+|[&lt;!-- language="C" --&gt;
5641+G_DEFINE_BOXED_TYPE_WITH_CODE (GdkRectangle, gdk_rectangle,
5642+ gdk_rectangle_copy,
5643+ gdk_rectangle_free,
5644+ register_rectangle_transform_funcs (g_define_type_id))
5645+]|
5646+
5647+Similarly to the `G_DEFINE_TYPE_*` family of macros, the #GType of the newly
5648+defined boxed type is exposed in the `g_define_type_id` variable.</doc>
5649+ <source-position filename="gtype.h" line="2264"/>
5650+ <parameters>
5651+ <parameter name="TypeName">
5652+ <doc xml:space="preserve"
5653+ filename="gtype.h"
5654+ line="2239">The name of the new type, in Camel case</doc>
5655+ </parameter>
5656+ <parameter name="type_name">
5657+ <doc xml:space="preserve"
5658+ filename="gtype.h"
5659+ line="2240">The name of the new type, in lowercase, with words
5660+ separated by `_`</doc>
5661+ </parameter>
5662+ <parameter name="copy_func">
5663+ <doc xml:space="preserve"
5664+ filename="gtype.h"
5665+ line="2242">the #GBoxedCopyFunc for the new type</doc>
5666+ </parameter>
5667+ <parameter name="free_func">
5668+ <doc xml:space="preserve"
5669+ filename="gtype.h"
5670+ line="2243">the #GBoxedFreeFunc for the new type</doc>
5671+ </parameter>
5672+ <parameter name="_C_">
5673+ <doc xml:space="preserve"
5674+ filename="gtype.h"
5675+ line="2244">Custom code that gets inserted in the `*_get_type()` function</doc>
5676+ </parameter>
5677+ </parameters>
5678+ </function-macro>
5679+ <function-macro name="DEFINE_DYNAMIC_TYPE"
5680+ c:identifier="G_DEFINE_DYNAMIC_TYPE"
5681+ version="2.14"
5682+ introspectable="0">
5683+ <doc xml:space="preserve"
5684+ filename="gtypemodule.h"
5685+ line="86">A convenience macro for dynamic type implementations, which declares a
5686+class initialization function, an instance initialization function (see
5687+#GTypeInfo for information about these) and a static variable named
5688+`t_n`_parent_class pointing to the parent class.
5689+
5690+Furthermore, it defines a `*_get_type()` and a static `*_register_type()`
5691+functions for use in your `module_init()`.
5692+
5693+See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.</doc>
5694+ <source-position filename="gtypemodule.h" line="105"/>
5695+ <parameters>
5696+ <parameter name="TN">
5697+ <doc xml:space="preserve"
5698+ filename="gtypemodule.h"
5699+ line="88">The name of the new type, in Camel case.</doc>
5700+ </parameter>
5701+ <parameter name="t_n">
5702+ <doc xml:space="preserve"
5703+ filename="gtypemodule.h"
5704+ line="89">The name of the new type, in lowercase, with words
5705+ separated by '_'.</doc>
5706+ </parameter>
5707+ <parameter name="T_P">
5708+ <doc xml:space="preserve"
5709+ filename="gtypemodule.h"
5710+ line="91">The #GType of the parent type.</doc>
5711+ </parameter>
5712+ </parameters>
5713+ </function-macro>
5714+ <function-macro name="DEFINE_DYNAMIC_TYPE_EXTENDED"
5715+ c:identifier="G_DEFINE_DYNAMIC_TYPE_EXTENDED"
5716+ version="2.14"
5717+ introspectable="0">
5718+ <doc xml:space="preserve"
5719+ filename="gtypemodule.h"
5720+ line="106">A more general version of G_DEFINE_DYNAMIC_TYPE() which
5721+allows to specify #GTypeFlags and custom code.
5722+
5723+|[&lt;!-- language="C" --&gt;
5724+G_DEFINE_DYNAMIC_TYPE_EXTENDED (GtkGadget,
5725+ gtk_gadget,
5726+ GTK_TYPE_THING,
5727+ 0,
5728+ G_IMPLEMENT_INTERFACE_DYNAMIC (TYPE_GIZMO,
5729+ gtk_gadget_gizmo_init));
5730+]|
5731+
5732+expands to
5733+
5734+|[&lt;!-- language="C" --&gt;
5735+static void gtk_gadget_init (GtkGadget *self);
5736+static void gtk_gadget_class_init (GtkGadgetClass *klass);
5737+static void gtk_gadget_class_finalize (GtkGadgetClass *klass);
5738+
5739+static gpointer gtk_gadget_parent_class = NULL;
5740+static GType gtk_gadget_type_id = 0;
5741+
5742+static void gtk_gadget_class_intern_init (gpointer klass)
5743+{
5744+ gtk_gadget_parent_class = g_type_class_peek_parent (klass);
5745+ gtk_gadget_class_init ((GtkGadgetClass*) klass);
5746+}
5747+
5748+GType
5749+gtk_gadget_get_type (void)
5750+{
5751+ return gtk_gadget_type_id;
5752+}
5753+
5754+static void
5755+gtk_gadget_register_type (GTypeModule *type_module)
5756+{
5757+ const GTypeInfo g_define_type_info = {
5758+ sizeof (GtkGadgetClass),
5759+ (GBaseInitFunc) NULL,
5760+ (GBaseFinalizeFunc) NULL,
5761+ (GClassInitFunc) gtk_gadget_class_intern_init,
5762+ (GClassFinalizeFunc) gtk_gadget_class_finalize,
5763+ NULL, // class_data
5764+ sizeof (GtkGadget),
5765+ 0, // n_preallocs
5766+ (GInstanceInitFunc) gtk_gadget_init,
5767+ NULL // value_table
5768+ };
5769+ gtk_gadget_type_id = g_type_module_register_type (type_module,
5770+ GTK_TYPE_THING,
5771+ "GtkGadget",
5772+ &amp;g_define_type_info,
5773+ (GTypeFlags) flags);
5774+ {
5775+ const GInterfaceInfo g_implement_interface_info = {
5776+ (GInterfaceInitFunc) gtk_gadget_gizmo_init
5777+ };
5778+ g_type_module_add_interface (type_module, g_define_type_id, TYPE_GIZMO, &amp;g_implement_interface_info);
5779+ }
5780+}
5781+]|</doc>
5782+ <source-position filename="gtypemodule.h" line="180"/>
5783+ <parameters>
5784+ <parameter name="TypeName">
5785+ <doc xml:space="preserve"
5786+ filename="gtypemodule.h"
5787+ line="108">The name of the new type, in Camel case.</doc>
5788+ </parameter>
5789+ <parameter name="type_name">
5790+ <doc xml:space="preserve"
5791+ filename="gtypemodule.h"
5792+ line="109">The name of the new type, in lowercase, with words
5793+ separated by '_'.</doc>
5794+ </parameter>
5795+ <parameter name="TYPE_PARENT">
5796+ <doc xml:space="preserve"
5797+ filename="gtypemodule.h"
5798+ line="111">The #GType of the parent type.</doc>
5799+ </parameter>
5800+ <parameter name="flags">
5801+ <doc xml:space="preserve"
5802+ filename="gtypemodule.h"
5803+ line="112">#GTypeFlags to pass to g_type_module_register_type()</doc>
5804+ </parameter>
5805+ <parameter name="CODE">
5806+ <doc xml:space="preserve"
5807+ filename="gtypemodule.h"
5808+ line="113">Custom code that gets inserted in the *_get_type() function.</doc>
5809+ </parameter>
5810+ </parameters>
5811+ </function-macro>
5812+ <function-macro name="DEFINE_FINAL_TYPE"
5813+ c:identifier="G_DEFINE_FINAL_TYPE"
5814+ version="2.70"
5815+ introspectable="0">
5816+ <doc xml:space="preserve"
5817+ filename="gtype.h"
5818+ line="1768">A convenience macro for type implementations.
5819+
5820+Similar to G_DEFINE_TYPE(), but defines a final type.
5821+
5822+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5823+ <source-position filename="gtype.h" line="1783"/>
5824+ <parameters>
5825+ <parameter name="TN">
5826+ <doc xml:space="preserve"
5827+ filename="gtype.h"
5828+ line="1770">the name of the new type, in Camel case</doc>
5829+ </parameter>
5830+ <parameter name="t_n">
5831+ <doc xml:space="preserve"
5832+ filename="gtype.h"
5833+ line="1771">the name of the new type, in lower case, with words
5834+ separated by `_` (snake case)</doc>
5835+ </parameter>
5836+ <parameter name="T_P">
5837+ <doc xml:space="preserve"
5838+ filename="gtype.h"
5839+ line="1773">the #GType of the parent type</doc>
5840+ </parameter>
5841+ </parameters>
5842+ </function-macro>
5843+ <function-macro name="DEFINE_FINAL_TYPE_WITH_CODE"
5844+ c:identifier="G_DEFINE_FINAL_TYPE_WITH_CODE"
5845+ version="2.70"
5846+ introspectable="0">
5847+ <doc xml:space="preserve"
5848+ filename="gtype.h"
5849+ line="1784">A convenience macro for type implementations.
5850+
5851+Similar to G_DEFINE_TYPE_WITH_CODE(), but defines a final type and
5852+allows you to insert custom code into the `*_get_type()` function, e.g.
5853+interface implementations via G_IMPLEMENT_INTERFACE().
5854+
5855+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5856+ <source-position filename="gtype.h" line="1802"/>
5857+ <parameters>
5858+ <parameter name="TN">
5859+ <doc xml:space="preserve"
5860+ filename="gtype.h"
5861+ line="1786">the name of the new type, in Camel case</doc>
5862+ </parameter>
5863+ <parameter name="t_n">
5864+ <doc xml:space="preserve"
5865+ filename="gtype.h"
5866+ line="1787">the name of the new type, in lower case, with words
5867+ separated by `_` (snake case)</doc>
5868+ </parameter>
5869+ <parameter name="T_P">
5870+ <doc xml:space="preserve"
5871+ filename="gtype.h"
5872+ line="1789">the #GType of the parent type</doc>
5873+ </parameter>
5874+ <parameter name="_C_">
5875+ <doc xml:space="preserve"
5876+ filename="gtype.h"
5877+ line="1790">Custom code that gets inserted in the `type_name_get_type()` function.</doc>
5878+ </parameter>
5879+ </parameters>
5880+ </function-macro>
5881+ <function-macro name="DEFINE_FINAL_TYPE_WITH_PRIVATE"
5882+ c:identifier="G_DEFINE_FINAL_TYPE_WITH_PRIVATE"
5883+ version="2.70"
5884+ introspectable="0">
5885+ <doc xml:space="preserve"
5886+ filename="gtype.h"
5887+ line="1803">A convenience macro for type implementations.
5888+
5889+Similar to G_DEFINE_TYPE_WITH_PRIVATE(), but defines a final type.
5890+
5891+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
5892+ <source-position filename="gtype.h" line="1818"/>
5893+ <parameters>
5894+ <parameter name="TN">
5895+ <doc xml:space="preserve"
5896+ filename="gtype.h"
5897+ line="1805">the name of the new type, in Camel case</doc>
5898+ </parameter>
5899+ <parameter name="t_n">
5900+ <doc xml:space="preserve"
5901+ filename="gtype.h"
5902+ line="1806">the name of the new type, in lower case, with words
5903+ separated by `_` (snake case)</doc>
5904+ </parameter>
5905+ <parameter name="T_P">
5906+ <doc xml:space="preserve"
5907+ filename="gtype.h"
5908+ line="1808">the #GType of the parent type</doc>
5909+ </parameter>
5910+ </parameters>
5911+ </function-macro>
5912+ <function-macro name="DEFINE_INTERFACE"
5913+ c:identifier="G_DEFINE_INTERFACE"
5914+ version="2.24"
5915+ introspectable="0">
5916+ <doc xml:space="preserve"
5917+ filename="gtype.h"
5918+ line="1898">A convenience macro for #GTypeInterface definitions, which declares
5919+a default vtable initialization function and defines a `*_get_type()`
5920+function.
5921+
5922+The macro expects the interface initialization function to have the
5923+name `t_n ## _default_init`, and the interface structure to have the
5924+name `TN ## Interface`.
5925+
5926+The initialization function has signature
5927+`static void t_n ## _default_init (TypeName##Interface *klass);`, rather than
5928+the full #GInterfaceInitFunc signature, for brevity and convenience. If you
5929+need to use an initialization function with an `iface_data` argument, you
5930+must write the #GTypeInterface definitions manually.</doc>
5931+ <source-position filename="gtype.h" line="1921"/>
5932+ <parameters>
5933+ <parameter name="TN">
5934+ <doc xml:space="preserve"
5935+ filename="gtype.h"
5936+ line="1900">The name of the new type, in Camel case.</doc>
5937+ </parameter>
5938+ <parameter name="t_n">
5939+ <doc xml:space="preserve"
5940+ filename="gtype.h"
5941+ line="1901">The name of the new type, in lowercase, with words separated by `_`.</doc>
5942+ </parameter>
5943+ <parameter name="T_P">
5944+ <doc xml:space="preserve"
5945+ filename="gtype.h"
5946+ line="1902">The #GType of the prerequisite type for the interface, or %G_TYPE_INVALID
5947+for no prerequisite type.</doc>
5948+ </parameter>
5949+ </parameters>
5950+ </function-macro>
5951+ <function-macro name="DEFINE_INTERFACE_WITH_CODE"
5952+ c:identifier="G_DEFINE_INTERFACE_WITH_CODE"
5953+ version="2.24"
5954+ introspectable="0">
5955+ <doc xml:space="preserve"
5956+ filename="gtype.h"
5957+ line="1923">A convenience macro for #GTypeInterface definitions.
5958+
5959+Similar to G_DEFINE_INTERFACE(), but allows you to insert custom code
5960+into the `*_get_type()` function, e.g. additional interface implementations
5961+via G_IMPLEMENT_INTERFACE(), or additional prerequisite types.
5962+
5963+See G_DEFINE_TYPE_EXTENDED() for a similar example using
5964+G_DEFINE_TYPE_WITH_CODE().</doc>
5965+ <source-position filename="gtype.h" line="1942"/>
5966+ <parameters>
5967+ <parameter name="TN">
5968+ <doc xml:space="preserve"
5969+ filename="gtype.h"
5970+ line="1925">The name of the new type, in Camel case.</doc>
5971+ </parameter>
5972+ <parameter name="t_n">
5973+ <doc xml:space="preserve"
5974+ filename="gtype.h"
5975+ line="1926">The name of the new type, in lowercase, with words separated by `_`.</doc>
5976+ </parameter>
5977+ <parameter name="T_P">
5978+ <doc xml:space="preserve"
5979+ filename="gtype.h"
5980+ line="1927">The #GType of the prerequisite type for the interface, or %G_TYPE_INVALID
5981+for no prerequisite type.</doc>
5982+ </parameter>
5983+ <parameter name="_C_">
5984+ <doc xml:space="preserve"
5985+ filename="gtype.h"
5986+ line="1929">Custom code that gets inserted in the `*_get_type()` function.</doc>
5987+ </parameter>
5988+ </parameters>
5989+ </function-macro>
5990+ <function-macro name="DEFINE_POINTER_TYPE"
5991+ c:identifier="G_DEFINE_POINTER_TYPE"
5992+ version="2.26"
5993+ introspectable="0">
5994+ <doc xml:space="preserve"
5995+ filename="gtype.h"
5996+ line="2333">A convenience macro for pointer type implementations, which defines a
5997+`type_name_get_type()` function registering the pointer type.</doc>
5998+ <source-position filename="gtype.h" line="2344"/>
5999+ <parameters>
6000+ <parameter name="TypeName">
6001+ <doc xml:space="preserve"
6002+ filename="gtype.h"
6003+ line="2335">The name of the new type, in Camel case</doc>
6004+ </parameter>
6005+ <parameter name="type_name">
6006+ <doc xml:space="preserve"
6007+ filename="gtype.h"
6008+ line="2336">The name of the new type, in lowercase, with words
6009+ separated by `_`</doc>
6010+ </parameter>
6011+ </parameters>
6012+ </function-macro>
6013+ <function-macro name="DEFINE_POINTER_TYPE_WITH_CODE"
6014+ c:identifier="G_DEFINE_POINTER_TYPE_WITH_CODE"
6015+ version="2.26"
6016+ introspectable="0">
6017+ <doc xml:space="preserve"
6018+ filename="gtype.h"
6019+ line="2345">A convenience macro for pointer type implementations.
6020+Similar to G_DEFINE_POINTER_TYPE(), but allows to insert
6021+custom code into the `type_name_get_type()` function.</doc>
6022+ <source-position filename="gtype.h" line="2358"/>
6023+ <parameters>
6024+ <parameter name="TypeName">
6025+ <doc xml:space="preserve"
6026+ filename="gtype.h"
6027+ line="2347">The name of the new type, in Camel case</doc>
6028+ </parameter>
6029+ <parameter name="type_name">
6030+ <doc xml:space="preserve"
6031+ filename="gtype.h"
6032+ line="2348">The name of the new type, in lowercase, with words
6033+ separated by `_`</doc>
6034+ </parameter>
6035+ <parameter name="_C_">
6036+ <doc xml:space="preserve"
6037+ filename="gtype.h"
6038+ line="2350">Custom code that gets inserted in the `*_get_type()` function</doc>
6039+ </parameter>
6040+ </parameters>
6041+ </function-macro>
6042+ <function-macro name="DEFINE_TYPE"
6043+ c:identifier="G_DEFINE_TYPE"
6044+ version="2.4"
6045+ introspectable="0">
6046+ <doc xml:space="preserve"
6047+ filename="gtype.h"
6048+ line="1662">A convenience macro for type implementations, which declares a class
6049+initialization function, an instance initialization function (see #GTypeInfo
6050+for information about these) and a static variable named `t_n_parent_class`
6051+pointing to the parent class. Furthermore, it defines a `*_get_type()` function.
6052+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
6053+ <source-position filename="gtype.h" line="1677"/>
6054+ <parameters>
6055+ <parameter name="TN">
6056+ <doc xml:space="preserve"
6057+ filename="gtype.h"
6058+ line="1664">The name of the new type, in Camel case.</doc>
6059+ </parameter>
6060+ <parameter name="t_n">
6061+ <doc xml:space="preserve"
6062+ filename="gtype.h"
6063+ line="1665">The name of the new type, in lowercase, with words
6064+ separated by `_`.</doc>
6065+ </parameter>
6066+ <parameter name="T_P">
6067+ <doc xml:space="preserve"
6068+ filename="gtype.h"
6069+ line="1667">The #GType of the parent type.</doc>
6070+ </parameter>
6071+ </parameters>
6072+ </function-macro>
6073+ <function-macro name="DEFINE_TYPE_EXTENDED"
6074+ c:identifier="G_DEFINE_TYPE_EXTENDED"
6075+ version="2.4"
6076+ introspectable="0">
6077+ <doc xml:space="preserve"
6078+ filename="gtype.h"
6079+ line="1819">The most general convenience macro for type implementations, on which
6080+G_DEFINE_TYPE(), etc are based.
6081+
6082+|[&lt;!-- language="C" --&gt;
6083+G_DEFINE_TYPE_EXTENDED (GtkGadget,
6084+ gtk_gadget,
6085+ GTK_TYPE_WIDGET,
6086+ 0,
6087+ G_ADD_PRIVATE (GtkGadget)
6088+ G_IMPLEMENT_INTERFACE (TYPE_GIZMO,
6089+ gtk_gadget_gizmo_init));
6090+]|
6091+
6092+expands to
6093+
6094+|[&lt;!-- language="C" --&gt;
6095+static void gtk_gadget_init (GtkGadget *self);
6096+static void gtk_gadget_class_init (GtkGadgetClass *klass);
6097+static gpointer gtk_gadget_parent_class = NULL;
6098+static gint GtkGadget_private_offset;
6099+static void gtk_gadget_class_intern_init (gpointer klass)
6100+{
6101+ gtk_gadget_parent_class = g_type_class_peek_parent (klass);
6102+ if (GtkGadget_private_offset != 0)
6103+ g_type_class_adjust_private_offset (klass, &amp;GtkGadget_private_offset);
6104+ gtk_gadget_class_init ((GtkGadgetClass*) klass);
6105+}
6106+static inline gpointer gtk_gadget_get_instance_private (GtkGadget *self)
6107+{
6108+ return (G_STRUCT_MEMBER_P (self, GtkGadget_private_offset));
6109+}
6110+
6111+GType
6112+gtk_gadget_get_type (void)
6113+{
6114+ static gsize static_g_define_type_id = 0;
6115+ if (g_once_init_enter (&amp;static_g_define_type_id))
6116+ {
6117+ GType g_define_type_id =
6118+ g_type_register_static_simple (GTK_TYPE_WIDGET,
6119+ g_intern_static_string ("GtkGadget"),
6120+ sizeof (GtkGadgetClass),
6121+ (GClassInitFunc) gtk_gadget_class_intern_init,
6122+ sizeof (GtkGadget),
6123+ (GInstanceInitFunc) gtk_gadget_init,
6124+ 0);
6125+ {
6126+ GtkGadget_private_offset =
6127+ g_type_add_instance_private (g_define_type_id, sizeof (GtkGadgetPrivate));
6128+ }
6129+ {
6130+ const GInterfaceInfo g_implement_interface_info = {
6131+ (GInterfaceInitFunc) gtk_gadget_gizmo_init
6132+ };
6133+ g_type_add_interface_static (g_define_type_id, TYPE_GIZMO, &amp;g_implement_interface_info);
6134+ }
6135+ g_once_init_leave (&amp;static_g_define_type_id, g_define_type_id);
6136+ }
6137+ return static_g_define_type_id;
6138+}
6139+]|
6140+
6141+The only pieces which have to be manually provided are the definitions of
6142+the instance and class structure and the definitions of the instance and
6143+class init functions.</doc>
6144+ <source-position filename="gtype.h" line="1896"/>
6145+ <parameters>
6146+ <parameter name="TN">
6147+ <doc xml:space="preserve"
6148+ filename="gtype.h"
6149+ line="1821">The name of the new type, in Camel case.</doc>
6150+ </parameter>
6151+ <parameter name="t_n">
6152+ <doc xml:space="preserve"
6153+ filename="gtype.h"
6154+ line="1822">The name of the new type, in lowercase, with words
6155+ separated by `_`.</doc>
6156+ </parameter>
6157+ <parameter name="T_P">
6158+ <doc xml:space="preserve"
6159+ filename="gtype.h"
6160+ line="1824">The #GType of the parent type.</doc>
6161+ </parameter>
6162+ <parameter name="_f_">
6163+ <doc xml:space="preserve"
6164+ filename="gtype.h"
6165+ line="1825">#GTypeFlags to pass to g_type_register_static()</doc>
6166+ </parameter>
6167+ <parameter name="_C_">
6168+ <doc xml:space="preserve"
6169+ filename="gtype.h"
6170+ line="1826">Custom code that gets inserted in the `*_get_type()` function.</doc>
6171+ </parameter>
6172+ </parameters>
6173+ </function-macro>
6174+ <function-macro name="DEFINE_TYPE_WITH_CODE"
6175+ c:identifier="G_DEFINE_TYPE_WITH_CODE"
6176+ version="2.4"
6177+ introspectable="0">
6178+ <doc xml:space="preserve"
6179+ filename="gtype.h"
6180+ line="1678">A convenience macro for type implementations.
6181+
6182+Similar to G_DEFINE_TYPE(), but allows you to insert custom code into the
6183+`*_get_type()` function, e.g. interface implementations via G_IMPLEMENT_INTERFACE().
6184+See G_DEFINE_TYPE_EXTENDED() for an example.</doc>
6185+ <source-position filename="gtype.h" line="1693"/>
6186+ <parameters>
6187+ <parameter name="TN">
6188+ <doc xml:space="preserve"
6189+ filename="gtype.h"
6190+ line="1680">The name of the new type, in Camel case.</doc>
6191+ </parameter>
6192+ <parameter name="t_n">
6193+ <doc xml:space="preserve"
6194+ filename="gtype.h"
6195+ line="1681">The name of the new type in lowercase, with words separated by `_`.</doc>
6196+ </parameter>
6197+ <parameter name="T_P">
6198+ <doc xml:space="preserve"
6199+ filename="gtype.h"
6200+ line="1682">The #GType of the parent type.</doc>
6201+ </parameter>
6202+ <parameter name="_C_">
6203+ <doc xml:space="preserve"
6204+ filename="gtype.h"
6205+ line="1683">Custom code that gets inserted in the `*_get_type()` function.</doc>
6206+ </parameter>
6207+ </parameters>
6208+ </function-macro>
6209+ <function-macro name="DEFINE_TYPE_WITH_PRIVATE"
6210+ c:identifier="G_DEFINE_TYPE_WITH_PRIVATE"
6211+ version="2.38"
6212+ introspectable="0">
6213+ <doc xml:space="preserve"
6214+ filename="gtype.h"
6215+ line="1694">A convenience macro for type implementations, which declares a class
6216+initialization function, an instance initialization function (see #GTypeInfo
6217+for information about these), a static variable named `t_n_parent_class`
6218+pointing to the parent class, and adds private instance data to the type.
6219+
6220+Furthermore, it defines a `*_get_type()` function. See G_DEFINE_TYPE_EXTENDED()
6221+for an example.
6222+
6223+Note that private structs added with this macros must have a struct
6224+name of the form `TN ## Private`.
6225+
6226+The private instance data can be retrieved using the automatically generated
6227+getter function `t_n_get_instance_private()`.
6228+
6229+See also: G_ADD_PRIVATE()</doc>
6230+ <source-position filename="gtype.h" line="1719"/>
6231+ <parameters>
6232+ <parameter name="TN">
6233+ <doc xml:space="preserve"
6234+ filename="gtype.h"
6235+ line="1696">The name of the new type, in Camel case.</doc>
6236+ </parameter>
6237+ <parameter name="t_n">
6238+ <doc xml:space="preserve"
6239+ filename="gtype.h"
6240+ line="1697">The name of the new type, in lowercase, with words
6241+ separated by `_`.</doc>
6242+ </parameter>
6243+ <parameter name="T_P">
6244+ <doc xml:space="preserve"
6245+ filename="gtype.h"
6246+ line="1699">The #GType of the parent type.</doc>
6247+ </parameter>
6248+ </parameters>
6249+ </function-macro>
6250+ <function-macro name="ENUM_CLASS"
6251+ c:identifier="G_ENUM_CLASS"
6252+ introspectable="0">
6253+ <doc xml:space="preserve"
6254+ filename="genums.h"
6255+ line="38">Casts a derived #GEnumClass structure into a #GEnumClass structure.</doc>
6256+ <source-position filename="genums.h" line="44"/>
6257+ <parameters>
6258+ <parameter name="class">
6259+ <doc xml:space="preserve"
6260+ filename="genums.h"
6261+ line="40">a valid #GEnumClass</doc>
6262+ </parameter>
6263+ </parameters>
6264+ </function-macro>
6265+ <function-macro name="ENUM_CLASS_TYPE"
6266+ c:identifier="G_ENUM_CLASS_TYPE"
6267+ introspectable="0">
6268+ <doc xml:space="preserve"
6269+ filename="genums.h"
6270+ line="53">Get the type identifier from a given #GEnumClass structure.</doc>
6271+ <source-position filename="genums.h" line="61"/>
6272+ <parameters>
6273+ <parameter name="class">
6274+ <doc xml:space="preserve"
6275+ filename="genums.h"
6276+ line="55">a #GEnumClass</doc>
6277+ </parameter>
6278+ </parameters>
6279+ </function-macro>
6280+ <function-macro name="ENUM_CLASS_TYPE_NAME"
6281+ c:identifier="G_ENUM_CLASS_TYPE_NAME"
6282+ introspectable="0">
6283+ <doc xml:space="preserve"
6284+ filename="genums.h"
6285+ line="62">Get the static type name from a given #GEnumClass structure.</doc>
6286+ <source-position filename="genums.h" line="70"/>
6287+ <parameters>
6288+ <parameter name="class">
6289+ <doc xml:space="preserve"
6290+ filename="genums.h"
6291+ line="64">a #GEnumClass</doc>
6292+ </parameter>
6293+ </parameters>
6294+ </function-macro>
6295+ <record name="EnumClass" c:type="GEnumClass">
6296+ <doc xml:space="preserve"
6297+ filename="genums.h"
6298+ line="143">The class of an enumeration type holds information about its
6299+possible values.</doc>
6300+ <source-position filename="genums.h" line="164"/>
6301+ <field name="g_type_class" writable="1">
6302+ <doc xml:space="preserve"
6303+ filename="genums.h"
6304+ line="145">the parent class</doc>
6305+ <type name="TypeClass" c:type="GTypeClass"/>
6306+ </field>
6307+ <field name="minimum" writable="1">
6308+ <doc xml:space="preserve"
6309+ filename="genums.h"
6310+ line="146">the smallest possible value.</doc>
6311+ <type name="gint" c:type="gint"/>
6312+ </field>
6313+ <field name="maximum" writable="1">
6314+ <doc xml:space="preserve"
6315+ filename="genums.h"
6316+ line="147">the largest possible value.</doc>
6317+ <type name="gint" c:type="gint"/>
6318+ </field>
6319+ <field name="n_values" writable="1">
6320+ <doc xml:space="preserve"
6321+ filename="genums.h"
6322+ line="148">the number of possible values.</doc>
6323+ <type name="guint" c:type="guint"/>
6324+ </field>
6325+ <field name="values" writable="1">
6326+ <doc xml:space="preserve"
6327+ filename="genums.h"
6328+ line="149">an array of #GEnumValue structs describing the
6329+ individual values.</doc>
6330+ <type name="EnumValue" c:type="GEnumValue*"/>
6331+ </field>
6332+ </record>
6333+ <record name="EnumValue" c:type="GEnumValue">
6334+ <doc xml:space="preserve"
6335+ filename="genums.h"
6336+ line="185">A structure which contains a single enum value, its name, and its
6337+nickname.</doc>
6338+ <source-position filename="genums.h" line="199"/>
6339+ <field name="value" writable="1">
6340+ <doc xml:space="preserve"
6341+ filename="genums.h"
6342+ line="187">the enum value</doc>
6343+ <type name="gint" c:type="gint"/>
6344+ </field>
6345+ <field name="value_name" writable="1">
6346+ <doc xml:space="preserve"
6347+ filename="genums.h"
6348+ line="188">the name of the value</doc>
6349+ <type name="utf8" c:type="const gchar*"/>
6350+ </field>
6351+ <field name="value_nick" writable="1">
6352+ <doc xml:space="preserve"
6353+ filename="genums.h"
6354+ line="189">the nickname of the value</doc>
6355+ <type name="utf8" c:type="const gchar*"/>
6356+ </field>
6357+ </record>
6358+ <function-macro name="FLAGS_CLASS"
6359+ c:identifier="G_FLAGS_CLASS"
6360+ introspectable="0">
6361+ <doc xml:space="preserve"
6362+ filename="genums.h"
6363+ line="82">Casts a derived #GFlagsClass structure into a #GFlagsClass structure.</doc>
6364+ <source-position filename="genums.h" line="88"/>
6365+ <parameters>
6366+ <parameter name="class">
6367+ <doc xml:space="preserve"
6368+ filename="genums.h"
6369+ line="84">a valid #GFlagsClass</doc>
6370+ </parameter>
6371+ </parameters>
6372+ </function-macro>
6373+ <function-macro name="FLAGS_CLASS_TYPE"
6374+ c:identifier="G_FLAGS_CLASS_TYPE"
6375+ introspectable="0">
6376+ <doc xml:space="preserve"
6377+ filename="genums.h"
6378+ line="97">Get the type identifier from a given #GFlagsClass structure.</doc>
6379+ <source-position filename="genums.h" line="105"/>
6380+ <parameters>
6381+ <parameter name="class">
6382+ <doc xml:space="preserve"
6383+ filename="genums.h"
6384+ line="99">a #GFlagsClass</doc>
6385+ </parameter>
6386+ </parameters>
6387+ </function-macro>
6388+ <function-macro name="FLAGS_CLASS_TYPE_NAME"
6389+ c:identifier="G_FLAGS_CLASS_TYPE_NAME"
6390+ introspectable="0">
6391+ <doc xml:space="preserve"
6392+ filename="genums.h"
6393+ line="106">Get the static type name from a given #GFlagsClass structure.</doc>
6394+ <source-position filename="genums.h" line="114"/>
6395+ <parameters>
6396+ <parameter name="class">
6397+ <doc xml:space="preserve"
6398+ filename="genums.h"
6399+ line="108">a #GFlagsClass</doc>
6400+ </parameter>
6401+ </parameters>
6402+ </function-macro>
6403+ <record name="FlagsClass" c:type="GFlagsClass">
6404+ <doc xml:space="preserve"
6405+ filename="genums.h"
6406+ line="165">The class of a flags type holds information about its
6407+possible values.</doc>
6408+ <source-position filename="genums.h" line="184"/>
6409+ <field name="g_type_class" writable="1">
6410+ <doc xml:space="preserve"
6411+ filename="genums.h"
6412+ line="167">the parent class</doc>
6413+ <type name="TypeClass" c:type="GTypeClass"/>
6414+ </field>
6415+ <field name="mask" writable="1">
6416+ <doc xml:space="preserve"
6417+ filename="genums.h"
6418+ line="168">a mask covering all possible values.</doc>
6419+ <type name="guint" c:type="guint"/>
6420+ </field>
6421+ <field name="n_values" writable="1">
6422+ <doc xml:space="preserve"
6423+ filename="genums.h"
6424+ line="169">the number of possible values.</doc>
6425+ <type name="guint" c:type="guint"/>
6426+ </field>
6427+ <field name="values" writable="1">
6428+ <doc xml:space="preserve"
6429+ filename="genums.h"
6430+ line="170">an array of #GFlagsValue structs describing the
6431+ individual values.</doc>
6432+ <type name="FlagsValue" c:type="GFlagsValue*"/>
6433+ </field>
6434+ </record>
6435+ <record name="FlagsValue" c:type="GFlagsValue">
6436+ <doc xml:space="preserve"
6437+ filename="genums.h"
6438+ line="200">A structure which contains a single flags value, its name, and its
6439+nickname.</doc>
6440+ <source-position filename="genums.h" line="214"/>
6441+ <field name="value" writable="1">
6442+ <doc xml:space="preserve"
6443+ filename="genums.h"
6444+ line="202">the flags value</doc>
6445+ <type name="guint" c:type="guint"/>
6446+ </field>
6447+ <field name="value_name" writable="1">
6448+ <doc xml:space="preserve"
6449+ filename="genums.h"
6450+ line="203">the name of the value</doc>
6451+ <type name="utf8" c:type="const gchar*"/>
6452+ </field>
6453+ <field name="value_nick" writable="1">
6454+ <doc xml:space="preserve"
6455+ filename="genums.h"
6456+ line="204">the nickname of the value</doc>
6457+ <type name="utf8" c:type="const gchar*"/>
6458+ </field>
6459+ </record>
6460+ <function-macro name="IMPLEMENT_INTERFACE"
6461+ c:identifier="G_IMPLEMENT_INTERFACE"
6462+ version="2.4"
6463+ introspectable="0">
6464+ <doc xml:space="preserve"
6465+ filename="gtype.h"
6466+ line="1944">A convenience macro to ease interface addition in the `_C_` section
6467+of G_DEFINE_TYPE_WITH_CODE() or G_DEFINE_ABSTRACT_TYPE_WITH_CODE().
6468+See G_DEFINE_TYPE_EXTENDED() for an example.
6469+
6470+Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
6471+macros, since it depends on variable names from those macros.</doc>
6472+ <source-position filename="gtype.h" line="1958"/>
6473+ <parameters>
6474+ <parameter name="TYPE_IFACE">
6475+ <doc xml:space="preserve"
6476+ filename="gtype.h"
6477+ line="1946">The #GType of the interface to add</doc>
6478+ </parameter>
6479+ <parameter name="iface_init">
6480+ <doc xml:space="preserve"
6481+ filename="gtype.h"
6482+ line="1947">The interface init function, of type #GInterfaceInitFunc</doc>
6483+ </parameter>
6484+ </parameters>
6485+ </function-macro>
6486+ <function-macro name="IMPLEMENT_INTERFACE_DYNAMIC"
6487+ c:identifier="G_IMPLEMENT_INTERFACE_DYNAMIC"
6488+ version="2.24"
6489+ introspectable="0">
6490+ <doc xml:space="preserve"
6491+ filename="gtypemodule.h"
6492+ line="227">A convenience macro to ease interface addition in the @_C_ section
6493+of G_DEFINE_DYNAMIC_TYPE_EXTENDED().
6494+
6495+See G_DEFINE_DYNAMIC_TYPE_EXTENDED() for an example.
6496+
6497+Note that this macro can only be used together with the
6498+G_DEFINE_DYNAMIC_TYPE_EXTENDED macros, since it depends on variable
6499+names from that macro.</doc>
6500+ <source-position filename="gtypemodule.h" line="243"/>
6501+ <parameters>
6502+ <parameter name="TYPE_IFACE">
6503+ <doc xml:space="preserve"
6504+ filename="gtypemodule.h"
6505+ line="229">The #GType of the interface to add</doc>
6506+ </parameter>
6507+ <parameter name="iface_init">
6508+ <doc xml:space="preserve"
6509+ filename="gtypemodule.h"
6510+ line="230">The interface init function</doc>
6511+ </parameter>
6512+ </parameters>
6513+ </function-macro>
6514+ <function-macro name="INITIALLY_UNOWNED"
6515+ c:identifier="G_INITIALLY_UNOWNED"
6516+ introspectable="0">
6517+ <doc xml:space="preserve"
6518+ filename="gobject.h"
6519+ line="143">Casts a #GInitiallyUnowned or derived pointer into a (GInitiallyUnowned*)
6520+pointer.
6521+
6522+Depending on the current debugging level, this function may invoke
6523+certain runtime checks to identify invalid casts.</doc>
6524+ <source-position filename="gobject.h" line="153"/>
6525+ <parameters>
6526+ <parameter name="object">
6527+ <doc xml:space="preserve"
6528+ filename="gobject.h"
6529+ line="145">Object which is subject to casting.</doc>
6530+ </parameter>
6531+ </parameters>
6532+ </function-macro>
6533+ <function-macro name="INITIALLY_UNOWNED_CLASS"
6534+ c:identifier="G_INITIALLY_UNOWNED_CLASS"
6535+ introspectable="0">
6536+ <doc xml:space="preserve"
6537+ filename="gobject.h"
6538+ line="154">Casts a derived #GInitiallyUnownedClass structure into a
6539+#GInitiallyUnownedClass structure.</doc>
6540+ <source-position filename="gobject.h" line="161"/>
6541+ <parameters>
6542+ <parameter name="class">
6543+ <doc xml:space="preserve"
6544+ filename="gobject.h"
6545+ line="156">a valid #GInitiallyUnownedClass</doc>
6546+ </parameter>
6547+ </parameters>
6548+ </function-macro>
6549+ <function-macro name="INITIALLY_UNOWNED_GET_CLASS"
6550+ c:identifier="G_INITIALLY_UNOWNED_GET_CLASS"
6551+ introspectable="0">
6552+ <doc xml:space="preserve"
6553+ filename="gobject.h"
6554+ line="177">Get the class structure associated to a #GInitiallyUnowned instance.</doc>
6555+ <source-position filename="gobject.h" line="185"/>
6556+ <parameters>
6557+ <parameter name="object">
6558+ <doc xml:space="preserve"
6559+ filename="gobject.h"
6560+ line="179">a #GInitiallyUnowned instance.</doc>
6561+ </parameter>
6562+ </parameters>
6563+ </function-macro>
6564+ <function-macro name="IS_BINDING"
6565+ c:identifier="G_IS_BINDING"
6566+ introspectable="0">
6567+ <source-position filename="gbinding.h" line="37"/>
6568+ <parameters>
6569+ <parameter name="obj">
6570+ </parameter>
6571+ </parameters>
6572+ </function-macro>
6573+ <function-macro name="IS_BINDING_GROUP"
6574+ c:identifier="G_IS_BINDING_GROUP"
6575+ introspectable="0">
6576+ <source-position filename="gbindinggroup.h" line="36"/>
6577+ <parameters>
6578+ <parameter name="obj">
6579+ </parameter>
6580+ </parameters>
6581+ </function-macro>
6582+ <function-macro name="IS_ENUM_CLASS"
6583+ c:identifier="G_IS_ENUM_CLASS"
6584+ introspectable="0">
6585+ <doc xml:space="preserve"
6586+ filename="genums.h"
6587+ line="45">Checks whether @class "is a" valid #GEnumClass structure of type %G_TYPE_ENUM
6588+or derived.</doc>
6589+ <source-position filename="genums.h" line="52"/>
6590+ <parameters>
6591+ <parameter name="class">
6592+ <doc xml:space="preserve"
6593+ filename="genums.h"
6594+ line="47">a #GEnumClass</doc>
6595+ </parameter>
6596+ </parameters>
6597+ </function-macro>
6598+ <function-macro name="IS_FLAGS_CLASS"
6599+ c:identifier="G_IS_FLAGS_CLASS"
6600+ introspectable="0">
6601+ <doc xml:space="preserve"
6602+ filename="genums.h"
6603+ line="89">Checks whether @class "is a" valid #GFlagsClass structure of type %G_TYPE_FLAGS
6604+or derived.</doc>
6605+ <source-position filename="genums.h" line="96"/>
6606+ <parameters>
6607+ <parameter name="class">
6608+ <doc xml:space="preserve"
6609+ filename="genums.h"
6610+ line="91">a #GFlagsClass</doc>
6611+ </parameter>
6612+ </parameters>
6613+ </function-macro>
6614+ <function-macro name="IS_INITIALLY_UNOWNED"
6615+ c:identifier="G_IS_INITIALLY_UNOWNED"
6616+ introspectable="0">
6617+ <doc xml:space="preserve"
6618+ filename="gobject.h"
6619+ line="162">Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_INITIALLY_UNOWNED.</doc>
6620+ <source-position filename="gobject.h" line="168"/>
6621+ <parameters>
6622+ <parameter name="object">
6623+ <doc xml:space="preserve"
6624+ filename="gobject.h"
6625+ line="164">Instance to check for being a %G_TYPE_INITIALLY_UNOWNED.</doc>
6626+ </parameter>
6627+ </parameters>
6628+ </function-macro>
6629+ <function-macro name="IS_INITIALLY_UNOWNED_CLASS"
6630+ c:identifier="G_IS_INITIALLY_UNOWNED_CLASS"
6631+ introspectable="0">
6632+ <doc xml:space="preserve"
6633+ filename="gobject.h"
6634+ line="169">Checks whether @class "is a" valid #GInitiallyUnownedClass structure of type
6635+%G_TYPE_INITIALLY_UNOWNED or derived.</doc>
6636+ <source-position filename="gobject.h" line="176"/>
6637+ <parameters>
6638+ <parameter name="class">
6639+ <doc xml:space="preserve"
6640+ filename="gobject.h"
6641+ line="171">a #GInitiallyUnownedClass</doc>
6642+ </parameter>
6643+ </parameters>
6644+ </function-macro>
6645+ <function-macro name="IS_OBJECT"
6646+ c:identifier="G_IS_OBJECT"
6647+ introspectable="0">
6648+ <doc xml:space="preserve"
6649+ filename="gobject.h"
6650+ line="60">Checks whether a valid #GTypeInstance pointer is of type %G_TYPE_OBJECT.</doc>
6651+ <source-position filename="gobject.h" line="67"/>
6652+ <parameters>
6653+ <parameter name="object">
6654+ <doc xml:space="preserve"
6655+ filename="gobject.h"
6656+ line="62">Instance to check for being a %G_TYPE_OBJECT.</doc>
6657+ </parameter>
6658+ </parameters>
6659+ </function-macro>
6660+ <function-macro name="IS_OBJECT_CLASS"
6661+ c:identifier="G_IS_OBJECT_CLASS"
6662+ introspectable="0">
6663+ <doc xml:space="preserve"
6664+ filename="gobject.h"
6665+ line="71">Checks whether @class "is a" valid #GObjectClass structure of type
6666+%G_TYPE_OBJECT or derived.</doc>
6667+ <source-position filename="gobject.h" line="78"/>
6668+ <parameters>
6669+ <parameter name="class">
6670+ <doc xml:space="preserve"
6671+ filename="gobject.h"
6672+ line="73">a #GObjectClass</doc>
6673+ </parameter>
6674+ </parameters>
6675+ </function-macro>
6676+ <function-macro name="IS_PARAM_SPEC"
6677+ c:identifier="G_IS_PARAM_SPEC"
6678+ introspectable="0">
6679+ <doc xml:space="preserve"
6680+ filename="gparam.h"
6681+ line="46">Checks whether @pspec "is a" valid #GParamSpec structure of type %G_TYPE_PARAM
6682+or derived.</doc>
6683+ <source-position filename="gparam.h" line="54"/>
6684+ <parameters>
6685+ <parameter name="pspec">
6686+ <doc xml:space="preserve"
6687+ filename="gparam.h"
6688+ line="48">a #GParamSpec</doc>
6689+ </parameter>
6690+ </parameters>
6691+ </function-macro>
6692+ <function-macro name="IS_PARAM_SPEC_BOOLEAN"
6693+ c:identifier="G_IS_PARAM_SPEC_BOOLEAN"
6694+ introspectable="0">
6695+ <doc xml:space="preserve"
6696+ filename="gparamspecs.h"
6697+ line="86">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOOLEAN.</doc>
6698+ <source-position filename="gparamspecs.h" line="94"/>
6699+ <parameters>
6700+ <parameter name="pspec">
6701+ <doc xml:space="preserve"
6702+ filename="gparamspecs.h"
6703+ line="88">a valid #GParamSpec instance</doc>
6704+ </parameter>
6705+ </parameters>
6706+ </function-macro>
6707+ <function-macro name="IS_PARAM_SPEC_BOXED"
6708+ c:identifier="G_IS_PARAM_SPEC_BOXED"
6709+ introspectable="0">
6710+ <doc xml:space="preserve"
6711+ filename="gparamspecs.h"
6712+ line="408">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_BOXED.</doc>
6713+ <source-position filename="gparamspecs.h" line="416"/>
6714+ <parameters>
6715+ <parameter name="pspec">
6716+ <doc xml:space="preserve"
6717+ filename="gparamspecs.h"
6718+ line="410">a valid #GParamSpec instance</doc>
6719+ </parameter>
6720+ </parameters>
6721+ </function-macro>
6722+ <function-macro name="IS_PARAM_SPEC_CHAR"
6723+ c:identifier="G_IS_PARAM_SPEC_CHAR"
6724+ introspectable="0">
6725+ <doc xml:space="preserve"
6726+ filename="gparamspecs.h"
6727+ line="40">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_CHAR.</doc>
6728+ <source-position filename="gparamspecs.h" line="48"/>
6729+ <parameters>
6730+ <parameter name="pspec">
6731+ <doc xml:space="preserve"
6732+ filename="gparamspecs.h"
6733+ line="42">a valid #GParamSpec instance</doc>
6734+ </parameter>
6735+ </parameters>
6736+ </function-macro>
6737+ <function-macro name="IS_PARAM_SPEC_CLASS"
6738+ c:identifier="G_IS_PARAM_SPEC_CLASS"
6739+ introspectable="0">
6740+ <doc xml:space="preserve"
6741+ filename="gparam.h"
6742+ line="65">Checks whether @pclass "is a" valid #GParamSpecClass structure of type
6743+%G_TYPE_PARAM or derived.</doc>
6744+ <source-position filename="gparam.h" line="72"/>
6745+ <parameters>
6746+ <parameter name="pclass">
6747+ <doc xml:space="preserve"
6748+ filename="gparam.h"
6749+ line="67">a #GParamSpecClass</doc>
6750+ </parameter>
6751+ </parameters>
6752+ </function-macro>
6753+ <function-macro name="IS_PARAM_SPEC_DOUBLE"
6754+ c:identifier="G_IS_PARAM_SPEC_DOUBLE"
6755+ introspectable="0">
6756+ <doc xml:space="preserve"
6757+ filename="gparamspecs.h"
6758+ line="339">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_DOUBLE.</doc>
6759+ <source-position filename="gparamspecs.h" line="347"/>
6760+ <parameters>
6761+ <parameter name="pspec">
6762+ <doc xml:space="preserve"
6763+ filename="gparamspecs.h"
6764+ line="341">a valid #GParamSpec instance</doc>
6765+ </parameter>
6766+ </parameters>
6767+ </function-macro>
6768+ <function-macro name="IS_PARAM_SPEC_ENUM"
6769+ c:identifier="G_IS_PARAM_SPEC_ENUM"
6770+ introspectable="0">
6771+ <doc xml:space="preserve"
6772+ filename="gparamspecs.h"
6773+ line="270">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ENUM.</doc>
6774+ <source-position filename="gparamspecs.h" line="278"/>
6775+ <parameters>
6776+ <parameter name="pspec">
6777+ <doc xml:space="preserve"
6778+ filename="gparamspecs.h"
6779+ line="272">a valid #GParamSpec instance</doc>
6780+ </parameter>
6781+ </parameters>
6782+ </function-macro>
6783+ <function-macro name="IS_PARAM_SPEC_FLAGS"
6784+ c:identifier="G_IS_PARAM_SPEC_FLAGS"
6785+ introspectable="0">
6786+ <doc xml:space="preserve"
6787+ filename="gparamspecs.h"
6788+ line="293">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLAGS.</doc>
6789+ <source-position filename="gparamspecs.h" line="301"/>
6790+ <parameters>
6791+ <parameter name="pspec">
6792+ <doc xml:space="preserve"
6793+ filename="gparamspecs.h"
6794+ line="295">a valid #GParamSpec instance</doc>
6795+ </parameter>
6796+ </parameters>
6797+ </function-macro>
6798+ <function-macro name="IS_PARAM_SPEC_FLOAT"
6799+ c:identifier="G_IS_PARAM_SPEC_FLOAT"
6800+ introspectable="0">
6801+ <doc xml:space="preserve"
6802+ filename="gparamspecs.h"
6803+ line="316">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_FLOAT.</doc>
6804+ <source-position filename="gparamspecs.h" line="324"/>
6805+ <parameters>
6806+ <parameter name="pspec">
6807+ <doc xml:space="preserve"
6808+ filename="gparamspecs.h"
6809+ line="318">a valid #GParamSpec instance</doc>
6810+ </parameter>
6811+ </parameters>
6812+ </function-macro>
6813+ <function-macro name="IS_PARAM_SPEC_GTYPE"
6814+ c:identifier="G_IS_PARAM_SPEC_GTYPE"
6815+ version="2.10"
6816+ introspectable="0">
6817+ <doc xml:space="preserve"
6818+ filename="gparamspecs.h"
6819+ line="536">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_GTYPE.</doc>
6820+ <source-position filename="gparamspecs.h" line="545"/>
6821+ <parameters>
6822+ <parameter name="pspec">
6823+ <doc xml:space="preserve"
6824+ filename="gparamspecs.h"
6825+ line="538">a #GParamSpec</doc>
6826+ </parameter>
6827+ </parameters>
6828+ </function-macro>
6829+ <function-macro name="IS_PARAM_SPEC_INT"
6830+ c:identifier="G_IS_PARAM_SPEC_INT"
6831+ introspectable="0">
6832+ <doc xml:space="preserve"
6833+ filename="gparamspecs.h"
6834+ line="109">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT.</doc>
6835+ <source-position filename="gparamspecs.h" line="117"/>
6836+ <parameters>
6837+ <parameter name="pspec">
6838+ <doc xml:space="preserve"
6839+ filename="gparamspecs.h"
6840+ line="111">a valid #GParamSpec instance</doc>
6841+ </parameter>
6842+ </parameters>
6843+ </function-macro>
6844+ <function-macro name="IS_PARAM_SPEC_INT64"
6845+ c:identifier="G_IS_PARAM_SPEC_INT64"
6846+ introspectable="0">
6847+ <doc xml:space="preserve"
6848+ filename="gparamspecs.h"
6849+ line="201">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_INT64.</doc>
6850+ <source-position filename="gparamspecs.h" line="209"/>
6851+ <parameters>
6852+ <parameter name="pspec">
6853+ <doc xml:space="preserve"
6854+ filename="gparamspecs.h"
6855+ line="203">a valid #GParamSpec instance</doc>
6856+ </parameter>
6857+ </parameters>
6858+ </function-macro>
6859+ <function-macro name="IS_PARAM_SPEC_LONG"
6860+ c:identifier="G_IS_PARAM_SPEC_LONG"
6861+ introspectable="0">
6862+ <doc xml:space="preserve"
6863+ filename="gparamspecs.h"
6864+ line="155">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_LONG.</doc>
6865+ <source-position filename="gparamspecs.h" line="163"/>
6866+ <parameters>
6867+ <parameter name="pspec">
6868+ <doc xml:space="preserve"
6869+ filename="gparamspecs.h"
6870+ line="157">a valid #GParamSpec instance</doc>
6871+ </parameter>
6872+ </parameters>
6873+ </function-macro>
6874+ <function-macro name="IS_PARAM_SPEC_OBJECT"
6875+ c:identifier="G_IS_PARAM_SPEC_OBJECT"
6876+ introspectable="0">
6877+ <doc xml:space="preserve"
6878+ filename="gparamspecs.h"
6879+ line="483">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OBJECT.</doc>
6880+ <source-position filename="gparamspecs.h" line="491"/>
6881+ <parameters>
6882+ <parameter name="pspec">
6883+ <doc xml:space="preserve"
6884+ filename="gparamspecs.h"
6885+ line="485">a valid #GParamSpec instance</doc>
6886+ </parameter>
6887+ </parameters>
6888+ </function-macro>
6889+ <function-macro name="IS_PARAM_SPEC_OVERRIDE"
6890+ c:identifier="G_IS_PARAM_SPEC_OVERRIDE"
6891+ version="2.4"
6892+ introspectable="0">
6893+ <doc xml:space="preserve"
6894+ filename="gparamspecs.h"
6895+ line="508">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_OVERRIDE.</doc>
6896+ <source-position filename="gparamspecs.h" line="517"/>
6897+ <parameters>
6898+ <parameter name="pspec">
6899+ <doc xml:space="preserve"
6900+ filename="gparamspecs.h"
6901+ line="510">a #GParamSpec</doc>
6902+ </parameter>
6903+ </parameters>
6904+ </function-macro>
6905+ <function-macro name="IS_PARAM_SPEC_PARAM"
6906+ c:identifier="G_IS_PARAM_SPEC_PARAM"
6907+ introspectable="0">
6908+ <doc xml:space="preserve"
6909+ filename="gparamspecs.h"
6910+ line="385">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_PARAM.</doc>
6911+ <source-position filename="gparamspecs.h" line="393"/>
6912+ <parameters>
6913+ <parameter name="pspec">
6914+ <doc xml:space="preserve"
6915+ filename="gparamspecs.h"
6916+ line="387">a valid #GParamSpec instance</doc>
6917+ </parameter>
6918+ </parameters>
6919+ </function-macro>
6920+ <function-macro name="IS_PARAM_SPEC_POINTER"
6921+ c:identifier="G_IS_PARAM_SPEC_POINTER"
6922+ introspectable="0">
6923+ <doc xml:space="preserve"
6924+ filename="gparamspecs.h"
6925+ line="431">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_POINTER.</doc>
6926+ <source-position filename="gparamspecs.h" line="439"/>
6927+ <parameters>
6928+ <parameter name="pspec">
6929+ <doc xml:space="preserve"
6930+ filename="gparamspecs.h"
6931+ line="433">a valid #GParamSpec instance</doc>
6932+ </parameter>
6933+ </parameters>
6934+ </function-macro>
6935+ <function-macro name="IS_PARAM_SPEC_STRING"
6936+ c:identifier="G_IS_PARAM_SPEC_STRING"
6937+ introspectable="0">
6938+ <doc xml:space="preserve"
6939+ filename="gparamspecs.h"
6940+ line="362">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_STRING.</doc>
6941+ <source-position filename="gparamspecs.h" line="370"/>
6942+ <parameters>
6943+ <parameter name="pspec">
6944+ <doc xml:space="preserve"
6945+ filename="gparamspecs.h"
6946+ line="364">a valid #GParamSpec instance</doc>
6947+ </parameter>
6948+ </parameters>
6949+ </function-macro>
6950+ <function-macro name="IS_PARAM_SPEC_UCHAR"
6951+ c:identifier="G_IS_PARAM_SPEC_UCHAR"
6952+ introspectable="0">
6953+ <doc xml:space="preserve"
6954+ filename="gparamspecs.h"
6955+ line="63">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UCHAR.</doc>
6956+ <source-position filename="gparamspecs.h" line="71"/>
6957+ <parameters>
6958+ <parameter name="pspec">
6959+ <doc xml:space="preserve"
6960+ filename="gparamspecs.h"
6961+ line="65">a valid #GParamSpec instance</doc>
6962+ </parameter>
6963+ </parameters>
6964+ </function-macro>
6965+ <function-macro name="IS_PARAM_SPEC_UINT"
6966+ c:identifier="G_IS_PARAM_SPEC_UINT"
6967+ introspectable="0">
6968+ <doc xml:space="preserve"
6969+ filename="gparamspecs.h"
6970+ line="132">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT.</doc>
6971+ <source-position filename="gparamspecs.h" line="140"/>
6972+ <parameters>
6973+ <parameter name="pspec">
6974+ <doc xml:space="preserve"
6975+ filename="gparamspecs.h"
6976+ line="134">a valid #GParamSpec instance</doc>
6977+ </parameter>
6978+ </parameters>
6979+ </function-macro>
6980+ <function-macro name="IS_PARAM_SPEC_UINT64"
6981+ c:identifier="G_IS_PARAM_SPEC_UINT64"
6982+ introspectable="0">
6983+ <doc xml:space="preserve"
6984+ filename="gparamspecs.h"
6985+ line="224">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UINT64.</doc>
6986+ <source-position filename="gparamspecs.h" line="232"/>
6987+ <parameters>
6988+ <parameter name="pspec">
6989+ <doc xml:space="preserve"
6990+ filename="gparamspecs.h"
6991+ line="226">a valid #GParamSpec instance</doc>
6992+ </parameter>
6993+ </parameters>
6994+ </function-macro>
6995+ <function-macro name="IS_PARAM_SPEC_ULONG"
6996+ c:identifier="G_IS_PARAM_SPEC_ULONG"
6997+ introspectable="0">
6998+ <doc xml:space="preserve"
6999+ filename="gparamspecs.h"
7000+ line="178">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_ULONG.</doc>
7001+ <source-position filename="gparamspecs.h" line="186"/>
7002+ <parameters>
7003+ <parameter name="pspec">
7004+ <doc xml:space="preserve"
7005+ filename="gparamspecs.h"
7006+ line="180">a valid #GParamSpec instance</doc>
7007+ </parameter>
7008+ </parameters>
7009+ </function-macro>
7010+ <function-macro name="IS_PARAM_SPEC_UNICHAR"
7011+ c:identifier="G_IS_PARAM_SPEC_UNICHAR"
7012+ introspectable="0">
7013+ <doc xml:space="preserve"
7014+ filename="gparamspecs.h"
7015+ line="254">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_UNICHAR.</doc>
7016+ <source-position filename="gparamspecs.h" line="262"/>
7017+ <parameters>
7018+ <parameter name="pspec">
7019+ <doc xml:space="preserve"
7020+ filename="gparamspecs.h"
7021+ line="256">a valid #GParamSpec instance</doc>
7022+ </parameter>
7023+ </parameters>
7024+ </function-macro>
7025+ <function-macro name="IS_PARAM_SPEC_VALUE_ARRAY"
7026+ c:identifier="G_IS_PARAM_SPEC_VALUE_ARRAY"
7027+ introspectable="0"
7028+ deprecated="1"
7029+ deprecated-version="2.32">
7030+ <doc xml:space="preserve"
7031+ filename="gparamspecs.h"
7032+ line="456">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VALUE_ARRAY.</doc>
7033+ <doc-deprecated xml:space="preserve">Use #GArray instead of #GValueArray</doc-deprecated>
7034+ <source-position filename="gparamspecs.h" line="466"/>
7035+ <parameters>
7036+ <parameter name="pspec">
7037+ <doc xml:space="preserve"
7038+ filename="gparamspecs.h"
7039+ line="458">a valid #GParamSpec instance</doc>
7040+ </parameter>
7041+ </parameters>
7042+ </function-macro>
7043+ <function-macro name="IS_PARAM_SPEC_VARIANT"
7044+ c:identifier="G_IS_PARAM_SPEC_VARIANT"
7045+ version="2.26"
7046+ introspectable="0">
7047+ <doc xml:space="preserve"
7048+ filename="gparamspecs.h"
7049+ line="564">Checks whether the given #GParamSpec is of type %G_TYPE_PARAM_VARIANT.</doc>
7050+ <source-position filename="gparamspecs.h" line="574"/>
7051+ <parameters>
7052+ <parameter name="pspec">
7053+ <doc xml:space="preserve"
7054+ filename="gparamspecs.h"
7055+ line="566">a #GParamSpec</doc>
7056+ </parameter>
7057+ </parameters>
7058+ </function-macro>
7059+ <function-macro name="IS_SIGNAL_GROUP"
7060+ c:identifier="G_IS_SIGNAL_GROUP"
7061+ introspectable="0">
7062+ <source-position filename="gsignalgroup.h" line="36"/>
7063+ <parameters>
7064+ <parameter name="obj">
7065+ </parameter>
7066+ </parameters>
7067+ </function-macro>
7068+ <function-macro name="IS_TYPE_MODULE"
7069+ c:identifier="G_IS_TYPE_MODULE"
7070+ introspectable="0">
7071+ <source-position filename="gtypemodule.h" line="35"/>
7072+ <parameters>
7073+ <parameter name="module">
7074+ </parameter>
7075+ </parameters>
7076+ </function-macro>
7077+ <function-macro name="IS_TYPE_MODULE_CLASS"
7078+ c:identifier="G_IS_TYPE_MODULE_CLASS"
7079+ introspectable="0">
7080+ <source-position filename="gtypemodule.h" line="36"/>
7081+ <parameters>
7082+ <parameter name="class">
7083+ </parameter>
7084+ </parameters>
7085+ </function-macro>
7086+ <function-macro name="IS_TYPE_PLUGIN"
7087+ c:identifier="G_IS_TYPE_PLUGIN"
7088+ introspectable="0">
7089+ <source-position filename="gtypeplugin.h" line="32"/>
7090+ <parameters>
7091+ <parameter name="inst">
7092+ </parameter>
7093+ </parameters>
7094+ </function-macro>
7095+ <function-macro name="IS_TYPE_PLUGIN_CLASS"
7096+ c:identifier="G_IS_TYPE_PLUGIN_CLASS"
7097+ introspectable="0">
7098+ <source-position filename="gtypeplugin.h" line="33"/>
7099+ <parameters>
7100+ <parameter name="vtable">
7101+ </parameter>
7102+ </parameters>
7103+ </function-macro>
7104+ <function-macro name="IS_VALUE"
7105+ c:identifier="G_IS_VALUE"
7106+ introspectable="0">
7107+ <doc xml:space="preserve"
7108+ filename="gvalue.h"
7109+ line="43">Checks if @value is a valid and initialized #GValue structure.</doc>
7110+ <source-position filename="gvalue.h" line="51"/>
7111+ <parameters>
7112+ <parameter name="value">
7113+ <doc xml:space="preserve"
7114+ filename="gvalue.h"
7115+ line="45">A #GValue structure.</doc>
7116+ </parameter>
7117+ </parameters>
7118+ </function-macro>
7119+ <class name="InitiallyUnowned"
7120+ c:symbol-prefix="initially_unowned"
7121+ c:type="GInitiallyUnowned"
7122+ parent="Object"
7123+ glib:type-name="GInitiallyUnowned"
7124+ glib:get-type="g_initially_unowned_get_type"
7125+ glib:type-struct="InitiallyUnownedClass">
7126+ <doc xml:space="preserve"
7127+ filename="gobject.h"
7128+ line="390">A type for objects that have an initially floating reference.
7129+
7130+All the fields in the `GInitiallyUnowned` structure are private to the
7131+implementation and should never be accessed directly.</doc>
7132+ <source-position filename="gobject.h" line="193"/>
7133+ <field name="g_type_instance">
7134+ <type name="TypeInstance" c:type="GTypeInstance"/>
7135+ </field>
7136+ <field name="ref_count" readable="0" private="1">
7137+ <type name="guint" c:type="guint"/>
7138+ </field>
7139+ <field name="qdata" readable="0" private="1">
7140+ <type name="GLib.Data" c:type="GData*"/>
7141+ </field>
7142+ </class>
7143+ <record name="InitiallyUnownedClass"
7144+ c:type="GInitiallyUnownedClass"
7145+ glib:is-gtype-struct-for="InitiallyUnowned">
7146+ <doc xml:space="preserve"
7147+ filename="gobject.h"
7148+ line="398">The class structure for the GInitiallyUnowned type.</doc>
7149+ <source-position filename="gobject.h" line="193"/>
7150+ <field name="g_type_class">
7151+ <doc xml:space="preserve"
7152+ filename="gobject.h"
7153+ line="275">the parent class</doc>
7154+ <type name="TypeClass" c:type="GTypeClass"/>
7155+ </field>
7156+ <field name="construct_properties" readable="0" private="1">
7157+ <type name="GLib.SList" c:type="GSList*">
7158+ <type name="gpointer" c:type="gpointer"/>
7159+ </type>
7160+ </field>
7161+ <field name="constructor" introspectable="0">
7162+ <callback name="constructor" introspectable="0">
7163+ <source-position filename="gobject.h" line="344"/>
7164+ <return-value>
7165+ <type name="Object" c:type="GObject*"/>
7166+ </return-value>
7167+ <parameters>
7168+ <parameter name="type" transfer-ownership="none">
7169+ <type name="GType" c:type="GType"/>
7170+ </parameter>
7171+ <parameter name="n_construct_properties" transfer-ownership="none">
7172+ <type name="guint" c:type="guint"/>
7173+ </parameter>
7174+ <parameter name="construct_properties" transfer-ownership="none">
7175+ <type name="ObjectConstructParam"
7176+ c:type="GObjectConstructParam*"/>
7177+ </parameter>
7178+ </parameters>
7179+ </callback>
7180+ </field>
7181+ <field name="set_property">
7182+ <callback name="set_property">
7183+ <source-position filename="gobject.h" line="348"/>
7184+ <return-value transfer-ownership="none">
7185+ <type name="none" c:type="void"/>
7186+ </return-value>
7187+ <parameters>
7188+ <parameter name="object" transfer-ownership="none">
7189+ <type name="Object" c:type="GObject*"/>
7190+ </parameter>
7191+ <parameter name="property_id" transfer-ownership="none">
7192+ <type name="guint" c:type="guint"/>
7193+ </parameter>
7194+ <parameter name="value" transfer-ownership="none">
7195+ <type name="Value" c:type="const GValue*"/>
7196+ </parameter>
7197+ <parameter name="pspec" transfer-ownership="none">
7198+ <type name="ParamSpec" c:type="GParamSpec*"/>
7199+ </parameter>
7200+ </parameters>
7201+ </callback>
7202+ </field>
7203+ <field name="get_property">
7204+ <callback name="get_property">
7205+ <source-position filename="gobject.h" line="352"/>
7206+ <return-value transfer-ownership="none">
7207+ <type name="none" c:type="void"/>
7208+ </return-value>
7209+ <parameters>
7210+ <parameter name="object" transfer-ownership="none">
7211+ <type name="Object" c:type="GObject*"/>
7212+ </parameter>
7213+ <parameter name="property_id" transfer-ownership="none">
7214+ <type name="guint" c:type="guint"/>
7215+ </parameter>
7216+ <parameter name="value" transfer-ownership="none">
7217+ <type name="Value" c:type="GValue*"/>
7218+ </parameter>
7219+ <parameter name="pspec" transfer-ownership="none">
7220+ <type name="ParamSpec" c:type="GParamSpec*"/>
7221+ </parameter>
7222+ </parameters>
7223+ </callback>
7224+ </field>
7225+ <field name="dispose">
7226+ <callback name="dispose">
7227+ <source-position filename="gobject.h" line="356"/>
7228+ <return-value transfer-ownership="none">
7229+ <type name="none" c:type="void"/>
7230+ </return-value>
7231+ <parameters>
7232+ <parameter name="object" transfer-ownership="none">
7233+ <type name="Object" c:type="GObject*"/>
7234+ </parameter>
7235+ </parameters>
7236+ </callback>
7237+ </field>
7238+ <field name="finalize">
7239+ <callback name="finalize">
7240+ <source-position filename="gobject.h" line="357"/>
7241+ <return-value transfer-ownership="none">
7242+ <type name="none" c:type="void"/>
7243+ </return-value>
7244+ <parameters>
7245+ <parameter name="object" transfer-ownership="none">
7246+ <type name="Object" c:type="GObject*"/>
7247+ </parameter>
7248+ </parameters>
7249+ </callback>
7250+ </field>
7251+ <field name="dispatch_properties_changed">
7252+ <callback name="dispatch_properties_changed">
7253+ <source-position filename="gobject.h" line="359"/>
7254+ <return-value transfer-ownership="none">
7255+ <type name="none" c:type="void"/>
7256+ </return-value>
7257+ <parameters>
7258+ <parameter name="object" transfer-ownership="none">
7259+ <type name="Object" c:type="GObject*"/>
7260+ </parameter>
7261+ <parameter name="n_pspecs" transfer-ownership="none">
7262+ <type name="guint" c:type="guint"/>
7263+ </parameter>
7264+ <parameter name="pspecs" transfer-ownership="none">
7265+ <type name="ParamSpec" c:type="GParamSpec**"/>
7266+ </parameter>
7267+ </parameters>
7268+ </callback>
7269+ </field>
7270+ <field name="notify">
7271+ <callback name="notify">
7272+ <source-position filename="gobject.h" line="363"/>
7273+ <return-value transfer-ownership="none">
7274+ <type name="none" c:type="void"/>
7275+ </return-value>
7276+ <parameters>
7277+ <parameter name="object" transfer-ownership="none">
7278+ <doc xml:space="preserve"
7279+ filename="gobject-2.0.c"
7280+ line="3422">a #GObject</doc>
7281+ <type name="Object" c:type="GObject*"/>
7282+ </parameter>
7283+ <parameter name="pspec" transfer-ownership="none">
7284+ <type name="ParamSpec" c:type="GParamSpec*"/>
7285+ </parameter>
7286+ </parameters>
7287+ </callback>
7288+ </field>
7289+ <field name="constructed">
7290+ <callback name="constructed">
7291+ <source-position filename="gobject.h" line="367"/>
7292+ <return-value transfer-ownership="none">
7293+ <type name="none" c:type="void"/>
7294+ </return-value>
7295+ <parameters>
7296+ <parameter name="object" transfer-ownership="none">
7297+ <type name="Object" c:type="GObject*"/>
7298+ </parameter>
7299+ </parameters>
7300+ </callback>
7301+ </field>
7302+ <field name="flags" readable="0" private="1">
7303+ <type name="gsize" c:type="gsize"/>
7304+ </field>
7305+ <field name="pdummy" readable="0" private="1">
7306+ <array zero-terminated="0" fixed-size="6">
7307+ <type name="gpointer" c:type="gpointer"/>
7308+ </array>
7309+ </field>
7310+ </record>
7311+ <callback name="InstanceInitFunc" c:type="GInstanceInitFunc">
7312+ <doc xml:space="preserve"
7313+ filename="gtype.h"
7314+ line="931">A callback function used by the type system to initialize a new
7315+instance of a type.
7316+
7317+This function initializes all instance members and allocates any resources
7318+required by it.
7319+
7320+Initialization of a derived instance involves calling all its parent
7321+types instance initializers, so the class member of the instance
7322+is altered during its initialization to always point to the class that
7323+belongs to the type the current initializer was introduced for.
7324+
7325+The extended members of @instance are guaranteed to have been filled with
7326+zeros before this function is called.</doc>
7327+ <source-position filename="gtype.h" line="951"/>
7328+ <return-value transfer-ownership="none">
7329+ <type name="none" c:type="void"/>
7330+ </return-value>
7331+ <parameters>
7332+ <parameter name="instance" transfer-ownership="none">
7333+ <doc xml:space="preserve"
7334+ filename="gtype.h"
7335+ line="933">The instance to initialize</doc>
7336+ <type name="TypeInstance" c:type="GTypeInstance*"/>
7337+ </parameter>
7338+ <parameter name="g_class" transfer-ownership="none">
7339+ <doc xml:space="preserve"
7340+ filename="gtype.h"
7341+ line="934">The class of the type the instance is
7342+ created for</doc>
7343+ <type name="TypeClass" c:type="gpointer"/>
7344+ </parameter>
7345+ </parameters>
7346+ </callback>
7347+ <callback name="InterfaceFinalizeFunc" c:type="GInterfaceFinalizeFunc">
7348+ <doc xml:space="preserve"
7349+ filename="gtype.h"
7350+ line="969">A callback function used by the type system to finalize an interface.
7351+
7352+This function should destroy any internal data and release any resources
7353+allocated by the corresponding GInterfaceInitFunc() function.</doc>
7354+ <source-position filename="gtype.h" line="979"/>
7355+ <return-value transfer-ownership="none">
7356+ <type name="none" c:type="void"/>
7357+ </return-value>
7358+ <parameters>
7359+ <parameter name="g_iface" transfer-ownership="none">
7360+ <doc xml:space="preserve"
7361+ filename="gtype.h"
7362+ line="971">The interface structure to finalize</doc>
7363+ <type name="TypeInterface" c:type="gpointer"/>
7364+ </parameter>
7365+ <parameter name="iface_data"
7366+ transfer-ownership="none"
7367+ nullable="1"
7368+ allow-none="1">
7369+ <doc xml:space="preserve"
7370+ filename="gtype.h"
7371+ line="972">The @interface_data supplied via the #GInterfaceInfo structure</doc>
7372+ <type name="gpointer" c:type="gpointer"/>
7373+ </parameter>
7374+ </parameters>
7375+ </callback>
7376+ <record name="InterfaceInfo" c:type="GInterfaceInfo">
7377+ <doc xml:space="preserve"
7378+ filename="gtype.h"
7379+ line="1115">A structure that provides information to the type system which is
7380+used specifically for managing interface types.</doc>
7381+ <source-position filename="gtype.h" line="1129"/>
7382+ <field name="interface_init" writable="1">
7383+ <doc xml:space="preserve"
7384+ filename="gtype.h"
7385+ line="1117">location of the interface initialization function</doc>
7386+ <type name="InterfaceInitFunc" c:type="GInterfaceInitFunc"/>
7387+ </field>
7388+ <field name="interface_finalize" writable="1">
7389+ <doc xml:space="preserve"
7390+ filename="gtype.h"
7391+ line="1118">location of the interface finalization function</doc>
7392+ <type name="InterfaceFinalizeFunc" c:type="GInterfaceFinalizeFunc"/>
7393+ </field>
7394+ <field name="interface_data" writable="1">
7395+ <doc xml:space="preserve"
7396+ filename="gtype.h"
7397+ line="1119">user-supplied data passed to the interface init/finalize functions</doc>
7398+ <type name="gpointer" c:type="gpointer"/>
7399+ </field>
7400+ </record>
7401+ <callback name="InterfaceInitFunc" c:type="GInterfaceInitFunc">
7402+ <doc xml:space="preserve"
7403+ filename="gtype.h"
7404+ line="953">A callback function used by the type system to initialize a new
7405+interface.
7406+
7407+This function should initialize all internal data and* allocate any
7408+resources required by the interface.
7409+
7410+The members of @iface_data are guaranteed to have been filled with
7411+zeros before this function is called.</doc>
7412+ <source-position filename="gtype.h" line="967"/>
7413+ <return-value transfer-ownership="none">
7414+ <type name="none" c:type="void"/>
7415+ </return-value>
7416+ <parameters>
7417+ <parameter name="g_iface" transfer-ownership="none">
7418+ <doc xml:space="preserve"
7419+ filename="gtype.h"
7420+ line="955">The interface structure to initialize</doc>
7421+ <type name="TypeInterface" c:type="gpointer"/>
7422+ </parameter>
7423+ <parameter name="iface_data"
7424+ transfer-ownership="none"
7425+ nullable="1"
7426+ allow-none="1">
7427+ <doc xml:space="preserve"
7428+ filename="gtype.h"
7429+ line="956">The @interface_data supplied via the #GInterfaceInfo structure</doc>
7430+ <type name="gpointer" c:type="gpointer"/>
7431+ </parameter>
7432+ </parameters>
7433+ </callback>
7434+ <function-macro name="OBJECT" c:identifier="G_OBJECT" introspectable="0">
7435+ <doc xml:space="preserve"
7436+ filename="gobject.h"
7437+ line="43">Casts a #GObject or derived pointer into a (GObject*) pointer.
7438+
7439+Depending on the current debugging level, this function may invoke
7440+certain runtime checks to identify invalid casts.</doc>
7441+ <source-position filename="gobject.h" line="52"/>
7442+ <parameters>
7443+ <parameter name="object">
7444+ <doc xml:space="preserve"
7445+ filename="gobject.h"
7446+ line="45">Object which is subject to casting.</doc>
7447+ </parameter>
7448+ </parameters>
7449+ </function-macro>
7450+ <function-macro name="OBJECT_CLASS"
7451+ c:identifier="G_OBJECT_CLASS"
7452+ introspectable="0">
7453+ <doc xml:space="preserve"
7454+ filename="gobject.h"
7455+ line="53">Casts a derived #GObjectClass structure into a #GObjectClass structure.</doc>
7456+ <source-position filename="gobject.h" line="59"/>
7457+ <parameters>
7458+ <parameter name="class">
7459+ <doc xml:space="preserve"
7460+ filename="gobject.h"
7461+ line="55">a valid #GObjectClass</doc>
7462+ </parameter>
7463+ </parameters>
7464+ </function-macro>
7465+ <function-macro name="OBJECT_CLASS_NAME"
7466+ c:identifier="G_OBJECT_CLASS_NAME"
7467+ introspectable="0">
7468+ <doc xml:space="preserve"
7469+ filename="gobject.h"
7470+ line="116">Return the name of a class structure's type.</doc>
7471+ <source-position filename="gobject.h" line="125"/>
7472+ <parameters>
7473+ <parameter name="class">
7474+ <doc xml:space="preserve"
7475+ filename="gobject.h"
7476+ line="118">a valid #GObjectClass</doc>
7477+ </parameter>
7478+ </parameters>
7479+ </function-macro>
7480+ <function-macro name="OBJECT_CLASS_TYPE"
7481+ c:identifier="G_OBJECT_CLASS_TYPE"
7482+ introspectable="0">
7483+ <doc xml:space="preserve"
7484+ filename="gobject.h"
7485+ line="107">Get the type id of a class structure.</doc>
7486+ <source-position filename="gobject.h" line="115"/>
7487+ <parameters>
7488+ <parameter name="class">
7489+ <doc xml:space="preserve"
7490+ filename="gobject.h"
7491+ line="109">a valid #GObjectClass</doc>
7492+ </parameter>
7493+ </parameters>
7494+ </function-macro>
7495+ <function-macro name="OBJECT_GET_CLASS"
7496+ c:identifier="G_OBJECT_GET_CLASS"
7497+ introspectable="0">
7498+ <doc xml:space="preserve"
7499+ filename="gobject.h"
7500+ line="79">Get the class structure associated to a #GObject instance.</doc>
7501+ <source-position filename="gobject.h" line="87"/>
7502+ <parameters>
7503+ <parameter name="object">
7504+ <doc xml:space="preserve"
7505+ filename="gobject.h"
7506+ line="81">a #GObject instance.</doc>
7507+ </parameter>
7508+ </parameters>
7509+ </function-macro>
7510+ <function-macro name="OBJECT_TYPE"
7511+ c:identifier="G_OBJECT_TYPE"
7512+ introspectable="0">
7513+ <doc xml:space="preserve"
7514+ filename="gobject.h"
7515+ line="88">Get the type id of an object.</doc>
7516+ <source-position filename="gobject.h" line="96"/>
7517+ <parameters>
7518+ <parameter name="object">
7519+ <doc xml:space="preserve"
7520+ filename="gobject.h"
7521+ line="90">Object to return the type id for.</doc>
7522+ </parameter>
7523+ </parameters>
7524+ </function-macro>
7525+ <function-macro name="OBJECT_TYPE_NAME"
7526+ c:identifier="G_OBJECT_TYPE_NAME"
7527+ introspectable="0">
7528+ <doc xml:space="preserve"
7529+ filename="gobject.h"
7530+ line="97">Get the name of an object's type.</doc>
7531+ <source-position filename="gobject.h" line="106"/>
7532+ <parameters>
7533+ <parameter name="object">
7534+ <doc xml:space="preserve"
7535+ filename="gobject.h"
7536+ line="99">Object to return the type name for.</doc>
7537+ </parameter>
7538+ </parameters>
7539+ </function-macro>
7540+ <function-macro name="OBJECT_WARN_INVALID_PROPERTY_ID"
7541+ c:identifier="G_OBJECT_WARN_INVALID_PROPERTY_ID"
7542+ introspectable="0">
7543+ <doc xml:space="preserve"
7544+ filename="gobject.h"
7545+ line="689">This macro should be used to emit a standard warning about unexpected
7546+properties in set_property() and get_property() implementations.</doc>
7547+ <source-position filename="gobject.h" line="698"/>
7548+ <parameters>
7549+ <parameter name="object">
7550+ <doc xml:space="preserve"
7551+ filename="gobject.h"
7552+ line="691">the #GObject on which set_property() or get_property() was called</doc>
7553+ </parameter>
7554+ <parameter name="property_id">
7555+ <doc xml:space="preserve"
7556+ filename="gobject.h"
7557+ line="692">the numeric id of the property</doc>
7558+ </parameter>
7559+ <parameter name="pspec">
7560+ <doc xml:space="preserve"
7561+ filename="gobject.h"
7562+ line="693">the #GParamSpec of the property</doc>
7563+ </parameter>
7564+ </parameters>
7565+ </function-macro>
7566+ <function-macro name="OBJECT_WARN_INVALID_PSPEC"
7567+ c:identifier="G_OBJECT_WARN_INVALID_PSPEC"
7568+ introspectable="0">
7569+ <source-position filename="gobject.h" line="676"/>
7570+ <parameters>
7571+ <parameter name="object">
7572+ </parameter>
7573+ <parameter name="pname">
7574+ </parameter>
7575+ <parameter name="property_id">
7576+ </parameter>
7577+ <parameter name="pspec">
7578+ </parameter>
7579+ </parameters>
7580+ </function-macro>
7581+ <class name="Object"
7582+ c:symbol-prefix="object"
7583+ c:type="GObject"
7584+ glib:type-name="GObject"
7585+ glib:get-type="g_object_get_type"
7586+ glib:type-struct="ObjectClass">
7587+ <doc xml:space="preserve"
7588+ filename="gobject.h"
7589+ line="249">The base object type.
7590+
7591+All the fields in the `GObject` structure are private to the implementation
7592+and should never be accessed directly.
7593+
7594+Since GLib 2.72, all #GObjects are guaranteed to be aligned to at least the
7595+alignment of the largest basic GLib type (typically this is #guint64 or
7596+#gdouble). If you need larger alignment for an element in a #GObject, you
7597+should allocate it on the heap (aligned), or arrange for your #GObject to be
7598+appropriately padded. This guarantee applies to the #GObject (or derived)
7599+struct, the #GObjectClass (or derived) struct, and any private data allocated
7600+by G_ADD_PRIVATE().</doc>
7601+ <source-position filename="gobject.h" line="374"/>
7602+ <constructor name="new" c:identifier="g_object_new" introspectable="0">
7603+ <doc xml:space="preserve"
7604+ filename="gobject-2.0.c"
7605+ line="3327">Creates a new instance of a #GObject subtype and sets its properties.
7606+
7607+Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
7608+which are not explicitly specified are set to their default values. Any
7609+private data for the object is guaranteed to be initialized with zeros, as
7610+per g_type_create_instance().
7611+
7612+Note that in C, small integer types in variable argument lists are promoted
7613+up to #gint or #guint as appropriate, and read back accordingly. #gint is 32
7614+bits on every platform on which GLib is currently supported. This means that
7615+you can use C expressions of type #gint with g_object_new() and properties of
7616+type #gint or #guint or smaller. Specifically, you can use integer literals
7617+with these property types.
7618+
7619+When using property types of #gint64 or #guint64, you must ensure that the
7620+value that you provide is 64 bit. This means that you should use a cast or
7621+make use of the %G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
7622+
7623+Similarly, #gfloat is promoted to #gdouble, so you must ensure that the value
7624+you provide is a #gdouble, even for a property of type #gfloat.
7625+
7626+Since GLib 2.72, all #GObjects are guaranteed to be aligned to at least the
7627+alignment of the largest basic GLib type (typically this is #guint64 or
7628+#gdouble). If you need larger alignment for an element in a #GObject, you
7629+should allocate it on the heap (aligned), or arrange for your #GObject to be
7630+appropriately padded.</doc>
7631+ <source-position filename="gobject.h" line="440"/>
7632+ <return-value transfer-ownership="full">
7633+ <doc xml:space="preserve"
7634+ filename="gobject-2.0.c"
7635+ line="3361">a new instance of
7636+ @object_type</doc>
7637+ <type name="Object" c:type="gpointer"/>
7638+ </return-value>
7639+ <parameters>
7640+ <parameter name="object_type" transfer-ownership="none">
7641+ <doc xml:space="preserve"
7642+ filename="gobject-2.0.c"
7643+ line="3329">the type id of the #GObject subtype to instantiate</doc>
7644+ <type name="GType" c:type="GType"/>
7645+ </parameter>
7646+ <parameter name="first_property_name" transfer-ownership="none">
7647+ <doc xml:space="preserve"
7648+ filename="gobject-2.0.c"
7649+ line="3330">the name of the first property</doc>
7650+ <type name="utf8" c:type="const gchar*"/>
7651+ </parameter>
7652+ <parameter name="..." transfer-ownership="none">
7653+ <doc xml:space="preserve"
7654+ filename="gobject-2.0.c"
7655+ line="3331">the value of the first property, followed optionally by more
7656+ name/value pairs, followed by %NULL</doc>
7657+ <varargs/>
7658+ </parameter>
7659+ </parameters>
7660+ </constructor>
7661+ <constructor name="new_valist"
7662+ c:identifier="g_object_new_valist"
7663+ introspectable="0">
7664+ <doc xml:space="preserve"
7665+ filename="gobject-2.0.c"
7666+ line="3366">Creates a new instance of a #GObject subtype and sets its properties.
7667+
7668+Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
7669+which are not explicitly specified are set to their default values.</doc>
7670+ <source-position filename="gobject.h" line="459"/>
7671+ <return-value transfer-ownership="full">
7672+ <doc xml:space="preserve"
7673+ filename="gobject-2.0.c"
7674+ line="3378">a new instance of @object_type</doc>
7675+ <type name="Object" c:type="GObject*"/>
7676+ </return-value>
7677+ <parameters>
7678+ <parameter name="object_type" transfer-ownership="none">
7679+ <doc xml:space="preserve"
7680+ filename="gobject-2.0.c"
7681+ line="3368">the type id of the #GObject subtype to instantiate</doc>
7682+ <type name="GType" c:type="GType"/>
7683+ </parameter>
7684+ <parameter name="first_property_name" transfer-ownership="none">
7685+ <doc xml:space="preserve"
7686+ filename="gobject-2.0.c"
7687+ line="3369">the name of the first property</doc>
7688+ <type name="utf8" c:type="const gchar*"/>
7689+ </parameter>
7690+ <parameter name="var_args" transfer-ownership="none">
7691+ <doc xml:space="preserve"
7692+ filename="gobject-2.0.c"
7693+ line="3370">the value of the first property, followed optionally by more
7694+ name/value pairs, followed by %NULL</doc>
7695+ <type name="va_list" c:type="va_list"/>
7696+ </parameter>
7697+ </parameters>
7698+ </constructor>
7699+ <constructor name="new_with_properties"
7700+ c:identifier="g_object_new_with_properties"
7701+ version="2.54"
7702+ introspectable="0">
7703+ <doc xml:space="preserve"
7704+ filename="gobject-2.0.c"
7705+ line="3382">Creates a new instance of a #GObject subtype and sets its properties using
7706+the provided arrays. Both arrays must have exactly @n_properties elements,
7707+and the names and values correspond by index.
7708+
7709+Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
7710+which are not explicitly specified are set to their default values.</doc>
7711+ <source-position filename="gobject.h" line="444"/>
7712+ <return-value transfer-ownership="full">
7713+ <doc xml:space="preserve"
7714+ filename="gobject-2.0.c"
7715+ line="3396">a new instance of
7716+@object_type</doc>
7717+ <type name="Object" c:type="GObject*"/>
7718+ </return-value>
7719+ <parameters>
7720+ <parameter name="object_type" transfer-ownership="none">
7721+ <doc xml:space="preserve"
7722+ filename="gobject-2.0.c"
7723+ line="3384">the object type to instantiate</doc>
7724+ <type name="GType" c:type="GType"/>
7725+ </parameter>
7726+ <parameter name="n_properties" transfer-ownership="none">
7727+ <doc xml:space="preserve"
7728+ filename="gobject-2.0.c"
7729+ line="3385">the number of properties</doc>
7730+ <type name="guint" c:type="guint"/>
7731+ </parameter>
7732+ <parameter name="names" transfer-ownership="none">
7733+ <doc xml:space="preserve"
7734+ filename="gobject-2.0.c"
7735+ line="3386">the names of each property to be set</doc>
7736+ <array length="1" zero-terminated="0" c:type="const char**">
7737+ <type name="utf8" c:type="char*"/>
7738+ </array>
7739+ </parameter>
7740+ <parameter name="values" transfer-ownership="none">
7741+ <doc xml:space="preserve"
7742+ filename="gobject-2.0.c"
7743+ line="3387">the values of each property to be set</doc>
7744+ <array length="1" zero-terminated="0" c:type="const GValue*">
7745+ <type name="Value" c:type="GValue"/>
7746+ </array>
7747+ </parameter>
7748+ </parameters>
7749+ </constructor>
7750+ <constructor name="newv"
7751+ c:identifier="g_object_newv"
7752+ deprecated="1"
7753+ deprecated-version="2.54">
7754+ <doc xml:space="preserve"
7755+ filename="gobject-2.0.c"
7756+ line="3402">Creates a new instance of a #GObject subtype and sets its properties.
7757+
7758+Construction parameters (see %G_PARAM_CONSTRUCT, %G_PARAM_CONSTRUCT_ONLY)
7759+which are not explicitly specified are set to their default values.</doc>
7760+ <doc-deprecated xml:space="preserve">Use g_object_new_with_properties() instead.
7761+deprecated. See #GParameter for more information.</doc-deprecated>
7762+ <source-position filename="gobject.h" line="452"/>
7763+ <return-value transfer-ownership="full">
7764+ <doc xml:space="preserve"
7765+ filename="gobject-2.0.c"
7766+ line="3413">a new instance of
7767+@object_type</doc>
7768+ <type name="Object" c:type="gpointer"/>
7769+ </return-value>
7770+ <parameters>
7771+ <parameter name="object_type" transfer-ownership="none">
7772+ <doc xml:space="preserve"
7773+ filename="gobject-2.0.c"
7774+ line="3404">the type id of the #GObject subtype to instantiate</doc>
7775+ <type name="GType" c:type="GType"/>
7776+ </parameter>
7777+ <parameter name="n_parameters" transfer-ownership="none">
7778+ <doc xml:space="preserve"
7779+ filename="gobject-2.0.c"
7780+ line="3405">the length of the @parameters array</doc>
7781+ <type name="guint" c:type="guint"/>
7782+ </parameter>
7783+ <parameter name="parameters" transfer-ownership="none">
7784+ <doc xml:space="preserve"
7785+ filename="gobject-2.0.c"
7786+ line="3406">an array of #GParameter</doc>
7787+ <array length="1" zero-terminated="0" c:type="GParameter*">
7788+ <type name="Parameter" c:type="GParameter"/>
7789+ </array>
7790+ </parameter>
7791+ </parameters>
7792+ </constructor>
7793+ <function name="compat_control" c:identifier="g_object_compat_control">
7794+ <source-position filename="gobject.h" line="672"/>
7795+ <return-value transfer-ownership="none">
7796+ <type name="gsize" c:type="gsize"/>
7797+ </return-value>
7798+ <parameters>
7799+ <parameter name="what" transfer-ownership="none">
7800+ <type name="gsize" c:type="gsize"/>
7801+ </parameter>
7802+ <parameter name="data"
7803+ transfer-ownership="none"
7804+ nullable="1"
7805+ allow-none="1">
7806+ <type name="gpointer" c:type="gpointer"/>
7807+ </parameter>
7808+ </parameters>
7809+ </function>
7810+ <function name="interface_find_property"
7811+ c:identifier="g_object_interface_find_property"
7812+ version="2.4">
7813+ <doc xml:space="preserve"
7814+ filename="gobject-2.0.c"
7815+ line="3249">Find the #GParamSpec with the given name for an
7816+interface. Generally, the interface vtable passed in as @g_iface
7817+will be the default vtable from g_type_default_interface_ref(), or,
7818+if you know the interface has already been loaded,
7819+g_type_default_interface_peek().</doc>
7820+ <source-position filename="gobject.h" line="431"/>
7821+ <return-value transfer-ownership="none">
7822+ <doc xml:space="preserve"
7823+ filename="gobject-2.0.c"
7824+ line="3262">the #GParamSpec for the property of the
7825+ interface with the name @property_name, or %NULL if no
7826+ such property exists.</doc>
7827+ <type name="ParamSpec" c:type="GParamSpec*"/>
7828+ </return-value>
7829+ <parameters>
7830+ <parameter name="g_iface" transfer-ownership="none">
7831+ <doc xml:space="preserve"
7832+ filename="gobject-2.0.c"
7833+ line="3251">any interface vtable for the
7834+ interface, or the default vtable for the interface</doc>
7835+ <type name="TypeInterface" c:type="gpointer"/>
7836+ </parameter>
7837+ <parameter name="property_name" transfer-ownership="none">
7838+ <doc xml:space="preserve"
7839+ filename="gobject-2.0.c"
7840+ line="3253">name of a property to look up.</doc>
7841+ <type name="utf8" c:type="const gchar*"/>
7842+ </parameter>
7843+ </parameters>
7844+ </function>
7845+ <function name="interface_install_property"
7846+ c:identifier="g_object_interface_install_property"
7847+ version="2.4">
7848+ <doc xml:space="preserve"
7849+ filename="gobject-2.0.c"
7850+ line="3268">Add a property to an interface; this is only useful for interfaces
7851+that are added to GObject-derived types. Adding a property to an
7852+interface forces all objects classes with that interface to have a
7853+compatible property. The compatible property could be a newly
7854+created #GParamSpec, but normally
7855+g_object_class_override_property() will be used so that the object
7856+class only needs to provide an implementation and inherits the
7857+property description, default value, bounds, and so forth from the
7858+interface property.
7859+
7860+This function is meant to be called from the interface's default
7861+vtable initialization function (the @class_init member of
7862+#GTypeInfo.) It must not be called after after @class_init has
7863+been called for any object types implementing this interface.
7864+
7865+If @pspec is a floating reference, it will be consumed.</doc>
7866+ <source-position filename="gobject.h" line="428"/>
7867+ <return-value transfer-ownership="none">
7868+ <type name="none" c:type="void"/>
7869+ </return-value>
7870+ <parameters>
7871+ <parameter name="g_iface" transfer-ownership="none">
7872+ <doc xml:space="preserve"
7873+ filename="gobject-2.0.c"
7874+ line="3270">any interface vtable for the
7875+ interface, or the default
7876+ vtable for the interface.</doc>
7877+ <type name="TypeInterface" c:type="gpointer"/>
7878+ </parameter>
7879+ <parameter name="pspec" transfer-ownership="none">
7880+ <doc xml:space="preserve"
7881+ filename="gobject-2.0.c"
7882+ line="3273">the #GParamSpec for the new property</doc>
7883+ <type name="ParamSpec" c:type="GParamSpec*"/>
7884+ </parameter>
7885+ </parameters>
7886+ </function>
7887+ <function name="interface_list_properties"
7888+ c:identifier="g_object_interface_list_properties"
7889+ version="2.4">
7890+ <doc xml:space="preserve"
7891+ filename="gobject-2.0.c"
7892+ line="3296">Lists the properties of an interface.Generally, the interface
7893+vtable passed in as @g_iface will be the default vtable from
7894+g_type_default_interface_ref(), or, if you know the interface has
7895+already been loaded, g_type_default_interface_peek().</doc>
7896+ <source-position filename="gobject.h" line="434"/>
7897+ <return-value transfer-ownership="container">
7898+ <doc xml:space="preserve"
7899+ filename="gobject-2.0.c"
7900+ line="3308">a
7901+ pointer to an array of pointers to #GParamSpec
7902+ structures. The paramspecs are owned by GLib, but the
7903+ array should be freed with g_free() when you are done with
7904+ it.</doc>
7905+ <array length="1" zero-terminated="0" c:type="GParamSpec**">
7906+ <type name="ParamSpec" c:type="GParamSpec*"/>
7907+ </array>
7908+ </return-value>
7909+ <parameters>
7910+ <parameter name="g_iface" transfer-ownership="none">
7911+ <doc xml:space="preserve"
7912+ filename="gobject-2.0.c"
7913+ line="3298">any interface vtable for the
7914+ interface, or the default vtable for the interface</doc>
7915+ <type name="TypeInterface" c:type="gpointer"/>
7916+ </parameter>
7917+ <parameter name="n_properties_p"
7918+ direction="out"
7919+ caller-allocates="0"
7920+ transfer-ownership="full">
7921+ <doc xml:space="preserve"
7922+ filename="gobject-2.0.c"
7923+ line="3300">location to store number of properties returned.</doc>
7924+ <type name="guint" c:type="guint*"/>
7925+ </parameter>
7926+ </parameters>
7927+ </function>
7928+ <virtual-method name="constructed">
7929+ <source-position filename="gobject.h" line="367"/>
7930+ <return-value transfer-ownership="none">
7931+ <type name="none" c:type="void"/>
7932+ </return-value>
7933+ <parameters>
7934+ <instance-parameter name="object" transfer-ownership="none">
7935+ <type name="Object" c:type="GObject*"/>
7936+ </instance-parameter>
7937+ </parameters>
7938+ </virtual-method>
7939+ <virtual-method name="dispatch_properties_changed">
7940+ <source-position filename="gobject.h" line="359"/>
7941+ <return-value transfer-ownership="none">
7942+ <type name="none" c:type="void"/>
7943+ </return-value>
7944+ <parameters>
7945+ <instance-parameter name="object" transfer-ownership="none">
7946+ <type name="Object" c:type="GObject*"/>
7947+ </instance-parameter>
7948+ <parameter name="n_pspecs" transfer-ownership="none">
7949+ <type name="guint" c:type="guint"/>
7950+ </parameter>
7951+ <parameter name="pspecs" transfer-ownership="none">
7952+ <type name="ParamSpec" c:type="GParamSpec**"/>
7953+ </parameter>
7954+ </parameters>
7955+ </virtual-method>
7956+ <virtual-method name="dispose">
7957+ <source-position filename="gobject.h" line="356"/>
7958+ <return-value transfer-ownership="none">
7959+ <type name="none" c:type="void"/>
7960+ </return-value>
7961+ <parameters>
7962+ <instance-parameter name="object" transfer-ownership="none">
7963+ <type name="Object" c:type="GObject*"/>
7964+ </instance-parameter>
7965+ </parameters>
7966+ </virtual-method>
7967+ <virtual-method name="finalize">
7968+ <source-position filename="gobject.h" line="357"/>
7969+ <return-value transfer-ownership="none">
7970+ <type name="none" c:type="void"/>
7971+ </return-value>
7972+ <parameters>
7973+ <instance-parameter name="object" transfer-ownership="none">
7974+ <type name="Object" c:type="GObject*"/>
7975+ </instance-parameter>
7976+ </parameters>
7977+ </virtual-method>
7978+ <virtual-method name="get_property">
7979+ <source-position filename="gobject.h" line="352"/>
7980+ <return-value transfer-ownership="none">
7981+ <type name="none" c:type="void"/>
7982+ </return-value>
7983+ <parameters>
7984+ <instance-parameter name="object" transfer-ownership="none">
7985+ <type name="Object" c:type="GObject*"/>
7986+ </instance-parameter>
7987+ <parameter name="property_id" transfer-ownership="none">
7988+ <type name="guint" c:type="guint"/>
7989+ </parameter>
7990+ <parameter name="value" transfer-ownership="none">
7991+ <type name="Value" c:type="GValue*"/>
7992+ </parameter>
7993+ <parameter name="pspec" transfer-ownership="none">
7994+ <type name="ParamSpec" c:type="GParamSpec*"/>
7995+ </parameter>
7996+ </parameters>
7997+ </virtual-method>
7998+ <virtual-method name="notify" invoker="notify">
7999+ <doc xml:space="preserve"
8000+ filename="gobject-2.0.c"
8001+ line="3420">Emits a "notify" signal for the property @property_name on @object.
8002+
8003+When possible, eg. when signaling a property change from within the class
8004+that registered the property, you should use g_object_notify_by_pspec()
8005+instead.
8006+
8007+Note that emission of the notify signal may be blocked with
8008+g_object_freeze_notify(). In this case, the signal emissions are queued
8009+and will be emitted (in reverse order) when g_object_thaw_notify() is
8010+called.</doc>
8011+ <source-position filename="gobject.h" line="363"/>
8012+ <return-value transfer-ownership="none">
8013+ <type name="none" c:type="void"/>
8014+ </return-value>
8015+ <parameters>
8016+ <instance-parameter name="object" transfer-ownership="none">
8017+ <doc xml:space="preserve"
8018+ filename="gobject-2.0.c"
8019+ line="3422">a #GObject</doc>
8020+ <type name="Object" c:type="GObject*"/>
8021+ </instance-parameter>
8022+ <parameter name="pspec" transfer-ownership="none">
8023+ <type name="ParamSpec" c:type="GParamSpec*"/>
8024+ </parameter>
8025+ </parameters>
8026+ </virtual-method>
8027+ <virtual-method name="set_property">
8028+ <source-position filename="gobject.h" line="348"/>
8029+ <return-value transfer-ownership="none">
8030+ <type name="none" c:type="void"/>
8031+ </return-value>
8032+ <parameters>
8033+ <instance-parameter name="object" transfer-ownership="none">
8034+ <type name="Object" c:type="GObject*"/>
8035+ </instance-parameter>
8036+ <parameter name="property_id" transfer-ownership="none">
8037+ <type name="guint" c:type="guint"/>
8038+ </parameter>
8039+ <parameter name="value" transfer-ownership="none">
8040+ <type name="Value" c:type="const GValue*"/>
8041+ </parameter>
8042+ <parameter name="pspec" transfer-ownership="none">
8043+ <type name="ParamSpec" c:type="GParamSpec*"/>
8044+ </parameter>
8045+ </parameters>
8046+ </virtual-method>
8047+ <method name="add_toggle_ref"
8048+ c:identifier="g_object_add_toggle_ref"
8049+ version="2.8"
8050+ introspectable="0">
8051+ <doc xml:space="preserve"
8052+ filename="gobject-2.0.c"
8053+ line="2663">Increases the reference count of the object by one and sets a
8054+callback to be called when all other references to the object are
8055+dropped, or when this is already the last reference to the object
8056+and another reference is established.
8057+
8058+This functionality is intended for binding @object to a proxy
8059+object managed by another memory manager. This is done with two
8060+paired references: the strong reference added by
8061+g_object_add_toggle_ref() and a reverse reference to the proxy
8062+object which is either a strong reference or weak reference.
8063+
8064+The setup is that when there are no other references to @object,
8065+only a weak reference is held in the reverse direction from @object
8066+to the proxy object, but when there are other references held to
8067+@object, a strong reference is held. The @notify callback is called
8068+when the reference from @object to the proxy object should be
8069+"toggled" from strong to weak (@is_last_ref true) or weak to strong
8070+(@is_last_ref false).
8071+
8072+Since a (normal) reference must be held to the object before
8073+calling g_object_add_toggle_ref(), the initial state of the reverse
8074+link is always strong.
8075+
8076+Multiple toggle references may be added to the same gobject,
8077+however if there are multiple toggle references to an object, none
8078+of them will ever be notified until all but one are removed. For
8079+this reason, you should only ever use a toggle reference if there
8080+is important state in the proxy object.</doc>
8081+ <source-position filename="gobject.h" line="564"/>
8082+ <return-value transfer-ownership="none">
8083+ <type name="none" c:type="void"/>
8084+ </return-value>
8085+ <parameters>
8086+ <instance-parameter name="object" transfer-ownership="none">
8087+ <doc xml:space="preserve"
8088+ filename="gobject-2.0.c"
8089+ line="2665">a #GObject</doc>
8090+ <type name="Object" c:type="GObject*"/>
8091+ </instance-parameter>
8092+ <parameter name="notify" transfer-ownership="none" closure="1">
8093+ <doc xml:space="preserve"
8094+ filename="gobject-2.0.c"
8095+ line="2666">a function to call when this reference is the
8096+ last reference to the object, or is no longer
8097+ the last reference.</doc>
8098+ <type name="ToggleNotify" c:type="GToggleNotify"/>
8099+ </parameter>
8100+ <parameter name="data"
8101+ transfer-ownership="none"
8102+ nullable="1"
8103+ allow-none="1">
8104+ <doc xml:space="preserve"
8105+ filename="gobject-2.0.c"
8106+ line="2669">data to pass to @notify</doc>
8107+ <type name="gpointer" c:type="gpointer"/>
8108+ </parameter>
8109+ </parameters>
8110+ </method>
8111+ <method name="add_weak_pointer"
8112+ c:identifier="g_object_add_weak_pointer"
8113+ introspectable="0">
8114+ <doc xml:space="preserve"
8115+ filename="gobject-2.0.c"
8116+ line="2704">Adds a weak reference from weak_pointer to @object to indicate that
8117+the pointer located at @weak_pointer_location is only valid during
8118+the lifetime of @object. When the @object is finalized,
8119+@weak_pointer will be set to %NULL.
8120+
8121+Note that as with g_object_weak_ref(), the weak references created by
8122+this method are not thread-safe: they cannot safely be used in one
8123+thread if the object's last g_object_unref() might happen in another
8124+thread. Use #GWeakRef if thread-safety is required.</doc>
8125+ <source-position filename="gobject.h" line="533"/>
8126+ <return-value transfer-ownership="none">
8127+ <type name="none" c:type="void"/>
8128+ </return-value>
8129+ <parameters>
8130+ <instance-parameter name="object" transfer-ownership="none">
8131+ <doc xml:space="preserve"
8132+ filename="gobject-2.0.c"
8133+ line="2706">The object that should be weak referenced.</doc>
8134+ <type name="Object" c:type="GObject*"/>
8135+ </instance-parameter>
8136+ <parameter name="weak_pointer_location"
8137+ direction="inout"
8138+ caller-allocates="0"
8139+ transfer-ownership="full">
8140+ <doc xml:space="preserve"
8141+ filename="gobject-2.0.c"
8142+ line="2707">The memory address
8143+ of a pointer.</doc>
8144+ <type name="gpointer" c:type="gpointer*"/>
8145+ </parameter>
8146+ </parameters>
8147+ </method>
8148+ <method name="bind_property"
8149+ c:identifier="g_object_bind_property"
8150+ version="2.26">
8151+ <doc xml:space="preserve"
8152+ filename="gobject-2.0.c"
8153+ line="2722">Creates a binding between @source_property on @source and @target_property
8154+on @target.
8155+
8156+Whenever the @source_property is changed the @target_property is
8157+updated using the same value. For instance:
8158+
8159+|[&lt;!-- language="C" --&gt;
8160+ g_object_bind_property (action, "active", widget, "sensitive", 0);
8161+]|
8162+
8163+Will result in the "sensitive" property of the widget #GObject instance to be
8164+updated with the same value of the "active" property of the action #GObject
8165+instance.
8166+
8167+If @flags contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
8168+if @target_property on @target changes then the @source_property on @source
8169+will be updated as well.
8170+
8171+The binding will automatically be removed when either the @source or the
8172+@target instances are finalized. To remove the binding without affecting the
8173+@source and the @target you can just call g_object_unref() on the returned
8174+#GBinding instance.
8175+
8176+Removing the binding by calling g_object_unref() on it must only be done if
8177+the binding, @source and @target are only used from a single thread and it
8178+is clear that both @source and @target outlive the binding. Especially it
8179+is not safe to rely on this if the binding, @source or @target can be
8180+finalized from different threads. Keep another reference to the binding and
8181+use g_binding_unbind() instead to be on the safe side.
8182+
8183+A #GObject can have multiple bindings.</doc>
8184+ <source-position filename="gbinding.h" line="128"/>
8185+ <return-value transfer-ownership="none">
8186+ <doc xml:space="preserve"
8187+ filename="gobject-2.0.c"
8188+ line="2762">the #GBinding instance representing the
8189+ binding between the two #GObject instances. The binding is released
8190+ whenever the #GBinding reference count reaches zero.</doc>
8191+ <type name="Binding" c:type="GBinding*"/>
8192+ </return-value>
8193+ <parameters>
8194+ <instance-parameter name="source" transfer-ownership="none">
8195+ <doc xml:space="preserve"
8196+ filename="gobject-2.0.c"
8197+ line="2724">the source #GObject</doc>
8198+ <type name="Object" c:type="gpointer"/>
8199+ </instance-parameter>
8200+ <parameter name="source_property" transfer-ownership="none">
8201+ <doc xml:space="preserve"
8202+ filename="gobject-2.0.c"
8203+ line="2725">the property on @source to bind</doc>
8204+ <type name="utf8" c:type="const gchar*"/>
8205+ </parameter>
8206+ <parameter name="target" transfer-ownership="none">
8207+ <doc xml:space="preserve"
8208+ filename="gobject-2.0.c"
8209+ line="2726">the target #GObject</doc>
8210+ <type name="Object" c:type="gpointer"/>
8211+ </parameter>
8212+ <parameter name="target_property" transfer-ownership="none">
8213+ <doc xml:space="preserve"
8214+ filename="gobject-2.0.c"
8215+ line="2727">the property on @target to bind</doc>
8216+ <type name="utf8" c:type="const gchar*"/>
8217+ </parameter>
8218+ <parameter name="flags" transfer-ownership="none">
8219+ <doc xml:space="preserve"
8220+ filename="gobject-2.0.c"
8221+ line="2728">flags to pass to #GBinding</doc>
8222+ <type name="BindingFlags" c:type="GBindingFlags"/>
8223+ </parameter>
8224+ </parameters>
8225+ </method>
8226+ <method name="bind_property_full"
8227+ c:identifier="g_object_bind_property_full"
8228+ shadowed-by="bind_property_with_closures"
8229+ version="2.26">
8230+ <doc xml:space="preserve"
8231+ filename="gobject-2.0.c"
8232+ line="2769">Complete version of g_object_bind_property().
8233+
8234+Creates a binding between @source_property on @source and @target_property
8235+on @target, allowing you to set the transformation functions to be used by
8236+the binding.
8237+
8238+If @flags contains %G_BINDING_BIDIRECTIONAL then the binding will be mutual:
8239+if @target_property on @target changes then the @source_property on @source
8240+will be updated as well. The @transform_from function is only used in case
8241+of bidirectional bindings, otherwise it will be ignored
8242+
8243+The binding will automatically be removed when either the @source or the
8244+@target instances are finalized. This will release the reference that is
8245+being held on the #GBinding instance; if you want to hold on to the
8246+#GBinding instance, you will need to hold a reference to it.
8247+
8248+To remove the binding, call g_binding_unbind().
8249+
8250+A #GObject can have multiple bindings.
8251+
8252+The same @user_data parameter will be used for both @transform_to
8253+and @transform_from transformation functions; the @notify function will
8254+be called once, when the binding is removed. If you need different data
8255+for each transformation function, please use
8256+g_object_bind_property_with_closures() instead.</doc>
8257+ <source-position filename="gbinding.h" line="134"/>
8258+ <return-value transfer-ownership="none">
8259+ <doc xml:space="preserve"
8260+ filename="gobject-2.0.c"
8261+ line="2811">the #GBinding instance representing the
8262+ binding between the two #GObject instances. The binding is released
8263+ whenever the #GBinding reference count reaches zero.</doc>
8264+ <type name="Binding" c:type="GBinding*"/>
8265+ </return-value>
8266+ <parameters>
8267+ <instance-parameter name="source" transfer-ownership="none">
8268+ <doc xml:space="preserve"
8269+ filename="gobject-2.0.c"
8270+ line="2771">the source #GObject</doc>
8271+ <type name="Object" c:type="gpointer"/>
8272+ </instance-parameter>
8273+ <parameter name="source_property" transfer-ownership="none">
8274+ <doc xml:space="preserve"
8275+ filename="gobject-2.0.c"
8276+ line="2772">the property on @source to bind</doc>
8277+ <type name="utf8" c:type="const gchar*"/>
8278+ </parameter>
8279+ <parameter name="target" transfer-ownership="none">
8280+ <doc xml:space="preserve"
8281+ filename="gobject-2.0.c"
8282+ line="2773">the target #GObject</doc>
8283+ <type name="Object" c:type="gpointer"/>
8284+ </parameter>
8285+ <parameter name="target_property" transfer-ownership="none">
8286+ <doc xml:space="preserve"
8287+ filename="gobject-2.0.c"
8288+ line="2774">the property on @target to bind</doc>
8289+ <type name="utf8" c:type="const gchar*"/>
8290+ </parameter>
8291+ <parameter name="flags" transfer-ownership="none">
8292+ <doc xml:space="preserve"
8293+ filename="gobject-2.0.c"
8294+ line="2775">flags to pass to #GBinding</doc>
8295+ <type name="BindingFlags" c:type="GBindingFlags"/>
8296+ </parameter>
8297+ <parameter name="transform_to"
8298+ transfer-ownership="none"
8299+ nullable="1"
8300+ allow-none="1"
8301+ scope="notified">
8302+ <doc xml:space="preserve"
8303+ filename="gobject-2.0.c"
8304+ line="2776">the transformation function
8305+ from the @source to the @target, or %NULL to use the default</doc>
8306+ <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
8307+ </parameter>
8308+ <parameter name="transform_from"
8309+ transfer-ownership="none"
8310+ nullable="1"
8311+ allow-none="1"
8312+ scope="notified"
8313+ closure="6"
8314+ destroy="7">
8315+ <doc xml:space="preserve"
8316+ filename="gobject-2.0.c"
8317+ line="2778">the transformation function
8318+ from the @target to the @source, or %NULL to use the default</doc>
8319+ <type name="BindingTransformFunc" c:type="GBindingTransformFunc"/>
8320+ </parameter>
8321+ <parameter name="user_data"
8322+ transfer-ownership="none"
8323+ nullable="1"
8324+ allow-none="1">
8325+ <doc xml:space="preserve"
8326+ filename="gobject-2.0.c"
8327+ line="2780">custom data to be passed to the transformation functions,
8328+ or %NULL</doc>
8329+ <type name="gpointer" c:type="gpointer"/>
8330+ </parameter>
8331+ <parameter name="notify"
8332+ transfer-ownership="none"
8333+ nullable="1"
8334+ allow-none="1"
8335+ scope="async">
8336+ <doc xml:space="preserve"
8337+ filename="gobject-2.0.c"
8338+ line="2782">a function to call when disposing the binding, to free
8339+ resources used by the transformation functions, or %NULL if not required</doc>
8340+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
8341+ </parameter>
8342+ </parameters>
8343+ </method>
8344+ <method name="bind_property_with_closures"
8345+ c:identifier="g_object_bind_property_with_closures"
8346+ shadows="bind_property_full"
8347+ version="2.26">
8348+ <doc xml:space="preserve"
8349+ filename="gobject-2.0.c"
8350+ line="2818">Creates a binding between @source_property on @source and @target_property
8351+on @target, allowing you to set the transformation functions to be used by
8352+the binding.
8353+
8354+This function is the language bindings friendly version of
8355+g_object_bind_property_full(), using #GClosures instead of
8356+function pointers.</doc>
8357+ <source-position filename="gbinding.h" line="144"/>
8358+ <return-value transfer-ownership="none">
8359+ <doc xml:space="preserve"
8360+ filename="gobject-2.0.c"
8361+ line="2838">the #GBinding instance representing the
8362+ binding between the two #GObject instances. The binding is released
8363+ whenever the #GBinding reference count reaches zero.</doc>
8364+ <type name="Binding" c:type="GBinding*"/>
8365+ </return-value>
8366+ <parameters>
8367+ <instance-parameter name="source" transfer-ownership="none">
8368+ <doc xml:space="preserve"
8369+ filename="gobject-2.0.c"
8370+ line="2820">the source #GObject</doc>
8371+ <type name="Object" c:type="gpointer"/>
8372+ </instance-parameter>
8373+ <parameter name="source_property" transfer-ownership="none">
8374+ <doc xml:space="preserve"
8375+ filename="gobject-2.0.c"
8376+ line="2821">the property on @source to bind</doc>
8377+ <type name="utf8" c:type="const gchar*"/>
8378+ </parameter>
8379+ <parameter name="target" transfer-ownership="none">
8380+ <doc xml:space="preserve"
8381+ filename="gobject-2.0.c"
8382+ line="2822">the target #GObject</doc>
8383+ <type name="Object" c:type="gpointer"/>
8384+ </parameter>
8385+ <parameter name="target_property" transfer-ownership="none">
8386+ <doc xml:space="preserve"
8387+ filename="gobject-2.0.c"
8388+ line="2823">the property on @target to bind</doc>
8389+ <type name="utf8" c:type="const gchar*"/>
8390+ </parameter>
8391+ <parameter name="flags" transfer-ownership="none">
8392+ <doc xml:space="preserve"
8393+ filename="gobject-2.0.c"
8394+ line="2824">flags to pass to #GBinding</doc>
8395+ <type name="BindingFlags" c:type="GBindingFlags"/>
8396+ </parameter>
8397+ <parameter name="transform_to" transfer-ownership="none">
8398+ <doc xml:space="preserve"
8399+ filename="gobject-2.0.c"
8400+ line="2825">a #GClosure wrapping the transformation function
8401+ from the @source to the @target, or %NULL to use the default</doc>
8402+ <type name="Closure" c:type="GClosure*"/>
8403+ </parameter>
8404+ <parameter name="transform_from" transfer-ownership="none">
8405+ <doc xml:space="preserve"
8406+ filename="gobject-2.0.c"
8407+ line="2827">a #GClosure wrapping the transformation function
8408+ from the @target to the @source, or %NULL to use the default</doc>
8409+ <type name="Closure" c:type="GClosure*"/>
8410+ </parameter>
8411+ </parameters>
8412+ </method>
8413+ <method name="connect"
8414+ c:identifier="g_object_connect"
8415+ introspectable="0">
8416+ <doc xml:space="preserve"
8417+ filename="gobject-2.0.c"
8418+ line="2989">A convenience function to connect multiple signals at once.
8419+
8420+The signal specs expected by this function have the form
8421+"modifier::signal_name", where modifier can be one of the following:
8422+- signal: equivalent to g_signal_connect_data (..., NULL, 0)
8423+- object-signal, object_signal: equivalent to g_signal_connect_object (..., 0)
8424+- swapped-signal, swapped_signal: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED)
8425+- swapped_object_signal, swapped-object-signal: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED)
8426+- signal_after, signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_AFTER)
8427+- object_signal_after, object-signal-after: equivalent to g_signal_connect_object (..., G_CONNECT_AFTER)
8428+- swapped_signal_after, swapped-signal-after: equivalent to g_signal_connect_data (..., NULL, G_CONNECT_SWAPPED | G_CONNECT_AFTER)
8429+- swapped_object_signal_after, swapped-object-signal-after: equivalent to g_signal_connect_object (..., G_CONNECT_SWAPPED | G_CONNECT_AFTER)
8430+
8431+|[&lt;!-- language="C" --&gt;
8432+ menu-&gt;toplevel = g_object_connect (g_object_new (GTK_TYPE_WINDOW,
8433+ "type", GTK_WINDOW_POPUP,
8434+ "child", menu,
8435+ NULL),
8436+ "signal::event", gtk_menu_window_event, menu,
8437+ "signal::size_request", gtk_menu_window_size_request, menu,
8438+ "signal::destroy", gtk_widget_destroyed, &amp;menu-&gt;toplevel,
8439+ NULL);
8440+]|</doc>
8441+ <source-position filename="gobject.h" line="471"/>
8442+ <return-value transfer-ownership="none">
8443+ <doc xml:space="preserve"
8444+ filename="gobject-2.0.c"
8445+ line="3021">@object</doc>
8446+ <type name="Object" c:type="gpointer"/>
8447+ </return-value>
8448+ <parameters>
8449+ <instance-parameter name="object" transfer-ownership="none">
8450+ <doc xml:space="preserve"
8451+ filename="gobject-2.0.c"
8452+ line="2991">a #GObject</doc>
8453+ <type name="Object" c:type="gpointer"/>
8454+ </instance-parameter>
8455+ <parameter name="signal_spec" transfer-ownership="none">
8456+ <doc xml:space="preserve"
8457+ filename="gobject-2.0.c"
8458+ line="2992">the spec for the first signal</doc>
8459+ <type name="utf8" c:type="const gchar*"/>
8460+ </parameter>
8461+ <parameter name="..." transfer-ownership="none">
8462+ <doc xml:space="preserve"
8463+ filename="gobject-2.0.c"
8464+ line="2993">#GCallback for the first signal, followed by data for the
8465+ first signal, followed optionally by more signal
8466+ spec/callback/data triples, followed by %NULL</doc>
8467+ <varargs/>
8468+ </parameter>
8469+ </parameters>
8470+ </method>
8471+ <method name="disconnect"
8472+ c:identifier="g_object_disconnect"
8473+ introspectable="0">
8474+ <doc xml:space="preserve"
8475+ filename="gobject-2.0.c"
8476+ line="3025">A convenience function to disconnect multiple signals at once.
8477+
8478+The signal specs expected by this function have the form
8479+"any_signal", which means to disconnect any signal with matching
8480+callback and data, or "any_signal::signal_name", which only
8481+disconnects the signal named "signal_name".</doc>
8482+ <source-position filename="gobject.h" line="475"/>
8483+ <return-value transfer-ownership="none">
8484+ <type name="none" c:type="void"/>
8485+ </return-value>
8486+ <parameters>
8487+ <instance-parameter name="object" transfer-ownership="none">
8488+ <doc xml:space="preserve"
8489+ filename="gobject-2.0.c"
8490+ line="3027">a #GObject</doc>
8491+ <type name="Object" c:type="gpointer"/>
8492+ </instance-parameter>
8493+ <parameter name="signal_spec" transfer-ownership="none">
8494+ <doc xml:space="preserve"
8495+ filename="gobject-2.0.c"
8496+ line="3028">the spec for the first signal</doc>
8497+ <type name="utf8" c:type="const gchar*"/>
8498+ </parameter>
8499+ <parameter name="..." transfer-ownership="none">
8500+ <doc xml:space="preserve"
8501+ filename="gobject-2.0.c"
8502+ line="3029">#GCallback for the first signal, followed by data for the first signal,
8503+ followed optionally by more signal spec/callback/data triples,
8504+ followed by %NULL</doc>
8505+ <varargs/>
8506+ </parameter>
8507+ </parameters>
8508+ </method>
8509+ <method name="dup_data"
8510+ c:identifier="g_object_dup_data"
8511+ version="2.34"
8512+ introspectable="0">
8513+ <doc xml:space="preserve"
8514+ filename="gobject-2.0.c"
8515+ line="3042">This is a variant of g_object_get_data() which returns
8516+a 'duplicate' of the value. @dup_func defines the
8517+meaning of 'duplicate' in this context, it could e.g.
8518+take a reference on a ref-counted object.
8519+
8520+If the @key is not set on the object then @dup_func
8521+will be called with a %NULL argument.
8522+
8523+Note that @dup_func is called while user data of @object
8524+is locked.
8525+
8526+This function can be useful to avoid races when multiple
8527+threads are using object data on the same key on the same
8528+object.</doc>
8529+ <source-position filename="gobject.h" line="618"/>
8530+ <return-value transfer-ownership="none" nullable="1">
8531+ <doc xml:space="preserve"
8532+ filename="gobject-2.0.c"
8533+ line="3064">the result of calling @dup_func on the value
8534+ associated with @key on @object, or %NULL if not set.
8535+ If @dup_func is %NULL, the value is returned
8536+ unmodified.</doc>
8537+ <type name="gpointer" c:type="gpointer"/>
8538+ </return-value>
8539+ <parameters>
8540+ <instance-parameter name="object" transfer-ownership="none">
8541+ <doc xml:space="preserve"
8542+ filename="gobject-2.0.c"
8543+ line="3044">the #GObject to store user data on</doc>
8544+ <type name="Object" c:type="GObject*"/>
8545+ </instance-parameter>
8546+ <parameter name="key" transfer-ownership="none">
8547+ <doc xml:space="preserve"
8548+ filename="gobject-2.0.c"
8549+ line="3045">a string, naming the user data pointer</doc>
8550+ <type name="utf8" c:type="const gchar*"/>
8551+ </parameter>
8552+ <parameter name="dup_func"
8553+ transfer-ownership="none"
8554+ nullable="1"
8555+ allow-none="1"
8556+ closure="2">
8557+ <doc xml:space="preserve"
8558+ filename="gobject-2.0.c"
8559+ line="3046">function to dup the value</doc>
8560+ <type name="GLib.DuplicateFunc" c:type="GDuplicateFunc"/>
8561+ </parameter>
8562+ <parameter name="user_data"
8563+ transfer-ownership="none"
8564+ nullable="1"
8565+ allow-none="1">
8566+ <doc xml:space="preserve"
8567+ filename="gobject-2.0.c"
8568+ line="3047">passed as user_data to @dup_func</doc>
8569+ <type name="gpointer" c:type="gpointer"/>
8570+ </parameter>
8571+ </parameters>
8572+ </method>
8573+ <method name="dup_qdata"
8574+ c:identifier="g_object_dup_qdata"
8575+ version="2.34"
8576+ introspectable="0">
8577+ <doc xml:space="preserve"
8578+ filename="gobject-2.0.c"
8579+ line="3072">This is a variant of g_object_get_qdata() which returns
8580+a 'duplicate' of the value. @dup_func defines the
8581+meaning of 'duplicate' in this context, it could e.g.
8582+take a reference on a ref-counted object.
8583+
8584+If the @quark is not set on the object then @dup_func
8585+will be called with a %NULL argument.
8586+
8587+Note that @dup_func is called while user data of @object
8588+is locked.
8589+
8590+This function can be useful to avoid races when multiple
8591+threads are using object data on the same key on the same
8592+object.</doc>
8593+ <source-position filename="gobject.h" line="589"/>
8594+ <return-value transfer-ownership="none" nullable="1">
8595+ <doc xml:space="preserve"
8596+ filename="gobject-2.0.c"
8597+ line="3094">the result of calling @dup_func on the value
8598+ associated with @quark on @object, or %NULL if not set.
8599+ If @dup_func is %NULL, the value is returned
8600+ unmodified.</doc>
8601+ <type name="gpointer" c:type="gpointer"/>
8602+ </return-value>
8603+ <parameters>
8604+ <instance-parameter name="object" transfer-ownership="none">
8605+ <doc xml:space="preserve"
8606+ filename="gobject-2.0.c"
8607+ line="3074">the #GObject to store user data on</doc>
8608+ <type name="Object" c:type="GObject*"/>
8609+ </instance-parameter>
8610+ <parameter name="quark" transfer-ownership="none">
8611+ <doc xml:space="preserve"
8612+ filename="gobject-2.0.c"
8613+ line="3075">a #GQuark, naming the user data pointer</doc>
8614+ <type name="GLib.Quark" c:type="GQuark"/>
8615+ </parameter>
8616+ <parameter name="dup_func"
8617+ transfer-ownership="none"
8618+ nullable="1"
8619+ allow-none="1"
8620+ closure="2">
8621+ <doc xml:space="preserve"
8622+ filename="gobject-2.0.c"
8623+ line="3076">function to dup the value</doc>
8624+ <type name="GLib.DuplicateFunc" c:type="GDuplicateFunc"/>
8625+ </parameter>
8626+ <parameter name="user_data"
8627+ transfer-ownership="none"
8628+ nullable="1"
8629+ allow-none="1">
8630+ <doc xml:space="preserve"
8631+ filename="gobject-2.0.c"
8632+ line="3077">passed as user_data to @dup_func</doc>
8633+ <type name="gpointer" c:type="gpointer"/>
8634+ </parameter>
8635+ </parameters>
8636+ </method>
8637+ <method name="force_floating"
8638+ c:identifier="g_object_force_floating"
8639+ version="2.10">
8640+ <doc xml:space="preserve"
8641+ filename="gobject-2.0.c"
8642+ line="3102">This function is intended for #GObject implementations to re-enforce
8643+a [floating][floating-ref] object reference. Doing this is seldom
8644+required: all #GInitiallyUnowneds are created with a floating reference
8645+which usually just needs to be sunken by calling g_object_ref_sink().</doc>
8646+ <source-position filename="gobject.h" line="659"/>
8647+ <return-value transfer-ownership="none">
8648+ <type name="none" c:type="void"/>
8649+ </return-value>
8650+ <parameters>
8651+ <instance-parameter name="object" transfer-ownership="none">
8652+ <doc xml:space="preserve"
8653+ filename="gobject-2.0.c"
8654+ line="3104">a #GObject</doc>
8655+ <type name="Object" c:type="GObject*"/>
8656+ </instance-parameter>
8657+ </parameters>
8658+ </method>
8659+ <method name="freeze_notify" c:identifier="g_object_freeze_notify">
8660+ <doc xml:space="preserve"
8661+ filename="gobject-2.0.c"
8662+ line="3115">Increases the freeze count on @object. If the freeze count is
8663+non-zero, the emission of "notify" signals on @object is
8664+stopped. The signals are queued until the freeze count is decreased
8665+to zero. Duplicate notifications are squashed so that at most one
8666+#GObject::notify signal is emitted for each property modified while the
8667+object is frozen.
8668+
8669+This is necessary for accessors that modify multiple properties to prevent
8670+premature notification while the object is still being modified.</doc>
8671+ <source-position filename="gobject.h" line="505"/>
8672+ <return-value transfer-ownership="none">
8673+ <type name="none" c:type="void"/>
8674+ </return-value>
8675+ <parameters>
8676+ <instance-parameter name="object" transfer-ownership="none">
8677+ <doc xml:space="preserve"
8678+ filename="gobject-2.0.c"
8679+ line="3117">a #GObject</doc>
8680+ <type name="Object" c:type="GObject*"/>
8681+ </instance-parameter>
8682+ </parameters>
8683+ </method>
8684+ <method name="get" c:identifier="g_object_get" introspectable="0">
8685+ <doc xml:space="preserve"
8686+ filename="gobject-2.0.c"
8687+ line="3131">Gets properties of an object.
8688+
8689+In general, a copy is made of the property contents and the caller
8690+is responsible for freeing the memory in the appropriate manner for
8691+the type, for instance by calling g_free() or g_object_unref().
8692+
8693+Here is an example of using g_object_get() to get the contents
8694+of three properties: an integer, a string and an object:
8695+|[&lt;!-- language="C" --&gt;
8696+ gint intval;
8697+ guint64 uint64val;
8698+ gchar *strval;
8699+ GObject *objval;
8700+
8701+ g_object_get (my_object,
8702+ "int-property", &amp;intval,
8703+ "uint64-property", &amp;uint64val,
8704+ "str-property", &amp;strval,
8705+ "obj-property", &amp;objval,
8706+ NULL);
8707+
8708+ // Do something with intval, uint64val, strval, objval
8709+
8710+ g_free (strval);
8711+ g_object_unref (objval);
8712+]|</doc>
8713+ <source-position filename="gobject.h" line="467"/>
8714+ <return-value transfer-ownership="none">
8715+ <type name="none" c:type="void"/>
8716+ </return-value>
8717+ <parameters>
8718+ <instance-parameter name="object" transfer-ownership="none">
8719+ <doc xml:space="preserve"
8720+ filename="gobject-2.0.c"
8721+ line="3133">a #GObject</doc>
8722+ <type name="Object" c:type="gpointer"/>
8723+ </instance-parameter>
8724+ <parameter name="first_property_name" transfer-ownership="none">
8725+ <doc xml:space="preserve"
8726+ filename="gobject-2.0.c"
8727+ line="3134">name of the first property to get</doc>
8728+ <type name="utf8" c:type="const gchar*"/>
8729+ </parameter>
8730+ <parameter name="..." transfer-ownership="none">
8731+ <doc xml:space="preserve"
8732+ filename="gobject-2.0.c"
8733+ line="3135">return location for the first property, followed optionally by more
8734+ name/return location pairs, followed by %NULL</doc>
8735+ <varargs/>
8736+ </parameter>
8737+ </parameters>
8738+ </method>
8739+ <method name="get_data" c:identifier="g_object_get_data">
8740+ <doc xml:space="preserve"
8741+ filename="gobject-2.0.c"
8742+ line="3167">Gets a named field from the objects table of associations (see g_object_set_data()).</doc>
8743+ <source-position filename="gobject.h" line="602"/>
8744+ <return-value transfer-ownership="none" nullable="1">
8745+ <doc xml:space="preserve"
8746+ filename="gobject-2.0.c"
8747+ line="3174">the data if found,
8748+ or %NULL if no such data exists.</doc>
8749+ <type name="gpointer" c:type="gpointer"/>
8750+ </return-value>
8751+ <parameters>
8752+ <instance-parameter name="object" transfer-ownership="none">
8753+ <doc xml:space="preserve"
8754+ filename="gobject-2.0.c"
8755+ line="3169">#GObject containing the associations</doc>
8756+ <type name="Object" c:type="GObject*"/>
8757+ </instance-parameter>
8758+ <parameter name="key" transfer-ownership="none">
8759+ <doc xml:space="preserve"
8760+ filename="gobject-2.0.c"
8761+ line="3170">name of the key for that association</doc>
8762+ <type name="utf8" c:type="const gchar*"/>
8763+ </parameter>
8764+ </parameters>
8765+ </method>
8766+ <method name="get_property" c:identifier="g_object_get_property">
8767+ <doc xml:space="preserve"
8768+ filename="gobject-2.0.c"
8769+ line="3179">Gets a property of an object.
8770+
8771+The @value can be:
8772+
8773+ - an empty #GValue initialized by %G_VALUE_INIT, which will be
8774+ automatically initialized with the expected type of the property
8775+ (since GLib 2.60)
8776+ - a #GValue initialized with the expected type of the property
8777+ - a #GValue initialized with a type to which the expected type
8778+ of the property can be transformed
8779+
8780+In general, a copy is made of the property contents and the caller is
8781+responsible for freeing the memory by calling g_value_unset().
8782+
8783+Note that g_object_get_property() is really intended for language
8784+bindings, g_object_get() is much more convenient for C programming.</doc>
8785+ <source-position filename="gobject.h" line="501"/>
8786+ <return-value transfer-ownership="none">
8787+ <type name="none" c:type="void"/>
8788+ </return-value>
8789+ <parameters>
8790+ <instance-parameter name="object" transfer-ownership="none">
8791+ <doc xml:space="preserve"
8792+ filename="gobject-2.0.c"
8793+ line="3181">a #GObject</doc>
8794+ <type name="Object" c:type="GObject*"/>
8795+ </instance-parameter>
8796+ <parameter name="property_name" transfer-ownership="none">
8797+ <doc xml:space="preserve"
8798+ filename="gobject-2.0.c"
8799+ line="3182">the name of the property to get</doc>
8800+ <type name="utf8" c:type="const gchar*"/>
8801+ </parameter>
8802+ <parameter name="value" transfer-ownership="none">
8803+ <doc xml:space="preserve"
8804+ filename="gobject-2.0.c"
8805+ line="3183">return location for the property value</doc>
8806+ <type name="Value" c:type="GValue*"/>
8807+ </parameter>
8808+ </parameters>
8809+ </method>
8810+ <method name="get_qdata" c:identifier="g_object_get_qdata">
8811+ <doc xml:space="preserve"
8812+ filename="gobject-2.0.c"
8813+ line="3204">This function gets back user data pointers stored via
8814+g_object_set_qdata().</doc>
8815+ <source-position filename="gobject.h" line="573"/>
8816+ <return-value transfer-ownership="none" nullable="1">
8817+ <doc xml:space="preserve"
8818+ filename="gobject-2.0.c"
8819+ line="3212">The user data pointer set, or %NULL</doc>
8820+ <type name="gpointer" c:type="gpointer"/>
8821+ </return-value>
8822+ <parameters>
8823+ <instance-parameter name="object" transfer-ownership="none">
8824+ <doc xml:space="preserve"
8825+ filename="gobject-2.0.c"
8826+ line="3206">The GObject to get a stored user data pointer from</doc>
8827+ <type name="Object" c:type="GObject*"/>
8828+ </instance-parameter>
8829+ <parameter name="quark" transfer-ownership="none">
8830+ <doc xml:space="preserve"
8831+ filename="gobject-2.0.c"
8832+ line="3207">A #GQuark, naming the user data pointer</doc>
8833+ <type name="GLib.Quark" c:type="GQuark"/>
8834+ </parameter>
8835+ </parameters>
8836+ </method>
8837+ <method name="get_valist"
8838+ c:identifier="g_object_get_valist"
8839+ introspectable="0">
8840+ <doc xml:space="preserve"
8841+ filename="gobject-2.0.c"
8842+ line="3216">Gets properties of an object.
8843+
8844+In general, a copy is made of the property contents and the caller
8845+is responsible for freeing the memory in the appropriate manner for
8846+the type, for instance by calling g_free() or g_object_unref().
8847+
8848+See g_object_get().</doc>
8849+ <source-position filename="gobject.h" line="493"/>
8850+ <return-value transfer-ownership="none">
8851+ <type name="none" c:type="void"/>
8852+ </return-value>
8853+ <parameters>
8854+ <instance-parameter name="object" transfer-ownership="none">
8855+ <doc xml:space="preserve"
8856+ filename="gobject-2.0.c"
8857+ line="3218">a #GObject</doc>
8858+ <type name="Object" c:type="GObject*"/>
8859+ </instance-parameter>
8860+ <parameter name="first_property_name" transfer-ownership="none">
8861+ <doc xml:space="preserve"
8862+ filename="gobject-2.0.c"
8863+ line="3219">name of the first property to get</doc>
8864+ <type name="utf8" c:type="const gchar*"/>
8865+ </parameter>
8866+ <parameter name="var_args" transfer-ownership="none">
8867+ <doc xml:space="preserve"
8868+ filename="gobject-2.0.c"
8869+ line="3220">return location for the first property, followed optionally by more
8870+ name/return location pairs, followed by %NULL</doc>
8871+ <type name="va_list" c:type="va_list"/>
8872+ </parameter>
8873+ </parameters>
8874+ </method>
8875+ <method name="getv" c:identifier="g_object_getv" version="2.54">
8876+ <doc xml:space="preserve"
8877+ filename="gobject-2.0.c"
8878+ line="3233">Gets @n_properties properties for an @object.
8879+Obtained properties will be set to @values. All properties must be valid.
8880+Warnings will be emitted and undefined behaviour may result if invalid
8881+properties are passed in.</doc>
8882+ <source-position filename="gobject.h" line="488"/>
8883+ <return-value transfer-ownership="none">
8884+ <type name="none" c:type="void"/>
8885+ </return-value>
8886+ <parameters>
8887+ <instance-parameter name="object" transfer-ownership="none">
8888+ <doc xml:space="preserve"
8889+ filename="gobject-2.0.c"
8890+ line="3235">a #GObject</doc>
8891+ <type name="Object" c:type="GObject*"/>
8892+ </instance-parameter>
8893+ <parameter name="n_properties" transfer-ownership="none">
8894+ <doc xml:space="preserve"
8895+ filename="gobject-2.0.c"
8896+ line="3236">the number of properties</doc>
8897+ <type name="guint" c:type="guint"/>
8898+ </parameter>
8899+ <parameter name="names" transfer-ownership="none">
8900+ <doc xml:space="preserve"
8901+ filename="gobject-2.0.c"
8902+ line="3237">the names of each property to get</doc>
8903+ <array length="0" zero-terminated="0" c:type="const gchar**">
8904+ <type name="utf8" c:type="gchar*"/>
8905+ </array>
8906+ </parameter>
8907+ <parameter name="values" transfer-ownership="none">
8908+ <doc xml:space="preserve"
8909+ filename="gobject-2.0.c"
8910+ line="3238">the values of each property to get</doc>
8911+ <array length="0" zero-terminated="0" c:type="GValue*">
8912+ <type name="Value" c:type="GValue"/>
8913+ </array>
8914+ </parameter>
8915+ </parameters>
8916+ </method>
8917+ <method name="is_floating"
8918+ c:identifier="g_object_is_floating"
8919+ version="2.10">
8920+ <doc xml:space="preserve"
8921+ filename="gobject-2.0.c"
8922+ line="3316">Checks whether @object has a [floating][floating-ref] reference.</doc>
8923+ <source-position filename="gobject.h" line="515"/>
8924+ <return-value transfer-ownership="none">
8925+ <doc xml:space="preserve"
8926+ filename="gobject-2.0.c"
8927+ line="3323">%TRUE if @object has a floating reference</doc>
8928+ <type name="gboolean" c:type="gboolean"/>
8929+ </return-value>
8930+ <parameters>
8931+ <instance-parameter name="object" transfer-ownership="none">
8932+ <doc xml:space="preserve"
8933+ filename="gobject-2.0.c"
8934+ line="3318">a #GObject</doc>
8935+ <type name="Object" c:type="gpointer"/>
8936+ </instance-parameter>
8937+ </parameters>
8938+ </method>
8939+ <method name="notify" c:identifier="g_object_notify">
8940+ <doc xml:space="preserve"
8941+ filename="gobject-2.0.c"
8942+ line="3420">Emits a "notify" signal for the property @property_name on @object.
8943+
8944+When possible, eg. when signaling a property change from within the class
8945+that registered the property, you should use g_object_notify_by_pspec()
8946+instead.
8947+
8948+Note that emission of the notify signal may be blocked with
8949+g_object_freeze_notify(). In this case, the signal emissions are queued
8950+and will be emitted (in reverse order) when g_object_thaw_notify() is
8951+called.</doc>
8952+ <source-position filename="gobject.h" line="507"/>
8953+ <return-value transfer-ownership="none">
8954+ <type name="none" c:type="void"/>
8955+ </return-value>
8956+ <parameters>
8957+ <instance-parameter name="object" transfer-ownership="none">
8958+ <doc xml:space="preserve"
8959+ filename="gobject-2.0.c"
8960+ line="3422">a #GObject</doc>
8961+ <type name="Object" c:type="GObject*"/>
8962+ </instance-parameter>
8963+ <parameter name="property_name" transfer-ownership="none">
8964+ <doc xml:space="preserve"
8965+ filename="gobject-2.0.c"
8966+ line="3423">the name of a property installed on the class of @object.</doc>
8967+ <type name="utf8" c:type="const gchar*"/>
8968+ </parameter>
8969+ </parameters>
8970+ </method>
8971+ <method name="notify_by_pspec"
8972+ c:identifier="g_object_notify_by_pspec"
8973+ version="2.26">
8974+ <doc xml:space="preserve"
8975+ filename="gobject-2.0.c"
8976+ line="3438">Emits a "notify" signal for the property specified by @pspec on @object.
8977+
8978+This function omits the property name lookup, hence it is faster than
8979+g_object_notify().
8980+
8981+One way to avoid using g_object_notify() from within the
8982+class that registered the properties, and using g_object_notify_by_pspec()
8983+instead, is to store the GParamSpec used with
8984+g_object_class_install_property() inside a static array, e.g.:
8985+
8986+|[&lt;!-- language="C" --&gt;
8987+ enum
8988+ {
8989+ PROP_0,
8990+ PROP_FOO,
8991+ PROP_LAST
8992+ };
8993+
8994+ static GParamSpec *properties[PROP_LAST];
8995+
8996+ static void
8997+ my_object_class_init (MyObjectClass *klass)
8998+ {
8999+ properties[PROP_FOO] = g_param_spec_int ("foo", "Foo", "The foo",
9000+ 0, 100,
9001+ 50,
9002+ G_PARAM_READWRITE);
9003+ g_object_class_install_property (gobject_class,
9004+ PROP_FOO,
9005+ properties[PROP_FOO]);
9006+ }
9007+]|
9008+
9009+and then notify a change on the "foo" property with:
9010+
9011+|[&lt;!-- language="C" --&gt;
9012+ g_object_notify_by_pspec (self, properties[PROP_FOO]);
9013+]|</doc>
9014+ <source-position filename="gobject.h" line="510"/>
9015+ <return-value transfer-ownership="none">
9016+ <type name="none" c:type="void"/>
9017+ </return-value>
9018+ <parameters>
9019+ <instance-parameter name="object" transfer-ownership="none">
9020+ <doc xml:space="preserve"
9021+ filename="gobject-2.0.c"
9022+ line="3440">a #GObject</doc>
9023+ <type name="Object" c:type="GObject*"/>
9024+ </instance-parameter>
9025+ <parameter name="pspec" transfer-ownership="none">
9026+ <doc xml:space="preserve"
9027+ filename="gobject-2.0.c"
9028+ line="3441">the #GParamSpec of a property installed on the class of @object.</doc>
9029+ <type name="ParamSpec" c:type="GParamSpec*"/>
9030+ </parameter>
9031+ </parameters>
9032+ </method>
9033+ <method name="ref" c:identifier="g_object_ref">
9034+ <doc xml:space="preserve"
9035+ filename="gobject-2.0.c"
9036+ line="3486">Increases the reference count of @object.
9037+
9038+Since GLib 2.56, if `GLIB_VERSION_MAX_ALLOWED` is 2.56 or greater, the type
9039+of @object will be propagated to the return type (using the GCC typeof()
9040+extension), so any casting the caller needs to do on the return type must be
9041+explicit.</doc>
9042+ <source-position filename="gobject.h" line="521"/>
9043+ <return-value transfer-ownership="none">
9044+ <doc xml:space="preserve"
9045+ filename="gobject-2.0.c"
9046+ line="3497">the same @object</doc>
9047+ <type name="Object" c:type="gpointer"/>
9048+ </return-value>
9049+ <parameters>
9050+ <instance-parameter name="object" transfer-ownership="none">
9051+ <doc xml:space="preserve"
9052+ filename="gobject-2.0.c"
9053+ line="3488">a #GObject</doc>
9054+ <type name="Object" c:type="gpointer"/>
9055+ </instance-parameter>
9056+ </parameters>
9057+ </method>
9058+ <method name="ref_sink" c:identifier="g_object_ref_sink" version="2.10">
9059+ <doc xml:space="preserve"
9060+ filename="gobject-2.0.c"
9061+ line="3501">Increase the reference count of @object, and possibly remove the
9062+[floating][floating-ref] reference, if @object has a floating reference.
9063+
9064+In other words, if the object is floating, then this call "assumes
9065+ownership" of the floating reference, converting it to a normal
9066+reference by clearing the floating flag while leaving the reference
9067+count unchanged. If the object is not floating, then this call
9068+adds a new normal reference increasing the reference count by one.
9069+
9070+Since GLib 2.56, the type of @object will be propagated to the return type
9071+under the same conditions as for g_object_ref().</doc>
9072+ <source-position filename="gobject.h" line="517"/>
9073+ <return-value transfer-ownership="none">
9074+ <doc xml:space="preserve"
9075+ filename="gobject-2.0.c"
9076+ line="3518">@object</doc>
9077+ <type name="Object" c:type="gpointer"/>
9078+ </return-value>
9079+ <parameters>
9080+ <instance-parameter name="object" transfer-ownership="none">
9081+ <doc xml:space="preserve"
9082+ filename="gobject-2.0.c"
9083+ line="3503">a #GObject</doc>
9084+ <type name="Object" c:type="gpointer"/>
9085+ </instance-parameter>
9086+ </parameters>
9087+ </method>
9088+ <method name="remove_toggle_ref"
9089+ c:identifier="g_object_remove_toggle_ref"
9090+ version="2.8"
9091+ introspectable="0">
9092+ <doc xml:space="preserve"
9093+ filename="gobject-2.0.c"
9094+ line="3522">Removes a reference added with g_object_add_toggle_ref(). The
9095+reference count of the object is decreased by one.</doc>
9096+ <source-position filename="gobject.h" line="568"/>
9097+ <return-value transfer-ownership="none">
9098+ <type name="none" c:type="void"/>
9099+ </return-value>
9100+ <parameters>
9101+ <instance-parameter name="object" transfer-ownership="none">
9102+ <doc xml:space="preserve"
9103+ filename="gobject-2.0.c"
9104+ line="3524">a #GObject</doc>
9105+ <type name="Object" c:type="GObject*"/>
9106+ </instance-parameter>
9107+ <parameter name="notify" transfer-ownership="none" closure="1">
9108+ <doc xml:space="preserve"
9109+ filename="gobject-2.0.c"
9110+ line="3525">a function to call when this reference is the
9111+ last reference to the object, or is no longer
9112+ the last reference.</doc>
9113+ <type name="ToggleNotify" c:type="GToggleNotify"/>
9114+ </parameter>
9115+ <parameter name="data"
9116+ transfer-ownership="none"
9117+ nullable="1"
9118+ allow-none="1">
9119+ <doc xml:space="preserve"
9120+ filename="gobject-2.0.c"
9121+ line="3528">data to pass to @notify, or %NULL to
9122+ match any toggle refs with the @notify argument.</doc>
9123+ <type name="gpointer" c:type="gpointer"/>
9124+ </parameter>
9125+ </parameters>
9126+ </method>
9127+ <method name="remove_weak_pointer"
9128+ c:identifier="g_object_remove_weak_pointer"
9129+ introspectable="0">
9130+ <doc xml:space="preserve"
9131+ filename="gobject-2.0.c"
9132+ line="3538">Removes a weak reference from @object that was previously added
9133+using g_object_add_weak_pointer(). The @weak_pointer_location has
9134+to match the one used with g_object_add_weak_pointer().</doc>
9135+ <source-position filename="gobject.h" line="536"/>
9136+ <return-value transfer-ownership="none">
9137+ <type name="none" c:type="void"/>
9138+ </return-value>
9139+ <parameters>
9140+ <instance-parameter name="object" transfer-ownership="none">
9141+ <doc xml:space="preserve"
9142+ filename="gobject-2.0.c"
9143+ line="3540">The object that is weak referenced.</doc>
9144+ <type name="Object" c:type="GObject*"/>
9145+ </instance-parameter>
9146+ <parameter name="weak_pointer_location"
9147+ direction="inout"
9148+ caller-allocates="0"
9149+ transfer-ownership="full">
9150+ <doc xml:space="preserve"
9151+ filename="gobject-2.0.c"
9152+ line="3541">The memory address
9153+ of a pointer.</doc>
9154+ <type name="gpointer" c:type="gpointer*"/>
9155+ </parameter>
9156+ </parameters>
9157+ </method>
9158+ <method name="replace_data"
9159+ c:identifier="g_object_replace_data"
9160+ version="2.34"
9161+ introspectable="0">
9162+ <doc xml:space="preserve"
9163+ filename="gobject-2.0.c"
9164+ line="3550">Compares the user data for the key @key on @object with
9165+@oldval, and if they are the same, replaces @oldval with
9166+@newval.
9167+
9168+This is like a typical atomic compare-and-exchange
9169+operation, for user data on an object.
9170+
9171+If the previous value was replaced then ownership of the
9172+old value (@oldval) is passed to the caller, including
9173+the registered destroy notify for it (passed out in @old_destroy).
9174+It’s up to the caller to free this as needed, which may
9175+or may not include using @old_destroy as sometimes replacement
9176+should not destroy the object in the normal way.
9177+
9178+See g_object_set_data() for guidance on using a small, bounded set of values
9179+for @key.</doc>
9180+ <source-position filename="gobject.h" line="623"/>
9181+ <return-value transfer-ownership="none">
9182+ <doc xml:space="preserve"
9183+ filename="gobject-2.0.c"
9184+ line="3576">%TRUE if the existing value for @key was replaced
9185+ by @newval, %FALSE otherwise.</doc>
9186+ <type name="gboolean" c:type="gboolean"/>
9187+ </return-value>
9188+ <parameters>
9189+ <instance-parameter name="object" transfer-ownership="none">
9190+ <doc xml:space="preserve"
9191+ filename="gobject-2.0.c"
9192+ line="3552">the #GObject to store user data on</doc>
9193+ <type name="Object" c:type="GObject*"/>
9194+ </instance-parameter>
9195+ <parameter name="key" transfer-ownership="none">
9196+ <doc xml:space="preserve"
9197+ filename="gobject-2.0.c"
9198+ line="3553">a string, naming the user data pointer</doc>
9199+ <type name="utf8" c:type="const gchar*"/>
9200+ </parameter>
9201+ <parameter name="oldval"
9202+ transfer-ownership="none"
9203+ nullable="1"
9204+ allow-none="1">
9205+ <doc xml:space="preserve"
9206+ filename="gobject-2.0.c"
9207+ line="3554">the old value to compare against</doc>
9208+ <type name="gpointer" c:type="gpointer"/>
9209+ </parameter>
9210+ <parameter name="newval"
9211+ transfer-ownership="none"
9212+ nullable="1"
9213+ allow-none="1">
9214+ <doc xml:space="preserve"
9215+ filename="gobject-2.0.c"
9216+ line="3555">the new value</doc>
9217+ <type name="gpointer" c:type="gpointer"/>
9218+ </parameter>
9219+ <parameter name="destroy"
9220+ transfer-ownership="none"
9221+ nullable="1"
9222+ allow-none="1"
9223+ scope="async">
9224+ <doc xml:space="preserve"
9225+ filename="gobject-2.0.c"
9226+ line="3556">a destroy notify for the new value</doc>
9227+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
9228+ </parameter>
9229+ <parameter name="old_destroy"
9230+ direction="out"
9231+ caller-allocates="0"
9232+ transfer-ownership="none"
9233+ optional="1"
9234+ allow-none="1"
9235+ scope="async">
9236+ <doc xml:space="preserve"
9237+ filename="gobject-2.0.c"
9238+ line="3557">destroy notify for the existing value</doc>
9239+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
9240+ </parameter>
9241+ </parameters>
9242+ </method>
9243+ <method name="replace_qdata"
9244+ c:identifier="g_object_replace_qdata"
9245+ version="2.34"
9246+ introspectable="0">
9247+ <doc xml:space="preserve"
9248+ filename="gobject-2.0.c"
9249+ line="3582">Compares the user data for the key @quark on @object with
9250+@oldval, and if they are the same, replaces @oldval with
9251+@newval.
9252+
9253+This is like a typical atomic compare-and-exchange
9254+operation, for user data on an object.
9255+
9256+If the previous value was replaced then ownership of the
9257+old value (@oldval) is passed to the caller, including
9258+the registered destroy notify for it (passed out in @old_destroy).
9259+It’s up to the caller to free this as needed, which may
9260+or may not include using @old_destroy as sometimes replacement
9261+should not destroy the object in the normal way.</doc>
9262+ <source-position filename="gobject.h" line="594"/>
9263+ <return-value transfer-ownership="none">
9264+ <doc xml:space="preserve"
9265+ filename="gobject-2.0.c"
9266+ line="3605">%TRUE if the existing value for @quark was replaced
9267+ by @newval, %FALSE otherwise.</doc>
9268+ <type name="gboolean" c:type="gboolean"/>
9269+ </return-value>
9270+ <parameters>
9271+ <instance-parameter name="object" transfer-ownership="none">
9272+ <doc xml:space="preserve"
9273+ filename="gobject-2.0.c"
9274+ line="3584">the #GObject to store user data on</doc>
9275+ <type name="Object" c:type="GObject*"/>
9276+ </instance-parameter>
9277+ <parameter name="quark" transfer-ownership="none">
9278+ <doc xml:space="preserve"
9279+ filename="gobject-2.0.c"
9280+ line="3585">a #GQuark, naming the user data pointer</doc>
9281+ <type name="GLib.Quark" c:type="GQuark"/>
9282+ </parameter>
9283+ <parameter name="oldval"
9284+ transfer-ownership="none"
9285+ nullable="1"
9286+ allow-none="1">
9287+ <doc xml:space="preserve"
9288+ filename="gobject-2.0.c"
9289+ line="3586">the old value to compare against</doc>
9290+ <type name="gpointer" c:type="gpointer"/>
9291+ </parameter>
9292+ <parameter name="newval"
9293+ transfer-ownership="none"
9294+ nullable="1"
9295+ allow-none="1">
9296+ <doc xml:space="preserve"
9297+ filename="gobject-2.0.c"
9298+ line="3587">the new value</doc>
9299+ <type name="gpointer" c:type="gpointer"/>
9300+ </parameter>
9301+ <parameter name="destroy"
9302+ transfer-ownership="none"
9303+ nullable="1"
9304+ allow-none="1"
9305+ scope="async">
9306+ <doc xml:space="preserve"
9307+ filename="gobject-2.0.c"
9308+ line="3588">a destroy notify for the new value</doc>
9309+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
9310+ </parameter>
9311+ <parameter name="old_destroy"
9312+ direction="out"
9313+ caller-allocates="0"
9314+ transfer-ownership="none"
9315+ optional="1"
9316+ allow-none="1"
9317+ scope="async">
9318+ <doc xml:space="preserve"
9319+ filename="gobject-2.0.c"
9320+ line="3589">destroy notify for the existing value</doc>
9321+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify*"/>
9322+ </parameter>
9323+ </parameters>
9324+ </method>
9325+ <method name="run_dispose" c:identifier="g_object_run_dispose">
9326+ <doc xml:space="preserve"
9327+ filename="gobject-2.0.c"
9328+ line="3611">Releases all references to other objects. This can be used to break
9329+reference cycles.
9330+
9331+This function should only be called from object system implementations.</doc>
9332+ <source-position filename="gobject.h" line="661"/>
9333+ <return-value transfer-ownership="none">
9334+ <type name="none" c:type="void"/>
9335+ </return-value>
9336+ <parameters>
9337+ <instance-parameter name="object" transfer-ownership="none">
9338+ <doc xml:space="preserve"
9339+ filename="gobject-2.0.c"
9340+ line="3613">a #GObject</doc>
9341+ <type name="Object" c:type="GObject*"/>
9342+ </instance-parameter>
9343+ </parameters>
9344+ </method>
9345+ <method name="set" c:identifier="g_object_set" introspectable="0">
9346+ <doc xml:space="preserve"
9347+ filename="gobject-2.0.c"
9348+ line="3622">Sets properties on an object.
9349+
9350+The same caveats about passing integer literals as varargs apply as with
9351+g_object_new(). In particular, any integer literals set as the values for
9352+properties of type #gint64 or #guint64 must be 64 bits wide, using the
9353+%G_GINT64_CONSTANT or %G_GUINT64_CONSTANT macros.
9354+
9355+Note that the "notify" signals are queued and only emitted (in
9356+reverse order) after all properties have been set. See
9357+g_object_freeze_notify().</doc>
9358+ <source-position filename="gobject.h" line="463"/>
9359+ <return-value transfer-ownership="none">
9360+ <type name="none" c:type="void"/>
9361+ </return-value>
9362+ <parameters>
9363+ <instance-parameter name="object" transfer-ownership="none">
9364+ <doc xml:space="preserve"
9365+ filename="gobject-2.0.c"
9366+ line="3624">a #GObject</doc>
9367+ <type name="Object" c:type="gpointer"/>
9368+ </instance-parameter>
9369+ <parameter name="first_property_name" transfer-ownership="none">
9370+ <doc xml:space="preserve"
9371+ filename="gobject-2.0.c"
9372+ line="3625">name of the first property to set</doc>
9373+ <type name="utf8" c:type="const gchar*"/>
9374+ </parameter>
9375+ <parameter name="..." transfer-ownership="none">
9376+ <doc xml:space="preserve"
9377+ filename="gobject-2.0.c"
9378+ line="3626">value for the first property, followed optionally by more
9379+ name/value pairs, followed by %NULL</doc>
9380+ <varargs/>
9381+ </parameter>
9382+ </parameters>
9383+ </method>
9384+ <method name="set_data" c:identifier="g_object_set_data">
9385+ <doc xml:space="preserve"
9386+ filename="gobject-2.0.c"
9387+ line="3642">Each object carries around a table of associations from
9388+strings to pointers. This function lets you set an association.
9389+
9390+If the object already had an association with that name,
9391+the old association will be destroyed.
9392+
9393+Internally, the @key is converted to a #GQuark using g_quark_from_string().
9394+This means a copy of @key is kept permanently (even after @object has been
9395+finalized) — so it is recommended to only use a small, bounded set of values
9396+for @key in your program, to avoid the #GQuark storage growing unbounded.</doc>
9397+ <source-position filename="gobject.h" line="605"/>
9398+ <return-value transfer-ownership="none">
9399+ <type name="none" c:type="void"/>
9400+ </return-value>
9401+ <parameters>
9402+ <instance-parameter name="object" transfer-ownership="none">
9403+ <doc xml:space="preserve"
9404+ filename="gobject-2.0.c"
9405+ line="3644">#GObject containing the associations.</doc>
9406+ <type name="Object" c:type="GObject*"/>
9407+ </instance-parameter>
9408+ <parameter name="key" transfer-ownership="none">
9409+ <doc xml:space="preserve"
9410+ filename="gobject-2.0.c"
9411+ line="3645">name of the key</doc>
9412+ <type name="utf8" c:type="const gchar*"/>
9413+ </parameter>
9414+ <parameter name="data"
9415+ transfer-ownership="none"
9416+ nullable="1"
9417+ allow-none="1">
9418+ <doc xml:space="preserve"
9419+ filename="gobject-2.0.c"
9420+ line="3646">data to associate with that key</doc>
9421+ <type name="gpointer" c:type="gpointer"/>
9422+ </parameter>
9423+ </parameters>
9424+ </method>
9425+ <method name="set_data_full"
9426+ c:identifier="g_object_set_data_full"
9427+ introspectable="0">
9428+ <doc xml:space="preserve"
9429+ filename="gobject-2.0.c"
9430+ line="3661">Like g_object_set_data() except it adds notification
9431+for when the association is destroyed, either by setting it
9432+to a different value or when the object is destroyed.
9433+
9434+Note that the @destroy callback is not called if @data is %NULL.</doc>
9435+ <source-position filename="gobject.h" line="609"/>
9436+ <return-value transfer-ownership="none">
9437+ <type name="none" c:type="void"/>
9438+ </return-value>
9439+ <parameters>
9440+ <instance-parameter name="object" transfer-ownership="none">
9441+ <doc xml:space="preserve"
9442+ filename="gobject-2.0.c"
9443+ line="3663">#GObject containing the associations</doc>
9444+ <type name="Object" c:type="GObject*"/>
9445+ </instance-parameter>
9446+ <parameter name="key" transfer-ownership="none">
9447+ <doc xml:space="preserve"
9448+ filename="gobject-2.0.c"
9449+ line="3664">name of the key</doc>
9450+ <type name="utf8" c:type="const gchar*"/>
9451+ </parameter>
9452+ <parameter name="data"
9453+ transfer-ownership="none"
9454+ nullable="1"
9455+ allow-none="1">
9456+ <doc xml:space="preserve"
9457+ filename="gobject-2.0.c"
9458+ line="3665">data to associate with that key</doc>
9459+ <type name="gpointer" c:type="gpointer"/>
9460+ </parameter>
9461+ <parameter name="destroy"
9462+ transfer-ownership="none"
9463+ nullable="1"
9464+ allow-none="1"
9465+ scope="async">
9466+ <doc xml:space="preserve"
9467+ filename="gobject-2.0.c"
9468+ line="3666">function to call when the association is destroyed</doc>
9469+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
9470+ </parameter>
9471+ </parameters>
9472+ </method>
9473+ <method name="set_property" c:identifier="g_object_set_property">
9474+ <doc xml:space="preserve"
9475+ filename="gobject-2.0.c"
9476+ line="3676">Sets a property on an object.</doc>
9477+ <source-position filename="gobject.h" line="497"/>
9478+ <return-value transfer-ownership="none">
9479+ <type name="none" c:type="void"/>
9480+ </return-value>
9481+ <parameters>
9482+ <instance-parameter name="object" transfer-ownership="none">
9483+ <doc xml:space="preserve"
9484+ filename="gobject-2.0.c"
9485+ line="3678">a #GObject</doc>
9486+ <type name="Object" c:type="GObject*"/>
9487+ </instance-parameter>
9488+ <parameter name="property_name" transfer-ownership="none">
9489+ <doc xml:space="preserve"
9490+ filename="gobject-2.0.c"
9491+ line="3679">the name of the property to set</doc>
9492+ <type name="utf8" c:type="const gchar*"/>
9493+ </parameter>
9494+ <parameter name="value" transfer-ownership="none">
9495+ <doc xml:space="preserve"
9496+ filename="gobject-2.0.c"
9497+ line="3680">the value</doc>
9498+ <type name="Value" c:type="const GValue*"/>
9499+ </parameter>
9500+ </parameters>
9501+ </method>
9502+ <method name="set_qdata"
9503+ c:identifier="g_object_set_qdata"
9504+ introspectable="0">
9505+ <doc xml:space="preserve"
9506+ filename="gobject-2.0.c"
9507+ line="3686">This sets an opaque, named pointer on an object.
9508+The name is specified through a #GQuark (retrieved e.g. via
9509+g_quark_from_static_string()), and the pointer
9510+can be gotten back from the @object with g_object_get_qdata()
9511+until the @object is finalized.
9512+Setting a previously set user data pointer, overrides (frees)
9513+the old pointer set, using #NULL as pointer essentially
9514+removes the data stored.</doc>
9515+ <source-position filename="gobject.h" line="576"/>
9516+ <return-value transfer-ownership="none">
9517+ <type name="none" c:type="void"/>
9518+ </return-value>
9519+ <parameters>
9520+ <instance-parameter name="object" transfer-ownership="none">
9521+ <doc xml:space="preserve"
9522+ filename="gobject-2.0.c"
9523+ line="3688">The GObject to set store a user data pointer</doc>
9524+ <type name="Object" c:type="GObject*"/>
9525+ </instance-parameter>
9526+ <parameter name="quark" transfer-ownership="none">
9527+ <doc xml:space="preserve"
9528+ filename="gobject-2.0.c"
9529+ line="3689">A #GQuark, naming the user data pointer</doc>
9530+ <type name="GLib.Quark" c:type="GQuark"/>
9531+ </parameter>
9532+ <parameter name="data"
9533+ transfer-ownership="none"
9534+ nullable="1"
9535+ allow-none="1">
9536+ <doc xml:space="preserve"
9537+ filename="gobject-2.0.c"
9538+ line="3690">An opaque user data pointer</doc>
9539+ <type name="gpointer" c:type="gpointer"/>
9540+ </parameter>
9541+ </parameters>
9542+ </method>
9543+ <method name="set_qdata_full"
9544+ c:identifier="g_object_set_qdata_full"
9545+ introspectable="0">
9546+ <doc xml:space="preserve"
9547+ filename="gobject-2.0.c"
9548+ line="3703">This function works like g_object_set_qdata(), but in addition,
9549+a void (*destroy) (gpointer) function may be specified which is
9550+called with @data as argument when the @object is finalized, or
9551+the data is being overwritten by a call to g_object_set_qdata()
9552+with the same @quark.</doc>
9553+ <source-position filename="gobject.h" line="580"/>
9554+ <return-value transfer-ownership="none">
9555+ <type name="none" c:type="void"/>
9556+ </return-value>
9557+ <parameters>
9558+ <instance-parameter name="object" transfer-ownership="none">
9559+ <doc xml:space="preserve"
9560+ filename="gobject-2.0.c"
9561+ line="3705">The GObject to set store a user data pointer</doc>
9562+ <type name="Object" c:type="GObject*"/>
9563+ </instance-parameter>
9564+ <parameter name="quark" transfer-ownership="none">
9565+ <doc xml:space="preserve"
9566+ filename="gobject-2.0.c"
9567+ line="3706">A #GQuark, naming the user data pointer</doc>
9568+ <type name="GLib.Quark" c:type="GQuark"/>
9569+ </parameter>
9570+ <parameter name="data"
9571+ transfer-ownership="none"
9572+ nullable="1"
9573+ allow-none="1">
9574+ <doc xml:space="preserve"
9575+ filename="gobject-2.0.c"
9576+ line="3707">An opaque user data pointer</doc>
9577+ <type name="gpointer" c:type="gpointer"/>
9578+ </parameter>
9579+ <parameter name="destroy"
9580+ transfer-ownership="none"
9581+ nullable="1"
9582+ allow-none="1"
9583+ scope="async">
9584+ <doc xml:space="preserve"
9585+ filename="gobject-2.0.c"
9586+ line="3708">Function to invoke with @data as argument, when @data
9587+ needs to be freed</doc>
9588+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
9589+ </parameter>
9590+ </parameters>
9591+ </method>
9592+ <method name="set_valist"
9593+ c:identifier="g_object_set_valist"
9594+ introspectable="0">
9595+ <doc xml:space="preserve"
9596+ filename="gobject-2.0.c"
9597+ line="3719">Sets properties on an object.</doc>
9598+ <source-position filename="gobject.h" line="484"/>
9599+ <return-value transfer-ownership="none">
9600+ <type name="none" c:type="void"/>
9601+ </return-value>
9602+ <parameters>
9603+ <instance-parameter name="object" transfer-ownership="none">
9604+ <doc xml:space="preserve"
9605+ filename="gobject-2.0.c"
9606+ line="3721">a #GObject</doc>
9607+ <type name="Object" c:type="GObject*"/>
9608+ </instance-parameter>
9609+ <parameter name="first_property_name" transfer-ownership="none">
9610+ <doc xml:space="preserve"
9611+ filename="gobject-2.0.c"
9612+ line="3722">name of the first property to set</doc>
9613+ <type name="utf8" c:type="const gchar*"/>
9614+ </parameter>
9615+ <parameter name="var_args" transfer-ownership="none">
9616+ <doc xml:space="preserve"
9617+ filename="gobject-2.0.c"
9618+ line="3723">value for the first property, followed optionally by more
9619+ name/value pairs, followed by %NULL</doc>
9620+ <type name="va_list" c:type="va_list"/>
9621+ </parameter>
9622+ </parameters>
9623+ </method>
9624+ <method name="setv"
9625+ c:identifier="g_object_setv"
9626+ version="2.54"
9627+ introspectable="0">
9628+ <doc xml:space="preserve"
9629+ filename="gobject-2.0.c"
9630+ line="3730">Sets @n_properties properties for an @object.
9631+Properties to be set will be taken from @values. All properties must be
9632+valid. Warnings will be emitted and undefined behaviour may result if invalid
9633+properties are passed in.</doc>
9634+ <source-position filename="gobject.h" line="479"/>
9635+ <return-value transfer-ownership="none">
9636+ <type name="none" c:type="void"/>
9637+ </return-value>
9638+ <parameters>
9639+ <instance-parameter name="object" transfer-ownership="none">
9640+ <doc xml:space="preserve"
9641+ filename="gobject-2.0.c"
9642+ line="3732">a #GObject</doc>
9643+ <type name="Object" c:type="GObject*"/>
9644+ </instance-parameter>
9645+ <parameter name="n_properties" transfer-ownership="none">
9646+ <doc xml:space="preserve"
9647+ filename="gobject-2.0.c"
9648+ line="3733">the number of properties</doc>
9649+ <type name="guint" c:type="guint"/>
9650+ </parameter>
9651+ <parameter name="names" transfer-ownership="none">
9652+ <doc xml:space="preserve"
9653+ filename="gobject-2.0.c"
9654+ line="3734">the names of each property to be set</doc>
9655+ <array length="0" zero-terminated="0" c:type="const gchar**">
9656+ <type name="utf8" c:type="gchar*"/>
9657+ </array>
9658+ </parameter>
9659+ <parameter name="values" transfer-ownership="none">
9660+ <doc xml:space="preserve"
9661+ filename="gobject-2.0.c"
9662+ line="3735">the values of each property to be set</doc>
9663+ <array length="0" zero-terminated="0" c:type="const GValue*">
9664+ <type name="Value" c:type="GValue"/>
9665+ </array>
9666+ </parameter>
9667+ </parameters>
9668+ </method>
9669+ <method name="steal_data" c:identifier="g_object_steal_data">
9670+ <doc xml:space="preserve"
9671+ filename="gobject-2.0.c"
9672+ line="3746">Remove a specified datum from the object's data associations,
9673+without invoking the association's destroy handler.</doc>
9674+ <source-position filename="gobject.h" line="614"/>
9675+ <return-value transfer-ownership="full" nullable="1">
9676+ <doc xml:space="preserve"
9677+ filename="gobject-2.0.c"
9678+ line="3754">the data if found, or %NULL
9679+ if no such data exists.</doc>
9680+ <type name="gpointer" c:type="gpointer"/>
9681+ </return-value>
9682+ <parameters>
9683+ <instance-parameter name="object" transfer-ownership="none">
9684+ <doc xml:space="preserve"
9685+ filename="gobject-2.0.c"
9686+ line="3748">#GObject containing the associations</doc>
9687+ <type name="Object" c:type="GObject*"/>
9688+ </instance-parameter>
9689+ <parameter name="key" transfer-ownership="none">
9690+ <doc xml:space="preserve"
9691+ filename="gobject-2.0.c"
9692+ line="3749">name of the key</doc>
9693+ <type name="utf8" c:type="const gchar*"/>
9694+ </parameter>
9695+ </parameters>
9696+ </method>
9697+ <method name="steal_qdata" c:identifier="g_object_steal_qdata">
9698+ <doc xml:space="preserve"
9699+ filename="gobject-2.0.c"
9700+ line="3759">This function gets back user data pointers stored via
9701+g_object_set_qdata() and removes the @data from object
9702+without invoking its destroy() function (if any was
9703+set).
9704+Usually, calling this function is only required to update
9705+user data pointers with a destroy notifier, for example:
9706+|[&lt;!-- language="C" --&gt;
9707+void
9708+object_add_to_user_list (GObject *object,
9709+ const gchar *new_string)
9710+{
9711+ // the quark, naming the object data
9712+ GQuark quark_string_list = g_quark_from_static_string ("my-string-list");
9713+ // retrieve the old string list
9714+ GList *list = g_object_steal_qdata (object, quark_string_list);
9715+
9716+ // prepend new string
9717+ list = g_list_prepend (list, g_strdup (new_string));
9718+ // this changed 'list', so we need to set it again
9719+ g_object_set_qdata_full (object, quark_string_list, list, free_string_list);
9720+}
9721+static void
9722+free_string_list (gpointer data)
9723+{
9724+ GList *node, *list = data;
9725+
9726+ for (node = list; node; node = node-&gt;next)
9727+ g_free (node-&gt;data);
9728+ g_list_free (list);
9729+}
9730+]|
9731+Using g_object_get_qdata() in the above example, instead of
9732+g_object_steal_qdata() would have left the destroy function set,
9733+and thus the partial string list would have been freed upon
9734+g_object_set_qdata_full().</doc>
9735+ <source-position filename="gobject.h" line="585"/>
9736+ <return-value transfer-ownership="full" nullable="1">
9737+ <doc xml:space="preserve"
9738+ filename="gobject-2.0.c"
9739+ line="3800">The user data pointer set, or %NULL</doc>
9740+ <type name="gpointer" c:type="gpointer"/>
9741+ </return-value>
9742+ <parameters>
9743+ <instance-parameter name="object" transfer-ownership="none">
9744+ <doc xml:space="preserve"
9745+ filename="gobject-2.0.c"
9746+ line="3761">The GObject to get a stored user data pointer from</doc>
9747+ <type name="Object" c:type="GObject*"/>
9748+ </instance-parameter>
9749+ <parameter name="quark" transfer-ownership="none">
9750+ <doc xml:space="preserve"
9751+ filename="gobject-2.0.c"
9752+ line="3762">A #GQuark, naming the user data pointer</doc>
9753+ <type name="GLib.Quark" c:type="GQuark"/>
9754+ </parameter>
9755+ </parameters>
9756+ </method>
9757+ <method name="take_ref"
9758+ c:identifier="g_object_take_ref"
9759+ version="2.70"
9760+ introspectable="0">
9761+ <doc xml:space="preserve"
9762+ filename="gobject-2.0.c"
9763+ line="3804">If @object is floating, sink it. Otherwise, do nothing.
9764+
9765+In other words, this function will convert a floating reference (if
9766+present) into a full reference.
9767+
9768+Typically you want to use g_object_ref_sink() in order to
9769+automatically do the correct thing with respect to floating or
9770+non-floating references, but there is one specific scenario where
9771+this function is helpful.
9772+
9773+The situation where this function is helpful is when creating an API
9774+that allows the user to provide a callback function that returns a
9775+GObject. We certainly want to allow the user the flexibility to
9776+return a non-floating reference from this callback (for the case
9777+where the object that is being returned already exists).
9778+
9779+At the same time, the API style of some popular GObject-based
9780+libraries (such as Gtk) make it likely that for newly-created GObject
9781+instances, the user can be saved some typing if they are allowed to
9782+return a floating reference.
9783+
9784+Using this function on the return value of the user's callback allows
9785+the user to do whichever is more convenient for them. The caller will
9786+alway receives exactly one full reference to the value: either the
9787+one that was returned in the first place, or a floating reference
9788+that has been converted to a full reference.
9789+
9790+This function has an odd interaction when combined with
9791+g_object_ref_sink() running at the same time in another thread on
9792+the same #GObject instance. If g_object_ref_sink() runs first then
9793+the result will be that the floating reference is converted to a hard
9794+reference. If g_object_take_ref() runs first then the result will be
9795+that the floating reference is converted to a hard reference and an
9796+additional reference on top of that one is added. It is best to avoid
9797+this situation.</doc>
9798+ <source-position filename="gobject.h" line="519"/>
9799+ <return-value transfer-ownership="full">
9800+ <doc xml:space="preserve"
9801+ filename="gobject-2.0.c"
9802+ line="3845">@object</doc>
9803+ <type name="Object" c:type="gpointer"/>
9804+ </return-value>
9805+ <parameters>
9806+ <instance-parameter name="object" transfer-ownership="none">
9807+ <doc xml:space="preserve"
9808+ filename="gobject-2.0.c"
9809+ line="3806">a #GObject</doc>
9810+ <type name="Object" c:type="gpointer"/>
9811+ </instance-parameter>
9812+ </parameters>
9813+ </method>
9814+ <method name="thaw_notify" c:identifier="g_object_thaw_notify">
9815+ <doc xml:space="preserve"
9816+ filename="gobject-2.0.c"
9817+ line="3849">Reverts the effect of a previous call to
9818+g_object_freeze_notify(). The freeze count is decreased on @object
9819+and when it reaches zero, queued "notify" signals are emitted.
9820+
9821+Duplicate notifications for each property are squashed so that at most one
9822+#GObject::notify signal is emitted for each property, in the reverse order
9823+in which they have been queued.
9824+
9825+It is an error to call this function when the freeze count is zero.</doc>
9826+ <source-position filename="gobject.h" line="513"/>
9827+ <return-value transfer-ownership="none">
9828+ <type name="none" c:type="void"/>
9829+ </return-value>
9830+ <parameters>
9831+ <instance-parameter name="object" transfer-ownership="none">
9832+ <doc xml:space="preserve"
9833+ filename="gobject-2.0.c"
9834+ line="3851">a #GObject</doc>
9835+ <type name="Object" c:type="GObject*"/>
9836+ </instance-parameter>
9837+ </parameters>
9838+ </method>
9839+ <method name="unref" c:identifier="g_object_unref">
9840+ <doc xml:space="preserve"
9841+ filename="gobject-2.0.c"
9842+ line="3865">Decreases the reference count of @object. When its reference count
9843+drops to 0, the object is finalized (i.e. its memory is freed).
9844+
9845+If the pointer to the #GObject may be reused in future (for example, if it is
9846+an instance variable of another object), it is recommended to clear the
9847+pointer to %NULL rather than retain a dangling pointer to a potentially
9848+invalid #GObject instance. Use g_clear_object() for this.</doc>
9849+ <source-position filename="gobject.h" line="523"/>
9850+ <return-value transfer-ownership="none">
9851+ <type name="none" c:type="void"/>
9852+ </return-value>
9853+ <parameters>
9854+ <instance-parameter name="object" transfer-ownership="none">
9855+ <doc xml:space="preserve"
9856+ filename="gobject-2.0.c"
9857+ line="3867">a #GObject</doc>
9858+ <type name="Object" c:type="gpointer"/>
9859+ </instance-parameter>
9860+ </parameters>
9861+ </method>
9862+ <method name="watch_closure" c:identifier="g_object_watch_closure">
9863+ <doc xml:space="preserve"
9864+ filename="gobject-2.0.c"
9865+ line="3879">This function essentially limits the life time of the @closure to
9866+the life time of the object. That is, when the object is finalized,
9867+the @closure is invalidated by calling g_closure_invalidate() on
9868+it, in order to prevent invocations of the closure with a finalized
9869+(nonexisting) object. Also, g_object_ref() and g_object_unref() are
9870+added as marshal guards to the @closure, to ensure that an extra
9871+reference count is held on @object during invocation of the
9872+@closure. Usually, this function will be called on closures that
9873+use this @object as closure data.</doc>
9874+ <source-position filename="gobject.h" line="632"/>
9875+ <return-value transfer-ownership="none">
9876+ <type name="none" c:type="void"/>
9877+ </return-value>
9878+ <parameters>
9879+ <instance-parameter name="object" transfer-ownership="none">
9880+ <doc xml:space="preserve"
9881+ filename="gobject-2.0.c"
9882+ line="3881">#GObject restricting lifetime of @closure</doc>
9883+ <type name="Object" c:type="GObject*"/>
9884+ </instance-parameter>
9885+ <parameter name="closure" transfer-ownership="none">
9886+ <doc xml:space="preserve"
9887+ filename="gobject-2.0.c"
9888+ line="3882">#GClosure to watch</doc>
9889+ <type name="Closure" c:type="GClosure*"/>
9890+ </parameter>
9891+ </parameters>
9892+ </method>
9893+ <method name="weak_ref"
9894+ c:identifier="g_object_weak_ref"
9895+ introspectable="0">
9896+ <doc xml:space="preserve"
9897+ filename="gobject-2.0.c"
9898+ line="3896">Adds a weak reference callback to an object. Weak references are
9899+used for notification when an object is disposed. They are called
9900+"weak references" because they allow you to safely hold a pointer
9901+to an object without calling g_object_ref() (g_object_ref() adds a
9902+strong reference, that is, forces the object to stay alive).
9903+
9904+Note that the weak references created by this method are not
9905+thread-safe: they cannot safely be used in one thread if the
9906+object's last g_object_unref() might happen in another thread.
9907+Use #GWeakRef if thread-safety is required.</doc>
9908+ <source-position filename="gobject.h" line="525"/>
9909+ <return-value transfer-ownership="none">
9910+ <type name="none" c:type="void"/>
9911+ </return-value>
9912+ <parameters>
9913+ <instance-parameter name="object" transfer-ownership="none">
9914+ <doc xml:space="preserve"
9915+ filename="gobject-2.0.c"
9916+ line="3898">#GObject to reference weakly</doc>
9917+ <type name="Object" c:type="GObject*"/>
9918+ </instance-parameter>
9919+ <parameter name="notify" transfer-ownership="none" closure="1">
9920+ <doc xml:space="preserve"
9921+ filename="gobject-2.0.c"
9922+ line="3899">callback to invoke before the object is freed</doc>
9923+ <type name="WeakNotify" c:type="GWeakNotify"/>
9924+ </parameter>
9925+ <parameter name="data"
9926+ transfer-ownership="none"
9927+ nullable="1"
9928+ allow-none="1">
9929+ <doc xml:space="preserve"
9930+ filename="gobject-2.0.c"
9931+ line="3900">extra data to pass to notify</doc>
9932+ <type name="gpointer" c:type="gpointer"/>
9933+ </parameter>
9934+ </parameters>
9935+ </method>
9936+ <method name="weak_unref"
9937+ c:identifier="g_object_weak_unref"
9938+ introspectable="0">
9939+ <doc xml:space="preserve"
9940+ filename="gobject-2.0.c"
9941+ line="3915">Removes a weak reference callback to an object.</doc>
9942+ <source-position filename="gobject.h" line="529"/>
9943+ <return-value transfer-ownership="none">
9944+ <type name="none" c:type="void"/>
9945+ </return-value>
9946+ <parameters>
9947+ <instance-parameter name="object" transfer-ownership="none">
9948+ <doc xml:space="preserve"
9949+ filename="gobject-2.0.c"
9950+ line="3917">#GObject to remove a weak reference from</doc>
9951+ <type name="Object" c:type="GObject*"/>
9952+ </instance-parameter>
9953+ <parameter name="notify" transfer-ownership="none" closure="1">
9954+ <doc xml:space="preserve"
9955+ filename="gobject-2.0.c"
9956+ line="3918">callback to search for</doc>
9957+ <type name="WeakNotify" c:type="GWeakNotify"/>
9958+ </parameter>
9959+ <parameter name="data"
9960+ transfer-ownership="none"
9961+ nullable="1"
9962+ allow-none="1">
9963+ <doc xml:space="preserve"
9964+ filename="gobject-2.0.c"
9965+ line="3919">data to search for</doc>
9966+ <type name="gpointer" c:type="gpointer"/>
9967+ </parameter>
9968+ </parameters>
9969+ </method>
9970+ <field name="g_type_instance">
9971+ <type name="TypeInstance" c:type="GTypeInstance"/>
9972+ </field>
9973+ <field name="ref_count" readable="0" private="1">
9974+ <type name="guint" c:type="guint"/>
9975+ </field>
9976+ <field name="qdata" readable="0" private="1">
9977+ <type name="GLib.Data" c:type="GData*"/>
9978+ </field>
9979+ <glib:signal name="notify"
9980+ when="first"
9981+ no-recurse="1"
9982+ detailed="1"
9983+ action="1"
9984+ no-hooks="1">
9985+ <doc xml:space="preserve"
9986+ filename="gobject-2.0.c"
9987+ line="67">The notify signal is emitted on an object when one of its properties has
9988+its value set through g_object_set_property(), g_object_set(), et al.
9989+
9990+Note that getting this signal doesn’t itself guarantee that the value of
9991+the property has actually changed. When it is emitted is determined by the
9992+derived GObject class. If the implementor did not create the property with
9993+%G_PARAM_EXPLICIT_NOTIFY, then any call to g_object_set_property() results
9994+in ::notify being emitted, even if the new value is the same as the old.
9995+If they did pass %G_PARAM_EXPLICIT_NOTIFY, then this signal is emitted only
9996+when they explicitly call g_object_notify() or g_object_notify_by_pspec(),
9997+and common practice is to do that only when the value has actually changed.
9998+
9999+This signal is typically used to obtain change notification for a
10000+single property, by specifying the property name as a detail in the
10001+g_signal_connect() call, like this:
10002+
10003+|[&lt;!-- language="C" --&gt;
10004+g_signal_connect (text_view-&gt;buffer, "notify::paste-target-list",
10005+ G_CALLBACK (gtk_text_view_target_list_notify),
10006+ text_view)
10007+]|
10008+
10009+It is important to note that you must use
10010+[canonical parameter names][canonical-parameter-names] as
10011+detail strings for the notify signal.</doc>
10012+ <return-value transfer-ownership="none">
10013+ <type name="none" c:type="void"/>
10014+ </return-value>
10015+ <parameters>
10016+ <parameter name="pspec" transfer-ownership="none">
10017+ <doc xml:space="preserve"
10018+ filename="gobject-2.0.c"
10019+ line="70">the #GParamSpec of the property which changed.</doc>
10020+ <type name="ParamSpec"/>
10021+ </parameter>
10022+ </parameters>
10023+ </glib:signal>
10024+ </class>
10025+ <record name="ObjectClass"
10026+ c:type="GObjectClass"
10027+ glib:is-gtype-struct-for="Object">
10028+ <doc xml:space="preserve"
10029+ filename="gobject.h"
10030+ line="273">The class structure for the GObject type.
10031+
10032+|[&lt;!-- language="C" --&gt;
10033+// Example of implementing a singleton using a constructor.
10034+static MySingleton *the_singleton = NULL;
10035+
10036+static GObject*
10037+my_singleton_constructor (GType type,
10038+ guint n_construct_params,
10039+ GObjectConstructParam *construct_params)
10040+{
10041+ GObject *object;
10042+
10043+ if (!the_singleton)
10044+ {
10045+ object = G_OBJECT_CLASS (parent_class)-&gt;constructor (type,
10046+ n_construct_params,
10047+ construct_params);
10048+ the_singleton = MY_SINGLETON (object);
10049+ }
10050+ else
10051+ object = g_object_ref (G_OBJECT (the_singleton));
10052+
10053+ return object;
10054+}
10055+]|</doc>
10056+ <source-position filename="gobject.h" line="374"/>
10057+ <field name="g_type_class">
10058+ <doc xml:space="preserve"
10059+ filename="gobject.h"
10060+ line="275">the parent class</doc>
10061+ <type name="TypeClass" c:type="GTypeClass"/>
10062+ </field>
10063+ <field name="construct_properties" readable="0" private="1">
10064+ <type name="GLib.SList" c:type="GSList*">
10065+ <type name="gpointer" c:type="gpointer"/>
10066+ </type>
10067+ </field>
10068+ <field name="constructor" introspectable="0">
10069+ <callback name="constructor" introspectable="0">
10070+ <source-position filename="gobject.h" line="344"/>
10071+ <return-value>
10072+ <type name="Object" c:type="GObject*"/>
10073+ </return-value>
10074+ <parameters>
10075+ <parameter name="type" transfer-ownership="none">
10076+ <type name="GType" c:type="GType"/>
10077+ </parameter>
10078+ <parameter name="n_construct_properties" transfer-ownership="none">
10079+ <type name="guint" c:type="guint"/>
10080+ </parameter>
10081+ <parameter name="construct_properties" transfer-ownership="none">
10082+ <type name="ObjectConstructParam"
10083+ c:type="GObjectConstructParam*"/>
10084+ </parameter>
10085+ </parameters>
10086+ </callback>
10087+ </field>
10088+ <field name="set_property">
10089+ <callback name="set_property">
10090+ <source-position filename="gobject.h" line="348"/>
10091+ <return-value transfer-ownership="none">
10092+ <type name="none" c:type="void"/>
10093+ </return-value>
10094+ <parameters>
10095+ <parameter name="object" transfer-ownership="none">
10096+ <type name="Object" c:type="GObject*"/>
10097+ </parameter>
10098+ <parameter name="property_id" transfer-ownership="none">
10099+ <type name="guint" c:type="guint"/>
10100+ </parameter>
10101+ <parameter name="value" transfer-ownership="none">
10102+ <type name="Value" c:type="const GValue*"/>
10103+ </parameter>
10104+ <parameter name="pspec" transfer-ownership="none">
10105+ <type name="ParamSpec" c:type="GParamSpec*"/>
10106+ </parameter>
10107+ </parameters>
10108+ </callback>
10109+ </field>
10110+ <field name="get_property">
10111+ <callback name="get_property">
10112+ <source-position filename="gobject.h" line="352"/>
10113+ <return-value transfer-ownership="none">
10114+ <type name="none" c:type="void"/>
10115+ </return-value>
10116+ <parameters>
10117+ <parameter name="object" transfer-ownership="none">
10118+ <type name="Object" c:type="GObject*"/>
10119+ </parameter>
10120+ <parameter name="property_id" transfer-ownership="none">
10121+ <type name="guint" c:type="guint"/>
10122+ </parameter>
10123+ <parameter name="value" transfer-ownership="none">
10124+ <type name="Value" c:type="GValue*"/>
10125+ </parameter>
10126+ <parameter name="pspec" transfer-ownership="none">
10127+ <type name="ParamSpec" c:type="GParamSpec*"/>
10128+ </parameter>
10129+ </parameters>
10130+ </callback>
10131+ </field>
10132+ <field name="dispose">
10133+ <callback name="dispose">
10134+ <source-position filename="gobject.h" line="356"/>
10135+ <return-value transfer-ownership="none">
10136+ <type name="none" c:type="void"/>
10137+ </return-value>
10138+ <parameters>
10139+ <parameter name="object" transfer-ownership="none">
10140+ <type name="Object" c:type="GObject*"/>
10141+ </parameter>
10142+ </parameters>
10143+ </callback>
10144+ </field>
10145+ <field name="finalize">
10146+ <callback name="finalize">
10147+ <source-position filename="gobject.h" line="357"/>
10148+ <return-value transfer-ownership="none">
10149+ <type name="none" c:type="void"/>
10150+ </return-value>
10151+ <parameters>
10152+ <parameter name="object" transfer-ownership="none">
10153+ <type name="Object" c:type="GObject*"/>
10154+ </parameter>
10155+ </parameters>
10156+ </callback>
10157+ </field>
10158+ <field name="dispatch_properties_changed">
10159+ <callback name="dispatch_properties_changed">
10160+ <source-position filename="gobject.h" line="359"/>
10161+ <return-value transfer-ownership="none">
10162+ <type name="none" c:type="void"/>
10163+ </return-value>
10164+ <parameters>
10165+ <parameter name="object" transfer-ownership="none">
10166+ <type name="Object" c:type="GObject*"/>
10167+ </parameter>
10168+ <parameter name="n_pspecs" transfer-ownership="none">
10169+ <type name="guint" c:type="guint"/>
10170+ </parameter>
10171+ <parameter name="pspecs" transfer-ownership="none">
10172+ <type name="ParamSpec" c:type="GParamSpec**"/>
10173+ </parameter>
10174+ </parameters>
10175+ </callback>
10176+ </field>
10177+ <field name="notify">
10178+ <callback name="notify">
10179+ <source-position filename="gobject.h" line="363"/>
10180+ <return-value transfer-ownership="none">
10181+ <type name="none" c:type="void"/>
10182+ </return-value>
10183+ <parameters>
10184+ <parameter name="object" transfer-ownership="none">
10185+ <doc xml:space="preserve"
10186+ filename="gobject-2.0.c"
10187+ line="3422">a #GObject</doc>
10188+ <type name="Object" c:type="GObject*"/>
10189+ </parameter>
10190+ <parameter name="pspec" transfer-ownership="none">
10191+ <type name="ParamSpec" c:type="GParamSpec*"/>
10192+ </parameter>
10193+ </parameters>
10194+ </callback>
10195+ </field>
10196+ <field name="constructed">
10197+ <callback name="constructed">
10198+ <source-position filename="gobject.h" line="367"/>
10199+ <return-value transfer-ownership="none">
10200+ <type name="none" c:type="void"/>
10201+ </return-value>
10202+ <parameters>
10203+ <parameter name="object" transfer-ownership="none">
10204+ <type name="Object" c:type="GObject*"/>
10205+ </parameter>
10206+ </parameters>
10207+ </callback>
10208+ </field>
10209+ <field name="flags" readable="0" private="1">
10210+ <type name="gsize" c:type="gsize"/>
10211+ </field>
10212+ <field name="pdummy" readable="0" private="1">
10213+ <array zero-terminated="0" fixed-size="6">
10214+ <type name="gpointer" c:type="gpointer"/>
10215+ </array>
10216+ </field>
10217+ <method name="find_property" c:identifier="g_object_class_find_property">
10218+ <doc xml:space="preserve"
10219+ filename="gobject-2.0.c"
10220+ line="2845">Looks up the #GParamSpec for a property of a class.</doc>
10221+ <source-position filename="gobject.h" line="413"/>
10222+ <return-value transfer-ownership="none">
10223+ <doc xml:space="preserve"
10224+ filename="gobject-2.0.c"
10225+ line="2852">the #GParamSpec for the property, or
10226+ %NULL if the class doesn't have a property of that name</doc>
10227+ <type name="ParamSpec" c:type="GParamSpec*"/>
10228+ </return-value>
10229+ <parameters>
10230+ <instance-parameter name="oclass" transfer-ownership="none">
10231+ <doc xml:space="preserve"
10232+ filename="gobject-2.0.c"
10233+ line="2847">a #GObjectClass</doc>
10234+ <type name="ObjectClass" c:type="GObjectClass*"/>
10235+ </instance-parameter>
10236+ <parameter name="property_name" transfer-ownership="none">
10237+ <doc xml:space="preserve"
10238+ filename="gobject-2.0.c"
10239+ line="2848">the name of the property to look up</doc>
10240+ <type name="utf8" c:type="const gchar*"/>
10241+ </parameter>
10242+ </parameters>
10243+ </method>
10244+ <method name="install_properties"
10245+ c:identifier="g_object_class_install_properties"
10246+ version="2.26">
10247+ <doc xml:space="preserve"
10248+ filename="gobject-2.0.c"
10249+ line="2857">Installs new properties from an array of #GParamSpecs.
10250+
10251+All properties should be installed during the class initializer. It
10252+is possible to install properties after that, but doing so is not
10253+recommend, and specifically, is not guaranteed to be thread-safe vs.
10254+use of properties on the same type on other threads.
10255+
10256+The property id of each property is the index of each #GParamSpec in
10257+the @pspecs array.
10258+
10259+The property id of 0 is treated specially by #GObject and it should not
10260+be used to store a #GParamSpec.
10261+
10262+This function should be used if you plan to use a static array of
10263+#GParamSpecs and g_object_notify_by_pspec(). For instance, this
10264+class initialization:
10265+
10266+|[&lt;!-- language="C" --&gt;
10267+enum {
10268+ PROP_0, PROP_FOO, PROP_BAR, N_PROPERTIES
10269+};
10270+
10271+static GParamSpec *obj_properties[N_PROPERTIES] = { NULL, };
10272+
10273+static void
10274+my_object_class_init (MyObjectClass *klass)
10275+{
10276+ GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
10277+
10278+ obj_properties[PROP_FOO] =
10279+ g_param_spec_int ("foo", "Foo", "Foo",
10280+ -1, G_MAXINT,
10281+ 0,
10282+ G_PARAM_READWRITE);
10283+
10284+ obj_properties[PROP_BAR] =
10285+ g_param_spec_string ("bar", "Bar", "Bar",
10286+ NULL,
10287+ G_PARAM_READWRITE);
10288+
10289+ gobject_class-&gt;set_property = my_object_set_property;
10290+ gobject_class-&gt;get_property = my_object_get_property;
10291+ g_object_class_install_properties (gobject_class,
10292+ N_PROPERTIES,
10293+ obj_properties);
10294+}
10295+]|
10296+
10297+allows calling g_object_notify_by_pspec() to notify of property changes:
10298+
10299+|[&lt;!-- language="C" --&gt;
10300+void
10301+my_object_set_foo (MyObject *self, gint foo)
10302+{
10303+ if (self-&gt;foo != foo)
10304+ {
10305+ self-&gt;foo = foo;
10306+ g_object_notify_by_pspec (G_OBJECT (self), obj_properties[PROP_FOO]);
10307+ }
10308+ }
10309+]|</doc>
10310+ <source-position filename="gobject.h" line="423"/>
10311+ <return-value transfer-ownership="none">
10312+ <type name="none" c:type="void"/>
10313+ </return-value>
10314+ <parameters>
10315+ <instance-parameter name="oclass" transfer-ownership="none">
10316+ <doc xml:space="preserve"
10317+ filename="gobject-2.0.c"
10318+ line="2859">a #GObjectClass</doc>
10319+ <type name="ObjectClass" c:type="GObjectClass*"/>
10320+ </instance-parameter>
10321+ <parameter name="n_pspecs" transfer-ownership="none">
10322+ <doc xml:space="preserve"
10323+ filename="gobject-2.0.c"
10324+ line="2860">the length of the #GParamSpecs array</doc>
10325+ <type name="guint" c:type="guint"/>
10326+ </parameter>
10327+ <parameter name="pspecs" transfer-ownership="none">
10328+ <doc xml:space="preserve"
10329+ filename="gobject-2.0.c"
10330+ line="2861">the #GParamSpecs array
10331+ defining the new properties</doc>
10332+ <array length="0" zero-terminated="0" c:type="GParamSpec**">
10333+ <type name="ParamSpec" c:type="GParamSpec*"/>
10334+ </array>
10335+ </parameter>
10336+ </parameters>
10337+ </method>
10338+ <method name="install_property"
10339+ c:identifier="g_object_class_install_property">
10340+ <doc xml:space="preserve"
10341+ filename="gobject-2.0.c"
10342+ line="2930">Installs a new property.
10343+
10344+All properties should be installed during the class initializer. It
10345+is possible to install properties after that, but doing so is not
10346+recommend, and specifically, is not guaranteed to be thread-safe vs.
10347+use of properties on the same type on other threads.
10348+
10349+Note that it is possible to redefine a property in a derived class,
10350+by installing a property with the same name. This can be useful at times,
10351+e.g. to change the range of allowed values or the default value.</doc>
10352+ <source-position filename="gobject.h" line="409"/>
10353+ <return-value transfer-ownership="none">
10354+ <type name="none" c:type="void"/>
10355+ </return-value>
10356+ <parameters>
10357+ <instance-parameter name="oclass" transfer-ownership="none">
10358+ <doc xml:space="preserve"
10359+ filename="gobject-2.0.c"
10360+ line="2932">a #GObjectClass</doc>
10361+ <type name="ObjectClass" c:type="GObjectClass*"/>
10362+ </instance-parameter>
10363+ <parameter name="property_id" transfer-ownership="none">
10364+ <doc xml:space="preserve"
10365+ filename="gobject-2.0.c"
10366+ line="2933">the id for the new property</doc>
10367+ <type name="guint" c:type="guint"/>
10368+ </parameter>
10369+ <parameter name="pspec" transfer-ownership="none">
10370+ <doc xml:space="preserve"
10371+ filename="gobject-2.0.c"
10372+ line="2934">the #GParamSpec for the new property</doc>
10373+ <type name="ParamSpec" c:type="GParamSpec*"/>
10374+ </parameter>
10375+ </parameters>
10376+ </method>
10377+ <method name="list_properties"
10378+ c:identifier="g_object_class_list_properties">
10379+ <doc xml:space="preserve"
10380+ filename="gobject-2.0.c"
10381+ line="2949">Get an array of #GParamSpec* for all properties of a class.</doc>
10382+ <source-position filename="gobject.h" line="416"/>
10383+ <return-value transfer-ownership="container">
10384+ <doc xml:space="preserve"
10385+ filename="gobject-2.0.c"
10386+ line="2956">an array of
10387+ #GParamSpec* which should be freed after use</doc>
10388+ <array length="0" zero-terminated="0" c:type="GParamSpec**">
10389+ <type name="ParamSpec" c:type="GParamSpec*"/>
10390+ </array>
10391+ </return-value>
10392+ <parameters>
10393+ <instance-parameter name="oclass" transfer-ownership="none">
10394+ <doc xml:space="preserve"
10395+ filename="gobject-2.0.c"
10396+ line="2951">a #GObjectClass</doc>
10397+ <type name="ObjectClass" c:type="GObjectClass*"/>
10398+ </instance-parameter>
10399+ <parameter name="n_properties"
10400+ direction="out"
10401+ caller-allocates="0"
10402+ transfer-ownership="full">
10403+ <doc xml:space="preserve"
10404+ filename="gobject-2.0.c"
10405+ line="2952">return location for the length of the returned array</doc>
10406+ <type name="guint" c:type="guint*"/>
10407+ </parameter>
10408+ </parameters>
10409+ </method>
10410+ <method name="override_property"
10411+ c:identifier="g_object_class_override_property"
10412+ version="2.4">
10413+ <doc xml:space="preserve"
10414+ filename="gobject-2.0.c"
10415+ line="2961">Registers @property_id as referring to a property with the name
10416+@name in a parent class or in an interface implemented by @oclass.
10417+This allows this class to "override" a property implementation in
10418+a parent class or to provide the implementation of a property from
10419+an interface.
10420+
10421+Internally, overriding is implemented by creating a property of type
10422+#GParamSpecOverride; generally operations that query the properties of
10423+the object class, such as g_object_class_find_property() or
10424+g_object_class_list_properties() will return the overridden
10425+property. However, in one case, the @construct_properties argument of
10426+the @constructor virtual function, the #GParamSpecOverride is passed
10427+instead, so that the @param_id field of the #GParamSpec will be
10428+correct. For virtually all uses, this makes no difference. If you
10429+need to get the overridden property, you can call
10430+g_param_spec_get_redirect_target().</doc>
10431+ <source-position filename="gobject.h" line="419"/>
10432+ <return-value transfer-ownership="none">
10433+ <type name="none" c:type="void"/>
10434+ </return-value>
10435+ <parameters>
10436+ <instance-parameter name="oclass" transfer-ownership="none">
10437+ <doc xml:space="preserve"
10438+ filename="gobject-2.0.c"
10439+ line="2963">a #GObjectClass</doc>
10440+ <type name="ObjectClass" c:type="GObjectClass*"/>
10441+ </instance-parameter>
10442+ <parameter name="property_id" transfer-ownership="none">
10443+ <doc xml:space="preserve"
10444+ filename="gobject-2.0.c"
10445+ line="2964">the new property ID</doc>
10446+ <type name="guint" c:type="guint"/>
10447+ </parameter>
10448+ <parameter name="name" transfer-ownership="none">
10449+ <doc xml:space="preserve"
10450+ filename="gobject-2.0.c"
10451+ line="2965">the name of a property registered in a parent class or
10452+ in an interface of this class.</doc>
10453+ <type name="utf8" c:type="const gchar*"/>
10454+ </parameter>
10455+ </parameters>
10456+ </method>
10457+ </record>
10458+ <record name="ObjectConstructParam" c:type="GObjectConstructParam">
10459+ <doc xml:space="preserve"
10460+ filename="gobject.h"
10461+ line="376">The GObjectConstructParam struct is an auxiliary structure used to hand
10462+#GParamSpec/#GValue pairs to the @constructor of a #GObjectClass.</doc>
10463+ <source-position filename="gobject.h" line="388"/>
10464+ <field name="pspec" writable="1">
10465+ <doc xml:space="preserve"
10466+ filename="gobject.h"
10467+ line="378">the #GParamSpec of the construct parameter</doc>
10468+ <type name="ParamSpec" c:type="GParamSpec*"/>
10469+ </field>
10470+ <field name="value" writable="1">
10471+ <doc xml:space="preserve"
10472+ filename="gobject.h"
10473+ line="379">the value to set the parameter to</doc>
10474+ <type name="Value" c:type="GValue*"/>
10475+ </field>
10476+ </record>
10477+ <callback name="ObjectFinalizeFunc" c:type="GObjectFinalizeFunc">
10478+ <doc xml:space="preserve"
10479+ filename="gobject.h"
10480+ line="223">The type of the @finalize function of #GObjectClass.</doc>
10481+ <source-position filename="gobject.h" line="229"/>
10482+ <return-value transfer-ownership="none">
10483+ <type name="none" c:type="void"/>
10484+ </return-value>
10485+ <parameters>
10486+ <parameter name="object" transfer-ownership="none">
10487+ <doc xml:space="preserve"
10488+ filename="gobject.h"
10489+ line="225">the #GObject being finalized</doc>
10490+ <type name="Object" c:type="GObject*"/>
10491+ </parameter>
10492+ </parameters>
10493+ </callback>
10494+ <callback name="ObjectGetPropertyFunc" c:type="GObjectGetPropertyFunc">
10495+ <doc xml:space="preserve"
10496+ filename="gobject.h"
10497+ line="195">The type of the @get_property function of #GObjectClass.</doc>
10498+ <source-position filename="gobject.h" line="205"/>
10499+ <return-value transfer-ownership="none">
10500+ <type name="none" c:type="void"/>
10501+ </return-value>
10502+ <parameters>
10503+ <parameter name="object" transfer-ownership="none">
10504+ <doc xml:space="preserve"
10505+ filename="gobject.h"
10506+ line="197">a #GObject</doc>
10507+ <type name="Object" c:type="GObject*"/>
10508+ </parameter>
10509+ <parameter name="property_id" transfer-ownership="none">
10510+ <doc xml:space="preserve"
10511+ filename="gobject.h"
10512+ line="198">the numeric id under which the property was registered with
10513+ g_object_class_install_property().</doc>
10514+ <type name="guint" c:type="guint"/>
10515+ </parameter>
10516+ <parameter name="value" transfer-ownership="none">
10517+ <doc xml:space="preserve"
10518+ filename="gobject.h"
10519+ line="200">a #GValue to return the property value in</doc>
10520+ <type name="Value" c:type="GValue*"/>
10521+ </parameter>
10522+ <parameter name="pspec" transfer-ownership="none">
10523+ <doc xml:space="preserve"
10524+ filename="gobject.h"
10525+ line="201">the #GParamSpec describing the property</doc>
10526+ <type name="ParamSpec" c:type="GParamSpec*"/>
10527+ </parameter>
10528+ </parameters>
10529+ </callback>
10530+ <callback name="ObjectSetPropertyFunc" c:type="GObjectSetPropertyFunc">
10531+ <doc xml:space="preserve"
10532+ filename="gobject.h"
10533+ line="209">The type of the @set_property function of #GObjectClass.</doc>
10534+ <source-position filename="gobject.h" line="219"/>
10535+ <return-value transfer-ownership="none">
10536+ <type name="none" c:type="void"/>
10537+ </return-value>
10538+ <parameters>
10539+ <parameter name="object" transfer-ownership="none">
10540+ <doc xml:space="preserve"
10541+ filename="gobject.h"
10542+ line="211">a #GObject</doc>
10543+ <type name="Object" c:type="GObject*"/>
10544+ </parameter>
10545+ <parameter name="property_id" transfer-ownership="none">
10546+ <doc xml:space="preserve"
10547+ filename="gobject.h"
10548+ line="212">the numeric id under which the property was registered with
10549+ g_object_class_install_property().</doc>
10550+ <type name="guint" c:type="guint"/>
10551+ </parameter>
10552+ <parameter name="value" transfer-ownership="none">
10553+ <doc xml:space="preserve"
10554+ filename="gobject.h"
10555+ line="214">the new value for the property</doc>
10556+ <type name="Value" c:type="const GValue*"/>
10557+ </parameter>
10558+ <parameter name="pspec" transfer-ownership="none">
10559+ <doc xml:space="preserve"
10560+ filename="gobject.h"
10561+ line="215">the #GParamSpec describing the property</doc>
10562+ <type name="ParamSpec" c:type="GParamSpec*"/>
10563+ </parameter>
10564+ </parameters>
10565+ </callback>
10566+ <constant name="PARAM_MASK" value="255" c:type="G_PARAM_MASK">
10567+ <doc xml:space="preserve"
10568+ filename="gparam.h"
10569+ line="179">Mask containing the bits of #GParamSpec.flags which are reserved for GLib.</doc>
10570+ <source-position filename="gparam.h" line="184"/>
10571+ <type name="gint" c:type="gint"/>
10572+ </constant>
10573+ <function-macro name="PARAM_SPEC"
10574+ c:identifier="G_PARAM_SPEC"
10575+ introspectable="0">
10576+ <doc xml:space="preserve"
10577+ filename="gparam.h"
10578+ line="38">Casts a derived #GParamSpec object (e.g. of type #GParamSpecInt) into
10579+a #GParamSpec object.</doc>
10580+ <source-position filename="gparam.h" line="45"/>
10581+ <parameters>
10582+ <parameter name="pspec">
10583+ <doc xml:space="preserve"
10584+ filename="gparam.h"
10585+ line="40">a valid #GParamSpec</doc>
10586+ </parameter>
10587+ </parameters>
10588+ </function-macro>
10589+ <function-macro name="PARAM_SPEC_BOOLEAN"
10590+ c:identifier="G_PARAM_SPEC_BOOLEAN"
10591+ introspectable="0">
10592+ <doc xml:space="preserve"
10593+ filename="gparamspecs.h"
10594+ line="95">Cast a #GParamSpec instance into a #GParamSpecBoolean.</doc>
10595+ <source-position filename="gparamspecs.h" line="101"/>
10596+ <parameters>
10597+ <parameter name="pspec">
10598+ <doc xml:space="preserve"
10599+ filename="gparamspecs.h"
10600+ line="97">a valid #GParamSpec instance</doc>
10601+ </parameter>
10602+ </parameters>
10603+ </function-macro>
10604+ <function-macro name="PARAM_SPEC_BOXED"
10605+ c:identifier="G_PARAM_SPEC_BOXED"
10606+ introspectable="0">
10607+ <doc xml:space="preserve"
10608+ filename="gparamspecs.h"
10609+ line="417">Cast a #GParamSpec instance into a #GParamSpecBoxed.</doc>
10610+ <source-position filename="gparamspecs.h" line="423"/>
10611+ <parameters>
10612+ <parameter name="pspec">
10613+ <doc xml:space="preserve"
10614+ filename="gparamspecs.h"
10615+ line="419">a valid #GParamSpec instance</doc>
10616+ </parameter>
10617+ </parameters>
10618+ </function-macro>
10619+ <function-macro name="PARAM_SPEC_CHAR"
10620+ c:identifier="G_PARAM_SPEC_CHAR"
10621+ introspectable="0">
10622+ <doc xml:space="preserve"
10623+ filename="gparamspecs.h"
10624+ line="49">Cast a #GParamSpec instance into a #GParamSpecChar.</doc>
10625+ <source-position filename="gparamspecs.h" line="55"/>
10626+ <parameters>
10627+ <parameter name="pspec">
10628+ <doc xml:space="preserve"
10629+ filename="gparamspecs.h"
10630+ line="51">a valid #GParamSpec instance</doc>
10631+ </parameter>
10632+ </parameters>
10633+ </function-macro>
10634+ <function-macro name="PARAM_SPEC_CLASS"
10635+ c:identifier="G_PARAM_SPEC_CLASS"
10636+ introspectable="0">
10637+ <doc xml:space="preserve"
10638+ filename="gparam.h"
10639+ line="58">Casts a derived #GParamSpecClass structure into a #GParamSpecClass structure.</doc>
10640+ <source-position filename="gparam.h" line="64"/>
10641+ <parameters>
10642+ <parameter name="pclass">
10643+ <doc xml:space="preserve"
10644+ filename="gparam.h"
10645+ line="60">a valid #GParamSpecClass</doc>
10646+ </parameter>
10647+ </parameters>
10648+ </function-macro>
10649+ <function-macro name="PARAM_SPEC_DOUBLE"
10650+ c:identifier="G_PARAM_SPEC_DOUBLE"
10651+ introspectable="0">
10652+ <doc xml:space="preserve"
10653+ filename="gparamspecs.h"
10654+ line="348">Cast a #GParamSpec instance into a #GParamSpecDouble.</doc>
10655+ <source-position filename="gparamspecs.h" line="354"/>
10656+ <parameters>
10657+ <parameter name="pspec">
10658+ <doc xml:space="preserve"
10659+ filename="gparamspecs.h"
10660+ line="350">a valid #GParamSpec instance</doc>
10661+ </parameter>
10662+ </parameters>
10663+ </function-macro>
10664+ <function-macro name="PARAM_SPEC_ENUM"
10665+ c:identifier="G_PARAM_SPEC_ENUM"
10666+ introspectable="0">
10667+ <doc xml:space="preserve"
10668+ filename="gparamspecs.h"
10669+ line="279">Cast a #GParamSpec instance into a #GParamSpecEnum.</doc>
10670+ <source-position filename="gparamspecs.h" line="285"/>
10671+ <parameters>
10672+ <parameter name="pspec">
10673+ <doc xml:space="preserve"
10674+ filename="gparamspecs.h"
10675+ line="281">a valid #GParamSpec instance</doc>
10676+ </parameter>
10677+ </parameters>
10678+ </function-macro>
10679+ <function-macro name="PARAM_SPEC_FLAGS"
10680+ c:identifier="G_PARAM_SPEC_FLAGS"
10681+ introspectable="0">
10682+ <doc xml:space="preserve"
10683+ filename="gparamspecs.h"
10684+ line="302">Cast a #GParamSpec instance into a #GParamSpecFlags.</doc>
10685+ <source-position filename="gparamspecs.h" line="308"/>
10686+ <parameters>
10687+ <parameter name="pspec">
10688+ <doc xml:space="preserve"
10689+ filename="gparamspecs.h"
10690+ line="304">a valid #GParamSpec instance</doc>
10691+ </parameter>
10692+ </parameters>
10693+ </function-macro>
10694+ <function-macro name="PARAM_SPEC_FLOAT"
10695+ c:identifier="G_PARAM_SPEC_FLOAT"
10696+ introspectable="0">
10697+ <doc xml:space="preserve"
10698+ filename="gparamspecs.h"
10699+ line="325">Cast a #GParamSpec instance into a #GParamSpecFloat.</doc>
10700+ <source-position filename="gparamspecs.h" line="331"/>
10701+ <parameters>
10702+ <parameter name="pspec">
10703+ <doc xml:space="preserve"
10704+ filename="gparamspecs.h"
10705+ line="327">a valid #GParamSpec instance</doc>
10706+ </parameter>
10707+ </parameters>
10708+ </function-macro>
10709+ <function-macro name="PARAM_SPEC_GET_CLASS"
10710+ c:identifier="G_PARAM_SPEC_GET_CLASS"
10711+ introspectable="0">
10712+ <doc xml:space="preserve"
10713+ filename="gparam.h"
10714+ line="73">Retrieves the #GParamSpecClass of a #GParamSpec.</doc>
10715+ <source-position filename="gparam.h" line="79"/>
10716+ <parameters>
10717+ <parameter name="pspec">
10718+ <doc xml:space="preserve"
10719+ filename="gparam.h"
10720+ line="75">a valid #GParamSpec</doc>
10721+ </parameter>
10722+ </parameters>
10723+ </function-macro>
10724+ <function-macro name="PARAM_SPEC_GTYPE"
10725+ c:identifier="G_PARAM_SPEC_GTYPE"
10726+ version="2.10"
10727+ introspectable="0">
10728+ <doc xml:space="preserve"
10729+ filename="gparamspecs.h"
10730+ line="546">Casts a #GParamSpec into a #GParamSpecGType.</doc>
10731+ <source-position filename="gparamspecs.h" line="554"/>
10732+ <parameters>
10733+ <parameter name="pspec">
10734+ <doc xml:space="preserve"
10735+ filename="gparamspecs.h"
10736+ line="548">a #GParamSpec</doc>
10737+ </parameter>
10738+ </parameters>
10739+ </function-macro>
10740+ <function-macro name="PARAM_SPEC_INT"
10741+ c:identifier="G_PARAM_SPEC_INT"
10742+ introspectable="0">
10743+ <doc xml:space="preserve"
10744+ filename="gparamspecs.h"
10745+ line="118">Cast a #GParamSpec instance into a #GParamSpecInt.</doc>
10746+ <source-position filename="gparamspecs.h" line="124"/>
10747+ <parameters>
10748+ <parameter name="pspec">
10749+ <doc xml:space="preserve"
10750+ filename="gparamspecs.h"
10751+ line="120">a valid #GParamSpec instance</doc>
10752+ </parameter>
10753+ </parameters>
10754+ </function-macro>
10755+ <function-macro name="PARAM_SPEC_INT64"
10756+ c:identifier="G_PARAM_SPEC_INT64"
10757+ introspectable="0">
10758+ <doc xml:space="preserve"
10759+ filename="gparamspecs.h"
10760+ line="210">Cast a #GParamSpec instance into a #GParamSpecInt64.</doc>
10761+ <source-position filename="gparamspecs.h" line="216"/>
10762+ <parameters>
10763+ <parameter name="pspec">
10764+ <doc xml:space="preserve"
10765+ filename="gparamspecs.h"
10766+ line="212">a valid #GParamSpec instance</doc>
10767+ </parameter>
10768+ </parameters>
10769+ </function-macro>
10770+ <function-macro name="PARAM_SPEC_LONG"
10771+ c:identifier="G_PARAM_SPEC_LONG"
10772+ introspectable="0">
10773+ <doc xml:space="preserve"
10774+ filename="gparamspecs.h"
10775+ line="164">Cast a #GParamSpec instance into a #GParamSpecLong.</doc>
10776+ <source-position filename="gparamspecs.h" line="170"/>
10777+ <parameters>
10778+ <parameter name="pspec">
10779+ <doc xml:space="preserve"
10780+ filename="gparamspecs.h"
10781+ line="166">a valid #GParamSpec instance</doc>
10782+ </parameter>
10783+ </parameters>
10784+ </function-macro>
10785+ <function-macro name="PARAM_SPEC_OBJECT"
10786+ c:identifier="G_PARAM_SPEC_OBJECT"
10787+ introspectable="0">
10788+ <doc xml:space="preserve"
10789+ filename="gparamspecs.h"
10790+ line="492">Casts a #GParamSpec instance into a #GParamSpecObject.</doc>
10791+ <source-position filename="gparamspecs.h" line="498"/>
10792+ <parameters>
10793+ <parameter name="pspec">
10794+ <doc xml:space="preserve"
10795+ filename="gparamspecs.h"
10796+ line="494">a valid #GParamSpec instance</doc>
10797+ </parameter>
10798+ </parameters>
10799+ </function-macro>
10800+ <function-macro name="PARAM_SPEC_OVERRIDE"
10801+ c:identifier="G_PARAM_SPEC_OVERRIDE"
10802+ version="2.4"
10803+ introspectable="0">
10804+ <doc xml:space="preserve"
10805+ filename="gparamspecs.h"
10806+ line="518">Casts a #GParamSpec into a #GParamSpecOverride.</doc>
10807+ <source-position filename="gparamspecs.h" line="526"/>
10808+ <parameters>
10809+ <parameter name="pspec">
10810+ <doc xml:space="preserve"
10811+ filename="gparamspecs.h"
10812+ line="520">a #GParamSpec</doc>
10813+ </parameter>
10814+ </parameters>
10815+ </function-macro>
10816+ <function-macro name="PARAM_SPEC_PARAM"
10817+ c:identifier="G_PARAM_SPEC_PARAM"
10818+ introspectable="0">
10819+ <doc xml:space="preserve"
10820+ filename="gparamspecs.h"
10821+ line="394">Casts a #GParamSpec instance into a #GParamSpecParam.</doc>
10822+ <source-position filename="gparamspecs.h" line="400"/>
10823+ <parameters>
10824+ <parameter name="pspec">
10825+ <doc xml:space="preserve"
10826+ filename="gparamspecs.h"
10827+ line="396">a valid #GParamSpec instance</doc>
10828+ </parameter>
10829+ </parameters>
10830+ </function-macro>
10831+ <function-macro name="PARAM_SPEC_POINTER"
10832+ c:identifier="G_PARAM_SPEC_POINTER"
10833+ introspectable="0">
10834+ <doc xml:space="preserve"
10835+ filename="gparamspecs.h"
10836+ line="440">Casts a #GParamSpec instance into a #GParamSpecPointer.</doc>
10837+ <source-position filename="gparamspecs.h" line="446"/>
10838+ <parameters>
10839+ <parameter name="pspec">
10840+ <doc xml:space="preserve"
10841+ filename="gparamspecs.h"
10842+ line="442">a valid #GParamSpec instance</doc>
10843+ </parameter>
10844+ </parameters>
10845+ </function-macro>
10846+ <function-macro name="PARAM_SPEC_STRING"
10847+ c:identifier="G_PARAM_SPEC_STRING"
10848+ introspectable="0">
10849+ <doc xml:space="preserve"
10850+ filename="gparamspecs.h"
10851+ line="371">Casts a #GParamSpec instance into a #GParamSpecString.</doc>
10852+ <source-position filename="gparamspecs.h" line="377"/>
10853+ <parameters>
10854+ <parameter name="pspec">
10855+ <doc xml:space="preserve"
10856+ filename="gparamspecs.h"
10857+ line="373">a valid #GParamSpec instance</doc>
10858+ </parameter>
10859+ </parameters>
10860+ </function-macro>
10861+ <function-macro name="PARAM_SPEC_TYPE"
10862+ c:identifier="G_PARAM_SPEC_TYPE"
10863+ introspectable="0">
10864+ <doc xml:space="preserve"
10865+ filename="gparam.h"
10866+ line="83">Retrieves the #GType of this @pspec.</doc>
10867+ <source-position filename="gparam.h" line="89"/>
10868+ <parameters>
10869+ <parameter name="pspec">
10870+ <doc xml:space="preserve"
10871+ filename="gparam.h"
10872+ line="85">a valid #GParamSpec</doc>
10873+ </parameter>
10874+ </parameters>
10875+ </function-macro>
10876+ <function-macro name="PARAM_SPEC_TYPE_NAME"
10877+ c:identifier="G_PARAM_SPEC_TYPE_NAME"
10878+ introspectable="0">
10879+ <doc xml:space="preserve"
10880+ filename="gparam.h"
10881+ line="90">Retrieves the #GType name of this @pspec.</doc>
10882+ <source-position filename="gparam.h" line="96"/>
10883+ <parameters>
10884+ <parameter name="pspec">
10885+ <doc xml:space="preserve"
10886+ filename="gparam.h"
10887+ line="92">a valid #GParamSpec</doc>
10888+ </parameter>
10889+ </parameters>
10890+ </function-macro>
10891+ <function-macro name="PARAM_SPEC_UCHAR"
10892+ c:identifier="G_PARAM_SPEC_UCHAR"
10893+ introspectable="0">
10894+ <doc xml:space="preserve"
10895+ filename="gparamspecs.h"
10896+ line="72">Cast a #GParamSpec instance into a #GParamSpecUChar.</doc>
10897+ <source-position filename="gparamspecs.h" line="78"/>
10898+ <parameters>
10899+ <parameter name="pspec">
10900+ <doc xml:space="preserve"
10901+ filename="gparamspecs.h"
10902+ line="74">a valid #GParamSpec instance</doc>
10903+ </parameter>
10904+ </parameters>
10905+ </function-macro>
10906+ <function-macro name="PARAM_SPEC_UINT"
10907+ c:identifier="G_PARAM_SPEC_UINT"
10908+ introspectable="0">
10909+ <doc xml:space="preserve"
10910+ filename="gparamspecs.h"
10911+ line="141">Cast a #GParamSpec instance into a #GParamSpecUInt.</doc>
10912+ <source-position filename="gparamspecs.h" line="147"/>
10913+ <parameters>
10914+ <parameter name="pspec">
10915+ <doc xml:space="preserve"
10916+ filename="gparamspecs.h"
10917+ line="143">a valid #GParamSpec instance</doc>
10918+ </parameter>
10919+ </parameters>
10920+ </function-macro>
10921+ <function-macro name="PARAM_SPEC_UINT64"
10922+ c:identifier="G_PARAM_SPEC_UINT64"
10923+ introspectable="0">
10924+ <doc xml:space="preserve"
10925+ filename="gparamspecs.h"
10926+ line="233">Cast a #GParamSpec instance into a #GParamSpecUInt64.</doc>
10927+ <source-position filename="gparamspecs.h" line="239"/>
10928+ <parameters>
10929+ <parameter name="pspec">
10930+ <doc xml:space="preserve"
10931+ filename="gparamspecs.h"
10932+ line="235">a valid #GParamSpec instance</doc>
10933+ </parameter>
10934+ </parameters>
10935+ </function-macro>
10936+ <function-macro name="PARAM_SPEC_ULONG"
10937+ c:identifier="G_PARAM_SPEC_ULONG"
10938+ introspectable="0">
10939+ <doc xml:space="preserve"
10940+ filename="gparamspecs.h"
10941+ line="187">Cast a #GParamSpec instance into a #GParamSpecULong.</doc>
10942+ <source-position filename="gparamspecs.h" line="193"/>
10943+ <parameters>
10944+ <parameter name="pspec">
10945+ <doc xml:space="preserve"
10946+ filename="gparamspecs.h"
10947+ line="189">a valid #GParamSpec instance</doc>
10948+ </parameter>
10949+ </parameters>
10950+ </function-macro>
10951+ <function-macro name="PARAM_SPEC_UNICHAR"
10952+ c:identifier="G_PARAM_SPEC_UNICHAR"
10953+ introspectable="0">
10954+ <doc xml:space="preserve"
10955+ filename="gparamspecs.h"
10956+ line="247">Cast a #GParamSpec instance into a #GParamSpecUnichar.</doc>
10957+ <source-position filename="gparamspecs.h" line="253"/>
10958+ <parameters>
10959+ <parameter name="pspec">
10960+ <doc xml:space="preserve"
10961+ filename="gparamspecs.h"
10962+ line="249">a valid #GParamSpec instance</doc>
10963+ </parameter>
10964+ </parameters>
10965+ </function-macro>
10966+ <function-macro name="PARAM_SPEC_VALUE_ARRAY"
10967+ c:identifier="G_PARAM_SPEC_VALUE_ARRAY"
10968+ introspectable="0"
10969+ deprecated="1"
10970+ deprecated-version="2.32">
10971+ <doc xml:space="preserve"
10972+ filename="gparamspecs.h"
10973+ line="467">Cast a #GParamSpec instance into a #GParamSpecValueArray.</doc>
10974+ <doc-deprecated xml:space="preserve">Use #GArray instead of #GValueArray</doc-deprecated>
10975+ <source-position filename="gparamspecs.h" line="475"/>
10976+ <parameters>
10977+ <parameter name="pspec">
10978+ <doc xml:space="preserve"
10979+ filename="gparamspecs.h"
10980+ line="469">a valid #GParamSpec instance</doc>
10981+ </parameter>
10982+ </parameters>
10983+ </function-macro>
10984+ <function-macro name="PARAM_SPEC_VALUE_TYPE"
10985+ c:identifier="G_PARAM_SPEC_VALUE_TYPE"
10986+ introspectable="0">
10987+ <doc xml:space="preserve"
10988+ filename="gparam.h"
10989+ line="97">Retrieves the #GType to initialize a #GValue for this parameter.</doc>
10990+ <source-position filename="gparam.h" line="103"/>
10991+ <parameters>
10992+ <parameter name="pspec">
10993+ <doc xml:space="preserve"
10994+ filename="gparam.h"
10995+ line="99">a valid #GParamSpec</doc>
10996+ </parameter>
10997+ </parameters>
10998+ </function-macro>
10999+ <function-macro name="PARAM_SPEC_VARIANT"
11000+ c:identifier="G_PARAM_SPEC_VARIANT"
11001+ version="2.26"
11002+ introspectable="0">
11003+ <doc xml:space="preserve"
11004+ filename="gparamspecs.h"
11005+ line="575">Casts a #GParamSpec into a #GParamSpecVariant.</doc>
11006+ <source-position filename="gparamspecs.h" line="583"/>
11007+ <parameters>
11008+ <parameter name="pspec">
11009+ <doc xml:space="preserve"
11010+ filename="gparamspecs.h"
11011+ line="577">a #GParamSpec</doc>
11012+ </parameter>
11013+ </parameters>
11014+ </function-macro>
11015+ <constant name="PARAM_STATIC_STRINGS"
11016+ value="224"
11017+ c:type="G_PARAM_STATIC_STRINGS">
11018+ <doc xml:space="preserve"
11019+ filename="gparam.h"
11020+ line="170">#GParamFlags value alias for %G_PARAM_STATIC_NAME | %G_PARAM_STATIC_NICK | %G_PARAM_STATIC_BLURB.
11021+
11022+Since 2.13.0</doc>
11023+ <source-position filename="gparam.h" line="177"/>
11024+ <type name="gint" c:type="gint"/>
11025+ </constant>
11026+ <constant name="PARAM_USER_SHIFT" value="8" c:type="G_PARAM_USER_SHIFT">
11027+ <doc xml:space="preserve"
11028+ filename="gparam.h"
11029+ line="185">Minimum shift count to be used for user defined flags, to be stored in
11030+#GParamSpec.flags. The maximum allowed is 10.</doc>
11031+ <source-position filename="gparam.h" line="191"/>
11032+ <type name="gint" c:type="gint"/>
11033+ </constant>
11034+ <function-macro name="PRIVATE_FIELD"
11035+ c:identifier="G_PRIVATE_FIELD"
11036+ version="2.38"
11037+ introspectable="0">
11038+ <doc xml:space="preserve"
11039+ filename="gtype.h"
11040+ line="2077">Evaluates to the @field_name inside the @inst private data
11041+structure for @TypeName.
11042+
11043+Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
11044+and G_ADD_PRIVATE() macros, since it depends on variable names from
11045+those macros.</doc>
11046+ <source-position filename="gtype.h" line="2093"/>
11047+ <parameters>
11048+ <parameter name="TypeName">
11049+ <doc xml:space="preserve"
11050+ filename="gtype.h"
11051+ line="2079">the name of the type in CamelCase</doc>
11052+ </parameter>
11053+ <parameter name="inst">
11054+ <doc xml:space="preserve"
11055+ filename="gtype.h"
11056+ line="2080">the instance of @TypeName you wish to access</doc>
11057+ </parameter>
11058+ <parameter name="field_type">
11059+ <doc xml:space="preserve"
11060+ filename="gtype.h"
11061+ line="2081">the type of the field in the private data structure</doc>
11062+ </parameter>
11063+ <parameter name="field_name">
11064+ <doc xml:space="preserve"
11065+ filename="gtype.h"
11066+ line="2082">the name of the field in the private data structure</doc>
11067+ </parameter>
11068+ </parameters>
11069+ </function-macro>
11070+ <function-macro name="PRIVATE_FIELD_P"
11071+ c:identifier="G_PRIVATE_FIELD_P"
11072+ version="2.38"
11073+ introspectable="0">
11074+ <doc xml:space="preserve"
11075+ filename="gtype.h"
11076+ line="2059">Evaluates to a pointer to the @field_name inside the @inst private data
11077+structure for @TypeName.
11078+
11079+Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
11080+and G_ADD_PRIVATE() macros, since it depends on variable names from
11081+those macros.</doc>
11082+ <source-position filename="gtype.h" line="2074"/>
11083+ <parameters>
11084+ <parameter name="TypeName">
11085+ <doc xml:space="preserve"
11086+ filename="gtype.h"
11087+ line="2061">the name of the type in CamelCase</doc>
11088+ </parameter>
11089+ <parameter name="inst">
11090+ <doc xml:space="preserve"
11091+ filename="gtype.h"
11092+ line="2062">the instance of @TypeName you wish to access</doc>
11093+ </parameter>
11094+ <parameter name="field_name">
11095+ <doc xml:space="preserve"
11096+ filename="gtype.h"
11097+ line="2063">the name of the field in the private data structure</doc>
11098+ </parameter>
11099+ </parameters>
11100+ </function-macro>
11101+ <function-macro name="PRIVATE_OFFSET"
11102+ c:identifier="G_PRIVATE_OFFSET"
11103+ version="2.38"
11104+ introspectable="0">
11105+ <doc xml:space="preserve"
11106+ filename="gtype.h"
11107+ line="2042">Evaluates to the offset of the @field inside the instance private data
11108+structure for @TypeName.
11109+
11110+Note that this macro can only be used together with the `G_DEFINE_TYPE_*`
11111+and G_ADD_PRIVATE() macros, since it depends on variable names from
11112+those macros.</doc>
11113+ <source-position filename="gtype.h" line="2056"/>
11114+ <parameters>
11115+ <parameter name="TypeName">
11116+ <doc xml:space="preserve"
11117+ filename="gtype.h"
11118+ line="2044">the name of the type in CamelCase</doc>
11119+ </parameter>
11120+ <parameter name="field">
11121+ <doc xml:space="preserve"
11122+ filename="gtype.h"
11123+ line="2045">the name of the field in the private data structure</doc>
11124+ </parameter>
11125+ </parameters>
11126+ </function-macro>
11127+ <bitfield name="ParamFlags" c:type="GParamFlags">
11128+ <doc xml:space="preserve"
11129+ filename="gparam.h"
11130+ line="116">Through the #GParamFlags flag values, certain aspects of parameters
11131+can be configured.
11132+
11133+See also: %G_PARAM_STATIC_STRINGS</doc>
11134+ <source-position filename="gparam.h" line="168"/>
11135+ <member name="readable" value="1" c:identifier="G_PARAM_READABLE">
11136+ <doc xml:space="preserve"
11137+ filename="gparam.h"
11138+ line="118">the parameter is readable</doc>
11139+ </member>
11140+ <member name="writable" value="2" c:identifier="G_PARAM_WRITABLE">
11141+ <doc xml:space="preserve"
11142+ filename="gparam.h"
11143+ line="119">the parameter is writable</doc>
11144+ </member>
11145+ <member name="readwrite" value="3" c:identifier="G_PARAM_READWRITE">
11146+ <doc xml:space="preserve"
11147+ filename="gparam.h"
11148+ line="120">alias for %G_PARAM_READABLE | %G_PARAM_WRITABLE</doc>
11149+ </member>
11150+ <member name="construct" value="4" c:identifier="G_PARAM_CONSTRUCT">
11151+ <doc xml:space="preserve"
11152+ filename="gparam.h"
11153+ line="121">the parameter will be set upon object construction</doc>
11154+ </member>
11155+ <member name="construct_only"
11156+ value="8"
11157+ c:identifier="G_PARAM_CONSTRUCT_ONLY">
11158+ <doc xml:space="preserve"
11159+ filename="gparam.h"
11160+ line="122">the parameter can only be set upon object construction</doc>
11161+ </member>
11162+ <member name="lax_validation"
11163+ value="16"
11164+ c:identifier="G_PARAM_LAX_VALIDATION">
11165+ <doc xml:space="preserve"
11166+ filename="gparam.h"
11167+ line="123">upon parameter conversion (see g_param_value_convert())
11168+ strict validation is not required</doc>
11169+ </member>
11170+ <member name="static_name" value="32" c:identifier="G_PARAM_STATIC_NAME">
11171+ <doc xml:space="preserve"
11172+ filename="gparam.h"
11173+ line="125">the string used as name when constructing the
11174+ parameter is guaranteed to remain valid and
11175+ unmodified for the lifetime of the parameter.
11176+ Since 2.8</doc>
11177+ </member>
11178+ <member name="private" value="32" c:identifier="G_PARAM_PRIVATE">
11179+ <doc xml:space="preserve" filename="gparam.h" line="141">internal</doc>
11180+ </member>
11181+ <member name="static_nick" value="64" c:identifier="G_PARAM_STATIC_NICK">
11182+ <doc xml:space="preserve"
11183+ filename="gparam.h"
11184+ line="129">the string used as nick when constructing the
11185+ parameter is guaranteed to remain valid and
11186+ unmmodified for the lifetime of the parameter.
11187+ Since 2.8</doc>
11188+ </member>
11189+ <member name="static_blurb"
11190+ value="128"
11191+ c:identifier="G_PARAM_STATIC_BLURB">
11192+ <doc xml:space="preserve"
11193+ filename="gparam.h"
11194+ line="133">the string used as blurb when constructing the
11195+ parameter is guaranteed to remain valid and
11196+ unmodified for the lifetime of the parameter.
11197+ Since 2.8</doc>
11198+ </member>
11199+ <member name="explicit_notify"
11200+ value="1073741824"
11201+ c:identifier="G_PARAM_EXPLICIT_NOTIFY">
11202+ <doc xml:space="preserve"
11203+ filename="gparam.h"
11204+ line="137">calls to g_object_set_property() for this
11205+ property will not automatically result in a "notify" signal being
11206+ emitted: the implementation must call g_object_notify() themselves
11207+ in case the property actually changes. Since: 2.42.</doc>
11208+ </member>
11209+ <member name="deprecated"
11210+ value="2147483648"
11211+ c:identifier="G_PARAM_DEPRECATED">
11212+ <doc xml:space="preserve"
11213+ filename="gparam.h"
11214+ line="142">the parameter is deprecated and will be removed
11215+ in a future version. A warning will be generated if it is used
11216+ while running with G_ENABLE_DIAGNOSTIC=1.
11217+ Since 2.26</doc>
11218+ </member>
11219+ </bitfield>
11220+ <class name="ParamSpec"
11221+ c:symbol-prefix="param_spec"
11222+ c:type="GParamSpec"
11223+ abstract="1"
11224+ glib:type-name="GParam"
11225+ glib:get-type="intern"
11226+ glib:type-struct="ParamSpecClass"
11227+ glib:fundamental="1"
11228+ glib:ref-func="g_param_spec_ref_sink"
11229+ glib:unref-func="g_param_spec_unref"
11230+ glib:set-value-func="g_value_set_param"
11231+ glib:get-value-func="g_value_get_param">
11232+ <doc xml:space="preserve"
11233+ filename="gobject-2.0.c"
11234+ line="525">#GParamSpec is an object structure that encapsulates the metadata
11235+required to specify parameters, such as e.g. #GObject properties.
11236+
11237+## Parameter names # {#canonical-parameter-names}
11238+
11239+A property name consists of one or more segments consisting of ASCII letters
11240+and digits, separated by either the `-` or `_` character. The first
11241+character of a property name must be a letter. These are the same rules as
11242+for signal naming (see g_signal_new()).
11243+
11244+When creating and looking up a #GParamSpec, either separator can be
11245+used, but they cannot be mixed. Using `-` is considerably more
11246+efficient, and is the ‘canonical form’. Using `_` is discouraged.</doc>
11247+ <source-position filename="gparam.h" line="262"/>
11248+ <function name="internal"
11249+ c:identifier="g_param_spec_internal"
11250+ introspectable="0">
11251+ <doc xml:space="preserve"
11252+ filename="gobject-2.0.c"
11253+ line="4192">Creates a new #GParamSpec instance.
11254+
11255+See [canonical parameter names][canonical-parameter-names] for details of
11256+the rules for @name. Names which violate these rules lead to undefined
11257+behaviour.
11258+
11259+Beyond the name, #GParamSpecs have two more descriptive
11260+strings associated with them, the @nick, which should be suitable
11261+for use as a label for the property in a property editor, and the
11262+@blurb, which should be a somewhat longer description, suitable for
11263+e.g. a tooltip. The @nick and @blurb should ideally be localized.</doc>
11264+ <source-position filename="gparam.h" line="412"/>
11265+ <return-value transfer-ownership="none">
11266+ <doc xml:space="preserve"
11267+ filename="gobject-2.0.c"
11268+ line="4212">(transfer floating): a newly allocated
11269+ #GParamSpec instance, which is initially floating</doc>
11270+ <type name="ParamSpec" c:type="gpointer"/>
11271+ </return-value>
11272+ <parameters>
11273+ <parameter name="param_type" transfer-ownership="none">
11274+ <doc xml:space="preserve"
11275+ filename="gobject-2.0.c"
11276+ line="4194">the #GType for the property; must be derived from %G_TYPE_PARAM</doc>
11277+ <type name="GType" c:type="GType"/>
11278+ </parameter>
11279+ <parameter name="name" transfer-ownership="none">
11280+ <doc xml:space="preserve"
11281+ filename="gobject-2.0.c"
11282+ line="4195">the canonical name of the property</doc>
11283+ <type name="utf8" c:type="const gchar*"/>
11284+ </parameter>
11285+ <parameter name="nick" transfer-ownership="none">
11286+ <doc xml:space="preserve"
11287+ filename="gobject-2.0.c"
11288+ line="4196">the nickname of the property</doc>
11289+ <type name="utf8" c:type="const gchar*"/>
11290+ </parameter>
11291+ <parameter name="blurb" transfer-ownership="none">
11292+ <doc xml:space="preserve"
11293+ filename="gobject-2.0.c"
11294+ line="4197">a short description of the property</doc>
11295+ <type name="utf8" c:type="const gchar*"/>
11296+ </parameter>
11297+ <parameter name="flags" transfer-ownership="none">
11298+ <doc xml:space="preserve"
11299+ filename="gobject-2.0.c"
11300+ line="4198">a combination of #GParamFlags</doc>
11301+ <type name="ParamFlags" c:type="GParamFlags"/>
11302+ </parameter>
11303+ </parameters>
11304+ </function>
11305+ <function name="is_valid_name"
11306+ c:identifier="g_param_spec_is_valid_name"
11307+ version="2.66">
11308+ <doc xml:space="preserve"
11309+ filename="gobject-2.0.c"
11310+ line="4217">Validate a property name for a #GParamSpec. This can be useful for
11311+dynamically-generated properties which need to be validated at run-time
11312+before actually trying to create them.
11313+
11314+See [canonical parameter names][canonical-parameter-names] for details of
11315+the rules for valid names.</doc>
11316+ <source-position filename="gparam.h" line="402"/>
11317+ <return-value transfer-ownership="none">
11318+ <doc xml:space="preserve"
11319+ filename="gobject-2.0.c"
11320+ line="4228">%TRUE if @name is a valid property name, %FALSE otherwise.</doc>
11321+ <type name="gboolean" c:type="gboolean"/>
11322+ </return-value>
11323+ <parameters>
11324+ <parameter name="name" transfer-ownership="none">
11325+ <doc xml:space="preserve"
11326+ filename="gobject-2.0.c"
11327+ line="4219">the canonical name of the property</doc>
11328+ <type name="utf8" c:type="const gchar*"/>
11329+ </parameter>
11330+ </parameters>
11331+ </function>
11332+ <virtual-method name="finalize">
11333+ <source-position filename="gparam.h" line="250"/>
11334+ <return-value transfer-ownership="none">
11335+ <type name="none" c:type="void"/>
11336+ </return-value>
11337+ <parameters>
11338+ <instance-parameter name="pspec" transfer-ownership="none">
11339+ <type name="ParamSpec" c:type="GParamSpec*"/>
11340+ </instance-parameter>
11341+ </parameters>
11342+ </virtual-method>
11343+ <virtual-method name="value_set_default">
11344+ <source-position filename="gparam.h" line="253"/>
11345+ <return-value transfer-ownership="none">
11346+ <type name="none" c:type="void"/>
11347+ </return-value>
11348+ <parameters>
11349+ <instance-parameter name="pspec" transfer-ownership="none">
11350+ <type name="ParamSpec" c:type="GParamSpec*"/>
11351+ </instance-parameter>
11352+ <parameter name="value" transfer-ownership="none">
11353+ <type name="Value" c:type="GValue*"/>
11354+ </parameter>
11355+ </parameters>
11356+ </virtual-method>
11357+ <virtual-method name="value_validate">
11358+ <source-position filename="gparam.h" line="255"/>
11359+ <return-value transfer-ownership="none">
11360+ <type name="gboolean" c:type="gboolean"/>
11361+ </return-value>
11362+ <parameters>
11363+ <instance-parameter name="pspec" transfer-ownership="none">
11364+ <type name="ParamSpec" c:type="GParamSpec*"/>
11365+ </instance-parameter>
11366+ <parameter name="value" transfer-ownership="none">
11367+ <type name="Value" c:type="GValue*"/>
11368+ </parameter>
11369+ </parameters>
11370+ </virtual-method>
11371+ <virtual-method name="values_cmp">
11372+ <source-position filename="gparam.h" line="257"/>
11373+ <return-value transfer-ownership="none">
11374+ <type name="gint" c:type="gint"/>
11375+ </return-value>
11376+ <parameters>
11377+ <instance-parameter name="pspec" transfer-ownership="none">
11378+ <type name="ParamSpec" c:type="GParamSpec*"/>
11379+ </instance-parameter>
11380+ <parameter name="value1" transfer-ownership="none">
11381+ <type name="Value" c:type="const GValue*"/>
11382+ </parameter>
11383+ <parameter name="value2" transfer-ownership="none">
11384+ <type name="Value" c:type="const GValue*"/>
11385+ </parameter>
11386+ </parameters>
11387+ </virtual-method>
11388+ <method name="get_blurb" c:identifier="g_param_spec_get_blurb">
11389+ <doc xml:space="preserve"
11390+ filename="gobject-2.0.c"
11391+ line="4051">Get the short description of a #GParamSpec.</doc>
11392+ <source-position filename="gparam.h" line="330"/>
11393+ <return-value transfer-ownership="none" nullable="1">
11394+ <doc xml:space="preserve"
11395+ filename="gobject-2.0.c"
11396+ line="4057">the short description of @pspec.</doc>
11397+ <type name="utf8" c:type="const gchar*"/>
11398+ </return-value>
11399+ <parameters>
11400+ <instance-parameter name="pspec" transfer-ownership="none">
11401+ <doc xml:space="preserve"
11402+ filename="gobject-2.0.c"
11403+ line="4053">a valid #GParamSpec</doc>
11404+ <type name="ParamSpec" c:type="GParamSpec*"/>
11405+ </instance-parameter>
11406+ </parameters>
11407+ </method>
11408+ <method name="get_default_value"
11409+ c:identifier="g_param_spec_get_default_value"
11410+ version="2.38">
11411+ <doc xml:space="preserve"
11412+ filename="gobject-2.0.c"
11413+ line="4061">Gets the default value of @pspec as a pointer to a #GValue.
11414+
11415+The #GValue will remain valid for the life of @pspec.</doc>
11416+ <source-position filename="gparam.h" line="347"/>
11417+ <return-value transfer-ownership="none">
11418+ <doc xml:space="preserve"
11419+ filename="gobject-2.0.c"
11420+ line="4069">a pointer to a #GValue which must not be modified</doc>
11421+ <type name="Value" c:type="const GValue*"/>
11422+ </return-value>
11423+ <parameters>
11424+ <instance-parameter name="pspec" transfer-ownership="none">
11425+ <doc xml:space="preserve"
11426+ filename="gobject-2.0.c"
11427+ line="4063">a #GParamSpec</doc>
11428+ <type name="ParamSpec" c:type="GParamSpec*"/>
11429+ </instance-parameter>
11430+ </parameters>
11431+ </method>
11432+ <method name="get_name" c:identifier="g_param_spec_get_name">
11433+ <doc xml:space="preserve"
11434+ filename="gobject-2.0.c"
11435+ line="4074">Get the name of a #GParamSpec.
11436+
11437+The name is always an "interned" string (as per g_intern_string()).
11438+This allows for pointer-value comparisons.</doc>
11439+ <source-position filename="gparam.h" line="326"/>
11440+ <return-value transfer-ownership="none">
11441+ <doc xml:space="preserve"
11442+ filename="gobject-2.0.c"
11443+ line="4083">the name of @pspec.</doc>
11444+ <type name="utf8" c:type="const gchar*"/>
11445+ </return-value>
11446+ <parameters>
11447+ <instance-parameter name="pspec" transfer-ownership="none">
11448+ <doc xml:space="preserve"
11449+ filename="gobject-2.0.c"
11450+ line="4076">a valid #GParamSpec</doc>
11451+ <type name="ParamSpec" c:type="GParamSpec*"/>
11452+ </instance-parameter>
11453+ </parameters>
11454+ </method>
11455+ <method name="get_name_quark"
11456+ c:identifier="g_param_spec_get_name_quark"
11457+ version="2.46">
11458+ <doc xml:space="preserve"
11459+ filename="gobject-2.0.c"
11460+ line="4087">Gets the GQuark for the name.</doc>
11461+ <source-position filename="gparam.h" line="350"/>
11462+ <return-value transfer-ownership="none">
11463+ <doc xml:space="preserve"
11464+ filename="gobject-2.0.c"
11465+ line="4093">the GQuark for @pspec-&gt;name.</doc>
11466+ <type name="GLib.Quark" c:type="GQuark"/>
11467+ </return-value>
11468+ <parameters>
11469+ <instance-parameter name="pspec" transfer-ownership="none">
11470+ <doc xml:space="preserve"
11471+ filename="gobject-2.0.c"
11472+ line="4089">a #GParamSpec</doc>
11473+ <type name="ParamSpec" c:type="GParamSpec*"/>
11474+ </instance-parameter>
11475+ </parameters>
11476+ </method>
11477+ <method name="get_nick" c:identifier="g_param_spec_get_nick">
11478+ <doc xml:space="preserve"
11479+ filename="gobject-2.0.c"
11480+ line="4098">Get the nickname of a #GParamSpec.</doc>
11481+ <source-position filename="gparam.h" line="328"/>
11482+ <return-value transfer-ownership="none">
11483+ <doc xml:space="preserve"
11484+ filename="gobject-2.0.c"
11485+ line="4104">the nickname of @pspec.</doc>
11486+ <type name="utf8" c:type="const gchar*"/>
11487+ </return-value>
11488+ <parameters>
11489+ <instance-parameter name="pspec" transfer-ownership="none">
11490+ <doc xml:space="preserve"
11491+ filename="gobject-2.0.c"
11492+ line="4100">a valid #GParamSpec</doc>
11493+ <type name="ParamSpec" c:type="GParamSpec*"/>
11494+ </instance-parameter>
11495+ </parameters>
11496+ </method>
11497+ <method name="get_qdata" c:identifier="g_param_spec_get_qdata">
11498+ <doc xml:space="preserve"
11499+ filename="gobject-2.0.c"
11500+ line="4108">Gets back user data pointers stored via g_param_spec_set_qdata().</doc>
11501+ <source-position filename="gparam.h" line="290"/>
11502+ <return-value transfer-ownership="none" nullable="1">
11503+ <doc xml:space="preserve"
11504+ filename="gobject-2.0.c"
11505+ line="4115">the user data pointer set, or %NULL</doc>
11506+ <type name="gpointer" c:type="gpointer"/>
11507+ </return-value>
11508+ <parameters>
11509+ <instance-parameter name="pspec" transfer-ownership="none">
11510+ <doc xml:space="preserve"
11511+ filename="gobject-2.0.c"
11512+ line="4110">a valid #GParamSpec</doc>
11513+ <type name="ParamSpec" c:type="GParamSpec*"/>
11514+ </instance-parameter>
11515+ <parameter name="quark" transfer-ownership="none">
11516+ <doc xml:space="preserve"
11517+ filename="gobject-2.0.c"
11518+ line="4111">a #GQuark, naming the user data pointer</doc>
11519+ <type name="GLib.Quark" c:type="GQuark"/>
11520+ </parameter>
11521+ </parameters>
11522+ </method>
11523+ <method name="get_redirect_target"
11524+ c:identifier="g_param_spec_get_redirect_target"
11525+ version="2.4">
11526+ <doc xml:space="preserve"
11527+ filename="gobject-2.0.c"
11528+ line="4119">If the paramspec redirects operations to another paramspec,
11529+returns that paramspec. Redirect is used typically for
11530+providing a new implementation of a property in a derived
11531+type while preserving all the properties from the parent
11532+type. Redirection is established by creating a property
11533+of type #GParamSpecOverride. See g_object_class_override_property()
11534+for an example of the use of this capability.</doc>
11535+ <source-position filename="gparam.h" line="305"/>
11536+ <return-value transfer-ownership="none" nullable="1">
11537+ <doc xml:space="preserve"
11538+ filename="gobject-2.0.c"
11539+ line="4132">paramspec to which requests on this
11540+ paramspec should be redirected, or %NULL if none.</doc>
11541+ <type name="ParamSpec" c:type="GParamSpec*"/>
11542+ </return-value>
11543+ <parameters>
11544+ <instance-parameter name="pspec" transfer-ownership="none">
11545+ <doc xml:space="preserve"
11546+ filename="gobject-2.0.c"
11547+ line="4121">a #GParamSpec</doc>
11548+ <type name="ParamSpec" c:type="GParamSpec*"/>
11549+ </instance-parameter>
11550+ </parameters>
11551+ </method>
11552+ <method name="ref" c:identifier="g_param_spec_ref" introspectable="0">
11553+ <doc xml:space="preserve"
11554+ filename="gobject-2.0.c"
11555+ line="4394">Increments the reference count of @pspec.</doc>
11556+ <source-position filename="gparam.h" line="282"/>
11557+ <return-value transfer-ownership="full">
11558+ <doc xml:space="preserve"
11559+ filename="gobject-2.0.c"
11560+ line="4400">the #GParamSpec that was passed into this function</doc>
11561+ <type name="ParamSpec" c:type="GParamSpec*"/>
11562+ </return-value>
11563+ <parameters>
11564+ <instance-parameter name="pspec" transfer-ownership="none">
11565+ <doc xml:space="preserve"
11566+ filename="gobject-2.0.c"
11567+ line="4396">a valid #GParamSpec</doc>
11568+ <type name="ParamSpec" c:type="GParamSpec*"/>
11569+ </instance-parameter>
11570+ </parameters>
11571+ </method>
11572+ <method name="ref_sink"
11573+ c:identifier="g_param_spec_ref_sink"
11574+ version="2.10"
11575+ introspectable="0">
11576+ <doc xml:space="preserve"
11577+ filename="gobject-2.0.c"
11578+ line="4404">Convenience function to ref and sink a #GParamSpec.</doc>
11579+ <source-position filename="gparam.h" line="288"/>
11580+ <return-value transfer-ownership="full">
11581+ <doc xml:space="preserve"
11582+ filename="gobject-2.0.c"
11583+ line="4411">the #GParamSpec that was passed into this function</doc>
11584+ <type name="ParamSpec" c:type="GParamSpec*"/>
11585+ </return-value>
11586+ <parameters>
11587+ <instance-parameter name="pspec" transfer-ownership="none">
11588+ <doc xml:space="preserve"
11589+ filename="gobject-2.0.c"
11590+ line="4406">a valid #GParamSpec</doc>
11591+ <type name="ParamSpec" c:type="GParamSpec*"/>
11592+ </instance-parameter>
11593+ </parameters>
11594+ </method>
11595+ <method name="set_qdata" c:identifier="g_param_spec_set_qdata">
11596+ <doc xml:space="preserve"
11597+ filename="gobject-2.0.c"
11598+ line="4415">Sets an opaque, named pointer on a #GParamSpec. The name is
11599+specified through a #GQuark (retrieved e.g. via
11600+g_quark_from_static_string()), and the pointer can be gotten back
11601+from the @pspec with g_param_spec_get_qdata(). Setting a
11602+previously set user data pointer, overrides (frees) the old pointer
11603+set, using %NULL as pointer essentially removes the data stored.</doc>
11604+ <source-position filename="gparam.h" line="293"/>
11605+ <return-value transfer-ownership="none">
11606+ <type name="none" c:type="void"/>
11607+ </return-value>
11608+ <parameters>
11609+ <instance-parameter name="pspec" transfer-ownership="none">
11610+ <doc xml:space="preserve"
11611+ filename="gobject-2.0.c"
11612+ line="4417">the #GParamSpec to set store a user data pointer</doc>
11613+ <type name="ParamSpec" c:type="GParamSpec*"/>
11614+ </instance-parameter>
11615+ <parameter name="quark" transfer-ownership="none">
11616+ <doc xml:space="preserve"
11617+ filename="gobject-2.0.c"
11618+ line="4418">a #GQuark, naming the user data pointer</doc>
11619+ <type name="GLib.Quark" c:type="GQuark"/>
11620+ </parameter>
11621+ <parameter name="data"
11622+ transfer-ownership="none"
11623+ nullable="1"
11624+ allow-none="1">
11625+ <doc xml:space="preserve"
11626+ filename="gobject-2.0.c"
11627+ line="4419">an opaque user data pointer</doc>
11628+ <type name="gpointer" c:type="gpointer"/>
11629+ </parameter>
11630+ </parameters>
11631+ </method>
11632+ <method name="set_qdata_full"
11633+ c:identifier="g_param_spec_set_qdata_full"
11634+ introspectable="0">
11635+ <doc xml:space="preserve"
11636+ filename="gobject-2.0.c"
11637+ line="4430">This function works like g_param_spec_set_qdata(), but in addition,
11638+a `void (*destroy) (gpointer)` function may be
11639+specified which is called with @data as argument when the @pspec is
11640+finalized, or the data is being overwritten by a call to
11641+g_param_spec_set_qdata() with the same @quark.</doc>
11642+ <source-position filename="gparam.h" line="297"/>
11643+ <return-value transfer-ownership="none">
11644+ <type name="none" c:type="void"/>
11645+ </return-value>
11646+ <parameters>
11647+ <instance-parameter name="pspec" transfer-ownership="none">
11648+ <doc xml:space="preserve"
11649+ filename="gobject-2.0.c"
11650+ line="4432">the #GParamSpec to set store a user data pointer</doc>
11651+ <type name="ParamSpec" c:type="GParamSpec*"/>
11652+ </instance-parameter>
11653+ <parameter name="quark" transfer-ownership="none">
11654+ <doc xml:space="preserve"
11655+ filename="gobject-2.0.c"
11656+ line="4433">a #GQuark, naming the user data pointer</doc>
11657+ <type name="GLib.Quark" c:type="GQuark"/>
11658+ </parameter>
11659+ <parameter name="data"
11660+ transfer-ownership="none"
11661+ nullable="1"
11662+ allow-none="1">
11663+ <doc xml:space="preserve"
11664+ filename="gobject-2.0.c"
11665+ line="4434">an opaque user data pointer</doc>
11666+ <type name="gpointer" c:type="gpointer"/>
11667+ </parameter>
11668+ <parameter name="destroy"
11669+ transfer-ownership="none"
11670+ nullable="1"
11671+ allow-none="1"
11672+ scope="async">
11673+ <doc xml:space="preserve"
11674+ filename="gobject-2.0.c"
11675+ line="4435">function to invoke with @data as argument, when @data needs to
11676+ be freed</doc>
11677+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
11678+ </parameter>
11679+ </parameters>
11680+ </method>
11681+ <method name="sink" c:identifier="g_param_spec_sink">
11682+ <doc xml:space="preserve"
11683+ filename="gobject-2.0.c"
11684+ line="4446">The initial reference count of a newly created #GParamSpec is 1,
11685+even though no one has explicitly called g_param_spec_ref() on it
11686+yet. So the initial reference count is flagged as "floating", until
11687+someone calls `g_param_spec_ref (pspec); g_param_spec_sink
11688+(pspec);` in sequence on it, taking over the initial
11689+reference count (thus ending up with a @pspec that has a reference
11690+count of 1 still, but is not flagged "floating" anymore).</doc>
11691+ <source-position filename="gparam.h" line="286"/>
11692+ <return-value transfer-ownership="none">
11693+ <type name="none" c:type="void"/>
11694+ </return-value>
11695+ <parameters>
11696+ <instance-parameter name="pspec" transfer-ownership="none">
11697+ <doc xml:space="preserve"
11698+ filename="gobject-2.0.c"
11699+ line="4448">a valid #GParamSpec</doc>
11700+ <type name="ParamSpec" c:type="GParamSpec*"/>
11701+ </instance-parameter>
11702+ </parameters>
11703+ </method>
11704+ <method name="steal_qdata" c:identifier="g_param_spec_steal_qdata">
11705+ <doc xml:space="preserve"
11706+ filename="gobject-2.0.c"
11707+ line="4460">Gets back user data pointers stored via g_param_spec_set_qdata()
11708+and removes the @data from @pspec without invoking its destroy()
11709+function (if any was set). Usually, calling this function is only
11710+required to update user data pointers with a destroy notifier.</doc>
11711+ <source-position filename="gparam.h" line="302"/>
11712+ <return-value transfer-ownership="none" nullable="1">
11713+ <doc xml:space="preserve"
11714+ filename="gobject-2.0.c"
11715+ line="4470">the user data pointer set, or %NULL</doc>
11716+ <type name="gpointer" c:type="gpointer"/>
11717+ </return-value>
11718+ <parameters>
11719+ <instance-parameter name="pspec" transfer-ownership="none">
11720+ <doc xml:space="preserve"
11721+ filename="gobject-2.0.c"
11722+ line="4462">the #GParamSpec to get a stored user data pointer from</doc>
11723+ <type name="ParamSpec" c:type="GParamSpec*"/>
11724+ </instance-parameter>
11725+ <parameter name="quark" transfer-ownership="none">
11726+ <doc xml:space="preserve"
11727+ filename="gobject-2.0.c"
11728+ line="4463">a #GQuark, naming the user data pointer</doc>
11729+ <type name="GLib.Quark" c:type="GQuark"/>
11730+ </parameter>
11731+ </parameters>
11732+ </method>
11733+ <method name="unref"
11734+ c:identifier="g_param_spec_unref"
11735+ introspectable="0">
11736+ <doc xml:space="preserve"
11737+ filename="gobject-2.0.c"
11738+ line="4580">Decrements the reference count of a @pspec.</doc>
11739+ <source-position filename="gparam.h" line="284"/>
11740+ <return-value transfer-ownership="none">
11741+ <type name="none" c:type="void"/>
11742+ </return-value>
11743+ <parameters>
11744+ <instance-parameter name="pspec" transfer-ownership="none">
11745+ <doc xml:space="preserve"
11746+ filename="gobject-2.0.c"
11747+ line="4582">a valid #GParamSpec</doc>
11748+ <type name="ParamSpec" c:type="GParamSpec*"/>
11749+ </instance-parameter>
11750+ </parameters>
11751+ </method>
11752+ <field name="g_type_instance">
11753+ <doc xml:space="preserve"
11754+ filename="gparam.h"
11755+ line="200">private #GTypeInstance portion</doc>
11756+ <type name="TypeInstance" c:type="GTypeInstance"/>
11757+ </field>
11758+ <field name="name">
11759+ <doc xml:space="preserve"
11760+ filename="gparam.h"
11761+ line="201">name of this parameter: always an interned string</doc>
11762+ <type name="utf8" c:type="const gchar*"/>
11763+ </field>
11764+ <field name="flags">
11765+ <doc xml:space="preserve"
11766+ filename="gparam.h"
11767+ line="202">#GParamFlags flags for this parameter</doc>
11768+ <type name="ParamFlags" c:type="GParamFlags"/>
11769+ </field>
11770+ <field name="value_type">
11771+ <doc xml:space="preserve"
11772+ filename="gparam.h"
11773+ line="203">the #GValue type for this parameter</doc>
11774+ <type name="GType" c:type="GType"/>
11775+ </field>
11776+ <field name="owner_type">
11777+ <doc xml:space="preserve"
11778+ filename="gparam.h"
11779+ line="204">#GType type that uses (introduces) this parameter</doc>
11780+ <type name="GType" c:type="GType"/>
11781+ </field>
11782+ <field name="_nick" readable="0" private="1">
11783+ <type name="utf8" c:type="gchar*"/>
11784+ </field>
11785+ <field name="_blurb" readable="0" private="1">
11786+ <type name="utf8" c:type="gchar*"/>
11787+ </field>
11788+ <field name="qdata" readable="0" private="1">
11789+ <type name="GLib.Data" c:type="GData*"/>
11790+ </field>
11791+ <field name="ref_count" readable="0" private="1">
11792+ <type name="guint" c:type="guint"/>
11793+ </field>
11794+ <field name="param_id" readable="0" private="1">
11795+ <type name="guint" c:type="guint"/>
11796+ </field>
11797+ </class>
11798+ <class name="ParamSpecBoolean"
11799+ c:symbol-prefix="param_spec_boolean"
11800+ c:type="GParamSpecBoolean"
11801+ parent="ParamSpec"
11802+ glib:type-name="GParamBoolean"
11803+ glib:get-type="intern"
11804+ glib:fundamental="1">
11805+ <doc xml:space="preserve"
11806+ filename="gparamspecs.h"
11807+ line="644">A #GParamSpec derived structure that contains the meta data for boolean properties.</doc>
11808+ <field name="parent_instance">
11809+ <doc xml:space="preserve"
11810+ filename="gparamspecs.h"
11811+ line="646">private #GParamSpec portion</doc>
11812+ <type name="ParamSpec" c:type="GParamSpec"/>
11813+ </field>
11814+ <field name="default_value">
11815+ <doc xml:space="preserve"
11816+ filename="gparamspecs.h"
11817+ line="647">default value for the property specified</doc>
11818+ <type name="gboolean" c:type="gboolean"/>
11819+ </field>
11820+ </class>
11821+ <class name="ParamSpecBoxed"
11822+ c:symbol-prefix="param_spec_boxed"
11823+ c:type="GParamSpecBoxed"
11824+ parent="ParamSpec"
11825+ glib:type-name="GParamBoxed"
11826+ glib:get-type="intern"
11827+ glib:fundamental="1">
11828+ <doc xml:space="preserve"
11829+ filename="gparamspecs.h"
11830+ line="879">A #GParamSpec derived structure that contains the meta data for boxed properties.</doc>
11831+ <field name="parent_instance">
11832+ <doc xml:space="preserve"
11833+ filename="gparamspecs.h"
11834+ line="881">private #GParamSpec portion</doc>
11835+ <type name="ParamSpec" c:type="GParamSpec"/>
11836+ </field>
11837+ </class>
11838+ <class name="ParamSpecChar"
11839+ c:symbol-prefix="param_spec_char"
11840+ c:type="GParamSpecChar"
11841+ parent="ParamSpec"
11842+ glib:type-name="GParamChar"
11843+ glib:get-type="intern"
11844+ glib:fundamental="1">
11845+ <doc xml:space="preserve"
11846+ filename="gparamspecs.h"
11847+ line="610">A #GParamSpec derived structure that contains the meta data for character properties.</doc>
11848+ <field name="parent_instance">
11849+ <doc xml:space="preserve"
11850+ filename="gparamspecs.h"
11851+ line="612">private #GParamSpec portion</doc>
11852+ <type name="ParamSpec" c:type="GParamSpec"/>
11853+ </field>
11854+ <field name="minimum">
11855+ <doc xml:space="preserve"
11856+ filename="gparamspecs.h"
11857+ line="613">minimum value for the property specified</doc>
11858+ <type name="gint8" c:type="gint8"/>
11859+ </field>
11860+ <field name="maximum">
11861+ <doc xml:space="preserve"
11862+ filename="gparamspecs.h"
11863+ line="614">maximum value for the property specified</doc>
11864+ <type name="gint8" c:type="gint8"/>
11865+ </field>
11866+ <field name="default_value">
11867+ <doc xml:space="preserve"
11868+ filename="gparamspecs.h"
11869+ line="615">default value for the property specified</doc>
11870+ <type name="gint8" c:type="gint8"/>
11871+ </field>
11872+ </class>
11873+ <record name="ParamSpecClass"
11874+ c:type="GParamSpecClass"
11875+ glib:is-gtype-struct-for="ParamSpec">
11876+ <doc xml:space="preserve"
11877+ filename="gparam.h"
11878+ line="225">The class structure for the GParamSpec type.
11879+Normally, GParamSpec classes are filled by
11880+g_param_type_register_static().</doc>
11881+ <source-position filename="gparam.h" line="262"/>
11882+ <field name="g_type_class">
11883+ <doc xml:space="preserve"
11884+ filename="gparam.h"
11885+ line="227">the parent class</doc>
11886+ <type name="TypeClass" c:type="GTypeClass"/>
11887+ </field>
11888+ <field name="value_type">
11889+ <doc xml:space="preserve"
11890+ filename="gparam.h"
11891+ line="228">the #GValue type for this parameter</doc>
11892+ <type name="GType" c:type="GType"/>
11893+ </field>
11894+ <field name="finalize">
11895+ <callback name="finalize">
11896+ <source-position filename="gparam.h" line="250"/>
11897+ <return-value transfer-ownership="none">
11898+ <type name="none" c:type="void"/>
11899+ </return-value>
11900+ <parameters>
11901+ <parameter name="pspec" transfer-ownership="none">
11902+ <type name="ParamSpec" c:type="GParamSpec*"/>
11903+ </parameter>
11904+ </parameters>
11905+ </callback>
11906+ </field>
11907+ <field name="value_set_default">
11908+ <callback name="value_set_default">
11909+ <source-position filename="gparam.h" line="253"/>
11910+ <return-value transfer-ownership="none">
11911+ <type name="none" c:type="void"/>
11912+ </return-value>
11913+ <parameters>
11914+ <parameter name="pspec" transfer-ownership="none">
11915+ <type name="ParamSpec" c:type="GParamSpec*"/>
11916+ </parameter>
11917+ <parameter name="value" transfer-ownership="none">
11918+ <type name="Value" c:type="GValue*"/>
11919+ </parameter>
11920+ </parameters>
11921+ </callback>
11922+ </field>
11923+ <field name="value_validate">
11924+ <callback name="value_validate">
11925+ <source-position filename="gparam.h" line="255"/>
11926+ <return-value transfer-ownership="none">
11927+ <type name="gboolean" c:type="gboolean"/>
11928+ </return-value>
11929+ <parameters>
11930+ <parameter name="pspec" transfer-ownership="none">
11931+ <type name="ParamSpec" c:type="GParamSpec*"/>
11932+ </parameter>
11933+ <parameter name="value" transfer-ownership="none">
11934+ <type name="Value" c:type="GValue*"/>
11935+ </parameter>
11936+ </parameters>
11937+ </callback>
11938+ </field>
11939+ <field name="values_cmp">
11940+ <callback name="values_cmp">
11941+ <source-position filename="gparam.h" line="257"/>
11942+ <return-value transfer-ownership="none">
11943+ <type name="gint" c:type="gint"/>
11944+ </return-value>
11945+ <parameters>
11946+ <parameter name="pspec" transfer-ownership="none">
11947+ <type name="ParamSpec" c:type="GParamSpec*"/>
11948+ </parameter>
11949+ <parameter name="value1" transfer-ownership="none">
11950+ <type name="Value" c:type="const GValue*"/>
11951+ </parameter>
11952+ <parameter name="value2" transfer-ownership="none">
11953+ <type name="Value" c:type="const GValue*"/>
11954+ </parameter>
11955+ </parameters>
11956+ </callback>
11957+ </field>
11958+ <field name="dummy" readable="0" private="1">
11959+ <array zero-terminated="0" fixed-size="4">
11960+ <type name="gpointer" c:type="gpointer"/>
11961+ </array>
11962+ </field>
11963+ </record>
11964+ <class name="ParamSpecDouble"
11965+ c:symbol-prefix="param_spec_double"
11966+ c:type="GParamSpecDouble"
11967+ parent="ParamSpec"
11968+ glib:type-name="GParamDouble"
11969+ glib:get-type="intern"
11970+ glib:fundamental="1">
11971+ <doc xml:space="preserve"
11972+ filename="gparamspecs.h"
11973+ line="824">A #GParamSpec derived structure that contains the meta data for double properties.</doc>
11974+ <field name="parent_instance">
11975+ <doc xml:space="preserve"
11976+ filename="gparamspecs.h"
11977+ line="826">private #GParamSpec portion</doc>
11978+ <type name="ParamSpec" c:type="GParamSpec"/>
11979+ </field>
11980+ <field name="minimum">
11981+ <doc xml:space="preserve"
11982+ filename="gparamspecs.h"
11983+ line="827">minimum value for the property specified</doc>
11984+ <type name="gdouble" c:type="gdouble"/>
11985+ </field>
11986+ <field name="maximum">
11987+ <doc xml:space="preserve"
11988+ filename="gparamspecs.h"
11989+ line="828">maximum value for the property specified</doc>
11990+ <type name="gdouble" c:type="gdouble"/>
11991+ </field>
11992+ <field name="default_value">
11993+ <doc xml:space="preserve"
11994+ filename="gparamspecs.h"
11995+ line="829">default value for the property specified</doc>
11996+ <type name="gdouble" c:type="gdouble"/>
11997+ </field>
11998+ <field name="epsilon">
11999+ <doc xml:space="preserve"
12000+ filename="gparamspecs.h"
12001+ line="830">values closer than @epsilon will be considered identical
12002+ by g_param_values_cmp(); the default value is 1e-90.</doc>
12003+ <type name="gdouble" c:type="gdouble"/>
12004+ </field>
12005+ </class>
12006+ <class name="ParamSpecEnum"
12007+ c:symbol-prefix="param_spec_enum"
12008+ c:type="GParamSpecEnum"
12009+ parent="ParamSpec"
12010+ glib:type-name="GParamEnum"
12011+ glib:get-type="intern"
12012+ glib:fundamental="1">
12013+ <doc xml:space="preserve"
12014+ filename="gparamspecs.h"
12015+ line="772">A #GParamSpec derived structure that contains the meta data for enum
12016+properties.</doc>
12017+ <field name="parent_instance">
12018+ <doc xml:space="preserve"
12019+ filename="gparamspecs.h"
12020+ line="774">private #GParamSpec portion</doc>
12021+ <type name="ParamSpec" c:type="GParamSpec"/>
12022+ </field>
12023+ <field name="enum_class">
12024+ <doc xml:space="preserve"
12025+ filename="gparamspecs.h"
12026+ line="775">the #GEnumClass for the enum</doc>
12027+ <type name="EnumClass" c:type="GEnumClass*"/>
12028+ </field>
12029+ <field name="default_value">
12030+ <doc xml:space="preserve"
12031+ filename="gparamspecs.h"
12032+ line="776">default value for the property specified</doc>
12033+ <type name="gint" c:type="gint"/>
12034+ </field>
12035+ </class>
12036+ <class name="ParamSpecFlags"
12037+ c:symbol-prefix="param_spec_flags"
12038+ c:type="GParamSpecFlags"
12039+ parent="ParamSpec"
12040+ glib:type-name="GParamFlags"
12041+ glib:get-type="intern"
12042+ glib:fundamental="1">
12043+ <doc xml:space="preserve"
12044+ filename="gparamspecs.h"
12045+ line="788">A #GParamSpec derived structure that contains the meta data for flags
12046+properties.</doc>
12047+ <field name="parent_instance">
12048+ <doc xml:space="preserve"
12049+ filename="gparamspecs.h"
12050+ line="790">private #GParamSpec portion</doc>
12051+ <type name="ParamSpec" c:type="GParamSpec"/>
12052+ </field>
12053+ <field name="flags_class">
12054+ <doc xml:space="preserve"
12055+ filename="gparamspecs.h"
12056+ line="791">the #GFlagsClass for the flags</doc>
12057+ <type name="FlagsClass" c:type="GFlagsClass*"/>
12058+ </field>
12059+ <field name="default_value">
12060+ <doc xml:space="preserve"
12061+ filename="gparamspecs.h"
12062+ line="792">default value for the property specified</doc>
12063+ <type name="guint" c:type="guint"/>
12064+ </field>
12065+ </class>
12066+ <class name="ParamSpecFloat"
12067+ c:symbol-prefix="param_spec_float"
12068+ c:type="GParamSpecFloat"
12069+ parent="ParamSpec"
12070+ glib:type-name="GParamFloat"
12071+ glib:get-type="intern"
12072+ glib:fundamental="1">
12073+ <doc xml:space="preserve"
12074+ filename="gparamspecs.h"
12075+ line="804">A #GParamSpec derived structure that contains the meta data for float properties.</doc>
12076+ <field name="parent_instance">
12077+ <doc xml:space="preserve"
12078+ filename="gparamspecs.h"
12079+ line="806">private #GParamSpec portion</doc>
12080+ <type name="ParamSpec" c:type="GParamSpec"/>
12081+ </field>
12082+ <field name="minimum">
12083+ <doc xml:space="preserve"
12084+ filename="gparamspecs.h"
12085+ line="807">minimum value for the property specified</doc>
12086+ <type name="gfloat" c:type="gfloat"/>
12087+ </field>
12088+ <field name="maximum">
12089+ <doc xml:space="preserve"
12090+ filename="gparamspecs.h"
12091+ line="808">maximum value for the property specified</doc>
12092+ <type name="gfloat" c:type="gfloat"/>
12093+ </field>
12094+ <field name="default_value">
12095+ <doc xml:space="preserve"
12096+ filename="gparamspecs.h"
12097+ line="809">default value for the property specified</doc>
12098+ <type name="gfloat" c:type="gfloat"/>
12099+ </field>
12100+ <field name="epsilon">
12101+ <doc xml:space="preserve"
12102+ filename="gparamspecs.h"
12103+ line="810">values closer than @epsilon will be considered identical
12104+ by g_param_values_cmp(); the default value is 1e-30.</doc>
12105+ <type name="gfloat" c:type="gfloat"/>
12106+ </field>
12107+ </class>
12108+ <class name="ParamSpecGType"
12109+ c:symbol-prefix="param_spec_gtype"
12110+ c:type="GParamSpecGType"
12111+ version="2.10"
12112+ parent="ParamSpec"
12113+ glib:type-name="GParamGType"
12114+ glib:get-type="intern"
12115+ glib:fundamental="1">
12116+ <doc xml:space="preserve"
12117+ filename="gparamspecs.h"
12118+ line="946">A #GParamSpec derived structure that contains the meta data for #GType properties.</doc>
12119+ <field name="parent_instance">
12120+ <doc xml:space="preserve"
12121+ filename="gparamspecs.h"
12122+ line="948">private #GParamSpec portion</doc>
12123+ <type name="ParamSpec" c:type="GParamSpec"/>
12124+ </field>
12125+ <field name="is_a_type">
12126+ <doc xml:space="preserve"
12127+ filename="gparamspecs.h"
12128+ line="949">a #GType whose subtypes can occur as values</doc>
12129+ <type name="GType" c:type="GType"/>
12130+ </field>
12131+ </class>
12132+ <class name="ParamSpecInt"
12133+ c:symbol-prefix="param_spec_int"
12134+ c:type="GParamSpecInt"
12135+ parent="ParamSpec"
12136+ glib:type-name="GParamInt"
12137+ glib:get-type="intern"
12138+ glib:fundamental="1">
12139+ <doc xml:space="preserve"
12140+ filename="gparamspecs.h"
12141+ line="657">A #GParamSpec derived structure that contains the meta data for integer properties.</doc>
12142+ <field name="parent_instance">
12143+ <doc xml:space="preserve"
12144+ filename="gparamspecs.h"
12145+ line="659">private #GParamSpec portion</doc>
12146+ <type name="ParamSpec" c:type="GParamSpec"/>
12147+ </field>
12148+ <field name="minimum">
12149+ <doc xml:space="preserve"
12150+ filename="gparamspecs.h"
12151+ line="660">minimum value for the property specified</doc>
12152+ <type name="gint" c:type="gint"/>
12153+ </field>
12154+ <field name="maximum">
12155+ <doc xml:space="preserve"
12156+ filename="gparamspecs.h"
12157+ line="661">maximum value for the property specified</doc>
12158+ <type name="gint" c:type="gint"/>
12159+ </field>
12160+ <field name="default_value">
12161+ <doc xml:space="preserve"
12162+ filename="gparamspecs.h"
12163+ line="662">default value for the property specified</doc>
12164+ <type name="gint" c:type="gint"/>
12165+ </field>
12166+ </class>
12167+ <class name="ParamSpecInt64"
12168+ c:symbol-prefix="param_spec_int64"
12169+ c:type="GParamSpecInt64"
12170+ parent="ParamSpec"
12171+ glib:type-name="GParamInt64"
12172+ glib:get-type="intern"
12173+ glib:fundamental="1">
12174+ <doc xml:space="preserve"
12175+ filename="gparamspecs.h"
12176+ line="725">A #GParamSpec derived structure that contains the meta data for 64bit integer properties.</doc>
12177+ <field name="parent_instance">
12178+ <doc xml:space="preserve"
12179+ filename="gparamspecs.h"
12180+ line="727">private #GParamSpec portion</doc>
12181+ <type name="ParamSpec" c:type="GParamSpec"/>
12182+ </field>
12183+ <field name="minimum">
12184+ <doc xml:space="preserve"
12185+ filename="gparamspecs.h"
12186+ line="728">minimum value for the property specified</doc>
12187+ <type name="gint64" c:type="gint64"/>
12188+ </field>
12189+ <field name="maximum">
12190+ <doc xml:space="preserve"
12191+ filename="gparamspecs.h"
12192+ line="729">maximum value for the property specified</doc>
12193+ <type name="gint64" c:type="gint64"/>
12194+ </field>
12195+ <field name="default_value">
12196+ <doc xml:space="preserve"
12197+ filename="gparamspecs.h"
12198+ line="730">default value for the property specified</doc>
12199+ <type name="gint64" c:type="gint64"/>
12200+ </field>
12201+ </class>
12202+ <class name="ParamSpecLong"
12203+ c:symbol-prefix="param_spec_long"
12204+ c:type="GParamSpecLong"
12205+ parent="ParamSpec"
12206+ glib:type-name="GParamLong"
12207+ glib:get-type="intern"
12208+ glib:fundamental="1">
12209+ <doc xml:space="preserve"
12210+ filename="gparamspecs.h"
12211+ line="691">A #GParamSpec derived structure that contains the meta data for long integer properties.</doc>
12212+ <field name="parent_instance">
12213+ <doc xml:space="preserve"
12214+ filename="gparamspecs.h"
12215+ line="693">private #GParamSpec portion</doc>
12216+ <type name="ParamSpec" c:type="GParamSpec"/>
12217+ </field>
12218+ <field name="minimum">
12219+ <doc xml:space="preserve"
12220+ filename="gparamspecs.h"
12221+ line="694">minimum value for the property specified</doc>
12222+ <type name="glong" c:type="glong"/>
12223+ </field>
12224+ <field name="maximum">
12225+ <doc xml:space="preserve"
12226+ filename="gparamspecs.h"
12227+ line="695">maximum value for the property specified</doc>
12228+ <type name="glong" c:type="glong"/>
12229+ </field>
12230+ <field name="default_value">
12231+ <doc xml:space="preserve"
12232+ filename="gparamspecs.h"
12233+ line="696">default value for the property specified</doc>
12234+ <type name="glong" c:type="glong"/>
12235+ </field>
12236+ </class>
12237+ <class name="ParamSpecObject"
12238+ c:symbol-prefix="param_spec_object"
12239+ c:type="GParamSpecObject"
12240+ parent="ParamSpec"
12241+ glib:type-name="GParamObject"
12242+ glib:get-type="intern"
12243+ glib:fundamental="1">
12244+ <doc xml:space="preserve"
12245+ filename="gparamspecs.h"
12246+ line="913">A #GParamSpec derived structure that contains the meta data for object properties.</doc>
12247+ <field name="parent_instance">
12248+ <doc xml:space="preserve"
12249+ filename="gparamspecs.h"
12250+ line="915">private #GParamSpec portion</doc>
12251+ <type name="ParamSpec" c:type="GParamSpec"/>
12252+ </field>
12253+ </class>
12254+ <class name="ParamSpecOverride"
12255+ c:symbol-prefix="param_spec_override"
12256+ c:type="GParamSpecOverride"
12257+ version="2.4"
12258+ parent="ParamSpec"
12259+ glib:type-name="GParamOverride"
12260+ glib:get-type="intern"
12261+ glib:fundamental="1">
12262+ <doc xml:space="preserve"
12263+ filename="gparamspecs.h"
12264+ line="923">A #GParamSpec derived structure that redirects operations to
12265+other types of #GParamSpec.
12266+
12267+All operations other than getting or setting the value are redirected,
12268+including accessing the nick and blurb, validating a value, and so
12269+forth.
12270+
12271+See g_param_spec_get_redirect_target() for retrieving the overridden
12272+property. #GParamSpecOverride is used in implementing
12273+g_object_class_override_property(), and will not be directly useful
12274+unless you are implementing a new base type similar to GObject.</doc>
12275+ <field name="parent_instance" readable="0" private="1">
12276+ <type name="ParamSpec" c:type="GParamSpec"/>
12277+ </field>
12278+ <field name="overridden" readable="0" private="1">
12279+ <type name="ParamSpec" c:type="GParamSpec*"/>
12280+ </field>
12281+ </class>
12282+ <class name="ParamSpecParam"
12283+ c:symbol-prefix="param_spec_param"
12284+ c:type="GParamSpecParam"
12285+ parent="ParamSpec"
12286+ glib:type-name="GParamParam"
12287+ glib:get-type="intern"
12288+ glib:fundamental="1">
12289+ <doc xml:space="preserve"
12290+ filename="gparamspecs.h"
12291+ line="868">A #GParamSpec derived structure that contains the meta data for %G_TYPE_PARAM
12292+properties.</doc>
12293+ <field name="parent_instance">
12294+ <doc xml:space="preserve"
12295+ filename="gparamspecs.h"
12296+ line="870">private #GParamSpec portion</doc>
12297+ <type name="ParamSpec" c:type="GParamSpec"/>
12298+ </field>
12299+ </class>
12300+ <class name="ParamSpecPointer"
12301+ c:symbol-prefix="param_spec_pointer"
12302+ c:type="GParamSpecPointer"
12303+ parent="ParamSpec"
12304+ glib:type-name="GParamPointer"
12305+ glib:get-type="intern"
12306+ glib:fundamental="1">
12307+ <doc xml:space="preserve"
12308+ filename="gparamspecs.h"
12309+ line="889">A #GParamSpec derived structure that contains the meta data for pointer properties.</doc>
12310+ <field name="parent_instance">
12311+ <doc xml:space="preserve"
12312+ filename="gparamspecs.h"
12313+ line="891">private #GParamSpec portion</doc>
12314+ <type name="ParamSpec" c:type="GParamSpec"/>
12315+ </field>
12316+ </class>
12317+ <record name="ParamSpecPool" c:type="GParamSpecPool" disguised="1">
12318+ <doc xml:space="preserve"
12319+ filename="gobject-2.0.c"
12320+ line="100">A #GParamSpecPool maintains a collection of #GParamSpecs which can be
12321+quickly accessed by owner and name.
12322+
12323+The implementation of the #GObject property system uses such a pool to
12324+store the #GParamSpecs of the properties all object types.</doc>
12325+ <source-position filename="gparam.h" line="197"/>
12326+ <method name="insert" c:identifier="g_param_spec_pool_insert">
12327+ <doc xml:space="preserve"
12328+ filename="gobject-2.0.c"
12329+ line="4316">Inserts a #GParamSpec in the pool.</doc>
12330+ <source-position filename="gparam.h" line="420"/>
12331+ <return-value transfer-ownership="none">
12332+ <type name="none" c:type="void"/>
12333+ </return-value>
12334+ <parameters>
12335+ <instance-parameter name="pool" transfer-ownership="none">
12336+ <doc xml:space="preserve"
12337+ filename="gobject-2.0.c"
12338+ line="4318">a #GParamSpecPool.</doc>
12339+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12340+ </instance-parameter>
12341+ <parameter name="pspec" transfer-ownership="none">
12342+ <doc xml:space="preserve"
12343+ filename="gobject-2.0.c"
12344+ line="4319">the #GParamSpec to insert</doc>
12345+ <type name="ParamSpec" c:type="GParamSpec*"/>
12346+ </parameter>
12347+ <parameter name="owner_type" transfer-ownership="none">
12348+ <doc xml:space="preserve"
12349+ filename="gobject-2.0.c"
12350+ line="4320">a #GType identifying the owner of @pspec</doc>
12351+ <type name="GType" c:type="GType"/>
12352+ </parameter>
12353+ </parameters>
12354+ </method>
12355+ <method name="list" c:identifier="g_param_spec_pool_list">
12356+ <doc xml:space="preserve"
12357+ filename="gobject-2.0.c"
12358+ line="4326">Gets an array of all #GParamSpecs owned by @owner_type in
12359+the pool.</doc>
12360+ <source-position filename="gparam.h" line="435"/>
12361+ <return-value transfer-ownership="container">
12362+ <doc xml:space="preserve"
12363+ filename="gobject-2.0.c"
12364+ line="4335">a newly
12365+ allocated array containing pointers to all #GParamSpecs
12366+ owned by @owner_type in the pool</doc>
12367+ <array length="1" zero-terminated="0" c:type="GParamSpec**">
12368+ <type name="ParamSpec" c:type="GParamSpec*"/>
12369+ </array>
12370+ </return-value>
12371+ <parameters>
12372+ <instance-parameter name="pool" transfer-ownership="none">
12373+ <doc xml:space="preserve"
12374+ filename="gobject-2.0.c"
12375+ line="4328">a #GParamSpecPool</doc>
12376+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12377+ </instance-parameter>
12378+ <parameter name="owner_type" transfer-ownership="none">
12379+ <doc xml:space="preserve"
12380+ filename="gobject-2.0.c"
12381+ line="4329">the owner to look for</doc>
12382+ <type name="GType" c:type="GType"/>
12383+ </parameter>
12384+ <parameter name="n_pspecs_p"
12385+ direction="out"
12386+ caller-allocates="0"
12387+ transfer-ownership="full">
12388+ <doc xml:space="preserve"
12389+ filename="gobject-2.0.c"
12390+ line="4330">return location for the length of the returned array</doc>
12391+ <type name="guint" c:type="guint*"/>
12392+ </parameter>
12393+ </parameters>
12394+ </method>
12395+ <method name="list_owned" c:identifier="g_param_spec_pool_list_owned">
12396+ <doc xml:space="preserve"
12397+ filename="gobject-2.0.c"
12398+ line="4341">Gets an #GList of all #GParamSpecs owned by @owner_type in
12399+the pool.</doc>
12400+ <source-position filename="gparam.h" line="432"/>
12401+ <return-value transfer-ownership="container">
12402+ <doc xml:space="preserve"
12403+ filename="gobject-2.0.c"
12404+ line="4349">a
12405+ #GList of all #GParamSpecs owned by @owner_type in
12406+ the pool#GParamSpecs.</doc>
12407+ <type name="GLib.List" c:type="GList*">
12408+ <type name="ParamSpec"/>
12409+ </type>
12410+ </return-value>
12411+ <parameters>
12412+ <instance-parameter name="pool" transfer-ownership="none">
12413+ <doc xml:space="preserve"
12414+ filename="gobject-2.0.c"
12415+ line="4343">a #GParamSpecPool</doc>
12416+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12417+ </instance-parameter>
12418+ <parameter name="owner_type" transfer-ownership="none">
12419+ <doc xml:space="preserve"
12420+ filename="gobject-2.0.c"
12421+ line="4344">the owner to look for</doc>
12422+ <type name="GType" c:type="GType"/>
12423+ </parameter>
12424+ </parameters>
12425+ </method>
12426+ <method name="lookup" c:identifier="g_param_spec_pool_lookup">
12427+ <doc xml:space="preserve"
12428+ filename="gobject-2.0.c"
12429+ line="4355">Looks up a #GParamSpec in the pool.</doc>
12430+ <source-position filename="gparam.h" line="427"/>
12431+ <return-value transfer-ownership="none" nullable="1">
12432+ <doc xml:space="preserve"
12433+ filename="gobject-2.0.c"
12434+ line="4365">The found #GParamSpec, or %NULL if no
12435+matching #GParamSpec was found.</doc>
12436+ <type name="ParamSpec" c:type="GParamSpec*"/>
12437+ </return-value>
12438+ <parameters>
12439+ <instance-parameter name="pool" transfer-ownership="none">
12440+ <doc xml:space="preserve"
12441+ filename="gobject-2.0.c"
12442+ line="4357">a #GParamSpecPool</doc>
12443+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12444+ </instance-parameter>
12445+ <parameter name="param_name" transfer-ownership="none">
12446+ <doc xml:space="preserve"
12447+ filename="gobject-2.0.c"
12448+ line="4358">the name to look for</doc>
12449+ <type name="utf8" c:type="const gchar*"/>
12450+ </parameter>
12451+ <parameter name="owner_type" transfer-ownership="none">
12452+ <doc xml:space="preserve"
12453+ filename="gobject-2.0.c"
12454+ line="4359">the owner to look for</doc>
12455+ <type name="GType" c:type="GType"/>
12456+ </parameter>
12457+ <parameter name="walk_ancestors" transfer-ownership="none">
12458+ <doc xml:space="preserve"
12459+ filename="gobject-2.0.c"
12460+ line="4360">If %TRUE, also try to find a #GParamSpec with @param_name
12461+ owned by an ancestor of @owner_type.</doc>
12462+ <type name="gboolean" c:type="gboolean"/>
12463+ </parameter>
12464+ </parameters>
12465+ </method>
12466+ <method name="remove" c:identifier="g_param_spec_pool_remove">
12467+ <doc xml:space="preserve"
12468+ filename="gobject-2.0.c"
12469+ line="4385">Removes a #GParamSpec from the pool.</doc>
12470+ <source-position filename="gparam.h" line="424"/>
12471+ <return-value transfer-ownership="none">
12472+ <type name="none" c:type="void"/>
12473+ </return-value>
12474+ <parameters>
12475+ <instance-parameter name="pool" transfer-ownership="none">
12476+ <doc xml:space="preserve"
12477+ filename="gobject-2.0.c"
12478+ line="4387">a #GParamSpecPool</doc>
12479+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12480+ </instance-parameter>
12481+ <parameter name="pspec" transfer-ownership="none">
12482+ <doc xml:space="preserve"
12483+ filename="gobject-2.0.c"
12484+ line="4388">the #GParamSpec to remove</doc>
12485+ <type name="ParamSpec" c:type="GParamSpec*"/>
12486+ </parameter>
12487+ </parameters>
12488+ </method>
12489+ <function name="new"
12490+ c:identifier="g_param_spec_pool_new"
12491+ introspectable="0">
12492+ <doc xml:space="preserve"
12493+ filename="gobject-2.0.c"
12494+ line="4370">Creates a new #GParamSpecPool.
12495+
12496+If @type_prefixing is %TRUE, lookups in the newly created pool will
12497+allow to specify the owner as a colon-separated prefix of the
12498+property name, like "GtkContainer:border-width". This feature is
12499+deprecated, so you should always set @type_prefixing to %FALSE.</doc>
12500+ <source-position filename="gparam.h" line="418"/>
12501+ <return-value transfer-ownership="full">
12502+ <doc xml:space="preserve"
12503+ filename="gobject-2.0.c"
12504+ line="4381">a newly allocated #GParamSpecPool.</doc>
12505+ <type name="ParamSpecPool" c:type="GParamSpecPool*"/>
12506+ </return-value>
12507+ <parameters>
12508+ <parameter name="type_prefixing" transfer-ownership="none">
12509+ <doc xml:space="preserve"
12510+ filename="gobject-2.0.c"
12511+ line="4372">Whether the pool will support type-prefixed property names.</doc>
12512+ <type name="gboolean" c:type="gboolean"/>
12513+ </parameter>
12514+ </parameters>
12515+ </function>
12516+ </record>
12517+ <class name="ParamSpecString"
12518+ c:symbol-prefix="param_spec_string"
12519+ c:type="GParamSpecString"
12520+ parent="ParamSpec"
12521+ glib:type-name="GParamString"
12522+ glib:get-type="intern"
12523+ glib:fundamental="1">
12524+ <doc xml:space="preserve"
12525+ filename="gparamspecs.h"
12526+ line="844">A #GParamSpec derived structure that contains the meta data for string
12527+properties.</doc>
12528+ <field name="parent_instance">
12529+ <doc xml:space="preserve"
12530+ filename="gparamspecs.h"
12531+ line="846">private #GParamSpec portion</doc>
12532+ <type name="ParamSpec" c:type="GParamSpec"/>
12533+ </field>
12534+ <field name="default_value">
12535+ <doc xml:space="preserve"
12536+ filename="gparamspecs.h"
12537+ line="847">default value for the property specified</doc>
12538+ <type name="utf8" c:type="gchar*"/>
12539+ </field>
12540+ <field name="cset_first">
12541+ <doc xml:space="preserve"
12542+ filename="gparamspecs.h"
12543+ line="848">a string containing the allowed values for the first byte</doc>
12544+ <type name="utf8" c:type="gchar*"/>
12545+ </field>
12546+ <field name="cset_nth">
12547+ <doc xml:space="preserve"
12548+ filename="gparamspecs.h"
12549+ line="849">a string containing the allowed values for the subsequent bytes</doc>
12550+ <type name="utf8" c:type="gchar*"/>
12551+ </field>
12552+ <field name="substitutor">
12553+ <doc xml:space="preserve"
12554+ filename="gparamspecs.h"
12555+ line="850">the replacement byte for bytes which don't match @cset_first or @cset_nth.</doc>
12556+ <type name="gchar" c:type="gchar"/>
12557+ </field>
12558+ <field name="null_fold_if_empty" bits="1">
12559+ <doc xml:space="preserve"
12560+ filename="gparamspecs.h"
12561+ line="851">replace empty string by %NULL</doc>
12562+ <type name="guint" c:type="guint"/>
12563+ </field>
12564+ <field name="ensure_non_null" bits="1">
12565+ <doc xml:space="preserve"
12566+ filename="gparamspecs.h"
12567+ line="852">replace %NULL strings by an empty string</doc>
12568+ <type name="guint" c:type="guint"/>
12569+ </field>
12570+ </class>
12571+ <record name="ParamSpecTypeInfo" c:type="GParamSpecTypeInfo">
12572+ <doc xml:space="preserve"
12573+ filename="gparam.h"
12574+ line="354">This structure is used to provide the type system with the information
12575+required to initialize and destruct (finalize) a parameter's class and
12576+instances thereof.
12577+
12578+The initialized structure is passed to the g_param_type_register_static()
12579+The type system will perform a deep copy of this structure, so its memory
12580+does not need to be persistent across invocation of
12581+g_param_type_register_static().</doc>
12582+ <source-position filename="gparam.h" line="396"/>
12583+ <field name="instance_size" writable="1">
12584+ <doc xml:space="preserve"
12585+ filename="gparam.h"
12586+ line="356">Size of the instance (object) structure.</doc>
12587+ <type name="guint16" c:type="guint16"/>
12588+ </field>
12589+ <field name="n_preallocs" writable="1">
12590+ <doc xml:space="preserve"
12591+ filename="gparam.h"
12592+ line="357">Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now.</doc>
12593+ <type name="guint16" c:type="guint16"/>
12594+ </field>
12595+ <field name="instance_init">
12596+ <callback name="instance_init">
12597+ <source-position filename="gparam.h" line="384"/>
12598+ <return-value transfer-ownership="none">
12599+ <type name="none" c:type="void"/>
12600+ </return-value>
12601+ <parameters>
12602+ <parameter name="pspec" transfer-ownership="none">
12603+ <type name="ParamSpec" c:type="GParamSpec*"/>
12604+ </parameter>
12605+ </parameters>
12606+ </callback>
12607+ </field>
12608+ <field name="value_type" writable="1">
12609+ <doc xml:space="preserve"
12610+ filename="gparam.h"
12611+ line="359">The #GType of values conforming to this #GParamSpec</doc>
12612+ <type name="GType" c:type="GType"/>
12613+ </field>
12614+ <field name="finalize">
12615+ <callback name="finalize">
12616+ <source-position filename="gparam.h" line="388"/>
12617+ <return-value transfer-ownership="none">
12618+ <type name="none" c:type="void"/>
12619+ </return-value>
12620+ <parameters>
12621+ <parameter name="pspec" transfer-ownership="none">
12622+ <type name="ParamSpec" c:type="GParamSpec*"/>
12623+ </parameter>
12624+ </parameters>
12625+ </callback>
12626+ </field>
12627+ <field name="value_set_default">
12628+ <callback name="value_set_default">
12629+ <source-position filename="gparam.h" line="389"/>
12630+ <return-value transfer-ownership="none">
12631+ <type name="none" c:type="void"/>
12632+ </return-value>
12633+ <parameters>
12634+ <parameter name="pspec" transfer-ownership="none">
12635+ <type name="ParamSpec" c:type="GParamSpec*"/>
12636+ </parameter>
12637+ <parameter name="value" transfer-ownership="none">
12638+ <type name="Value" c:type="GValue*"/>
12639+ </parameter>
12640+ </parameters>
12641+ </callback>
12642+ </field>
12643+ <field name="value_validate">
12644+ <callback name="value_validate">
12645+ <source-position filename="gparam.h" line="391"/>
12646+ <return-value transfer-ownership="none">
12647+ <type name="gboolean" c:type="gboolean"/>
12648+ </return-value>
12649+ <parameters>
12650+ <parameter name="pspec" transfer-ownership="none">
12651+ <type name="ParamSpec" c:type="GParamSpec*"/>
12652+ </parameter>
12653+ <parameter name="value" transfer-ownership="none">
12654+ <type name="Value" c:type="GValue*"/>
12655+ </parameter>
12656+ </parameters>
12657+ </callback>
12658+ </field>
12659+ <field name="values_cmp">
12660+ <callback name="values_cmp">
12661+ <source-position filename="gparam.h" line="393"/>
12662+ <return-value transfer-ownership="none">
12663+ <type name="gint" c:type="gint"/>
12664+ </return-value>
12665+ <parameters>
12666+ <parameter name="pspec" transfer-ownership="none">
12667+ <type name="ParamSpec" c:type="GParamSpec*"/>
12668+ </parameter>
12669+ <parameter name="value1" transfer-ownership="none">
12670+ <type name="Value" c:type="const GValue*"/>
12671+ </parameter>
12672+ <parameter name="value2" transfer-ownership="none">
12673+ <type name="Value" c:type="const GValue*"/>
12674+ </parameter>
12675+ </parameters>
12676+ </callback>
12677+ </field>
12678+ </record>
12679+ <class name="ParamSpecUChar"
12680+ c:symbol-prefix="param_spec_uchar"
12681+ c:type="GParamSpecUChar"
12682+ parent="ParamSpec"
12683+ glib:type-name="GParamUChar"
12684+ glib:get-type="intern"
12685+ glib:fundamental="1">
12686+ <doc xml:space="preserve"
12687+ filename="gparamspecs.h"
12688+ line="627">A #GParamSpec derived structure that contains the meta data for unsigned character properties.</doc>
12689+ <field name="parent_instance">
12690+ <doc xml:space="preserve"
12691+ filename="gparamspecs.h"
12692+ line="629">private #GParamSpec portion</doc>
12693+ <type name="ParamSpec" c:type="GParamSpec"/>
12694+ </field>
12695+ <field name="minimum">
12696+ <doc xml:space="preserve"
12697+ filename="gparamspecs.h"
12698+ line="630">minimum value for the property specified</doc>
12699+ <type name="guint8" c:type="guint8"/>
12700+ </field>
12701+ <field name="maximum">
12702+ <doc xml:space="preserve"
12703+ filename="gparamspecs.h"
12704+ line="631">maximum value for the property specified</doc>
12705+ <type name="guint8" c:type="guint8"/>
12706+ </field>
12707+ <field name="default_value">
12708+ <doc xml:space="preserve"
12709+ filename="gparamspecs.h"
12710+ line="632">default value for the property specified</doc>
12711+ <type name="guint8" c:type="guint8"/>
12712+ </field>
12713+ </class>
12714+ <class name="ParamSpecUInt"
12715+ c:symbol-prefix="param_spec_uint"
12716+ c:type="GParamSpecUInt"
12717+ parent="ParamSpec"
12718+ glib:type-name="GParamUInt"
12719+ glib:get-type="intern"
12720+ glib:fundamental="1">
12721+ <doc xml:space="preserve"
12722+ filename="gparamspecs.h"
12723+ line="674">A #GParamSpec derived structure that contains the meta data for unsigned integer properties.</doc>
12724+ <field name="parent_instance">
12725+ <doc xml:space="preserve"
12726+ filename="gparamspecs.h"
12727+ line="676">private #GParamSpec portion</doc>
12728+ <type name="ParamSpec" c:type="GParamSpec"/>
12729+ </field>
12730+ <field name="minimum">
12731+ <doc xml:space="preserve"
12732+ filename="gparamspecs.h"
12733+ line="677">minimum value for the property specified</doc>
12734+ <type name="guint" c:type="guint"/>
12735+ </field>
12736+ <field name="maximum">
12737+ <doc xml:space="preserve"
12738+ filename="gparamspecs.h"
12739+ line="678">maximum value for the property specified</doc>
12740+ <type name="guint" c:type="guint"/>
12741+ </field>
12742+ <field name="default_value">
12743+ <doc xml:space="preserve"
12744+ filename="gparamspecs.h"
12745+ line="679">default value for the property specified</doc>
12746+ <type name="guint" c:type="guint"/>
12747+ </field>
12748+ </class>
12749+ <class name="ParamSpecUInt64"
12750+ c:symbol-prefix="param_spec_uint64"
12751+ c:type="GParamSpecUInt64"
12752+ parent="ParamSpec"
12753+ glib:type-name="GParamUInt64"
12754+ glib:get-type="intern"
12755+ glib:fundamental="1">
12756+ <doc xml:space="preserve"
12757+ filename="gparamspecs.h"
12758+ line="742">A #GParamSpec derived structure that contains the meta data for unsigned 64bit integer properties.</doc>
12759+ <field name="parent_instance">
12760+ <doc xml:space="preserve"
12761+ filename="gparamspecs.h"
12762+ line="744">private #GParamSpec portion</doc>
12763+ <type name="ParamSpec" c:type="GParamSpec"/>
12764+ </field>
12765+ <field name="minimum">
12766+ <doc xml:space="preserve"
12767+ filename="gparamspecs.h"
12768+ line="745">minimum value for the property specified</doc>
12769+ <type name="guint64" c:type="guint64"/>
12770+ </field>
12771+ <field name="maximum">
12772+ <doc xml:space="preserve"
12773+ filename="gparamspecs.h"
12774+ line="746">maximum value for the property specified</doc>
12775+ <type name="guint64" c:type="guint64"/>
12776+ </field>
12777+ <field name="default_value">
12778+ <doc xml:space="preserve"
12779+ filename="gparamspecs.h"
12780+ line="747">default value for the property specified</doc>
12781+ <type name="guint64" c:type="guint64"/>
12782+ </field>
12783+ </class>
12784+ <class name="ParamSpecULong"
12785+ c:symbol-prefix="param_spec_ulong"
12786+ c:type="GParamSpecULong"
12787+ parent="ParamSpec"
12788+ glib:type-name="GParamULong"
12789+ glib:get-type="intern"
12790+ glib:fundamental="1">
12791+ <doc xml:space="preserve"
12792+ filename="gparamspecs.h"
12793+ line="708">A #GParamSpec derived structure that contains the meta data for unsigned long integer properties.</doc>
12794+ <field name="parent_instance">
12795+ <doc xml:space="preserve"
12796+ filename="gparamspecs.h"
12797+ line="710">private #GParamSpec portion</doc>
12798+ <type name="ParamSpec" c:type="GParamSpec"/>
12799+ </field>
12800+ <field name="minimum">
12801+ <doc xml:space="preserve"
12802+ filename="gparamspecs.h"
12803+ line="711">minimum value for the property specified</doc>
12804+ <type name="gulong" c:type="gulong"/>
12805+ </field>
12806+ <field name="maximum">
12807+ <doc xml:space="preserve"
12808+ filename="gparamspecs.h"
12809+ line="712">maximum value for the property specified</doc>
12810+ <type name="gulong" c:type="gulong"/>
12811+ </field>
12812+ <field name="default_value">
12813+ <doc xml:space="preserve"
12814+ filename="gparamspecs.h"
12815+ line="713">default value for the property specified</doc>
12816+ <type name="gulong" c:type="gulong"/>
12817+ </field>
12818+ </class>
12819+ <class name="ParamSpecUnichar"
12820+ c:symbol-prefix="param_spec_unichar"
12821+ c:type="GParamSpecUnichar"
12822+ parent="ParamSpec"
12823+ glib:type-name="GParamUnichar"
12824+ glib:get-type="intern"
12825+ glib:fundamental="1">
12826+ <doc xml:space="preserve"
12827+ filename="gparamspecs.h"
12828+ line="759">A #GParamSpec derived structure that contains the meta data for unichar (unsigned integer) properties.</doc>
12829+ <field name="parent_instance">
12830+ <doc xml:space="preserve"
12831+ filename="gparamspecs.h"
12832+ line="761">private #GParamSpec portion</doc>
12833+ <type name="ParamSpec" c:type="GParamSpec"/>
12834+ </field>
12835+ <field name="default_value">
12836+ <doc xml:space="preserve"
12837+ filename="gparamspecs.h"
12838+ line="762">default value for the property specified</doc>
12839+ <type name="gunichar" c:type="gunichar"/>
12840+ </field>
12841+ </class>
12842+ <class name="ParamSpecValueArray"
12843+ c:symbol-prefix="param_spec_value_array"
12844+ c:type="GParamSpecValueArray"
12845+ parent="ParamSpec"
12846+ glib:type-name="GParamValueArray"
12847+ glib:get-type="intern"
12848+ glib:fundamental="1">
12849+ <doc xml:space="preserve"
12850+ filename="gparamspecs.h"
12851+ line="899">A #GParamSpec derived structure that contains the meta data for #GValueArray properties.</doc>
12852+ <field name="parent_instance">
12853+ <doc xml:space="preserve"
12854+ filename="gparamspecs.h"
12855+ line="901">private #GParamSpec portion</doc>
12856+ <type name="ParamSpec" c:type="GParamSpec"/>
12857+ </field>
12858+ <field name="element_spec">
12859+ <doc xml:space="preserve"
12860+ filename="gparamspecs.h"
12861+ line="902">a #GParamSpec describing the elements contained in arrays of this property, may be %NULL</doc>
12862+ <type name="ParamSpec" c:type="GParamSpec*"/>
12863+ </field>
12864+ <field name="fixed_n_elements">
12865+ <doc xml:space="preserve"
12866+ filename="gparamspecs.h"
12867+ line="903">if greater than 0, arrays of this property will always have this many elements</doc>
12868+ <type name="guint" c:type="guint"/>
12869+ </field>
12870+ </class>
12871+ <class name="ParamSpecVariant"
12872+ c:symbol-prefix="param_spec_variant"
12873+ c:type="GParamSpecVariant"
12874+ version="2.26"
12875+ parent="ParamSpec"
12876+ glib:type-name="GParamVariant"
12877+ glib:get-type="intern"
12878+ glib:fundamental="1">
12879+ <doc xml:space="preserve"
12880+ filename="gparamspecs.h"
12881+ line="960">A #GParamSpec derived structure that contains the meta data for #GVariant properties.
12882+
12883+When comparing values with g_param_values_cmp(), scalar values with the same
12884+type will be compared with g_variant_compare(). Other non-%NULL variants will
12885+be checked for equality with g_variant_equal(), and their sort order is
12886+otherwise undefined. %NULL is ordered before non-%NULL variants. Two %NULL
12887+values compare equal.</doc>
12888+ <field name="parent_instance">
12889+ <doc xml:space="preserve"
12890+ filename="gparamspecs.h"
12891+ line="962">private #GParamSpec portion</doc>
12892+ <type name="ParamSpec" c:type="GParamSpec"/>
12893+ </field>
12894+ <field name="type">
12895+ <doc xml:space="preserve"
12896+ filename="gparamspecs.h"
12897+ line="963">a #GVariantType, or %NULL</doc>
12898+ <type name="GLib.VariantType" c:type="GVariantType*"/>
12899+ </field>
12900+ <field name="default_value">
12901+ <doc xml:space="preserve"
12902+ filename="gparamspecs.h"
12903+ line="964">a #GVariant, or %NULL</doc>
12904+ <type name="GLib.Variant" c:type="GVariant*"/>
12905+ </field>
12906+ <field name="padding" readable="0" private="1">
12907+ <array zero-terminated="0" fixed-size="4">
12908+ <type name="gpointer" c:type="gpointer"/>
12909+ </array>
12910+ </field>
12911+ </class>
12912+ <record name="Parameter"
12913+ c:type="GParameter"
12914+ deprecated="1"
12915+ deprecated-version="2.54">
12916+ <doc xml:space="preserve"
12917+ filename="gparam.h"
12918+ line="263">The GParameter struct is an auxiliary structure used
12919+to hand parameter name/value pairs to g_object_newv().</doc>
12920+ <doc-deprecated xml:space="preserve">This type is not introspectable.</doc-deprecated>
12921+ <source-position filename="gparam.h" line="277"/>
12922+ <field name="name" writable="1">
12923+ <doc xml:space="preserve"
12924+ filename="gparam.h"
12925+ line="265">the parameter name</doc>
12926+ <type name="utf8" c:type="const gchar*"/>
12927+ </field>
12928+ <field name="value" writable="1">
12929+ <doc xml:space="preserve"
12930+ filename="gparam.h"
12931+ line="266">the parameter value</doc>
12932+ <type name="Value" c:type="GValue"/>
12933+ </field>
12934+ </record>
12935+ <constant name="SIGNAL_FLAGS_MASK"
12936+ value="511"
12937+ c:type="G_SIGNAL_FLAGS_MASK">
12938+ <doc xml:space="preserve"
12939+ filename="gsignal.h"
12940+ line="150">A mask for all #GSignalFlags bits.</doc>
12941+ <source-position filename="gsignal.h" line="155"/>
12942+ <type name="gint" c:type="gint"/>
12943+ </constant>
12944+ <function-macro name="SIGNAL_GROUP"
12945+ c:identifier="G_SIGNAL_GROUP"
12946+ introspectable="0">
12947+ <source-position filename="gsignalgroup.h" line="35"/>
12948+ <parameters>
12949+ <parameter name="obj">
12950+ </parameter>
12951+ </parameters>
12952+ </function-macro>
12953+ <constant name="SIGNAL_MATCH_MASK" value="63" c:type="G_SIGNAL_MATCH_MASK">
12954+ <doc xml:space="preserve"
12955+ filename="gsignal.h"
12956+ line="193">A mask for all #GSignalMatchType bits.</doc>
12957+ <source-position filename="gsignal.h" line="198"/>
12958+ <type name="gint" c:type="gint"/>
12959+ </constant>
12960+ <callback name="SignalAccumulator" c:type="GSignalAccumulator">
12961+ <doc xml:space="preserve"
12962+ filename="gsignal.h"
12963+ line="77">The signal accumulator is a special callback function that can be used
12964+to collect return values of the various callbacks that are called
12965+during a signal emission.
12966+
12967+The signal accumulator is specified at signal creation time, if it is
12968+left %NULL, no accumulation of callback return values is performed.
12969+The return value of signal emissions is then the value returned by the
12970+last callback.</doc>
12971+ <source-position filename="gsignal.h" line="101"/>
12972+ <return-value transfer-ownership="none">
12973+ <doc xml:space="preserve"
12974+ filename="gsignal.h"
12975+ line="94">The accumulator function returns whether the signal emission
12976+ should be aborted. Returning %TRUE will continue with
12977+ the signal emission. Returning %FALSE will abort the current emission.
12978+ Since 2.62, returning %FALSE will skip to the CLEANUP stage. In this case,
12979+ emission will occur as normal in the CLEANUP stage and the handler's
12980+ return value will be accumulated.</doc>
12981+ <type name="gboolean" c:type="gboolean"/>
12982+ </return-value>
12983+ <parameters>
12984+ <parameter name="ihint" transfer-ownership="none">
12985+ <doc xml:space="preserve"
12986+ filename="gsignal.h"
12987+ line="79">Signal invocation hint, see #GSignalInvocationHint.</doc>
12988+ <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
12989+ </parameter>
12990+ <parameter name="return_accu" transfer-ownership="none">
12991+ <doc xml:space="preserve"
12992+ filename="gsignal.h"
12993+ line="80">Accumulator to collect callback return values in, this
12994+ is the return value of the current signal emission.</doc>
12995+ <type name="Value" c:type="GValue*"/>
12996+ </parameter>
12997+ <parameter name="handler_return" transfer-ownership="none">
12998+ <doc xml:space="preserve"
12999+ filename="gsignal.h"
13000+ line="82">A #GValue holding the return value of the signal handler.</doc>
13001+ <type name="Value" c:type="const GValue*"/>
13002+ </parameter>
13003+ <parameter name="data"
13004+ transfer-ownership="none"
13005+ nullable="1"
13006+ allow-none="1">
13007+ <doc xml:space="preserve"
13008+ filename="gsignal.h"
13009+ line="83">Callback data that was specified when creating the signal.</doc>
13010+ <type name="gpointer" c:type="gpointer"/>
13011+ </parameter>
13012+ </parameters>
13013+ </callback>
13014+ <callback name="SignalEmissionHook" c:type="GSignalEmissionHook">
13015+ <doc xml:space="preserve"
13016+ filename="gsignal.h"
13017+ line="54">A simple function pointer to get invoked when the signal is emitted.
13018+
13019+Emission hooks allow you to tie a hook to the signal type, so that it will
13020+trap all emissions of that signal, from any object.
13021+
13022+You may not attach these to signals created with the %G_SIGNAL_NO_HOOKS flag.</doc>
13023+ <source-position filename="gsignal.h" line="73"/>
13024+ <return-value transfer-ownership="none">
13025+ <doc xml:space="preserve"
13026+ filename="gsignal.h"
13027+ line="70">whether it wants to stay connected. If it returns %FALSE, the signal
13028+ hook is disconnected (and destroyed).</doc>
13029+ <type name="gboolean" c:type="gboolean"/>
13030+ </return-value>
13031+ <parameters>
13032+ <parameter name="ihint" transfer-ownership="none">
13033+ <doc xml:space="preserve"
13034+ filename="gsignal.h"
13035+ line="56">Signal invocation hint, see #GSignalInvocationHint.</doc>
13036+ <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
13037+ </parameter>
13038+ <parameter name="n_param_values" transfer-ownership="none">
13039+ <doc xml:space="preserve"
13040+ filename="gsignal.h"
13041+ line="57">the number of parameters to the function, including
13042+ the instance on which the signal was emitted.</doc>
13043+ <type name="guint" c:type="guint"/>
13044+ </parameter>
13045+ <parameter name="param_values" transfer-ownership="none">
13046+ <doc xml:space="preserve"
13047+ filename="gsignal.h"
13048+ line="59">the instance on which
13049+ the signal was emitted, followed by the parameters of the emission.</doc>
13050+ <array length="1" zero-terminated="0" c:type="const GValue*">
13051+ <type name="Value" c:type="GValue"/>
13052+ </array>
13053+ </parameter>
13054+ <parameter name="data"
13055+ transfer-ownership="none"
13056+ nullable="1"
13057+ allow-none="1">
13058+ <doc xml:space="preserve"
13059+ filename="gsignal.h"
13060+ line="61">user data associated with the hook.</doc>
13061+ <type name="gpointer" c:type="gpointer"/>
13062+ </parameter>
13063+ </parameters>
13064+ </callback>
13065+ <bitfield name="SignalFlags" c:type="GSignalFlags">
13066+ <doc xml:space="preserve"
13067+ filename="gsignal.h"
13068+ line="108">The signal flags are used to specify a signal's behaviour.</doc>
13069+ <source-position filename="gsignal.h" line="149"/>
13070+ <member name="run_first" value="1" c:identifier="G_SIGNAL_RUN_FIRST">
13071+ <doc xml:space="preserve"
13072+ filename="gsignal.h"
13073+ line="110">Invoke the object method handler in the first emission stage.</doc>
13074+ </member>
13075+ <member name="run_last" value="2" c:identifier="G_SIGNAL_RUN_LAST">
13076+ <doc xml:space="preserve"
13077+ filename="gsignal.h"
13078+ line="111">Invoke the object method handler in the third emission stage.</doc>
13079+ </member>
13080+ <member name="run_cleanup" value="4" c:identifier="G_SIGNAL_RUN_CLEANUP">
13081+ <doc xml:space="preserve"
13082+ filename="gsignal.h"
13083+ line="112">Invoke the object method handler in the last emission stage.</doc>
13084+ </member>
13085+ <member name="no_recurse" value="8" c:identifier="G_SIGNAL_NO_RECURSE">
13086+ <doc xml:space="preserve"
13087+ filename="gsignal.h"
13088+ line="113">Signals being emitted for an object while currently being in
13089+ emission for this very object will not be emitted recursively,
13090+ but instead cause the first emission to be restarted.</doc>
13091+ </member>
13092+ <member name="detailed" value="16" c:identifier="G_SIGNAL_DETAILED">
13093+ <doc xml:space="preserve"
13094+ filename="gsignal.h"
13095+ line="116">This signal supports "::detail" appendices to the signal name
13096+ upon handler connections and emissions.</doc>
13097+ </member>
13098+ <member name="action" value="32" c:identifier="G_SIGNAL_ACTION">
13099+ <doc xml:space="preserve"
13100+ filename="gsignal.h"
13101+ line="118">Action signals are signals that may freely be emitted on alive
13102+ objects from user code via g_signal_emit() and friends, without
13103+ the need of being embedded into extra code that performs pre or
13104+ post emission adjustments on the object. They can also be thought
13105+ of as object methods which can be called generically by
13106+ third-party code.</doc>
13107+ </member>
13108+ <member name="no_hooks" value="64" c:identifier="G_SIGNAL_NO_HOOKS">
13109+ <doc xml:space="preserve"
13110+ filename="gsignal.h"
13111+ line="124">No emissions hooks are supported for this signal.</doc>
13112+ </member>
13113+ <member name="must_collect"
13114+ value="128"
13115+ c:identifier="G_SIGNAL_MUST_COLLECT">
13116+ <doc xml:space="preserve"
13117+ filename="gsignal.h"
13118+ line="125">Varargs signal emission will always collect the
13119+ arguments, even if there are no signal handlers connected. Since 2.30.</doc>
13120+ </member>
13121+ <member name="deprecated" value="256" c:identifier="G_SIGNAL_DEPRECATED">
13122+ <doc xml:space="preserve"
13123+ filename="gsignal.h"
13124+ line="127">The signal is deprecated and will be removed
13125+ in a future version. A warning will be generated if it is connected while
13126+ running with G_ENABLE_DIAGNOSTIC=1. Since 2.32.</doc>
13127+ </member>
13128+ <member name="accumulator_first_run"
13129+ value="131072"
13130+ c:identifier="G_SIGNAL_ACCUMULATOR_FIRST_RUN">
13131+ <doc xml:space="preserve"
13132+ filename="gsignal.h"
13133+ line="130">Only used in #GSignalAccumulator accumulator
13134+ functions for the #GSignalInvocationHint::run_type field to mark the first
13135+ call to the accumulator function for a signal emission. Since 2.68.</doc>
13136+ </member>
13137+ </bitfield>
13138+ <class name="SignalGroup"
13139+ c:symbol-prefix="signal_group"
13140+ c:type="GSignalGroup"
13141+ version="2.72"
13142+ parent="Object"
13143+ glib:type-name="GSignalGroup"
13144+ glib:get-type="g_signal_group_get_type">
13145+ <doc xml:space="preserve"
13146+ filename="gobject-2.0.c"
13147+ line="549">#GSignalGroup manages to simplify the process of connecting
13148+many signals to a #GObject as a group. As such there is no API
13149+to disconnect a signal from the group.
13150+
13151+In particular, this allows you to:
13152+
13153+ - Change the target instance, which automatically causes disconnection
13154+ of the signals from the old instance and connecting to the new instance.
13155+ - Block and unblock signals as a group
13156+ - Ensuring that blocked state transfers across target instances.
13157+
13158+One place you might want to use such a structure is with #GtkTextView and
13159+#GtkTextBuffer. Often times, you'll need to connect to many signals on
13160+#GtkTextBuffer from a #GtkTextView subclass. This allows you to create a
13161+signal group during instance construction, simply bind the
13162+#GtkTextView:buffer property to #GSignalGroup:target and connect
13163+all the signals you need. When the #GtkTextView:buffer property changes
13164+all of the signals will be transitioned correctly.</doc>
13165+ <constructor name="new" c:identifier="g_signal_group_new" version="2.72">
13166+ <doc xml:space="preserve"
13167+ filename="gobject-2.0.c"
13168+ line="5087">Creates a new #GSignalGroup for target instances of @target_type.</doc>
13169+ <source-position filename="gsignalgroup.h" line="52"/>
13170+ <return-value transfer-ownership="full">
13171+ <doc xml:space="preserve"
13172+ filename="gobject-2.0.c"
13173+ line="5093">a new #GSignalGroup</doc>
13174+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13175+ </return-value>
13176+ <parameters>
13177+ <parameter name="target_type" transfer-ownership="none">
13178+ <doc xml:space="preserve"
13179+ filename="gobject-2.0.c"
13180+ line="5089">the #GType of the target instance.</doc>
13181+ <type name="GType" c:type="GType"/>
13182+ </parameter>
13183+ </parameters>
13184+ </constructor>
13185+ <method name="block" c:identifier="g_signal_group_block" version="2.72">
13186+ <doc xml:space="preserve"
13187+ filename="gobject-2.0.c"
13188+ line="4971">Blocks all signal handlers managed by @self so they will not
13189+be called during any signal emissions. Must be unblocked exactly
13190+the same number of times it has been blocked to become active again.
13191+
13192+This blocked state will be kept across changes of the target instance.</doc>
13193+ <source-position filename="gsignalgroup.h" line="59"/>
13194+ <return-value transfer-ownership="none">
13195+ <type name="none" c:type="void"/>
13196+ </return-value>
13197+ <parameters>
13198+ <instance-parameter name="self" transfer-ownership="none">
13199+ <doc xml:space="preserve"
13200+ filename="gobject-2.0.c"
13201+ line="4973">the #GSignalGroup</doc>
13202+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13203+ </instance-parameter>
13204+ </parameters>
13205+ </method>
13206+ <method name="connect"
13207+ c:identifier="g_signal_group_connect"
13208+ version="2.72"
13209+ introspectable="0">
13210+ <doc xml:space="preserve"
13211+ filename="gobject-2.0.c"
13212+ line="4985">Connects @c_handler to the signal @detailed_signal
13213+on the target instance of @self.
13214+
13215+You cannot connect a signal handler after #GSignalGroup:target has been set.</doc>
13216+ <source-position filename="gsignalgroup.h" line="76"/>
13217+ <return-value transfer-ownership="none">
13218+ <type name="none" c:type="void"/>
13219+ </return-value>
13220+ <parameters>
13221+ <instance-parameter name="self" transfer-ownership="none">
13222+ <doc xml:space="preserve"
13223+ filename="gobject-2.0.c"
13224+ line="4987">a #GSignalGroup</doc>
13225+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13226+ </instance-parameter>
13227+ <parameter name="detailed_signal" transfer-ownership="none">
13228+ <doc xml:space="preserve"
13229+ filename="gobject-2.0.c"
13230+ line="4988">a string of the form "signal-name::detail"</doc>
13231+ <type name="utf8" c:type="const gchar*"/>
13232+ </parameter>
13233+ <parameter name="c_handler"
13234+ transfer-ownership="none"
13235+ scope="notified"
13236+ closure="2">
13237+ <doc xml:space="preserve"
13238+ filename="gobject-2.0.c"
13239+ line="4989">the #GCallback to connect</doc>
13240+ <type name="Callback" c:type="GCallback"/>
13241+ </parameter>
13242+ <parameter name="data"
13243+ transfer-ownership="none"
13244+ nullable="1"
13245+ allow-none="1">
13246+ <doc xml:space="preserve"
13247+ filename="gobject-2.0.c"
13248+ line="4990">the data to pass to @c_handler calls</doc>
13249+ <type name="gpointer" c:type="gpointer"/>
13250+ </parameter>
13251+ </parameters>
13252+ </method>
13253+ <method name="connect_after"
13254+ c:identifier="g_signal_group_connect_after"
13255+ version="2.72"
13256+ introspectable="0">
13257+ <doc xml:space="preserve"
13258+ filename="gobject-2.0.c"
13259+ line="5001">Connects @c_handler to the signal @detailed_signal
13260+on the target instance of @self.
13261+
13262+The @c_handler will be called after the default handler of the signal.
13263+
13264+You cannot connect a signal handler after #GSignalGroup:target has been set.</doc>
13265+ <source-position filename="gsignalgroup.h" line="81"/>
13266+ <return-value transfer-ownership="none">
13267+ <type name="none" c:type="void"/>
13268+ </return-value>
13269+ <parameters>
13270+ <instance-parameter name="self" transfer-ownership="none">
13271+ <doc xml:space="preserve"
13272+ filename="gobject-2.0.c"
13273+ line="5003">a #GSignalGroup</doc>
13274+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13275+ </instance-parameter>
13276+ <parameter name="detailed_signal" transfer-ownership="none">
13277+ <doc xml:space="preserve"
13278+ filename="gobject-2.0.c"
13279+ line="5004">a string of the form "signal-name::detail"</doc>
13280+ <type name="utf8" c:type="const gchar*"/>
13281+ </parameter>
13282+ <parameter name="c_handler"
13283+ transfer-ownership="none"
13284+ scope="notified"
13285+ closure="2">
13286+ <doc xml:space="preserve"
13287+ filename="gobject-2.0.c"
13288+ line="5005">the #GCallback to connect</doc>
13289+ <type name="Callback" c:type="GCallback"/>
13290+ </parameter>
13291+ <parameter name="data"
13292+ transfer-ownership="none"
13293+ nullable="1"
13294+ allow-none="1">
13295+ <doc xml:space="preserve"
13296+ filename="gobject-2.0.c"
13297+ line="5006">the data to pass to @c_handler calls</doc>
13298+ <type name="gpointer" c:type="gpointer"/>
13299+ </parameter>
13300+ </parameters>
13301+ </method>
13302+ <method name="connect_data"
13303+ c:identifier="g_signal_group_connect_data"
13304+ version="2.72">
13305+ <doc xml:space="preserve"
13306+ filename="gobject-2.0.c"
13307+ line="5019">Connects @c_handler to the signal @detailed_signal
13308+on the target instance of @self.
13309+
13310+You cannot connect a signal handler after #GSignalGroup:target has been set.</doc>
13311+ <source-position filename="gsignalgroup.h" line="69"/>
13312+ <return-value transfer-ownership="none">
13313+ <type name="none" c:type="void"/>
13314+ </return-value>
13315+ <parameters>
13316+ <instance-parameter name="self" transfer-ownership="none">
13317+ <doc xml:space="preserve"
13318+ filename="gobject-2.0.c"
13319+ line="5021">a #GSignalGroup</doc>
13320+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13321+ </instance-parameter>
13322+ <parameter name="detailed_signal" transfer-ownership="none">
13323+ <doc xml:space="preserve"
13324+ filename="gobject-2.0.c"
13325+ line="5022">a string of the form "signal-name::detail"</doc>
13326+ <type name="utf8" c:type="const gchar*"/>
13327+ </parameter>
13328+ <parameter name="c_handler"
13329+ transfer-ownership="none"
13330+ scope="notified"
13331+ closure="2"
13332+ destroy="3">
13333+ <doc xml:space="preserve"
13334+ filename="gobject-2.0.c"
13335+ line="5023">the #GCallback to connect</doc>
13336+ <type name="Callback" c:type="GCallback"/>
13337+ </parameter>
13338+ <parameter name="data"
13339+ transfer-ownership="none"
13340+ nullable="1"
13341+ allow-none="1">
13342+ <doc xml:space="preserve"
13343+ filename="gobject-2.0.c"
13344+ line="5024">the data to pass to @c_handler calls</doc>
13345+ <type name="gpointer" c:type="gpointer"/>
13346+ </parameter>
13347+ <parameter name="notify" transfer-ownership="none" scope="notified">
13348+ <doc xml:space="preserve"
13349+ filename="gobject-2.0.c"
13350+ line="5025">function to be called when disposing of @self</doc>
13351+ <type name="ClosureNotify" c:type="GClosureNotify"/>
13352+ </parameter>
13353+ <parameter name="flags" transfer-ownership="none">
13354+ <doc xml:space="preserve"
13355+ filename="gobject-2.0.c"
13356+ line="5026">the flags used to create the signal connection</doc>
13357+ <type name="ConnectFlags" c:type="GConnectFlags"/>
13358+ </parameter>
13359+ </parameters>
13360+ </method>
13361+ <method name="connect_object"
13362+ c:identifier="g_signal_group_connect_object"
13363+ version="2.72"
13364+ introspectable="0">
13365+ <doc xml:space="preserve"
13366+ filename="gobject-2.0.c"
13367+ line="5037">Connects @c_handler to the signal @detailed_signal on #GSignalGroup:target.
13368+
13369+Ensures that the @object stays alive during the call to @c_handler
13370+by temporarily adding a reference count. When the @object is destroyed
13371+the signal handler will automatically be removed.
13372+
13373+You cannot connect a signal handler after #GSignalGroup:target has been set.</doc>
13374+ <source-position filename="gsignalgroup.h" line="63"/>
13375+ <return-value transfer-ownership="none">
13376+ <type name="none" c:type="void"/>
13377+ </return-value>
13378+ <parameters>
13379+ <instance-parameter name="self" transfer-ownership="none">
13380+ <doc xml:space="preserve"
13381+ filename="gobject-2.0.c"
13382+ line="5039">a #GSignalGroup</doc>
13383+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13384+ </instance-parameter>
13385+ <parameter name="detailed_signal" transfer-ownership="none">
13386+ <doc xml:space="preserve"
13387+ filename="gobject-2.0.c"
13388+ line="5040">a string of the form `signal-name` with optional `::signal-detail`</doc>
13389+ <type name="utf8" c:type="const gchar*"/>
13390+ </parameter>
13391+ <parameter name="c_handler"
13392+ transfer-ownership="none"
13393+ scope="notified">
13394+ <doc xml:space="preserve"
13395+ filename="gobject-2.0.c"
13396+ line="5041">the #GCallback to connect</doc>
13397+ <type name="Callback" c:type="GCallback"/>
13398+ </parameter>
13399+ <parameter name="object" transfer-ownership="none">
13400+ <doc xml:space="preserve"
13401+ filename="gobject-2.0.c"
13402+ line="5042">the #GObject to pass as data to @c_handler calls</doc>
13403+ <type name="gpointer" c:type="gpointer"/>
13404+ </parameter>
13405+ <parameter name="flags" transfer-ownership="none">
13406+ <doc xml:space="preserve"
13407+ filename="gobject-2.0.c"
13408+ line="5043">#GConnectFlags for the signal connection</doc>
13409+ <type name="ConnectFlags" c:type="GConnectFlags"/>
13410+ </parameter>
13411+ </parameters>
13412+ </method>
13413+ <method name="connect_swapped"
13414+ c:identifier="g_signal_group_connect_swapped"
13415+ version="2.72">
13416+ <doc xml:space="preserve"
13417+ filename="gobject-2.0.c"
13418+ line="5057">Connects @c_handler to the signal @detailed_signal
13419+on the target instance of @self.
13420+
13421+The instance on which the signal is emitted and @data
13422+will be swapped when calling @c_handler.
13423+
13424+You cannot connect a signal handler after #GSignalGroup:target has been set.</doc>
13425+ <source-position filename="gsignalgroup.h" line="86"/>
13426+ <return-value transfer-ownership="none">
13427+ <type name="none" c:type="void"/>
13428+ </return-value>
13429+ <parameters>
13430+ <instance-parameter name="self" transfer-ownership="none">
13431+ <doc xml:space="preserve"
13432+ filename="gobject-2.0.c"
13433+ line="5059">a #GSignalGroup</doc>
13434+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13435+ </instance-parameter>
13436+ <parameter name="detailed_signal" transfer-ownership="none">
13437+ <doc xml:space="preserve"
13438+ filename="gobject-2.0.c"
13439+ line="5060">a string of the form "signal-name::detail"</doc>
13440+ <type name="utf8" c:type="const gchar*"/>
13441+ </parameter>
13442+ <parameter name="c_handler"
13443+ transfer-ownership="none"
13444+ scope="async"
13445+ closure="2">
13446+ <doc xml:space="preserve"
13447+ filename="gobject-2.0.c"
13448+ line="5061">the #GCallback to connect</doc>
13449+ <type name="Callback" c:type="GCallback"/>
13450+ </parameter>
13451+ <parameter name="data"
13452+ transfer-ownership="none"
13453+ nullable="1"
13454+ allow-none="1">
13455+ <doc xml:space="preserve"
13456+ filename="gobject-2.0.c"
13457+ line="5062">the data to pass to @c_handler calls</doc>
13458+ <type name="gpointer" c:type="gpointer"/>
13459+ </parameter>
13460+ </parameters>
13461+ </method>
13462+ <method name="dup_target"
13463+ c:identifier="g_signal_group_dup_target"
13464+ version="2.72">
13465+ <doc xml:space="preserve"
13466+ filename="gobject-2.0.c"
13467+ line="5076">Gets the target instance used when connecting signals.</doc>
13468+ <source-position filename="gsignalgroup.h" line="57"/>
13469+ <return-value transfer-ownership="full" nullable="1">
13470+ <doc xml:space="preserve"
13471+ filename="gobject-2.0.c"
13472+ line="5082">The target instance</doc>
13473+ <type name="Object" c:type="gpointer"/>
13474+ </return-value>
13475+ <parameters>
13476+ <instance-parameter name="self" transfer-ownership="none">
13477+ <doc xml:space="preserve"
13478+ filename="gobject-2.0.c"
13479+ line="5078">the #GSignalGroup</doc>
13480+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13481+ </instance-parameter>
13482+ </parameters>
13483+ </method>
13484+ <method name="set_target"
13485+ c:identifier="g_signal_group_set_target"
13486+ glib:set-property="target"
13487+ version="2.72">
13488+ <doc xml:space="preserve"
13489+ filename="gobject-2.0.c"
13490+ line="5098">Sets the target instance used when connecting signals. Any signal
13491+that has been registered with g_signal_group_connect_object() or
13492+similar functions will be connected to this object.
13493+
13494+If the target instance was previously set, signals will be
13495+disconnected from that object prior to connecting to @target.</doc>
13496+ <source-position filename="gsignalgroup.h" line="54"/>
13497+ <return-value transfer-ownership="none">
13498+ <type name="none" c:type="void"/>
13499+ </return-value>
13500+ <parameters>
13501+ <instance-parameter name="self" transfer-ownership="none">
13502+ <doc xml:space="preserve"
13503+ filename="gobject-2.0.c"
13504+ line="5100">the #GSignalGroup.</doc>
13505+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13506+ </instance-parameter>
13507+ <parameter name="target"
13508+ transfer-ownership="none"
13509+ nullable="1"
13510+ allow-none="1">
13511+ <doc xml:space="preserve"
13512+ filename="gobject-2.0.c"
13513+ line="5101">The target instance used
13514+ when connecting signals.</doc>
13515+ <type name="Object" c:type="gpointer"/>
13516+ </parameter>
13517+ </parameters>
13518+ </method>
13519+ <method name="unblock"
13520+ c:identifier="g_signal_group_unblock"
13521+ version="2.72">
13522+ <doc xml:space="preserve"
13523+ filename="gobject-2.0.c"
13524+ line="5115">Unblocks all signal handlers managed by @self so they will be
13525+called again during any signal emissions unless it is blocked
13526+again. Must be unblocked exactly the same number of times it
13527+has been blocked to become active again.</doc>
13528+ <source-position filename="gsignalgroup.h" line="61"/>
13529+ <return-value transfer-ownership="none">
13530+ <type name="none" c:type="void"/>
13531+ </return-value>
13532+ <parameters>
13533+ <instance-parameter name="self" transfer-ownership="none">
13534+ <doc xml:space="preserve"
13535+ filename="gobject-2.0.c"
13536+ line="5117">the #GSignalGroup</doc>
13537+ <type name="SignalGroup" c:type="GSignalGroup*"/>
13538+ </instance-parameter>
13539+ </parameters>
13540+ </method>
13541+ <property name="target"
13542+ version="2.72"
13543+ writable="1"
13544+ transfer-ownership="none"
13545+ setter="set_target">
13546+ <doc xml:space="preserve"
13547+ filename="gobject-2.0.c"
13548+ line="139">The target instance used when connecting signals.</doc>
13549+ <type name="Object"/>
13550+ </property>
13551+ <property name="target-type"
13552+ version="2.72"
13553+ writable="1"
13554+ construct-only="1"
13555+ transfer-ownership="none">
13556+ <doc xml:space="preserve"
13557+ filename="gobject-2.0.c"
13558+ line="148">The #GType of the target property.</doc>
13559+ <type name="GType" c:type="GType"/>
13560+ </property>
13561+ <glib:signal name="bind" when="last" version="2.72">
13562+ <doc xml:space="preserve"
13563+ filename="gobject-2.0.c"
13564+ line="111">This signal is emitted when #GSignalGroup:target is set to a new value
13565+other than %NULL. It is similar to #GObject::notify on `target` except it
13566+will not emit when #GSignalGroup:target is %NULL and also allows for
13567+receiving the #GObject without a data-race.</doc>
13568+ <return-value transfer-ownership="none">
13569+ <type name="none" c:type="void"/>
13570+ </return-value>
13571+ <parameters>
13572+ <parameter name="instance" transfer-ownership="none">
13573+ <doc xml:space="preserve"
13574+ filename="gobject-2.0.c"
13575+ line="114">a #GObject containing the new value for #GSignalGroup:target</doc>
13576+ <type name="Object"/>
13577+ </parameter>
13578+ </parameters>
13579+ </glib:signal>
13580+ <glib:signal name="unbind" when="last" version="2.72">
13581+ <doc xml:space="preserve"
13582+ filename="gobject-2.0.c"
13583+ line="125">This signal is emitted when the target instance of @self is set to a
13584+new #GObject.
13585+
13586+This signal will only be emitted if the previous target of @self is
13587+non-%NULL.</doc>
13588+ <return-value transfer-ownership="none">
13589+ <type name="none" c:type="void"/>
13590+ </return-value>
13591+ </glib:signal>
13592+ </class>
13593+ <record name="SignalInvocationHint" c:type="GSignalInvocationHint">
13594+ <doc xml:space="preserve"
13595+ filename="gsignal.h"
13596+ line="223">The #GSignalInvocationHint structure is used to pass on additional information
13597+to callbacks during a signal emission.</doc>
13598+ <source-position filename="gsignal.h" line="241"/>
13599+ <field name="signal_id" writable="1">
13600+ <doc xml:space="preserve"
13601+ filename="gsignal.h"
13602+ line="225">The signal id of the signal invoking the callback</doc>
13603+ <type name="guint" c:type="guint"/>
13604+ </field>
13605+ <field name="detail" writable="1">
13606+ <doc xml:space="preserve"
13607+ filename="gsignal.h"
13608+ line="226">The detail passed on for this emission</doc>
13609+ <type name="GLib.Quark" c:type="GQuark"/>
13610+ </field>
13611+ <field name="run_type" writable="1">
13612+ <doc xml:space="preserve"
13613+ filename="gsignal.h"
13614+ line="227">The stage the signal emission is currently in, this
13615+ field will contain one of %G_SIGNAL_RUN_FIRST,
13616+ %G_SIGNAL_RUN_LAST or %G_SIGNAL_RUN_CLEANUP and %G_SIGNAL_ACCUMULATOR_FIRST_RUN.
13617+ %G_SIGNAL_ACCUMULATOR_FIRST_RUN is only set for the first run of the accumulator
13618+ function for a signal emission.</doc>
13619+ <type name="SignalFlags" c:type="GSignalFlags"/>
13620+ </field>
13621+ </record>
13622+ <bitfield name="SignalMatchType" c:type="GSignalMatchType">
13623+ <doc xml:space="preserve"
13624+ filename="gsignal.h"
13625+ line="171">The match types specify what g_signal_handlers_block_matched(),
13626+g_signal_handlers_unblock_matched() and g_signal_handlers_disconnect_matched()
13627+match signals by.</doc>
13628+ <source-position filename="gsignal.h" line="192"/>
13629+ <member name="id" value="1" c:identifier="G_SIGNAL_MATCH_ID">
13630+ <doc xml:space="preserve"
13631+ filename="gsignal.h"
13632+ line="173">The signal id must be equal.</doc>
13633+ </member>
13634+ <member name="detail" value="2" c:identifier="G_SIGNAL_MATCH_DETAIL">
13635+ <doc xml:space="preserve"
13636+ filename="gsignal.h"
13637+ line="174">The signal detail must be equal.</doc>
13638+ </member>
13639+ <member name="closure" value="4" c:identifier="G_SIGNAL_MATCH_CLOSURE">
13640+ <doc xml:space="preserve"
13641+ filename="gsignal.h"
13642+ line="175">The closure must be the same.</doc>
13643+ </member>
13644+ <member name="func" value="8" c:identifier="G_SIGNAL_MATCH_FUNC">
13645+ <doc xml:space="preserve"
13646+ filename="gsignal.h"
13647+ line="176">The C closure callback must be the same.</doc>
13648+ </member>
13649+ <member name="data" value="16" c:identifier="G_SIGNAL_MATCH_DATA">
13650+ <doc xml:space="preserve"
13651+ filename="gsignal.h"
13652+ line="177">The closure data must be the same.</doc>
13653+ </member>
13654+ <member name="unblocked"
13655+ value="32"
13656+ c:identifier="G_SIGNAL_MATCH_UNBLOCKED">
13657+ <doc xml:space="preserve"
13658+ filename="gsignal.h"
13659+ line="178">Only unblocked signals may be matched.</doc>
13660+ </member>
13661+ </bitfield>
13662+ <record name="SignalQuery" c:type="GSignalQuery">
13663+ <doc xml:space="preserve"
13664+ filename="gsignal.h"
13665+ line="242">A structure holding in-depth information for a specific signal.
13666+
13667+See also: g_signal_query()</doc>
13668+ <source-position filename="gsignal.h" line="272"/>
13669+ <field name="signal_id" writable="1">
13670+ <doc xml:space="preserve"
13671+ filename="gsignal.h"
13672+ line="244">The signal id of the signal being queried, or 0 if the
13673+ signal to be queried was unknown.</doc>
13674+ <type name="guint" c:type="guint"/>
13675+ </field>
13676+ <field name="signal_name" writable="1">
13677+ <doc xml:space="preserve"
13678+ filename="gsignal.h"
13679+ line="246">The signal name.</doc>
13680+ <type name="utf8" c:type="const gchar*"/>
13681+ </field>
13682+ <field name="itype" writable="1">
13683+ <doc xml:space="preserve"
13684+ filename="gsignal.h"
13685+ line="247">The interface/instance type that this signal can be emitted for.</doc>
13686+ <type name="GType" c:type="GType"/>
13687+ </field>
13688+ <field name="signal_flags" writable="1">
13689+ <doc xml:space="preserve"
13690+ filename="gsignal.h"
13691+ line="248">The signal flags as passed in to g_signal_new().</doc>
13692+ <type name="SignalFlags" c:type="GSignalFlags"/>
13693+ </field>
13694+ <field name="return_type" writable="1">
13695+ <doc xml:space="preserve"
13696+ filename="gsignal.h"
13697+ line="249">The return type for user callbacks.</doc>
13698+ <type name="GType" c:type="GType"/>
13699+ </field>
13700+ <field name="n_params" writable="1">
13701+ <doc xml:space="preserve"
13702+ filename="gsignal.h"
13703+ line="250">The number of parameters that user callbacks take.</doc>
13704+ <type name="guint" c:type="guint"/>
13705+ </field>
13706+ <field name="param_types" writable="1">
13707+ <doc xml:space="preserve"
13708+ filename="gsignal.h"
13709+ line="251">The individual parameter types for
13710+ user callbacks, note that the effective callback signature is:
13711+ |[&lt;!-- language="C" --&gt;
13712+ @return_type callback (#gpointer data1,
13713+ [param_types param_names,]
13714+ gpointer data2);
13715+ ]|</doc>
13716+ <array length="5" zero-terminated="0" c:type="const GType*">
13717+ <type name="GType" c:type="GType"/>
13718+ </array>
13719+ </field>
13720+ </record>
13721+ <function-macro name="TYPE_CHECK_CLASS_CAST"
13722+ c:identifier="G_TYPE_CHECK_CLASS_CAST"
13723+ introspectable="0">
13724+ <doc xml:space="preserve"
13725+ filename="gtype.h"
13726+ line="558">Checks that @g_class is a class structure of the type identified by @g_type
13727+and issues a warning if this is not the case. Returns @g_class casted
13728+to a pointer to @c_type. %NULL is not a valid class structure.
13729+
13730+This macro should only be used in type implementations.</doc>
13731+ <source-position filename="gtype.h" line="570"/>
13732+ <parameters>
13733+ <parameter name="g_class">
13734+ <doc xml:space="preserve"
13735+ filename="gtype.h"
13736+ line="560">Location of a #GTypeClass structure</doc>
13737+ </parameter>
13738+ <parameter name="g_type">
13739+ <doc xml:space="preserve"
13740+ filename="gtype.h"
13741+ line="561">The type to be returned</doc>
13742+ </parameter>
13743+ <parameter name="c_type">
13744+ <doc xml:space="preserve"
13745+ filename="gtype.h"
13746+ line="562">The corresponding C type of class structure of @g_type</doc>
13747+ </parameter>
13748+ </parameters>
13749+ </function-macro>
13750+ <function-macro name="TYPE_CHECK_CLASS_TYPE"
13751+ c:identifier="G_TYPE_CHECK_CLASS_TYPE"
13752+ introspectable="0">
13753+ <doc xml:space="preserve"
13754+ filename="gtype.h"
13755+ line="571">Checks if @g_class is a class structure of the type identified by
13756+@g_type. If @g_class is %NULL, %FALSE will be returned.
13757+
13758+This macro should only be used in type implementations.</doc>
13759+ <source-position filename="gtype.h" line="583"/>
13760+ <parameters>
13761+ <parameter name="g_class">
13762+ <doc xml:space="preserve"
13763+ filename="gtype.h"
13764+ line="573">Location of a #GTypeClass structure</doc>
13765+ </parameter>
13766+ <parameter name="g_type">
13767+ <doc xml:space="preserve"
13768+ filename="gtype.h"
13769+ line="574">The type to be checked</doc>
13770+ </parameter>
13771+ </parameters>
13772+ </function-macro>
13773+ <function-macro name="TYPE_CHECK_INSTANCE"
13774+ c:identifier="G_TYPE_CHECK_INSTANCE"
13775+ introspectable="0">
13776+ <doc xml:space="preserve"
13777+ filename="gtype.h"
13778+ line="474">Checks if @instance is a valid #GTypeInstance structure,
13779+otherwise issues a warning and returns %FALSE. %NULL is not a valid
13780+#GTypeInstance.
13781+
13782+This macro should only be used in type implementations.</doc>
13783+ <source-position filename="gtype.h" line="486"/>
13784+ <parameters>
13785+ <parameter name="instance">
13786+ <doc xml:space="preserve"
13787+ filename="gtype.h"
13788+ line="476">Location of a #GTypeInstance structure</doc>
13789+ </parameter>
13790+ </parameters>
13791+ </function-macro>
13792+ <function-macro name="TYPE_CHECK_INSTANCE_CAST"
13793+ c:identifier="G_TYPE_CHECK_INSTANCE_CAST"
13794+ introspectable="0">
13795+ <doc xml:space="preserve"
13796+ filename="gtype.h"
13797+ line="487">Checks that @instance is an instance of the type identified by @g_type
13798+and issues a warning if this is not the case. Returns @instance casted
13799+to a pointer to @c_type.
13800+
13801+No warning will be issued if @instance is %NULL, and %NULL will be returned.
13802+
13803+This macro should only be used in type implementations.</doc>
13804+ <source-position filename="gtype.h" line="501"/>
13805+ <parameters>
13806+ <parameter name="instance">
13807+ <doc xml:space="preserve"
13808+ filename="gtype.h"
13809+ line="489">Location of a #GTypeInstance structure</doc>
13810+ </parameter>
13811+ <parameter name="g_type">
13812+ <doc xml:space="preserve"
13813+ filename="gtype.h"
13814+ line="490">The type to be returned</doc>
13815+ </parameter>
13816+ <parameter name="c_type">
13817+ <doc xml:space="preserve"
13818+ filename="gtype.h"
13819+ line="491">The corresponding C type of @g_type</doc>
13820+ </parameter>
13821+ </parameters>
13822+ </function-macro>
13823+ <function-macro name="TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE"
13824+ c:identifier="G_TYPE_CHECK_INSTANCE_FUNDAMENTAL_TYPE"
13825+ introspectable="0">
13826+ <doc xml:space="preserve"
13827+ filename="gtype.h"
13828+ line="515">Checks if @instance is an instance of the fundamental type identified by @g_type.
13829+If @instance is %NULL, %FALSE will be returned.
13830+
13831+This macro should only be used in type implementations.</doc>
13832+ <source-position filename="gtype.h" line="527"/>
13833+ <parameters>
13834+ <parameter name="instance">
13835+ <doc xml:space="preserve"
13836+ filename="gtype.h"
13837+ line="517">Location of a #GTypeInstance structure.</doc>
13838+ </parameter>
13839+ <parameter name="g_type">
13840+ <doc xml:space="preserve"
13841+ filename="gtype.h"
13842+ line="518">The fundamental type to be checked</doc>
13843+ </parameter>
13844+ </parameters>
13845+ </function-macro>
13846+ <function-macro name="TYPE_CHECK_INSTANCE_TYPE"
13847+ c:identifier="G_TYPE_CHECK_INSTANCE_TYPE"
13848+ introspectable="0">
13849+ <doc xml:space="preserve"
13850+ filename="gtype.h"
13851+ line="502">Checks if @instance is an instance of the type identified by @g_type. If
13852+@instance is %NULL, %FALSE will be returned.
13853+
13854+This macro should only be used in type implementations.</doc>
13855+ <source-position filename="gtype.h" line="514"/>
13856+ <parameters>
13857+ <parameter name="instance">
13858+ <doc xml:space="preserve"
13859+ filename="gtype.h"
13860+ line="504">Location of a #GTypeInstance structure.</doc>
13861+ </parameter>
13862+ <parameter name="g_type">
13863+ <doc xml:space="preserve"
13864+ filename="gtype.h"
13865+ line="505">The type to be checked</doc>
13866+ </parameter>
13867+ </parameters>
13868+ </function-macro>
13869+ <function-macro name="TYPE_CHECK_VALUE"
13870+ c:identifier="G_TYPE_CHECK_VALUE"
13871+ introspectable="0">
13872+ <doc xml:space="preserve"
13873+ filename="gtype.h"
13874+ line="584">Checks if @value has been initialized to hold values
13875+of a value type.
13876+
13877+This macro should only be used in type implementations.</doc>
13878+ <source-position filename="gtype.h" line="595"/>
13879+ <parameters>
13880+ <parameter name="value">
13881+ <doc xml:space="preserve"
13882+ filename="gtype.h"
13883+ line="586">a #GValue</doc>
13884+ </parameter>
13885+ </parameters>
13886+ </function-macro>
13887+ <function-macro name="TYPE_CHECK_VALUE_TYPE"
13888+ c:identifier="G_TYPE_CHECK_VALUE_TYPE"
13889+ introspectable="0">
13890+ <doc xml:space="preserve"
13891+ filename="gtype.h"
13892+ line="596">Checks if @value has been initialized to hold values
13893+of type @g_type.
13894+
13895+This macro should only be used in type implementations.</doc>
13896+ <source-position filename="gtype.h" line="608"/>
13897+ <parameters>
13898+ <parameter name="value">
13899+ <doc xml:space="preserve"
13900+ filename="gtype.h"
13901+ line="598">a #GValue</doc>
13902+ </parameter>
13903+ <parameter name="g_type">
13904+ <doc xml:space="preserve"
13905+ filename="gtype.h"
13906+ line="599">The type to be checked</doc>
13907+ </parameter>
13908+ </parameters>
13909+ </function-macro>
13910+ <function-macro name="TYPE_CLASS_GET_PRIVATE"
13911+ c:identifier="G_TYPE_CLASS_GET_PRIVATE"
13912+ version="2.24"
13913+ introspectable="0">
13914+ <doc xml:space="preserve"
13915+ filename="gtype.h"
13916+ line="663">Gets the private class structure for a particular type.
13917+
13918+The private structure must have been registered in the
13919+get_type() function with g_type_add_class_private().
13920+
13921+This macro should only be used in type implementations.</doc>
13922+ <source-position filename="gtype.h" line="679"/>
13923+ <parameters>
13924+ <parameter name="klass">
13925+ <doc xml:space="preserve"
13926+ filename="gtype.h"
13927+ line="665">the class of a type deriving from @private_type</doc>
13928+ </parameter>
13929+ <parameter name="g_type">
13930+ <doc xml:space="preserve"
13931+ filename="gtype.h"
13932+ line="666">the type identifying which private data to retrieve</doc>
13933+ </parameter>
13934+ <parameter name="c_type">
13935+ <doc xml:space="preserve"
13936+ filename="gtype.h"
13937+ line="667">The C type for the private structure</doc>
13938+ </parameter>
13939+ </parameters>
13940+ </function-macro>
13941+ <constant name="TYPE_FLAG_RESERVED_ID_BIT"
13942+ value="1"
13943+ c:type="G_TYPE_FLAG_RESERVED_ID_BIT">
13944+ <doc xml:space="preserve"
13945+ filename="gtype.h"
13946+ line="2506">A bit in the type number that's supposed to be left untouched.</doc>
13947+ <source-position filename="gtype.h" line="2511"/>
13948+ <type name="GLib.Type" c:type="GType"/>
13949+ </constant>
13950+ <function-macro name="TYPE_FROM_CLASS"
13951+ c:identifier="G_TYPE_FROM_CLASS"
13952+ introspectable="0">
13953+ <doc xml:space="preserve"
13954+ filename="gtype.h"
13955+ line="620">Get the type identifier from a given @class structure.
13956+
13957+This macro should only be used in type implementations.</doc>
13958+ <source-position filename="gtype.h" line="630"/>
13959+ <parameters>
13960+ <parameter name="g_class">
13961+ <doc xml:space="preserve"
13962+ filename="gtype.h"
13963+ line="622">Location of a valid #GTypeClass structure</doc>
13964+ </parameter>
13965+ </parameters>
13966+ </function-macro>
13967+ <function-macro name="TYPE_FROM_INSTANCE"
13968+ c:identifier="G_TYPE_FROM_INSTANCE"
13969+ introspectable="0">
13970+ <doc xml:space="preserve"
13971+ filename="gtype.h"
13972+ line="609">Get the type identifier from a given @instance structure.
13973+
13974+This macro should only be used in type implementations.</doc>
13975+ <source-position filename="gtype.h" line="619"/>
13976+ <parameters>
13977+ <parameter name="instance">
13978+ <doc xml:space="preserve"
13979+ filename="gtype.h"
13980+ line="611">Location of a valid #GTypeInstance structure</doc>
13981+ </parameter>
13982+ </parameters>
13983+ </function-macro>
13984+ <function-macro name="TYPE_FROM_INTERFACE"
13985+ c:identifier="G_TYPE_FROM_INTERFACE"
13986+ introspectable="0">
13987+ <doc xml:space="preserve"
13988+ filename="gtype.h"
13989+ line="631">Get the type identifier from a given @interface structure.
13990+
13991+This macro should only be used in type implementations.</doc>
13992+ <source-position filename="gtype.h" line="641"/>
13993+ <parameters>
13994+ <parameter name="g_iface">
13995+ <doc xml:space="preserve"
13996+ filename="gtype.h"
13997+ line="633">Location of a valid #GTypeInterface structure</doc>
13998+ </parameter>
13999+ </parameters>
14000+ </function-macro>
14001+ <function-macro name="TYPE_FUNDAMENTAL"
14002+ c:identifier="G_TYPE_FUNDAMENTAL"
14003+ introspectable="0">
14004+ <doc xml:space="preserve"
14005+ filename="gtype.h"
14006+ line="30">The fundamental type which is the ancestor of @type.
14007+
14008+Fundamental types are types that serve as ultimate bases for the derived types,
14009+thus they are the roots of distinct inheritance hierarchies.</doc>
14010+ <source-position filename="gtype.h" line="39"/>
14011+ <parameters>
14012+ <parameter name="type">
14013+ <doc xml:space="preserve"
14014+ filename="gtype.h"
14015+ line="32">A #GType value.</doc>
14016+ </parameter>
14017+ </parameters>
14018+ </function-macro>
14019+ <constant name="TYPE_FUNDAMENTAL_MAX"
14020+ value="255"
14021+ c:type="G_TYPE_FUNDAMENTAL_MAX">
14022+ <doc xml:space="preserve"
14023+ filename="gtype.h"
14024+ line="40">An integer constant that represents the number of identifiers reserved
14025+for types that are assigned at compile-time.</doc>
14026+ <source-position filename="gtype.h" line="46"/>
14027+ <type name="gint" c:type="gint"/>
14028+ </constant>
14029+ <constant name="TYPE_FUNDAMENTAL_SHIFT"
14030+ value="2"
14031+ c:type="G_TYPE_FUNDAMENTAL_SHIFT">
14032+ <doc xml:space="preserve"
14033+ filename="gtype.h"
14034+ line="207">Shift value used in converting numbers to type IDs.</doc>
14035+ <source-position filename="gtype.h" line="212"/>
14036+ <type name="gint" c:type="gint"/>
14037+ </constant>
14038+ <function-macro name="TYPE_HAS_VALUE_TABLE"
14039+ c:identifier="G_TYPE_HAS_VALUE_TABLE"
14040+ introspectable="0">
14041+ <doc xml:space="preserve"
14042+ filename="gtype.h"
14043+ line="368">Checks if @type has a #GTypeValueTable.</doc>
14044+ <source-position filename="gtype.h" line="376"/>
14045+ <parameters>
14046+ <parameter name="type">
14047+ <doc xml:space="preserve"
14048+ filename="gtype.h"
14049+ line="370">A #GType value</doc>
14050+ </parameter>
14051+ </parameters>
14052+ </function-macro>
14053+ <function-macro name="TYPE_INSTANCE_GET_CLASS"
14054+ c:identifier="G_TYPE_INSTANCE_GET_CLASS"
14055+ introspectable="0">
14056+ <doc xml:space="preserve"
14057+ filename="gtype.h"
14058+ line="528">Get the class structure of a given @instance, casted
14059+to a specified ancestor type @g_type of the instance.
14060+
14061+Note that while calling a GInstanceInitFunc(), the class pointer
14062+gets modified, so it might not always return the expected pointer.
14063+
14064+This macro should only be used in type implementations.</doc>
14065+ <source-position filename="gtype.h" line="544"/>
14066+ <parameters>
14067+ <parameter name="instance">
14068+ <doc xml:space="preserve"
14069+ filename="gtype.h"
14070+ line="530">Location of the #GTypeInstance structure</doc>
14071+ </parameter>
14072+ <parameter name="g_type">
14073+ <doc xml:space="preserve"
14074+ filename="gtype.h"
14075+ line="531">The #GType of the class to be returned</doc>
14076+ </parameter>
14077+ <parameter name="c_type">
14078+ <doc xml:space="preserve"
14079+ filename="gtype.h"
14080+ line="532">The C type of the class structure</doc>
14081+ </parameter>
14082+ </parameters>
14083+ </function-macro>
14084+ <function-macro name="TYPE_INSTANCE_GET_INTERFACE"
14085+ c:identifier="G_TYPE_INSTANCE_GET_INTERFACE"
14086+ introspectable="0">
14087+ <doc xml:space="preserve"
14088+ filename="gtype.h"
14089+ line="545">Get the interface structure for interface @g_type of a given @instance.
14090+
14091+This macro should only be used in type implementations.</doc>
14092+ <source-position filename="gtype.h" line="557"/>
14093+ <parameters>
14094+ <parameter name="instance">
14095+ <doc xml:space="preserve"
14096+ filename="gtype.h"
14097+ line="547">Location of the #GTypeInstance structure</doc>
14098+ </parameter>
14099+ <parameter name="g_type">
14100+ <doc xml:space="preserve"
14101+ filename="gtype.h"
14102+ line="548">The #GType of the interface to be returned</doc>
14103+ </parameter>
14104+ <parameter name="c_type">
14105+ <doc xml:space="preserve"
14106+ filename="gtype.h"
14107+ line="549">The C type of the interface structure</doc>
14108+ </parameter>
14109+ </parameters>
14110+ </function-macro>
14111+ <function-macro name="TYPE_INSTANCE_GET_PRIVATE"
14112+ c:identifier="G_TYPE_INSTANCE_GET_PRIVATE"
14113+ version="2.4"
14114+ introspectable="0"
14115+ deprecated="1"
14116+ deprecated-version="2.58">
14117+ <doc xml:space="preserve"
14118+ filename="gtype.h"
14119+ line="643">Gets the private structure for a particular type.
14120+
14121+The private structure must have been registered in the
14122+class_init function with g_type_class_add_private().
14123+
14124+This macro should only be used in type implementations.</doc>
14125+ <doc-deprecated xml:space="preserve">Use G_ADD_PRIVATE() and the generated
14126+ `your_type_get_instance_private()` function instead</doc-deprecated>
14127+ <source-position filename="gtype.h" line="661"/>
14128+ <parameters>
14129+ <parameter name="instance">
14130+ <doc xml:space="preserve"
14131+ filename="gtype.h"
14132+ line="645">the instance of a type deriving from @private_type</doc>
14133+ </parameter>
14134+ <parameter name="g_type">
14135+ <doc xml:space="preserve"
14136+ filename="gtype.h"
14137+ line="646">the type identifying which private data to retrieve</doc>
14138+ </parameter>
14139+ <parameter name="c_type">
14140+ <doc xml:space="preserve"
14141+ filename="gtype.h"
14142+ line="647">The C type for the private structure</doc>
14143+ </parameter>
14144+ </parameters>
14145+ </function-macro>
14146+ <function-macro name="TYPE_IS_ABSTRACT"
14147+ c:identifier="G_TYPE_IS_ABSTRACT"
14148+ introspectable="0">
14149+ <doc xml:space="preserve"
14150+ filename="gtype.h"
14151+ line="337">Checks if @type is an abstract type. An abstract type cannot be
14152+instantiated and is normally used as an abstract base class for
14153+derived classes.</doc>
14154+ <source-position filename="gtype.h" line="347"/>
14155+ <parameters>
14156+ <parameter name="type">
14157+ <doc xml:space="preserve"
14158+ filename="gtype.h"
14159+ line="339">A #GType value</doc>
14160+ </parameter>
14161+ </parameters>
14162+ </function-macro>
14163+ <function-macro name="TYPE_IS_BOXED"
14164+ c:identifier="G_TYPE_IS_BOXED"
14165+ introspectable="0">
14166+ <source-position filename="gboxed.h" line="33"/>
14167+ <parameters>
14168+ <parameter name="type">
14169+ </parameter>
14170+ </parameters>
14171+ </function-macro>
14172+ <function-macro name="TYPE_IS_CLASSED"
14173+ c:identifier="G_TYPE_IS_CLASSED"
14174+ introspectable="0">
14175+ <doc xml:space="preserve"
14176+ filename="gtype.h"
14177+ line="298">Checks if @type is a classed type.</doc>
14178+ <source-position filename="gtype.h" line="306"/>
14179+ <parameters>
14180+ <parameter name="type">
14181+ <doc xml:space="preserve"
14182+ filename="gtype.h"
14183+ line="300">A #GType value</doc>
14184+ </parameter>
14185+ </parameters>
14186+ </function-macro>
14187+ <function-macro name="TYPE_IS_DEEP_DERIVABLE"
14188+ c:identifier="G_TYPE_IS_DEEP_DERIVABLE"
14189+ introspectable="0">
14190+ <doc xml:space="preserve"
14191+ filename="gtype.h"
14192+ line="327">Checks if @type is a deep derivable type. A deep derivable type
14193+can be used as the base class of a deep (multi-level) class hierarchy.</doc>
14194+ <source-position filename="gtype.h" line="336"/>
14195+ <parameters>
14196+ <parameter name="type">
14197+ <doc xml:space="preserve"
14198+ filename="gtype.h"
14199+ line="329">A #GType value</doc>
14200+ </parameter>
14201+ </parameters>
14202+ </function-macro>
14203+ <function-macro name="TYPE_IS_DERIVABLE"
14204+ c:identifier="G_TYPE_IS_DERIVABLE"
14205+ introspectable="0">
14206+ <doc xml:space="preserve"
14207+ filename="gtype.h"
14208+ line="317">Checks if @type is a derivable type. A derivable type can
14209+be used as the base class of a flat (single-level) class hierarchy.</doc>
14210+ <source-position filename="gtype.h" line="326"/>
14211+ <parameters>
14212+ <parameter name="type">
14213+ <doc xml:space="preserve"
14214+ filename="gtype.h"
14215+ line="319">A #GType value</doc>
14216+ </parameter>
14217+ </parameters>
14218+ </function-macro>
14219+ <function-macro name="TYPE_IS_DERIVED"
14220+ c:identifier="G_TYPE_IS_DERIVED"
14221+ introspectable="0">
14222+ <doc xml:space="preserve"
14223+ filename="gtype.h"
14224+ line="271">Checks if @type is derived (or in object-oriented terminology:
14225+inherited) from another type (this holds true for all non-fundamental
14226+types).</doc>
14227+ <source-position filename="gtype.h" line="281"/>
14228+ <parameters>
14229+ <parameter name="type">
14230+ <doc xml:space="preserve"
14231+ filename="gtype.h"
14232+ line="273">A #GType value</doc>
14233+ </parameter>
14234+ </parameters>
14235+ </function-macro>
14236+ <function-macro name="TYPE_IS_ENUM"
14237+ c:identifier="G_TYPE_IS_ENUM"
14238+ introspectable="0">
14239+ <doc xml:space="preserve"
14240+ filename="genums.h"
14241+ line="29">Checks whether @type "is a" %G_TYPE_ENUM.</doc>
14242+ <source-position filename="genums.h" line="37"/>
14243+ <parameters>
14244+ <parameter name="type">
14245+ <doc xml:space="preserve"
14246+ filename="genums.h"
14247+ line="31">a #GType ID.</doc>
14248+ </parameter>
14249+ </parameters>
14250+ </function-macro>
14251+ <function-macro name="TYPE_IS_FINAL"
14252+ c:identifier="G_TYPE_IS_FINAL"
14253+ version="2.70"
14254+ introspectable="0">
14255+ <doc xml:space="preserve"
14256+ filename="gtype.h"
14257+ line="377">Checks if @type is a final type. A final type cannot be derived any
14258+further.</doc>
14259+ <source-position filename="gtype.h" line="388"/>
14260+ <parameters>
14261+ <parameter name="type">
14262+ <doc xml:space="preserve"
14263+ filename="gtype.h"
14264+ line="379">a #GType value</doc>
14265+ </parameter>
14266+ </parameters>
14267+ </function-macro>
14268+ <function-macro name="TYPE_IS_FLAGS"
14269+ c:identifier="G_TYPE_IS_FLAGS"
14270+ introspectable="0">
14271+ <doc xml:space="preserve"
14272+ filename="genums.h"
14273+ line="73">Checks whether @type "is a" %G_TYPE_FLAGS.</doc>
14274+ <source-position filename="genums.h" line="81"/>
14275+ <parameters>
14276+ <parameter name="type">
14277+ <doc xml:space="preserve"
14278+ filename="genums.h"
14279+ line="75">a #GType ID.</doc>
14280+ </parameter>
14281+ </parameters>
14282+ </function-macro>
14283+ <function-macro name="TYPE_IS_FUNDAMENTAL"
14284+ c:identifier="G_TYPE_IS_FUNDAMENTAL"
14285+ introspectable="0">
14286+ <doc xml:space="preserve"
14287+ filename="gtype.h"
14288+ line="262">Checks if @type is a fundamental type.</doc>
14289+ <source-position filename="gtype.h" line="270"/>
14290+ <parameters>
14291+ <parameter name="type">
14292+ <doc xml:space="preserve"
14293+ filename="gtype.h"
14294+ line="264">A #GType value</doc>
14295+ </parameter>
14296+ </parameters>
14297+ </function-macro>
14298+ <function-macro name="TYPE_IS_INSTANTIATABLE"
14299+ c:identifier="G_TYPE_IS_INSTANTIATABLE"
14300+ introspectable="0">
14301+ <doc xml:space="preserve"
14302+ filename="gtype.h"
14303+ line="307">Checks if @type can be instantiated. Instantiation is the
14304+process of creating an instance (object) of this type.</doc>
14305+ <source-position filename="gtype.h" line="316"/>
14306+ <parameters>
14307+ <parameter name="type">
14308+ <doc xml:space="preserve"
14309+ filename="gtype.h"
14310+ line="309">A #GType value</doc>
14311+ </parameter>
14312+ </parameters>
14313+ </function-macro>
14314+ <function-macro name="TYPE_IS_INTERFACE"
14315+ c:identifier="G_TYPE_IS_INTERFACE"
14316+ introspectable="0">
14317+ <doc xml:space="preserve"
14318+ filename="gtype.h"
14319+ line="282">Checks if @type is an interface type.
14320+
14321+An interface type provides a pure API, the implementation
14322+of which is provided by another type (which is then said to conform
14323+to the interface). GLib interfaces are somewhat analogous to Java
14324+interfaces and C++ classes containing only pure virtual functions,
14325+with the difference that GType interfaces are not derivable (but see
14326+g_type_interface_add_prerequisite() for an alternative).</doc>
14327+ <source-position filename="gtype.h" line="297"/>
14328+ <parameters>
14329+ <parameter name="type">
14330+ <doc xml:space="preserve"
14331+ filename="gtype.h"
14332+ line="284">A #GType value</doc>
14333+ </parameter>
14334+ </parameters>
14335+ </function-macro>
14336+ <function-macro name="TYPE_IS_OBJECT"
14337+ c:identifier="G_TYPE_IS_OBJECT"
14338+ introspectable="0">
14339+ <doc xml:space="preserve"
14340+ filename="gobject.h"
14341+ line="34">Check if the passed in type id is a %G_TYPE_OBJECT or derived from it.</doc>
14342+ <source-position filename="gobject.h" line="42"/>
14343+ <parameters>
14344+ <parameter name="type">
14345+ <doc xml:space="preserve"
14346+ filename="gobject.h"
14347+ line="36">Type id to check</doc>
14348+ </parameter>
14349+ </parameters>
14350+ </function-macro>
14351+ <function-macro name="TYPE_IS_PARAM"
14352+ c:identifier="G_TYPE_IS_PARAM"
14353+ introspectable="0">
14354+ <doc xml:space="preserve"
14355+ filename="gparam.h"
14356+ line="31">Checks whether @type "is a" %G_TYPE_PARAM.</doc>
14357+ <source-position filename="gparam.h" line="37"/>
14358+ <parameters>
14359+ <parameter name="type">
14360+ <doc xml:space="preserve"
14361+ filename="gparam.h"
14362+ line="33">a #GType ID</doc>
14363+ </parameter>
14364+ </parameters>
14365+ </function-macro>
14366+ <function-macro name="TYPE_IS_VALUE"
14367+ c:identifier="G_TYPE_IS_VALUE"
14368+ introspectable="0">
14369+ <doc xml:space="preserve"
14370+ filename="gvalue.h"
14371+ line="31">Checks whether the passed in type ID can be used for g_value_init().
14372+
14373+That is, this macro checks whether this type provides an implementation
14374+of the #GTypeValueTable functions required for a type to create a #GValue of.</doc>
14375+ <source-position filename="gvalue.h" line="42"/>
14376+ <parameters>
14377+ <parameter name="type">
14378+ <doc xml:space="preserve"
14379+ filename="gvalue.h"
14380+ line="33">A #GType value.</doc>
14381+ </parameter>
14382+ </parameters>
14383+ </function-macro>
14384+ <function-macro name="TYPE_IS_VALUE_ABSTRACT"
14385+ c:identifier="G_TYPE_IS_VALUE_ABSTRACT"
14386+ introspectable="0">
14387+ <doc xml:space="preserve"
14388+ filename="gtype.h"
14389+ line="348">Checks if @type is an abstract value type. An abstract value type introduces
14390+a value table, but can't be used for g_value_init() and is normally used as
14391+an abstract base type for derived value types.</doc>
14392+ <source-position filename="gtype.h" line="358"/>
14393+ <parameters>
14394+ <parameter name="type">
14395+ <doc xml:space="preserve"
14396+ filename="gtype.h"
14397+ line="350">A #GType value</doc>
14398+ </parameter>
14399+ </parameters>
14400+ </function-macro>
14401+ <function-macro name="TYPE_IS_VALUE_TYPE"
14402+ c:identifier="G_TYPE_IS_VALUE_TYPE"
14403+ introspectable="0">
14404+ <doc xml:space="preserve"
14405+ filename="gtype.h"
14406+ line="359">Checks if @type is a value type and can be used with g_value_init().</doc>
14407+ <source-position filename="gtype.h" line="367"/>
14408+ <parameters>
14409+ <parameter name="type">
14410+ <doc xml:space="preserve"
14411+ filename="gtype.h"
14412+ line="361">A #GType value</doc>
14413+ </parameter>
14414+ </parameters>
14415+ </function-macro>
14416+ <function-macro name="TYPE_MAKE_FUNDAMENTAL"
14417+ c:identifier="G_TYPE_MAKE_FUNDAMENTAL"
14418+ introspectable="0">
14419+ <doc xml:space="preserve"
14420+ filename="gtype.h"
14421+ line="213">Get the type ID for the fundamental type number @x.
14422+
14423+Use g_type_fundamental_next() instead of this macro to create new fundamental
14424+types.</doc>
14425+ <source-position filename="gtype.h" line="224"/>
14426+ <parameters>
14427+ <parameter name="x">
14428+ <doc xml:space="preserve"
14429+ filename="gtype.h"
14430+ line="215">the fundamental type number.</doc>
14431+ </parameter>
14432+ </parameters>
14433+ </function-macro>
14434+ <function-macro name="TYPE_MODULE"
14435+ c:identifier="G_TYPE_MODULE"
14436+ introspectable="0">
14437+ <source-position filename="gtypemodule.h" line="33"/>
14438+ <parameters>
14439+ <parameter name="module">
14440+ </parameter>
14441+ </parameters>
14442+ </function-macro>
14443+ <function-macro name="TYPE_MODULE_CLASS"
14444+ c:identifier="G_TYPE_MODULE_CLASS"
14445+ introspectable="0">
14446+ <source-position filename="gtypemodule.h" line="34"/>
14447+ <parameters>
14448+ <parameter name="class">
14449+ </parameter>
14450+ </parameters>
14451+ </function-macro>
14452+ <function-macro name="TYPE_MODULE_GET_CLASS"
14453+ c:identifier="G_TYPE_MODULE_GET_CLASS"
14454+ introspectable="0">
14455+ <source-position filename="gtypemodule.h" line="37"/>
14456+ <parameters>
14457+ <parameter name="module">
14458+ </parameter>
14459+ </parameters>
14460+ </function-macro>
14461+ <function-macro name="TYPE_PLUGIN"
14462+ c:identifier="G_TYPE_PLUGIN"
14463+ introspectable="0">
14464+ <source-position filename="gtypeplugin.h" line="30"/>
14465+ <parameters>
14466+ <parameter name="inst">
14467+ </parameter>
14468+ </parameters>
14469+ </function-macro>
14470+ <function-macro name="TYPE_PLUGIN_CLASS"
14471+ c:identifier="G_TYPE_PLUGIN_CLASS"
14472+ introspectable="0">
14473+ <source-position filename="gtypeplugin.h" line="31"/>
14474+ <parameters>
14475+ <parameter name="vtable">
14476+ </parameter>
14477+ </parameters>
14478+ </function-macro>
14479+ <function-macro name="TYPE_PLUGIN_GET_CLASS"
14480+ c:identifier="G_TYPE_PLUGIN_GET_CLASS"
14481+ introspectable="0">
14482+ <source-position filename="gtypeplugin.h" line="34"/>
14483+ <parameters>
14484+ <parameter name="inst">
14485+ </parameter>
14486+ </parameters>
14487+ </function-macro>
14488+ <constant name="TYPE_RESERVED_BSE_FIRST"
14489+ value="32"
14490+ c:type="G_TYPE_RESERVED_BSE_FIRST">
14491+ <doc xml:space="preserve"
14492+ filename="gtype.h"
14493+ line="238">First fundamental type number to create a new fundamental type id with
14494+G_TYPE_MAKE_FUNDAMENTAL() reserved for BSE.</doc>
14495+ <source-position filename="gtype.h" line="244"/>
14496+ <type name="gint" c:type="gint"/>
14497+ </constant>
14498+ <constant name="TYPE_RESERVED_BSE_LAST"
14499+ value="48"
14500+ c:type="G_TYPE_RESERVED_BSE_LAST">
14501+ <doc xml:space="preserve"
14502+ filename="gtype.h"
14503+ line="245">Last fundamental type number reserved for BSE.</doc>
14504+ <source-position filename="gtype.h" line="250"/>
14505+ <type name="gint" c:type="gint"/>
14506+ </constant>
14507+ <constant name="TYPE_RESERVED_GLIB_FIRST"
14508+ value="22"
14509+ c:type="G_TYPE_RESERVED_GLIB_FIRST">
14510+ <doc xml:space="preserve"
14511+ filename="gtype.h"
14512+ line="225">First fundamental type number to create a new fundamental type id with
14513+G_TYPE_MAKE_FUNDAMENTAL() reserved for GLib.</doc>
14514+ <source-position filename="gtype.h" line="231"/>
14515+ <type name="gint" c:type="gint"/>
14516+ </constant>
14517+ <constant name="TYPE_RESERVED_GLIB_LAST"
14518+ value="31"
14519+ c:type="G_TYPE_RESERVED_GLIB_LAST">
14520+ <doc xml:space="preserve"
14521+ filename="gtype.h"
14522+ line="232">Last fundamental type number reserved for GLib.</doc>
14523+ <source-position filename="gtype.h" line="237"/>
14524+ <type name="gint" c:type="gint"/>
14525+ </constant>
14526+ <constant name="TYPE_RESERVED_USER_FIRST"
14527+ value="49"
14528+ c:type="G_TYPE_RESERVED_USER_FIRST">
14529+ <doc xml:space="preserve"
14530+ filename="gtype.h"
14531+ line="251">First available fundamental type number to create new fundamental
14532+type id with G_TYPE_MAKE_FUNDAMENTAL().</doc>
14533+ <source-position filename="gtype.h" line="257"/>
14534+ <type name="gint" c:type="gint"/>
14535+ </constant>
14536+ <callback name="ToggleNotify" c:type="GToggleNotify">
14537+ <doc xml:space="preserve"
14538+ filename="gobject.h"
14539+ line="545">A callback function used for notification when the state
14540+of a toggle reference changes.
14541+
14542+See also: g_object_add_toggle_ref()</doc>
14543+ <source-position filename="gobject.h" line="559"/>
14544+ <return-value transfer-ownership="none">
14545+ <type name="none" c:type="void"/>
14546+ </return-value>
14547+ <parameters>
14548+ <parameter name="data"
14549+ transfer-ownership="none"
14550+ nullable="1"
14551+ allow-none="1">
14552+ <doc xml:space="preserve"
14553+ filename="gobject.h"
14554+ line="547">Callback data passed to g_object_add_toggle_ref()</doc>
14555+ <type name="gpointer" c:type="gpointer"/>
14556+ </parameter>
14557+ <parameter name="object" transfer-ownership="none">
14558+ <doc xml:space="preserve"
14559+ filename="gobject.h"
14560+ line="548">The object on which g_object_add_toggle_ref() was called.</doc>
14561+ <type name="Object" c:type="GObject*"/>
14562+ </parameter>
14563+ <parameter name="is_last_ref" transfer-ownership="none">
14564+ <doc xml:space="preserve"
14565+ filename="gobject.h"
14566+ line="549">%TRUE if the toggle reference is now the
14567+ last reference to the object. %FALSE if the toggle
14568+ reference was the last reference and there are now other
14569+ references.</doc>
14570+ <type name="gboolean" c:type="gboolean"/>
14571+ </parameter>
14572+ </parameters>
14573+ </callback>
14574+ <union name="TypeCValue" c:type="GTypeCValue">
14575+ <source-position filename="gtype.h" line="405"/>
14576+ </union>
14577+ <record name="TypeClass" c:type="GTypeClass">
14578+ <doc xml:space="preserve"
14579+ filename="gtype.h"
14580+ line="419">An opaque structure used as the base of all classes.</doc>
14581+ <source-position filename="gtype.h" line="428"/>
14582+ <field name="g_type" readable="0" private="1">
14583+ <type name="GType" c:type="GType"/>
14584+ </field>
14585+ <method name="add_private"
14586+ c:identifier="g_type_class_add_private"
14587+ version="2.4"
14588+ deprecated="1"
14589+ deprecated-version="2.58">
14590+ <doc xml:space="preserve"
14591+ filename="gobject-2.0.c"
14592+ line="5817">Registers a private structure for an instantiatable type.
14593+
14594+When an object is allocated, the private structures for
14595+the type and all of its parent types are allocated
14596+sequentially in the same memory block as the public
14597+structures, and are zero-filled.
14598+
14599+Note that the accumulated size of the private structures of
14600+a type and all its parent types cannot exceed 64 KiB.
14601+
14602+This function should be called in the type's class_init() function.
14603+The private structure can be retrieved using the
14604+G_TYPE_INSTANCE_GET_PRIVATE() macro.
14605+
14606+The following example shows attaching a private structure
14607+MyObjectPrivate to an object MyObject defined in the standard
14608+GObject fashion in the type's class_init() function.
14609+
14610+Note the use of a structure member "priv" to avoid the overhead
14611+of repeatedly calling MY_OBJECT_GET_PRIVATE().
14612+
14613+|[&lt;!-- language="C" --&gt;
14614+typedef struct _MyObject MyObject;
14615+typedef struct _MyObjectPrivate MyObjectPrivate;
14616+
14617+struct _MyObject {
14618+ GObject parent;
14619+
14620+ MyObjectPrivate *priv;
14621+};
14622+
14623+struct _MyObjectPrivate {
14624+ int some_field;
14625+};
14626+
14627+static void
14628+my_object_class_init (MyObjectClass *klass)
14629+{
14630+ g_type_class_add_private (klass, sizeof (MyObjectPrivate));
14631+}
14632+
14633+static void
14634+my_object_init (MyObject *my_object)
14635+{
14636+ my_object-&gt;priv = G_TYPE_INSTANCE_GET_PRIVATE (my_object,
14637+ MY_TYPE_OBJECT,
14638+ MyObjectPrivate);
14639+ // my_object-&gt;priv-&gt;some_field will be automatically initialised to 0
14640+}
14641+
14642+static int
14643+my_object_get_some_field (MyObject *my_object)
14644+{
14645+ MyObjectPrivate *priv;
14646+
14647+ g_return_val_if_fail (MY_IS_OBJECT (my_object), 0);
14648+
14649+ priv = my_object-&gt;priv;
14650+
14651+ return priv-&gt;some_field;
14652+}
14653+]|</doc>
14654+ <doc-deprecated xml:space="preserve">Use the G_ADD_PRIVATE() macro with the `G_DEFINE_*`
14655+ family of macros to add instance private data to a type</doc-deprecated>
14656+ <source-position filename="gtype.h" line="1346"/>
14657+ <return-value transfer-ownership="none">
14658+ <type name="none" c:type="void"/>
14659+ </return-value>
14660+ <parameters>
14661+ <instance-parameter name="g_class" transfer-ownership="none">
14662+ <doc xml:space="preserve"
14663+ filename="gobject-2.0.c"
14664+ line="5819">class structure for an instantiatable
14665+ type</doc>
14666+ <type name="TypeClass" c:type="gpointer"/>
14667+ </instance-parameter>
14668+ <parameter name="private_size" transfer-ownership="none">
14669+ <doc xml:space="preserve"
14670+ filename="gobject-2.0.c"
14671+ line="5821">size of private structure</doc>
14672+ <type name="gsize" c:type="gsize"/>
14673+ </parameter>
14674+ </parameters>
14675+ </method>
14676+ <method name="get_instance_private_offset"
14677+ c:identifier="g_type_class_get_instance_private_offset"
14678+ version="2.38"
14679+ introspectable="0">
14680+ <doc xml:space="preserve"
14681+ filename="gobject-2.0.c"
14682+ line="5892">Gets the offset of the private data for instances of @g_class.
14683+
14684+This is how many bytes you should add to the instance pointer of a
14685+class in order to get the private data for the type represented by
14686+@g_class.
14687+
14688+You can only call this function after you have registered a private
14689+data area for @g_class using g_type_class_add_private().</doc>
14690+ <source-position filename="gtype.h" line="1365"/>
14691+ <return-value transfer-ownership="none">
14692+ <doc xml:space="preserve"
14693+ filename="gobject-2.0.c"
14694+ line="5905">the offset, in bytes</doc>
14695+ <type name="gint" c:type="gint"/>
14696+ </return-value>
14697+ <parameters>
14698+ <instance-parameter name="g_class" transfer-ownership="none">
14699+ <doc xml:space="preserve"
14700+ filename="gobject-2.0.c"
14701+ line="5894">a #GTypeClass</doc>
14702+ <type name="TypeClass" c:type="gpointer"/>
14703+ </instance-parameter>
14704+ </parameters>
14705+ </method>
14706+ <method name="get_private" c:identifier="g_type_class_get_private">
14707+ <source-position filename="gtype.h" line="1362"/>
14708+ <return-value transfer-ownership="none" nullable="1">
14709+ <type name="gpointer" c:type="gpointer"/>
14710+ </return-value>
14711+ <parameters>
14712+ <instance-parameter name="klass" transfer-ownership="none">
14713+ <type name="TypeClass" c:type="GTypeClass*"/>
14714+ </instance-parameter>
14715+ <parameter name="private_type" transfer-ownership="none">
14716+ <type name="GType" c:type="GType"/>
14717+ </parameter>
14718+ </parameters>
14719+ </method>
14720+ <method name="peek_parent" c:identifier="g_type_class_peek_parent">
14721+ <doc xml:space="preserve"
14722+ filename="gobject-2.0.c"
14723+ line="5926">This is a convenience function often needed in class initializers.
14724+It returns the class structure of the immediate parent type of the
14725+class passed in. Since derived classes hold a reference count on
14726+their parent classes as long as they are instantiated, the returned
14727+class will always exist.
14728+
14729+This function is essentially equivalent to:
14730+g_type_class_peek (g_type_parent (G_TYPE_FROM_CLASS (g_class)))</doc>
14731+ <source-position filename="gtype.h" line="740"/>
14732+ <return-value transfer-ownership="none">
14733+ <doc xml:space="preserve"
14734+ filename="gobject-2.0.c"
14735+ line="5940">the parent class
14736+ of @g_class</doc>
14737+ <type name="TypeClass" c:type="gpointer"/>
14738+ </return-value>
14739+ <parameters>
14740+ <instance-parameter name="g_class" transfer-ownership="none">
14741+ <doc xml:space="preserve"
14742+ filename="gobject-2.0.c"
14743+ line="5928">the #GTypeClass structure to
14744+ retrieve the parent class for</doc>
14745+ <type name="TypeClass" c:type="gpointer"/>
14746+ </instance-parameter>
14747+ </parameters>
14748+ </method>
14749+ <method name="unref" c:identifier="g_type_class_unref">
14750+ <doc xml:space="preserve"
14751+ filename="gobject-2.0.c"
14752+ line="5972">Decrements the reference count of the class structure being passed in.
14753+Once the last reference count of a class has been released, classes
14754+may be finalized by the type system, so further dereferencing of a
14755+class pointer after g_type_class_unref() are invalid.</doc>
14756+ <source-position filename="gtype.h" line="738"/>
14757+ <return-value transfer-ownership="none">
14758+ <type name="none" c:type="void"/>
14759+ </return-value>
14760+ <parameters>
14761+ <instance-parameter name="g_class" transfer-ownership="none">
14762+ <doc xml:space="preserve"
14763+ filename="gobject-2.0.c"
14764+ line="5974">a #GTypeClass structure to unref</doc>
14765+ <type name="TypeClass" c:type="gpointer"/>
14766+ </instance-parameter>
14767+ </parameters>
14768+ </method>
14769+ <method name="unref_uncached"
14770+ c:identifier="g_type_class_unref_uncached"
14771+ introspectable="0">
14772+ <doc xml:space="preserve"
14773+ filename="gobject-2.0.c"
14774+ line="5983">A variant of g_type_class_unref() for use in #GTypeClassCacheFunc
14775+implementations. It unreferences a class without consulting the chain
14776+of #GTypeClassCacheFuncs, avoiding the recursion which would occur
14777+otherwise.</doc>
14778+ <source-position filename="gtype.h" line="2405"/>
14779+ <return-value transfer-ownership="none">
14780+ <type name="none" c:type="void"/>
14781+ </return-value>
14782+ <parameters>
14783+ <instance-parameter name="g_class" transfer-ownership="none">
14784+ <doc xml:space="preserve"
14785+ filename="gobject-2.0.c"
14786+ line="5985">a #GTypeClass structure to unref</doc>
14787+ <type name="TypeClass" c:type="gpointer"/>
14788+ </instance-parameter>
14789+ </parameters>
14790+ </method>
14791+ <function name="adjust_private_offset"
14792+ c:identifier="g_type_class_adjust_private_offset">
14793+ <source-position filename="gtype.h" line="1355"/>
14794+ <return-value transfer-ownership="none">
14795+ <type name="none" c:type="void"/>
14796+ </return-value>
14797+ <parameters>
14798+ <parameter name="g_class"
14799+ transfer-ownership="none"
14800+ nullable="1"
14801+ allow-none="1">
14802+ <type name="gpointer" c:type="gpointer"/>
14803+ </parameter>
14804+ <parameter name="private_size_or_offset" transfer-ownership="none">
14805+ <type name="gint" c:type="gint*"/>
14806+ </parameter>
14807+ </parameters>
14808+ </function>
14809+ <function name="peek" c:identifier="g_type_class_peek">
14810+ <doc xml:space="preserve"
14811+ filename="gobject-2.0.c"
14812+ line="5910">This function is essentially the same as g_type_class_ref(),
14813+except that the classes reference count isn't incremented.
14814+As a consequence, this function may return %NULL if the class
14815+of the type passed in does not currently exist (hasn't been
14816+referenced before).</doc>
14817+ <source-position filename="gtype.h" line="734"/>
14818+ <return-value transfer-ownership="none">
14819+ <doc xml:space="preserve"
14820+ filename="gobject-2.0.c"
14821+ line="5920">the #GTypeClass
14822+ structure for the given type ID or %NULL if the class does not
14823+ currently exist</doc>
14824+ <type name="TypeClass" c:type="gpointer"/>
14825+ </return-value>
14826+ <parameters>
14827+ <parameter name="type" transfer-ownership="none">
14828+ <doc xml:space="preserve"
14829+ filename="gobject-2.0.c"
14830+ line="5912">type ID of a classed type</doc>
14831+ <type name="GType" c:type="GType"/>
14832+ </parameter>
14833+ </parameters>
14834+ </function>
14835+ <function name="peek_static"
14836+ c:identifier="g_type_class_peek_static"
14837+ version="2.4">
14838+ <doc xml:space="preserve"
14839+ filename="gobject-2.0.c"
14840+ line="5945">A more efficient version of g_type_class_peek() which works only for
14841+static types.</doc>
14842+ <source-position filename="gtype.h" line="736"/>
14843+ <return-value transfer-ownership="none">
14844+ <doc xml:space="preserve"
14845+ filename="gobject-2.0.c"
14846+ line="5952">the #GTypeClass
14847+ structure for the given type ID or %NULL if the class does not
14848+ currently exist or is dynamically loaded</doc>
14849+ <type name="TypeClass" c:type="gpointer"/>
14850+ </return-value>
14851+ <parameters>
14852+ <parameter name="type" transfer-ownership="none">
14853+ <doc xml:space="preserve"
14854+ filename="gobject-2.0.c"
14855+ line="5947">type ID of a classed type</doc>
14856+ <type name="GType" c:type="GType"/>
14857+ </parameter>
14858+ </parameters>
14859+ </function>
14860+ <function name="ref" c:identifier="g_type_class_ref">
14861+ <doc xml:space="preserve"
14862+ filename="gobject-2.0.c"
14863+ line="5959">Increments the reference count of the class structure belonging to
14864+@type. This function will demand-create the class if it doesn't
14865+exist already.</doc>
14866+ <source-position filename="gtype.h" line="732"/>
14867+ <return-value transfer-ownership="none">
14868+ <doc xml:space="preserve"
14869+ filename="gobject-2.0.c"
14870+ line="5967">the #GTypeClass
14871+ structure for the given type ID</doc>
14872+ <type name="TypeClass" c:type="gpointer"/>
14873+ </return-value>
14874+ <parameters>
14875+ <parameter name="type" transfer-ownership="none">
14876+ <doc xml:space="preserve"
14877+ filename="gobject-2.0.c"
14878+ line="5961">type ID of a classed type</doc>
14879+ <type name="GType" c:type="GType"/>
14880+ </parameter>
14881+ </parameters>
14882+ </function>
14883+ </record>
14884+ <callback name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc">
14885+ <doc xml:space="preserve"
14886+ filename="gtype.h"
14887+ line="981">A callback function which is called when the reference count of a class
14888+drops to zero.
14889+
14890+It may use g_type_class_ref() to prevent the class from being freed. You
14891+should not call g_type_class_unref() from a #GTypeClassCacheFunc function
14892+to prevent infinite recursion, use g_type_class_unref_uncached() instead.
14893+
14894+The functions have to check the class id passed in to figure
14895+whether they actually want to cache the class of this type, since all
14896+classes are routed through the same #GTypeClassCacheFunc chain.</doc>
14897+ <source-position filename="gtype.h" line="1001"/>
14898+ <return-value transfer-ownership="none">
14899+ <doc xml:space="preserve"
14900+ filename="gtype.h"
14901+ line="998">%TRUE to stop further #GTypeClassCacheFuncs from being
14902+ called, %FALSE to continue</doc>
14903+ <type name="gboolean" c:type="gboolean"/>
14904+ </return-value>
14905+ <parameters>
14906+ <parameter name="cache_data"
14907+ transfer-ownership="none"
14908+ nullable="1"
14909+ allow-none="1">
14910+ <doc xml:space="preserve"
14911+ filename="gtype.h"
14912+ line="983">data that was given to the g_type_add_class_cache_func() call</doc>
14913+ <type name="gpointer" c:type="gpointer"/>
14914+ </parameter>
14915+ <parameter name="g_class" transfer-ownership="none">
14916+ <doc xml:space="preserve"
14917+ filename="gtype.h"
14918+ line="984">The #GTypeClass structure which is
14919+ unreferenced</doc>
14920+ <type name="TypeClass" c:type="GTypeClass*"/>
14921+ </parameter>
14922+ </parameters>
14923+ </callback>
14924+ <bitfield name="TypeDebugFlags"
14925+ deprecated="1"
14926+ deprecated-version="2.36"
14927+ c:type="GTypeDebugFlags">
14928+ <doc xml:space="preserve"
14929+ filename="gtype.h"
14930+ line="681">These flags used to be passed to g_type_init_with_debug_flags() which
14931+is now deprecated.
14932+
14933+If you need to enable debugging features, use the GOBJECT_DEBUG
14934+environment variable.</doc>
14935+ <doc-deprecated xml:space="preserve">g_type_init() is now done automatically</doc-deprecated>
14936+ <source-position filename="gtype.h" line="704"/>
14937+ <member name="none" value="0" c:identifier="G_TYPE_DEBUG_NONE">
14938+ <doc xml:space="preserve"
14939+ filename="gtype.h"
14940+ line="683">Print no messages</doc>
14941+ </member>
14942+ <member name="objects" value="1" c:identifier="G_TYPE_DEBUG_OBJECTS">
14943+ <doc xml:space="preserve"
14944+ filename="gtype.h"
14945+ line="684">Print messages about object bookkeeping</doc>
14946+ </member>
14947+ <member name="signals" value="2" c:identifier="G_TYPE_DEBUG_SIGNALS">
14948+ <doc xml:space="preserve"
14949+ filename="gtype.h"
14950+ line="685">Print messages about signal emissions</doc>
14951+ </member>
14952+ <member name="instance_count"
14953+ value="4"
14954+ c:identifier="G_TYPE_DEBUG_INSTANCE_COUNT">
14955+ <doc xml:space="preserve"
14956+ filename="gtype.h"
14957+ line="687">Keep a count of instances of each type</doc>
14958+ </member>
14959+ <member name="mask" value="7" c:identifier="G_TYPE_DEBUG_MASK">
14960+ <doc xml:space="preserve"
14961+ filename="gtype.h"
14962+ line="686">Mask covering all debug flags</doc>
14963+ </member>
14964+ </bitfield>
14965+ <bitfield name="TypeFlags" c:type="GTypeFlags">
14966+ <doc xml:space="preserve"
14967+ filename="gtype.h"
14968+ line="1034">Bit masks used to check or determine characteristics of a type.</doc>
14969+ <source-position filename="gtype.h" line="1051"/>
14970+ <member name="abstract" value="16" c:identifier="G_TYPE_FLAG_ABSTRACT">
14971+ <doc xml:space="preserve"
14972+ filename="gtype.h"
14973+ line="1036">Indicates an abstract type. No instances can be
14974+ created for an abstract type</doc>
14975+ </member>
14976+ <member name="value_abstract"
14977+ value="32"
14978+ c:identifier="G_TYPE_FLAG_VALUE_ABSTRACT">
14979+ <doc xml:space="preserve"
14980+ filename="gtype.h"
14981+ line="1038">Indicates an abstract value type, i.e. a type
14982+ that introduces a value table, but can't be used for
14983+ g_value_init()</doc>
14984+ </member>
14985+ <member name="final" value="64" c:identifier="G_TYPE_FLAG_FINAL">
14986+ <doc xml:space="preserve"
14987+ filename="gtype.h"
14988+ line="1041">Indicates a final type. A final type is a non-derivable
14989+ leaf node in a deep derivable type hierarchy tree. Since: 2.70</doc>
14990+ </member>
14991+ </bitfield>
14992+ <bitfield name="TypeFundamentalFlags" c:type="GTypeFundamentalFlags">
14993+ <doc xml:space="preserve"
14994+ filename="gtype.h"
14995+ line="1017">Bit masks used to check or determine specific characteristics of a
14996+fundamental type.</doc>
14997+ <source-position filename="gtype.h" line="1033"/>
14998+ <member name="classed" value="1" c:identifier="G_TYPE_FLAG_CLASSED">
14999+ <doc xml:space="preserve"
15000+ filename="gtype.h"
15001+ line="1019">Indicates a classed type</doc>
15002+ </member>
15003+ <member name="instantiatable"
15004+ value="2"
15005+ c:identifier="G_TYPE_FLAG_INSTANTIATABLE">
15006+ <doc xml:space="preserve"
15007+ filename="gtype.h"
15008+ line="1020">Indicates an instantiatable type (implies classed)</doc>
15009+ </member>
15010+ <member name="derivable" value="4" c:identifier="G_TYPE_FLAG_DERIVABLE">
15011+ <doc xml:space="preserve"
15012+ filename="gtype.h"
15013+ line="1021">Indicates a flat derivable type</doc>
15014+ </member>
15015+ <member name="deep_derivable"
15016+ value="8"
15017+ c:identifier="G_TYPE_FLAG_DEEP_DERIVABLE">
15018+ <doc xml:space="preserve"
15019+ filename="gtype.h"
15020+ line="1022">Indicates a deep derivable type (implies derivable)</doc>
15021+ </member>
15022+ </bitfield>
15023+ <record name="TypeFundamentalInfo" c:type="GTypeFundamentalInfo">
15024+ <doc xml:space="preserve"
15025+ filename="gtype.h"
15026+ line="1104">A structure that provides information to the type system which is
15027+used specifically for managing fundamental types.</doc>
15028+ <source-position filename="gtype.h" line="1114"/>
15029+ <field name="type_flags" writable="1">
15030+ <doc xml:space="preserve"
15031+ filename="gtype.h"
15032+ line="1106">#GTypeFundamentalFlags describing the characteristics of the fundamental type</doc>
15033+ <type name="TypeFundamentalFlags" c:type="GTypeFundamentalFlags"/>
15034+ </field>
15035+ </record>
15036+ <record name="TypeInfo" c:type="GTypeInfo">
15037+ <doc xml:space="preserve"
15038+ filename="gtype.h"
15039+ line="1052">This structure is used to provide the type system with the information
15040+required to initialize and destruct (finalize) a type's class and
15041+its instances.
15042+
15043+The initialized structure is passed to the g_type_register_static() function
15044+(or is copied into the provided #GTypeInfo structure in the
15045+g_type_plugin_complete_type_info()). The type system will perform a deep
15046+copy of this structure, so its memory does not need to be persistent
15047+across invocation of g_type_register_static().</doc>
15048+ <source-position filename="gtype.h" line="1103"/>
15049+ <field name="class_size" writable="1">
15050+ <doc xml:space="preserve"
15051+ filename="gtype.h"
15052+ line="1054">Size of the class structure (required for interface, classed and instantiatable types)</doc>
15053+ <type name="guint16" c:type="guint16"/>
15054+ </field>
15055+ <field name="base_init" writable="1">
15056+ <doc xml:space="preserve"
15057+ filename="gtype.h"
15058+ line="1055">Location of the base initialization function (optional)</doc>
15059+ <type name="BaseInitFunc" c:type="GBaseInitFunc"/>
15060+ </field>
15061+ <field name="base_finalize" writable="1">
15062+ <doc xml:space="preserve"
15063+ filename="gtype.h"
15064+ line="1056">Location of the base finalization function (optional)</doc>
15065+ <type name="BaseFinalizeFunc" c:type="GBaseFinalizeFunc"/>
15066+ </field>
15067+ <field name="class_init" writable="1">
15068+ <doc xml:space="preserve"
15069+ filename="gtype.h"
15070+ line="1057">Location of the class initialization function for
15071+ classed and instantiatable types. Location of the default vtable
15072+ inititalization function for interface types. (optional) This function
15073+ is used both to fill in virtual functions in the class or default vtable,
15074+ and to do type-specific setup such as registering signals and object
15075+ properties.</doc>
15076+ <type name="ClassInitFunc" c:type="GClassInitFunc"/>
15077+ </field>
15078+ <field name="class_finalize" writable="1">
15079+ <doc xml:space="preserve"
15080+ filename="gtype.h"
15081+ line="1063">Location of the class finalization function for
15082+ classed and instantiatable types. Location of the default vtable
15083+ finalization function for interface types. (optional)</doc>
15084+ <type name="ClassFinalizeFunc" c:type="GClassFinalizeFunc"/>
15085+ </field>
15086+ <field name="class_data" writable="1">
15087+ <doc xml:space="preserve"
15088+ filename="gtype.h"
15089+ line="1066">User-supplied data passed to the class init/finalize functions</doc>
15090+ <type name="gpointer" c:type="gconstpointer"/>
15091+ </field>
15092+ <field name="instance_size" writable="1">
15093+ <doc xml:space="preserve"
15094+ filename="gtype.h"
15095+ line="1067">Size of the instance (object) structure (required for instantiatable types only)</doc>
15096+ <type name="guint16" c:type="guint16"/>
15097+ </field>
15098+ <field name="n_preallocs" writable="1">
15099+ <doc xml:space="preserve"
15100+ filename="gtype.h"
15101+ line="1068">Prior to GLib 2.10, it specified the number of pre-allocated (cached) instances to reserve memory for (0 indicates no caching). Since GLib 2.10, it is ignored, since instances are allocated with the [slice allocator][glib-Memory-Slices] now.</doc>
15102+ <type name="guint16" c:type="guint16"/>
15103+ </field>
15104+ <field name="instance_init" writable="1">
15105+ <doc xml:space="preserve"
15106+ filename="gtype.h"
15107+ line="1069">Location of the instance initialization function (optional, for instantiatable types only)</doc>
15108+ <type name="InstanceInitFunc" c:type="GInstanceInitFunc"/>
15109+ </field>
15110+ <field name="value_table" writable="1">
15111+ <doc xml:space="preserve"
15112+ filename="gtype.h"
15113+ line="1070">A #GTypeValueTable function table for generic handling of GValues
15114+ of this type (usually only useful for fundamental types)</doc>
15115+ <type name="TypeValueTable" c:type="const GTypeValueTable*"/>
15116+ </field>
15117+ </record>
15118+ <record name="TypeInstance" c:type="GTypeInstance">
15119+ <doc xml:space="preserve"
15120+ filename="gtype.h"
15121+ line="429">An opaque structure used as the base of all type instances.</doc>
15122+ <source-position filename="gtype.h" line="438"/>
15123+ <field name="g_class" readable="0" private="1">
15124+ <type name="TypeClass" c:type="GTypeClass*"/>
15125+ </field>
15126+ <method name="get_private" c:identifier="g_type_instance_get_private">
15127+ <source-position filename="gtype.h" line="1352"/>
15128+ <return-value transfer-ownership="none" nullable="1">
15129+ <type name="gpointer" c:type="gpointer"/>
15130+ </return-value>
15131+ <parameters>
15132+ <instance-parameter name="instance" transfer-ownership="none">
15133+ <type name="TypeInstance" c:type="GTypeInstance*"/>
15134+ </instance-parameter>
15135+ <parameter name="private_type" transfer-ownership="none">
15136+ <type name="GType" c:type="GType"/>
15137+ </parameter>
15138+ </parameters>
15139+ </method>
15140+ </record>
15141+ <record name="TypeInterface" c:type="GTypeInterface">
15142+ <doc xml:space="preserve"
15143+ filename="gtype.h"
15144+ line="439">An opaque structure used as the base of all interface types.</doc>
15145+ <source-position filename="gtype.h" line="449"/>
15146+ <field name="g_type" readable="0" private="1">
15147+ <type name="GType" c:type="GType"/>
15148+ </field>
15149+ <field name="g_instance_type" readable="0" private="1">
15150+ <type name="GType" c:type="GType"/>
15151+ </field>
15152+ <method name="peek_parent" c:identifier="g_type_interface_peek_parent">
15153+ <doc xml:space="preserve"
15154+ filename="gobject-2.0.c"
15155+ line="6293">Returns the corresponding #GTypeInterface structure of the parent type
15156+of the instance type to which @g_iface belongs. This is useful when
15157+deriving the implementation of an interface from the parent type and
15158+then possibly overriding some methods.</doc>
15159+ <source-position filename="gtype.h" line="745"/>
15160+ <return-value transfer-ownership="none">
15161+ <doc xml:space="preserve"
15162+ filename="gobject-2.0.c"
15163+ line="6302">the
15164+ corresponding #GTypeInterface structure of the parent type of the
15165+ instance type to which @g_iface belongs, or %NULL if the parent
15166+ type doesn't conform to the interface</doc>
15167+ <type name="TypeInterface" c:type="gpointer"/>
15168+ </return-value>
15169+ <parameters>
15170+ <instance-parameter name="g_iface" transfer-ownership="none">
15171+ <doc xml:space="preserve"
15172+ filename="gobject-2.0.c"
15173+ line="6295">a #GTypeInterface structure</doc>
15174+ <type name="TypeInterface" c:type="gpointer"/>
15175+ </instance-parameter>
15176+ </parameters>
15177+ </method>
15178+ <function name="add_prerequisite"
15179+ c:identifier="g_type_interface_add_prerequisite">
15180+ <doc xml:space="preserve"
15181+ filename="gobject-2.0.c"
15182+ line="6235">Adds @prerequisite_type to the list of prerequisites of @interface_type.
15183+This means that any type implementing @interface_type must also implement
15184+@prerequisite_type. Prerequisites can be thought of as an alternative to
15185+interface derivation (which GType doesn't support). An interface can have
15186+at most one instantiatable prerequisite type.</doc>
15187+ <source-position filename="gtype.h" line="1337"/>
15188+ <return-value transfer-ownership="none">
15189+ <type name="none" c:type="void"/>
15190+ </return-value>
15191+ <parameters>
15192+ <parameter name="interface_type" transfer-ownership="none">
15193+ <doc xml:space="preserve"
15194+ filename="gobject-2.0.c"
15195+ line="6237">#GType value of an interface type</doc>
15196+ <type name="GType" c:type="GType"/>
15197+ </parameter>
15198+ <parameter name="prerequisite_type" transfer-ownership="none">
15199+ <doc xml:space="preserve"
15200+ filename="gobject-2.0.c"
15201+ line="6238">#GType value of an interface or instantiatable type</doc>
15202+ <type name="GType" c:type="GType"/>
15203+ </parameter>
15204+ </parameters>
15205+ </function>
15206+ <function name="get_plugin" c:identifier="g_type_interface_get_plugin">
15207+ <doc xml:space="preserve"
15208+ filename="gobject-2.0.c"
15209+ line="6248">Returns the #GTypePlugin structure for the dynamic interface
15210+@interface_type which has been added to @instance_type, or %NULL
15211+if @interface_type has not been added to @instance_type or does
15212+not have a #GTypePlugin structure. See g_type_add_interface_dynamic().</doc>
15213+ <source-position filename="gtype.h" line="2387"/>
15214+ <return-value transfer-ownership="none">
15215+ <doc xml:space="preserve"
15216+ filename="gobject-2.0.c"
15217+ line="6258">the #GTypePlugin for the dynamic
15218+ interface @interface_type of @instance_type</doc>
15219+ <type name="TypePlugin" c:type="GTypePlugin*"/>
15220+ </return-value>
15221+ <parameters>
15222+ <parameter name="instance_type" transfer-ownership="none">
15223+ <doc xml:space="preserve"
15224+ filename="gobject-2.0.c"
15225+ line="6250">#GType of an instantiatable type</doc>
15226+ <type name="GType" c:type="GType"/>
15227+ </parameter>
15228+ <parameter name="interface_type" transfer-ownership="none">
15229+ <doc xml:space="preserve"
15230+ filename="gobject-2.0.c"
15231+ line="6251">#GType of an interface type</doc>
15232+ <type name="GType" c:type="GType"/>
15233+ </parameter>
15234+ </parameters>
15235+ </function>
15236+ <function name="instantiatable_prerequisite"
15237+ c:identifier="g_type_interface_instantiatable_prerequisite"
15238+ version="2.68">
15239+ <doc xml:space="preserve"
15240+ filename="gobject-2.0.c"
15241+ line="6263">Returns the most specific instantiatable prerequisite of an
15242+interface type. If the interface type has no instantiatable
15243+prerequisite, %G_TYPE_INVALID is returned.
15244+
15245+See g_type_interface_add_prerequisite() for more information
15246+about prerequisites.</doc>
15247+ <source-position filename="gtype.h" line="1343"/>
15248+ <return-value transfer-ownership="none">
15249+ <doc xml:space="preserve"
15250+ filename="gobject-2.0.c"
15251+ line="6274">the instantiatable prerequisite type or %G_TYPE_INVALID if none</doc>
15252+ <type name="GType" c:type="GType"/>
15253+ </return-value>
15254+ <parameters>
15255+ <parameter name="interface_type" transfer-ownership="none">
15256+ <doc xml:space="preserve"
15257+ filename="gobject-2.0.c"
15258+ line="6265">an interface type</doc>
15259+ <type name="GType" c:type="GType"/>
15260+ </parameter>
15261+ </parameters>
15262+ </function>
15263+ <function name="peek" c:identifier="g_type_interface_peek">
15264+ <doc xml:space="preserve"
15265+ filename="gobject-2.0.c"
15266+ line="6279">Returns the #GTypeInterface structure of an interface to which the
15267+passed in class conforms.</doc>
15268+ <source-position filename="gtype.h" line="742"/>
15269+ <return-value transfer-ownership="none">
15270+ <doc xml:space="preserve"
15271+ filename="gobject-2.0.c"
15272+ line="6287">the #GTypeInterface
15273+ structure of @iface_type if implemented by @instance_class, %NULL
15274+ otherwise</doc>
15275+ <type name="TypeInterface" c:type="gpointer"/>
15276+ </return-value>
15277+ <parameters>
15278+ <parameter name="instance_class" transfer-ownership="none">
15279+ <doc xml:space="preserve"
15280+ filename="gobject-2.0.c"
15281+ line="6281">a #GTypeClass structure</doc>
15282+ <type name="TypeClass" c:type="gpointer"/>
15283+ </parameter>
15284+ <parameter name="iface_type" transfer-ownership="none">
15285+ <doc xml:space="preserve"
15286+ filename="gobject-2.0.c"
15287+ line="6282">an interface ID which this class conforms to</doc>
15288+ <type name="GType" c:type="GType"/>
15289+ </parameter>
15290+ </parameters>
15291+ </function>
15292+ <function name="prerequisites"
15293+ c:identifier="g_type_interface_prerequisites"
15294+ version="2.2">
15295+ <doc xml:space="preserve"
15296+ filename="gobject-2.0.c"
15297+ line="6309">Returns the prerequisites of an interfaces type.</doc>
15298+ <source-position filename="gtype.h" line="1340"/>
15299+ <return-value transfer-ownership="full">
15300+ <doc xml:space="preserve"
15301+ filename="gobject-2.0.c"
15302+ line="6318">a
15303+ newly-allocated zero-terminated array of #GType containing
15304+ the prerequisites of @interface_type</doc>
15305+ <array length="1" zero-terminated="0" c:type="GType*">
15306+ <type name="GType" c:type="GType"/>
15307+ </array>
15308+ </return-value>
15309+ <parameters>
15310+ <parameter name="interface_type" transfer-ownership="none">
15311+ <doc xml:space="preserve"
15312+ filename="gobject-2.0.c"
15313+ line="6311">an interface type</doc>
15314+ <type name="GType" c:type="GType"/>
15315+ </parameter>
15316+ <parameter name="n_prerequisites"
15317+ direction="out"
15318+ caller-allocates="0"
15319+ transfer-ownership="full"
15320+ optional="1"
15321+ allow-none="1">
15322+ <doc xml:space="preserve"
15323+ filename="gobject-2.0.c"
15324+ line="6312">location to return the number
15325+ of prerequisites, or %NULL</doc>
15326+ <type name="guint" c:type="guint*"/>
15327+ </parameter>
15328+ </parameters>
15329+ </function>
15330+ </record>
15331+ <callback name="TypeInterfaceCheckFunc"
15332+ c:type="GTypeInterfaceCheckFunc"
15333+ version="2.4">
15334+ <doc xml:space="preserve"
15335+ filename="gtype.h"
15336+ line="1003">A callback called after an interface vtable is initialized.
15337+
15338+See g_type_add_interface_check().</doc>
15339+ <source-position filename="gtype.h" line="1015"/>
15340+ <return-value transfer-ownership="none">
15341+ <type name="none" c:type="void"/>
15342+ </return-value>
15343+ <parameters>
15344+ <parameter name="check_data"
15345+ transfer-ownership="none"
15346+ nullable="1"
15347+ allow-none="1">
15348+ <doc xml:space="preserve"
15349+ filename="gtype.h"
15350+ line="1005">data passed to g_type_add_interface_check()</doc>
15351+ <type name="gpointer" c:type="gpointer"/>
15352+ </parameter>
15353+ <parameter name="g_iface" transfer-ownership="none">
15354+ <doc xml:space="preserve"
15355+ filename="gtype.h"
15356+ line="1006">the interface that has been
15357+ initialized</doc>
15358+ <type name="TypeInterface" c:type="gpointer"/>
15359+ </parameter>
15360+ </parameters>
15361+ </callback>
15362+ <class name="TypeModule"
15363+ c:symbol-prefix="type_module"
15364+ c:type="GTypeModule"
15365+ parent="Object"
15366+ abstract="1"
15367+ glib:type-name="GTypeModule"
15368+ glib:get-type="g_type_module_get_type"
15369+ glib:type-struct="TypeModuleClass">
15370+ <doc xml:space="preserve"
15371+ filename="gobject-2.0.c"
15372+ line="623">#GTypeModule provides a simple implementation of the #GTypePlugin
15373+interface.
15374+
15375+The model of #GTypeModule is a dynamically loaded module which
15376+implements some number of types and interface implementations.
15377+
15378+When the module is loaded, it registers its types and interfaces
15379+using g_type_module_register_type() and g_type_module_add_interface().
15380+As long as any instances of these types and interface implementations
15381+are in use, the module is kept loaded. When the types and interfaces
15382+are gone, the module may be unloaded. If the types and interfaces
15383+become used again, the module will be reloaded. Note that the last
15384+reference cannot be released from within the module code, since that
15385+would lead to the caller's code being unloaded before g_object_unref()
15386+returns to it.
15387+
15388+Keeping track of whether the module should be loaded or not is done by
15389+using a use count - it starts at zero, and whenever it is greater than
15390+zero, the module is loaded. The use count is maintained internally by
15391+the type system, but also can be explicitly controlled by
15392+g_type_module_use() and g_type_module_unuse(). Typically, when loading
15393+a module for the first type, g_type_module_use() will be used to load
15394+it so that it can initialize its types. At some later point, when the
15395+module no longer needs to be loaded except for the type
15396+implementations it contains, g_type_module_unuse() is called.
15397+
15398+#GTypeModule does not actually provide any implementation of module
15399+loading and unloading. To create a particular module type you must
15400+derive from #GTypeModule and implement the load and unload functions
15401+in #GTypeModuleClass.</doc>
15402+ <source-position filename="gtypemodule.h" line="84"/>
15403+ <implements name="TypePlugin"/>
15404+ <virtual-method name="load">
15405+ <source-position filename="gtypemodule.h" line="75"/>
15406+ <return-value transfer-ownership="none">
15407+ <type name="gboolean" c:type="gboolean"/>
15408+ </return-value>
15409+ <parameters>
15410+ <instance-parameter name="module" transfer-ownership="none">
15411+ <type name="TypeModule" c:type="GTypeModule*"/>
15412+ </instance-parameter>
15413+ </parameters>
15414+ </virtual-method>
15415+ <virtual-method name="unload">
15416+ <source-position filename="gtypemodule.h" line="76"/>
15417+ <return-value transfer-ownership="none">
15418+ <type name="none" c:type="void"/>
15419+ </return-value>
15420+ <parameters>
15421+ <instance-parameter name="module" transfer-ownership="none">
15422+ <type name="TypeModule" c:type="GTypeModule*"/>
15423+ </instance-parameter>
15424+ </parameters>
15425+ </virtual-method>
15426+ <method name="add_interface" c:identifier="g_type_module_add_interface">
15427+ <doc xml:space="preserve"
15428+ filename="gobject-2.0.c"
15429+ line="6352">Registers an additional interface for a type, whose interface lives
15430+in the given type plugin. If the interface was already registered
15431+for the type in this plugin, nothing will be done.
15432+
15433+As long as any instances of the type exist, the type plugin will
15434+not be unloaded.
15435+
15436+Since 2.56 if @module is %NULL this will call g_type_add_interface_static()
15437+instead. This can be used when making a static build of the module.</doc>
15438+ <source-position filename="gtypemodule.h" line="285"/>
15439+ <return-value transfer-ownership="none">
15440+ <type name="none" c:type="void"/>
15441+ </return-value>
15442+ <parameters>
15443+ <instance-parameter name="module"
15444+ transfer-ownership="none"
15445+ nullable="1"
15446+ allow-none="1">
15447+ <doc xml:space="preserve"
15448+ filename="gobject-2.0.c"
15449+ line="6354">a #GTypeModule</doc>
15450+ <type name="TypeModule" c:type="GTypeModule*"/>
15451+ </instance-parameter>
15452+ <parameter name="instance_type" transfer-ownership="none">
15453+ <doc xml:space="preserve"
15454+ filename="gobject-2.0.c"
15455+ line="6355">type to which to add the interface.</doc>
15456+ <type name="GType" c:type="GType"/>
15457+ </parameter>
15458+ <parameter name="interface_type" transfer-ownership="none">
15459+ <doc xml:space="preserve"
15460+ filename="gobject-2.0.c"
15461+ line="6356">interface type to add</doc>
15462+ <type name="GType" c:type="GType"/>
15463+ </parameter>
15464+ <parameter name="interface_info" transfer-ownership="none">
15465+ <doc xml:space="preserve"
15466+ filename="gobject-2.0.c"
15467+ line="6357">type information structure</doc>
15468+ <type name="InterfaceInfo" c:type="const GInterfaceInfo*"/>
15469+ </parameter>
15470+ </parameters>
15471+ </method>
15472+ <method name="register_enum"
15473+ c:identifier="g_type_module_register_enum"
15474+ version="2.6">
15475+ <doc xml:space="preserve"
15476+ filename="gobject-2.0.c"
15477+ line="6371">Looks up or registers an enumeration that is implemented with a particular
15478+type plugin. If a type with name @type_name was previously registered,
15479+the #GType identifier for the type is returned, otherwise the type
15480+is newly registered, and the resulting #GType identifier returned.
15481+
15482+As long as any instances of the type exist, the type plugin will
15483+not be unloaded.
15484+
15485+Since 2.56 if @module is %NULL this will call g_type_register_static()
15486+instead. This can be used when making a static build of the module.</doc>
15487+ <source-position filename="gtypemodule.h" line="290"/>
15488+ <return-value transfer-ownership="none">
15489+ <doc xml:space="preserve"
15490+ filename="gobject-2.0.c"
15491+ line="6392">the new or existing type ID</doc>
15492+ <type name="GType" c:type="GType"/>
15493+ </return-value>
15494+ <parameters>
15495+ <instance-parameter name="module"
15496+ transfer-ownership="none"
15497+ nullable="1"
15498+ allow-none="1">
15499+ <doc xml:space="preserve"
15500+ filename="gobject-2.0.c"
15501+ line="6373">a #GTypeModule</doc>
15502+ <type name="TypeModule" c:type="GTypeModule*"/>
15503+ </instance-parameter>
15504+ <parameter name="name" transfer-ownership="none">
15505+ <doc xml:space="preserve"
15506+ filename="gobject-2.0.c"
15507+ line="6374">name for the type</doc>
15508+ <type name="utf8" c:type="const gchar*"/>
15509+ </parameter>
15510+ <parameter name="const_static_values" transfer-ownership="none">
15511+ <doc xml:space="preserve"
15512+ filename="gobject-2.0.c"
15513+ line="6375">an array of #GEnumValue structs for the
15514+ possible enumeration values. The array is
15515+ terminated by a struct with all members being
15516+ 0.</doc>
15517+ <type name="EnumValue" c:type="const GEnumValue*"/>
15518+ </parameter>
15519+ </parameters>
15520+ </method>
15521+ <method name="register_flags"
15522+ c:identifier="g_type_module_register_flags"
15523+ version="2.6">
15524+ <doc xml:space="preserve"
15525+ filename="gobject-2.0.c"
15526+ line="6396">Looks up or registers a flags type that is implemented with a particular
15527+type plugin. If a type with name @type_name was previously registered,
15528+the #GType identifier for the type is returned, otherwise the type
15529+is newly registered, and the resulting #GType identifier returned.
15530+
15531+As long as any instances of the type exist, the type plugin will
15532+not be unloaded.
15533+
15534+Since 2.56 if @module is %NULL this will call g_type_register_static()
15535+instead. This can be used when making a static build of the module.</doc>
15536+ <source-position filename="gtypemodule.h" line="294"/>
15537+ <return-value transfer-ownership="none">
15538+ <doc xml:space="preserve"
15539+ filename="gobject-2.0.c"
15540+ line="6417">the new or existing type ID</doc>
15541+ <type name="GType" c:type="GType"/>
15542+ </return-value>
15543+ <parameters>
15544+ <instance-parameter name="module"
15545+ transfer-ownership="none"
15546+ nullable="1"
15547+ allow-none="1">
15548+ <doc xml:space="preserve"
15549+ filename="gobject-2.0.c"
15550+ line="6398">a #GTypeModule</doc>
15551+ <type name="TypeModule" c:type="GTypeModule*"/>
15552+ </instance-parameter>
15553+ <parameter name="name" transfer-ownership="none">
15554+ <doc xml:space="preserve"
15555+ filename="gobject-2.0.c"
15556+ line="6399">name for the type</doc>
15557+ <type name="utf8" c:type="const gchar*"/>
15558+ </parameter>
15559+ <parameter name="const_static_values" transfer-ownership="none">
15560+ <doc xml:space="preserve"
15561+ filename="gobject-2.0.c"
15562+ line="6400">an array of #GFlagsValue structs for the
15563+ possible flags values. The array is
15564+ terminated by a struct with all members being
15565+ 0.</doc>
15566+ <type name="FlagsValue" c:type="const GFlagsValue*"/>
15567+ </parameter>
15568+ </parameters>
15569+ </method>
15570+ <method name="register_type" c:identifier="g_type_module_register_type">
15571+ <doc xml:space="preserve"
15572+ filename="gobject-2.0.c"
15573+ line="6421">Looks up or registers a type that is implemented with a particular
15574+type plugin. If a type with name @type_name was previously registered,
15575+the #GType identifier for the type is returned, otherwise the type
15576+is newly registered, and the resulting #GType identifier returned.
15577+
15578+When reregistering a type (typically because a module is unloaded
15579+then reloaded, and reinitialized), @module and @parent_type must
15580+be the same as they were previously.
15581+
15582+As long as any instances of the type exist, the type plugin will
15583+not be unloaded.
15584+
15585+Since 2.56 if @module is %NULL this will call g_type_register_static()
15586+instead. This can be used when making a static build of the module.</doc>
15587+ <source-position filename="gtypemodule.h" line="279"/>
15588+ <return-value transfer-ownership="none">
15589+ <doc xml:space="preserve"
15590+ filename="gobject-2.0.c"
15591+ line="6444">the new or existing type ID</doc>
15592+ <type name="GType" c:type="GType"/>
15593+ </return-value>
15594+ <parameters>
15595+ <instance-parameter name="module"
15596+ transfer-ownership="none"
15597+ nullable="1"
15598+ allow-none="1">
15599+ <doc xml:space="preserve"
15600+ filename="gobject-2.0.c"
15601+ line="6423">a #GTypeModule</doc>
15602+ <type name="TypeModule" c:type="GTypeModule*"/>
15603+ </instance-parameter>
15604+ <parameter name="parent_type" transfer-ownership="none">
15605+ <doc xml:space="preserve"
15606+ filename="gobject-2.0.c"
15607+ line="6424">the type for the parent class</doc>
15608+ <type name="GType" c:type="GType"/>
15609+ </parameter>
15610+ <parameter name="type_name" transfer-ownership="none">
15611+ <doc xml:space="preserve"
15612+ filename="gobject-2.0.c"
15613+ line="6425">name for the type</doc>
15614+ <type name="utf8" c:type="const gchar*"/>
15615+ </parameter>
15616+ <parameter name="type_info" transfer-ownership="none">
15617+ <doc xml:space="preserve"
15618+ filename="gobject-2.0.c"
15619+ line="6426">type information structure</doc>
15620+ <type name="TypeInfo" c:type="const GTypeInfo*"/>
15621+ </parameter>
15622+ <parameter name="flags" transfer-ownership="none">
15623+ <doc xml:space="preserve"
15624+ filename="gobject-2.0.c"
15625+ line="6427">flags field providing details about the type</doc>
15626+ <type name="TypeFlags" c:type="GTypeFlags"/>
15627+ </parameter>
15628+ </parameters>
15629+ </method>
15630+ <method name="set_name" c:identifier="g_type_module_set_name">
15631+ <doc xml:space="preserve"
15632+ filename="gobject-2.0.c"
15633+ line="6448">Sets the name for a #GTypeModule</doc>
15634+ <source-position filename="gtypemodule.h" line="276"/>
15635+ <return-value transfer-ownership="none">
15636+ <type name="none" c:type="void"/>
15637+ </return-value>
15638+ <parameters>
15639+ <instance-parameter name="module" transfer-ownership="none">
15640+ <doc xml:space="preserve"
15641+ filename="gobject-2.0.c"
15642+ line="6450">a #GTypeModule.</doc>
15643+ <type name="TypeModule" c:type="GTypeModule*"/>
15644+ </instance-parameter>
15645+ <parameter name="name" transfer-ownership="none">
15646+ <doc xml:space="preserve"
15647+ filename="gobject-2.0.c"
15648+ line="6451">a human-readable name to use in error messages.</doc>
15649+ <type name="utf8" c:type="const gchar*"/>
15650+ </parameter>
15651+ </parameters>
15652+ </method>
15653+ <method name="unuse" c:identifier="g_type_module_unuse">
15654+ <doc xml:space="preserve"
15655+ filename="gobject-2.0.c"
15656+ line="6457">Decreases the use count of a #GTypeModule by one. If the
15657+result is zero, the module will be unloaded. (However, the
15658+#GTypeModule will not be freed, and types associated with the
15659+#GTypeModule are not unregistered. Once a #GTypeModule is
15660+initialized, it must exist forever.)</doc>
15661+ <source-position filename="gtypemodule.h" line="274"/>
15662+ <return-value transfer-ownership="none">
15663+ <type name="none" c:type="void"/>
15664+ </return-value>
15665+ <parameters>
15666+ <instance-parameter name="module" transfer-ownership="none">
15667+ <doc xml:space="preserve"
15668+ filename="gobject-2.0.c"
15669+ line="6459">a #GTypeModule</doc>
15670+ <type name="TypeModule" c:type="GTypeModule*"/>
15671+ </instance-parameter>
15672+ </parameters>
15673+ </method>
15674+ <method name="use" c:identifier="g_type_module_use">
15675+ <doc xml:space="preserve"
15676+ filename="gobject-2.0.c"
15677+ line="6469">Increases the use count of a #GTypeModule by one. If the
15678+use count was zero before, the plugin will be loaded.
15679+If loading the plugin fails, the use count is reset to
15680+its prior value.</doc>
15681+ <source-position filename="gtypemodule.h" line="272"/>
15682+ <return-value transfer-ownership="none">
15683+ <doc xml:space="preserve"
15684+ filename="gobject-2.0.c"
15685+ line="6478">%FALSE if the plugin needed to be loaded and
15686+ loading the plugin failed.</doc>
15687+ <type name="gboolean" c:type="gboolean"/>
15688+ </return-value>
15689+ <parameters>
15690+ <instance-parameter name="module" transfer-ownership="none">
15691+ <doc xml:space="preserve"
15692+ filename="gobject-2.0.c"
15693+ line="6471">a #GTypeModule</doc>
15694+ <type name="TypeModule" c:type="GTypeModule*"/>
15695+ </instance-parameter>
15696+ </parameters>
15697+ </method>
15698+ <field name="parent_instance">
15699+ <type name="Object" c:type="GObject"/>
15700+ </field>
15701+ <field name="use_count">
15702+ <type name="guint" c:type="guint"/>
15703+ </field>
15704+ <field name="type_infos">
15705+ <type name="GLib.SList" c:type="GSList*">
15706+ <type name="gpointer" c:type="gpointer"/>
15707+ </type>
15708+ </field>
15709+ <field name="interface_infos">
15710+ <type name="GLib.SList" c:type="GSList*">
15711+ <type name="gpointer" c:type="gpointer"/>
15712+ </type>
15713+ </field>
15714+ <field name="name">
15715+ <doc xml:space="preserve"
15716+ filename="gtypemodule.h"
15717+ line="43">the name of the module</doc>
15718+ <type name="utf8" c:type="gchar*"/>
15719+ </field>
15720+ </class>
15721+ <record name="TypeModuleClass"
15722+ c:type="GTypeModuleClass"
15723+ glib:is-gtype-struct-for="TypeModule">
15724+ <doc xml:space="preserve"
15725+ filename="gtypemodule.h"
15726+ line="60">In order to implement dynamic loading of types based on #GTypeModule,
15727+the @load and @unload functions in #GTypeModuleClass must be implemented.</doc>
15728+ <source-position filename="gtypemodule.h" line="84"/>
15729+ <field name="parent_class">
15730+ <doc xml:space="preserve"
15731+ filename="gtypemodule.h"
15732+ line="62">the parent class</doc>
15733+ <type name="ObjectClass" c:type="GObjectClass"/>
15734+ </field>
15735+ <field name="load">
15736+ <callback name="load">
15737+ <source-position filename="gtypemodule.h" line="75"/>
15738+ <return-value transfer-ownership="none">
15739+ <type name="gboolean" c:type="gboolean"/>
15740+ </return-value>
15741+ <parameters>
15742+ <parameter name="module" transfer-ownership="none">
15743+ <type name="TypeModule" c:type="GTypeModule*"/>
15744+ </parameter>
15745+ </parameters>
15746+ </callback>
15747+ </field>
15748+ <field name="unload">
15749+ <callback name="unload">
15750+ <source-position filename="gtypemodule.h" line="76"/>
15751+ <return-value transfer-ownership="none">
15752+ <type name="none" c:type="void"/>
15753+ </return-value>
15754+ <parameters>
15755+ <parameter name="module" transfer-ownership="none">
15756+ <type name="TypeModule" c:type="GTypeModule*"/>
15757+ </parameter>
15758+ </parameters>
15759+ </callback>
15760+ </field>
15761+ <field name="reserved1">
15762+ <callback name="reserved1">
15763+ <source-position filename="gtypemodule.h" line="80"/>
15764+ <return-value transfer-ownership="none">
15765+ <type name="none" c:type="void"/>
15766+ </return-value>
15767+ </callback>
15768+ </field>
15769+ <field name="reserved2">
15770+ <callback name="reserved2">
15771+ <source-position filename="gtypemodule.h" line="81"/>
15772+ <return-value transfer-ownership="none">
15773+ <type name="none" c:type="void"/>
15774+ </return-value>
15775+ </callback>
15776+ </field>
15777+ <field name="reserved3">
15778+ <callback name="reserved3">
15779+ <source-position filename="gtypemodule.h" line="82"/>
15780+ <return-value transfer-ownership="none">
15781+ <type name="none" c:type="void"/>
15782+ </return-value>
15783+ </callback>
15784+ </field>
15785+ <field name="reserved4">
15786+ <callback name="reserved4">
15787+ <source-position filename="gtypemodule.h" line="83"/>
15788+ <return-value transfer-ownership="none">
15789+ <type name="none" c:type="void"/>
15790+ </return-value>
15791+ </callback>
15792+ </field>
15793+ </record>
15794+ <interface name="TypePlugin"
15795+ c:symbol-prefix="type_plugin"
15796+ c:type="GTypePlugin"
15797+ glib:type-name="GTypePlugin"
15798+ glib:get-type="g_type_plugin_get_type">
15799+ <doc xml:space="preserve"
15800+ filename="gobject-2.0.c"
15801+ line="662">An interface that handles the lifecycle of dynamically loaded types.
15802+
15803+The GObject type system supports dynamic loading of types.
15804+It goes as follows:
15805+
15806+1. The type is initially introduced (usually upon loading the module
15807+ the first time, or by your main application that knows what modules
15808+ introduces what types), like this:
15809+ |[&lt;!-- language="C" --&gt;
15810+ new_type_id = g_type_register_dynamic (parent_type_id,
15811+ "TypeName",
15812+ new_type_plugin,
15813+ type_flags);
15814+ ]|
15815+ where @new_type_plugin is an implementation of the
15816+ #GTypePlugin interface.
15817+
15818+2. The type's implementation is referenced, e.g. through
15819+ g_type_class_ref() or through g_type_create_instance() (this is
15820+ being called by g_object_new()) or through one of the above done on
15821+ a type derived from @new_type_id.
15822+
15823+3. This causes the type system to load the type's implementation by
15824+ calling g_type_plugin_use() and g_type_plugin_complete_type_info()
15825+ on @new_type_plugin.
15826+
15827+4. At some point the type's implementation isn't required anymore,
15828+ e.g. after g_type_class_unref() or g_type_free_instance() (called
15829+ when the reference count of an instance drops to zero).
15830+
15831+5. This causes the type system to throw away the information retrieved
15832+ from g_type_plugin_complete_type_info() and then it calls
15833+ g_type_plugin_unuse() on @new_type_plugin.
15834+
15835+6. Things may repeat from the second step.
15836+
15837+So basically, you need to implement a #GTypePlugin type that
15838+carries a use_count, once use_count goes from zero to one, you need
15839+to load the implementation to successfully handle the upcoming
15840+g_type_plugin_complete_type_info() call. Later, maybe after
15841+succeeding use/unuse calls, once use_count drops to zero, you can
15842+unload the implementation again. The type system makes sure to call
15843+g_type_plugin_use() and g_type_plugin_complete_type_info() again
15844+when the type is needed again.
15845+
15846+#GTypeModule is an implementation of #GTypePlugin that already
15847+implements most of this except for the actual module loading and
15848+unloading. It even handles multiple registered types per module.</doc>
15849+ <method name="complete_interface_info"
15850+ c:identifier="g_type_plugin_complete_interface_info">
15851+ <doc xml:space="preserve"
15852+ filename="gobject-2.0.c"
15853+ line="6525">Calls the @complete_interface_info function from the
15854+#GTypePluginClass of @plugin. There should be no need to use this
15855+function outside of the GObject type system itself.</doc>
15856+ <source-position filename="gtypeplugin.h" line="127"/>
15857+ <return-value transfer-ownership="none">
15858+ <type name="none" c:type="void"/>
15859+ </return-value>
15860+ <parameters>
15861+ <instance-parameter name="plugin" transfer-ownership="none">
15862+ <doc xml:space="preserve"
15863+ filename="gobject-2.0.c"
15864+ line="6527">the #GTypePlugin</doc>
15865+ <type name="TypePlugin" c:type="GTypePlugin*"/>
15866+ </instance-parameter>
15867+ <parameter name="instance_type" transfer-ownership="none">
15868+ <doc xml:space="preserve"
15869+ filename="gobject-2.0.c"
15870+ line="6528">the #GType of an instantiatable type to which the interface
15871+ is added</doc>
15872+ <type name="GType" c:type="GType"/>
15873+ </parameter>
15874+ <parameter name="interface_type" transfer-ownership="none">
15875+ <doc xml:space="preserve"
15876+ filename="gobject-2.0.c"
15877+ line="6530">the #GType of the interface whose info is completed</doc>
15878+ <type name="GType" c:type="GType"/>
15879+ </parameter>
15880+ <parameter name="info" transfer-ownership="none">
15881+ <doc xml:space="preserve"
15882+ filename="gobject-2.0.c"
15883+ line="6531">the #GInterfaceInfo to fill in</doc>
15884+ <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
15885+ </parameter>
15886+ </parameters>
15887+ </method>
15888+ <method name="complete_type_info"
15889+ c:identifier="g_type_plugin_complete_type_info">
15890+ <doc xml:space="preserve"
15891+ filename="gobject-2.0.c"
15892+ line="6539">Calls the @complete_type_info function from the #GTypePluginClass of @plugin.
15893+There should be no need to use this function outside of the GObject
15894+type system itself.</doc>
15895+ <source-position filename="gtypeplugin.h" line="122"/>
15896+ <return-value transfer-ownership="none">
15897+ <type name="none" c:type="void"/>
15898+ </return-value>
15899+ <parameters>
15900+ <instance-parameter name="plugin" transfer-ownership="none">
15901+ <doc xml:space="preserve"
15902+ filename="gobject-2.0.c"
15903+ line="6541">a #GTypePlugin</doc>
15904+ <type name="TypePlugin" c:type="GTypePlugin*"/>
15905+ </instance-parameter>
15906+ <parameter name="g_type" transfer-ownership="none">
15907+ <doc xml:space="preserve"
15908+ filename="gobject-2.0.c"
15909+ line="6542">the #GType whose info is completed</doc>
15910+ <type name="GType" c:type="GType"/>
15911+ </parameter>
15912+ <parameter name="info" transfer-ownership="none">
15913+ <doc xml:space="preserve"
15914+ filename="gobject-2.0.c"
15915+ line="6543">the #GTypeInfo struct to fill in</doc>
15916+ <type name="TypeInfo" c:type="GTypeInfo*"/>
15917+ </parameter>
15918+ <parameter name="value_table" transfer-ownership="none">
15919+ <doc xml:space="preserve"
15920+ filename="gobject-2.0.c"
15921+ line="6544">the #GTypeValueTable to fill in</doc>
15922+ <type name="TypeValueTable" c:type="GTypeValueTable*"/>
15923+ </parameter>
15924+ </parameters>
15925+ </method>
15926+ <method name="unuse" c:identifier="g_type_plugin_unuse">
15927+ <doc xml:space="preserve"
15928+ filename="gobject-2.0.c"
15929+ line="6552">Calls the @unuse_plugin function from the #GTypePluginClass of
15930+@plugin. There should be no need to use this function outside of
15931+the GObject type system itself.</doc>
15932+ <source-position filename="gtypeplugin.h" line="120"/>
15933+ <return-value transfer-ownership="none">
15934+ <type name="none" c:type="void"/>
15935+ </return-value>
15936+ <parameters>
15937+ <instance-parameter name="plugin" transfer-ownership="none">
15938+ <doc xml:space="preserve"
15939+ filename="gobject-2.0.c"
15940+ line="6554">a #GTypePlugin</doc>
15941+ <type name="TypePlugin" c:type="GTypePlugin*"/>
15942+ </instance-parameter>
15943+ </parameters>
15944+ </method>
15945+ <method name="use" c:identifier="g_type_plugin_use">
15946+ <doc xml:space="preserve"
15947+ filename="gobject-2.0.c"
15948+ line="6562">Calls the @use_plugin function from the #GTypePluginClass of
15949+@plugin. There should be no need to use this function outside of
15950+the GObject type system itself.</doc>
15951+ <source-position filename="gtypeplugin.h" line="118"/>
15952+ <return-value transfer-ownership="none">
15953+ <type name="none" c:type="void"/>
15954+ </return-value>
15955+ <parameters>
15956+ <instance-parameter name="plugin" transfer-ownership="none">
15957+ <doc xml:space="preserve"
15958+ filename="gobject-2.0.c"
15959+ line="6564">a #GTypePlugin</doc>
15960+ <type name="TypePlugin" c:type="GTypePlugin*"/>
15961+ </instance-parameter>
15962+ </parameters>
15963+ </method>
15964+ </interface>
15965+ <record name="TypePluginClass" c:type="GTypePluginClass">
15966+ <doc xml:space="preserve"
15967+ filename="gtypeplugin.h"
15968+ line="87">The #GTypePlugin interface is used by the type system in order to handle
15969+the lifecycle of dynamically loaded types.</doc>
15970+ <source-position filename="gtypeplugin.h" line="111"/>
15971+ <field name="base_iface" readable="0" private="1">
15972+ <type name="TypeInterface" c:type="GTypeInterface"/>
15973+ </field>
15974+ <field name="use_plugin" writable="1">
15975+ <doc xml:space="preserve"
15976+ filename="gtypeplugin.h"
15977+ line="89">Increases the use count of the plugin.</doc>
15978+ <type name="TypePluginUse" c:type="GTypePluginUse"/>
15979+ </field>
15980+ <field name="unuse_plugin" writable="1">
15981+ <doc xml:space="preserve"
15982+ filename="gtypeplugin.h"
15983+ line="90">Decreases the use count of the plugin.</doc>
15984+ <type name="TypePluginUnuse" c:type="GTypePluginUnuse"/>
15985+ </field>
15986+ <field name="complete_type_info" writable="1">
15987+ <doc xml:space="preserve"
15988+ filename="gtypeplugin.h"
15989+ line="91">Fills in the #GTypeInfo and
15990+ #GTypeValueTable structs for the type. The structs are initialized
15991+ with `memset(s, 0, sizeof (s))` before calling this function.</doc>
15992+ <type name="TypePluginCompleteTypeInfo"
15993+ c:type="GTypePluginCompleteTypeInfo"/>
15994+ </field>
15995+ <field name="complete_interface_info" writable="1">
15996+ <doc xml:space="preserve"
15997+ filename="gtypeplugin.h"
15998+ line="94">Fills in missing parts of the #GInterfaceInfo
15999+ for the interface. The structs is initialized with
16000+ `memset(s, 0, sizeof (s))` before calling this function.</doc>
16001+ <type name="TypePluginCompleteInterfaceInfo"
16002+ c:type="GTypePluginCompleteInterfaceInfo"/>
16003+ </field>
16004+ </record>
16005+ <callback name="TypePluginCompleteInterfaceInfo"
16006+ c:type="GTypePluginCompleteInterfaceInfo">
16007+ <doc xml:space="preserve"
16008+ filename="gtypeplugin.h"
16009+ line="67">The type of the @complete_interface_info function of #GTypePluginClass.</doc>
16010+ <source-position filename="gtypeplugin.h" line="77"/>
16011+ <return-value transfer-ownership="none">
16012+ <type name="none" c:type="void"/>
16013+ </return-value>
16014+ <parameters>
16015+ <parameter name="plugin" transfer-ownership="none">
16016+ <doc xml:space="preserve"
16017+ filename="gtypeplugin.h"
16018+ line="69">the #GTypePlugin</doc>
16019+ <type name="TypePlugin" c:type="GTypePlugin*"/>
16020+ </parameter>
16021+ <parameter name="instance_type" transfer-ownership="none">
16022+ <doc xml:space="preserve"
16023+ filename="gtypeplugin.h"
16024+ line="70">the #GType of an instantiatable type to which the interface
16025+ is added</doc>
16026+ <type name="GType" c:type="GType"/>
16027+ </parameter>
16028+ <parameter name="interface_type" transfer-ownership="none">
16029+ <doc xml:space="preserve"
16030+ filename="gtypeplugin.h"
16031+ line="72">the #GType of the interface whose info is completed</doc>
16032+ <type name="GType" c:type="GType"/>
16033+ </parameter>
16034+ <parameter name="info" transfer-ownership="none">
16035+ <doc xml:space="preserve"
16036+ filename="gtypeplugin.h"
16037+ line="73">the #GInterfaceInfo to fill in</doc>
16038+ <type name="InterfaceInfo" c:type="GInterfaceInfo*"/>
16039+ </parameter>
16040+ </parameters>
16041+ </callback>
16042+ <callback name="TypePluginCompleteTypeInfo"
16043+ c:type="GTypePluginCompleteTypeInfo">
16044+ <doc xml:space="preserve"
16045+ filename="gtypeplugin.h"
16046+ line="54">The type of the @complete_type_info function of #GTypePluginClass.</doc>
16047+ <source-position filename="gtypeplugin.h" line="63"/>
16048+ <return-value transfer-ownership="none">
16049+ <type name="none" c:type="void"/>
16050+ </return-value>
16051+ <parameters>
16052+ <parameter name="plugin" transfer-ownership="none">
16053+ <doc xml:space="preserve"
16054+ filename="gtypeplugin.h"
16055+ line="56">the #GTypePlugin</doc>
16056+ <type name="TypePlugin" c:type="GTypePlugin*"/>
16057+ </parameter>
16058+ <parameter name="g_type" transfer-ownership="none">
16059+ <doc xml:space="preserve"
16060+ filename="gtypeplugin.h"
16061+ line="57">the #GType whose info is completed</doc>
16062+ <type name="GType" c:type="GType"/>
16063+ </parameter>
16064+ <parameter name="info" transfer-ownership="none">
16065+ <doc xml:space="preserve"
16066+ filename="gtypeplugin.h"
16067+ line="58">the #GTypeInfo struct to fill in</doc>
16068+ <type name="TypeInfo" c:type="GTypeInfo*"/>
16069+ </parameter>
16070+ <parameter name="value_table" transfer-ownership="none">
16071+ <doc xml:space="preserve"
16072+ filename="gtypeplugin.h"
16073+ line="59">the #GTypeValueTable to fill in</doc>
16074+ <type name="TypeValueTable" c:type="GTypeValueTable*"/>
16075+ </parameter>
16076+ </parameters>
16077+ </callback>
16078+ <callback name="TypePluginUnuse" c:type="GTypePluginUnuse">
16079+ <doc xml:space="preserve"
16080+ filename="gtypeplugin.h"
16081+ line="47">The type of the @unuse_plugin function of #GTypePluginClass.</doc>
16082+ <source-position filename="gtypeplugin.h" line="53"/>
16083+ <return-value transfer-ownership="none">
16084+ <type name="none" c:type="void"/>
16085+ </return-value>
16086+ <parameters>
16087+ <parameter name="plugin" transfer-ownership="none">
16088+ <doc xml:space="preserve"
16089+ filename="gtypeplugin.h"
16090+ line="49">the #GTypePlugin whose use count should be decreased</doc>
16091+ <type name="TypePlugin" c:type="GTypePlugin*"/>
16092+ </parameter>
16093+ </parameters>
16094+ </callback>
16095+ <callback name="TypePluginUse" c:type="GTypePluginUse">
16096+ <doc xml:space="preserve"
16097+ filename="gtypeplugin.h"
16098+ line="39">The type of the @use_plugin function of #GTypePluginClass, which gets called
16099+to increase the use count of @plugin.</doc>
16100+ <source-position filename="gtypeplugin.h" line="46"/>
16101+ <return-value transfer-ownership="none">
16102+ <type name="none" c:type="void"/>
16103+ </return-value>
16104+ <parameters>
16105+ <parameter name="plugin" transfer-ownership="none">
16106+ <doc xml:space="preserve"
16107+ filename="gtypeplugin.h"
16108+ line="41">the #GTypePlugin whose use count should be increased</doc>
16109+ <type name="TypePlugin" c:type="GTypePlugin*"/>
16110+ </parameter>
16111+ </parameters>
16112+ </callback>
16113+ <record name="TypeQuery" c:type="GTypeQuery">
16114+ <doc xml:space="preserve"
16115+ filename="gtype.h"
16116+ line="450">A structure holding information for a specific type.
16117+
16118+See also: g_type_query()</doc>
16119+ <source-position filename="gtype.h" line="467"/>
16120+ <field name="type" writable="1">
16121+ <doc xml:space="preserve"
16122+ filename="gtype.h"
16123+ line="452">the #GType value of the type</doc>
16124+ <type name="GType" c:type="GType"/>
16125+ </field>
16126+ <field name="type_name" writable="1">
16127+ <doc xml:space="preserve"
16128+ filename="gtype.h"
16129+ line="453">the name of the type</doc>
16130+ <type name="utf8" c:type="const gchar*"/>
16131+ </field>
16132+ <field name="class_size" writable="1">
16133+ <doc xml:space="preserve"
16134+ filename="gtype.h"
16135+ line="454">the size of the class structure</doc>
16136+ <type name="guint" c:type="guint"/>
16137+ </field>
16138+ <field name="instance_size" writable="1">
16139+ <doc xml:space="preserve"
16140+ filename="gtype.h"
16141+ line="455">the size of the instance structure</doc>
16142+ <type name="guint" c:type="guint"/>
16143+ </field>
16144+ </record>
16145+ <record name="TypeValueTable" c:type="GTypeValueTable">
16146+ <doc xml:space="preserve"
16147+ filename="gtype.h"
16148+ line="1130">The #GTypeValueTable provides the functions required by the #GValue
16149+implementation, to serve as a container for values of a type.</doc>
16150+ <source-position filename="gtype.h" line="1302"/>
16151+ <field name="value_init">
16152+ <callback name="value_init">
16153+ <source-position filename="gtype.h" line="1286"/>
16154+ <return-value transfer-ownership="none">
16155+ <type name="none" c:type="void"/>
16156+ </return-value>
16157+ <parameters>
16158+ <parameter name="value" transfer-ownership="none">
16159+ <type name="Value" c:type="GValue*"/>
16160+ </parameter>
16161+ </parameters>
16162+ </callback>
16163+ </field>
16164+ <field name="value_free">
16165+ <callback name="value_free">
16166+ <source-position filename="gtype.h" line="1287"/>
16167+ <return-value transfer-ownership="none">
16168+ <type name="none" c:type="void"/>
16169+ </return-value>
16170+ <parameters>
16171+ <parameter name="value" transfer-ownership="none">
16172+ <type name="Value" c:type="GValue*"/>
16173+ </parameter>
16174+ </parameters>
16175+ </callback>
16176+ </field>
16177+ <field name="value_copy">
16178+ <callback name="value_copy">
16179+ <source-position filename="gtype.h" line="1288"/>
16180+ <return-value transfer-ownership="none">
16181+ <type name="none" c:type="void"/>
16182+ </return-value>
16183+ <parameters>
16184+ <parameter name="src_value" transfer-ownership="none">
16185+ <type name="Value" c:type="const GValue*"/>
16186+ </parameter>
16187+ <parameter name="dest_value" transfer-ownership="none">
16188+ <type name="Value" c:type="GValue*"/>
16189+ </parameter>
16190+ </parameters>
16191+ </callback>
16192+ </field>
16193+ <field name="value_peek_pointer">
16194+ <callback name="value_peek_pointer">
16195+ <source-position filename="gtype.h" line="1291"/>
16196+ <return-value transfer-ownership="none">
16197+ <type name="gpointer" c:type="gpointer"/>
16198+ </return-value>
16199+ <parameters>
16200+ <parameter name="value" transfer-ownership="none">
16201+ <type name="Value" c:type="const GValue*"/>
16202+ </parameter>
16203+ </parameters>
16204+ </callback>
16205+ </field>
16206+ <field name="collect_format" writable="1">
16207+ <doc xml:space="preserve"
16208+ filename="gtype.h"
16209+ line="1167">A string format describing how to collect the contents of
16210+ this value bit-by-bit. Each character in the format represents
16211+ an argument to be collected, and the characters themselves indicate
16212+ the type of the argument. Currently supported arguments are:
16213+ - 'i' - Integers. passed as collect_values[].v_int.
16214+ - 'l' - Longs. passed as collect_values[].v_long.
16215+ - 'd' - Doubles. passed as collect_values[].v_double.
16216+ - 'p' - Pointers. passed as collect_values[].v_pointer.
16217+ It should be noted that for variable argument list construction,
16218+ ANSI C promotes every type smaller than an integer to an int, and
16219+ floats to doubles. So for collection of short int or char, 'i'
16220+ needs to be used, and for collection of floats 'd'.</doc>
16221+ <type name="utf8" c:type="const gchar*"/>
16222+ </field>
16223+ <field name="collect_value">
16224+ <callback name="collect_value">
16225+ <source-position filename="gtype.h" line="1293"/>
16226+ <return-value transfer-ownership="full">
16227+ <type name="utf8" c:type="gchar*"/>
16228+ </return-value>
16229+ <parameters>
16230+ <parameter name="value" transfer-ownership="none">
16231+ <type name="Value" c:type="GValue*"/>
16232+ </parameter>
16233+ <parameter name="n_collect_values" transfer-ownership="none">
16234+ <type name="guint" c:type="guint"/>
16235+ </parameter>
16236+ <parameter name="collect_values" transfer-ownership="none">
16237+ <type name="TypeCValue" c:type="GTypeCValue*"/>
16238+ </parameter>
16239+ <parameter name="collect_flags" transfer-ownership="none">
16240+ <type name="guint" c:type="guint"/>
16241+ </parameter>
16242+ </parameters>
16243+ </callback>
16244+ </field>
16245+ <field name="lcopy_format" writable="1">
16246+ <doc xml:space="preserve"
16247+ filename="gtype.h"
16248+ line="1243">Format description of the arguments to collect for @lcopy_value,
16249+ analogous to @collect_format. Usually, @lcopy_format string consists
16250+ only of 'p's to provide lcopy_value() with pointers to storage locations.</doc>
16251+ <type name="utf8" c:type="const gchar*"/>
16252+ </field>
16253+ <field name="lcopy_value">
16254+ <callback name="lcopy_value">
16255+ <source-position filename="gtype.h" line="1298"/>
16256+ <return-value transfer-ownership="full">
16257+ <type name="utf8" c:type="gchar*"/>
16258+ </return-value>
16259+ <parameters>
16260+ <parameter name="value" transfer-ownership="none">
16261+ <type name="Value" c:type="const GValue*"/>
16262+ </parameter>
16263+ <parameter name="n_collect_values" transfer-ownership="none">
16264+ <type name="guint" c:type="guint"/>
16265+ </parameter>
16266+ <parameter name="collect_values" transfer-ownership="none">
16267+ <type name="TypeCValue" c:type="GTypeCValue*"/>
16268+ </parameter>
16269+ <parameter name="collect_flags" transfer-ownership="none">
16270+ <type name="guint" c:type="guint"/>
16271+ </parameter>
16272+ </parameters>
16273+ </callback>
16274+ </field>
16275+ <function name="peek"
16276+ c:identifier="g_type_value_table_peek"
16277+ introspectable="0">
16278+ <doc xml:space="preserve"
16279+ filename="gobject-2.0.c"
16280+ line="6704">Returns the location of the #GTypeValueTable associated with @type.
16281+
16282+Note that this function should only be used from source code
16283+that implements or has internal knowledge of the implementation of
16284+@type.</doc>
16285+ <source-position filename="gtype.h" line="2415"/>
16286+ <return-value>
16287+ <doc xml:space="preserve"
16288+ filename="gobject-2.0.c"
16289+ line="6714">location of the #GTypeValueTable associated with @type or
16290+ %NULL if there is no #GTypeValueTable associated with @type</doc>
16291+ <type name="TypeValueTable" c:type="GTypeValueTable*"/>
16292+ </return-value>
16293+ <parameters>
16294+ <parameter name="type" transfer-ownership="none">
16295+ <doc xml:space="preserve"
16296+ filename="gobject-2.0.c"
16297+ line="6706">a #GType</doc>
16298+ <type name="GType" c:type="GType"/>
16299+ </parameter>
16300+ </parameters>
16301+ </function>
16302+ </record>
16303+ <function-macro name="VALUE_HOLDS"
16304+ c:identifier="G_VALUE_HOLDS"
16305+ introspectable="0">
16306+ <doc xml:space="preserve"
16307+ filename="gvalue.h"
16308+ line="70">Checks if @value holds (or contains) a value of @type.
16309+This macro will also check for @value != %NULL and issue a
16310+warning if the check fails.</doc>
16311+ <source-position filename="gvalue.h" line="81"/>
16312+ <parameters>
16313+ <parameter name="value">
16314+ <doc xml:space="preserve"
16315+ filename="gvalue.h"
16316+ line="72">A #GValue structure.</doc>
16317+ </parameter>
16318+ <parameter name="type">
16319+ <doc xml:space="preserve"
16320+ filename="gvalue.h"
16321+ line="73">A #GType value.</doc>
16322+ </parameter>
16323+ </parameters>
16324+ </function-macro>
16325+ <function-macro name="VALUE_HOLDS_BOOLEAN"
16326+ c:identifier="G_VALUE_HOLDS_BOOLEAN"
16327+ introspectable="0">
16328+ <doc xml:space="preserve"
16329+ filename="gvaluetypes.h"
16330+ line="49">Checks whether the given #GValue can hold values of type %G_TYPE_BOOLEAN.</doc>
16331+ <source-position filename="gvaluetypes.h" line="57"/>
16332+ <parameters>
16333+ <parameter name="value">
16334+ <doc xml:space="preserve"
16335+ filename="gvaluetypes.h"
16336+ line="51">a valid #GValue structure</doc>
16337+ </parameter>
16338+ </parameters>
16339+ </function-macro>
16340+ <function-macro name="VALUE_HOLDS_BOXED"
16341+ c:identifier="G_VALUE_HOLDS_BOXED"
16342+ introspectable="0">
16343+ <doc xml:space="preserve"
16344+ filename="gboxed.h"
16345+ line="34">Checks whether the given #GValue can hold values derived
16346+from type %G_TYPE_BOXED.</doc>
16347+ <source-position filename="gboxed.h" line="43"/>
16348+ <parameters>
16349+ <parameter name="value">
16350+ <doc xml:space="preserve"
16351+ filename="gboxed.h"
16352+ line="36">a valid #GValue structure</doc>
16353+ </parameter>
16354+ </parameters>
16355+ </function-macro>
16356+ <function-macro name="VALUE_HOLDS_CHAR"
16357+ c:identifier="G_VALUE_HOLDS_CHAR"
16358+ introspectable="0">
16359+ <doc xml:space="preserve"
16360+ filename="gvaluetypes.h"
16361+ line="31">Checks whether the given #GValue can hold values of type %G_TYPE_CHAR.</doc>
16362+ <source-position filename="gvaluetypes.h" line="39"/>
16363+ <parameters>
16364+ <parameter name="value">
16365+ <doc xml:space="preserve"
16366+ filename="gvaluetypes.h"
16367+ line="33">a valid #GValue structure</doc>
16368+ </parameter>
16369+ </parameters>
16370+ </function-macro>
16371+ <function-macro name="VALUE_HOLDS_DOUBLE"
16372+ c:identifier="G_VALUE_HOLDS_DOUBLE"
16373+ introspectable="0">
16374+ <doc xml:space="preserve"
16375+ filename="gvaluetypes.h"
16376+ line="121">Checks whether the given #GValue can hold values of type %G_TYPE_DOUBLE.</doc>
16377+ <source-position filename="gvaluetypes.h" line="129"/>
16378+ <parameters>
16379+ <parameter name="value">
16380+ <doc xml:space="preserve"
16381+ filename="gvaluetypes.h"
16382+ line="123">a valid #GValue structure</doc>
16383+ </parameter>
16384+ </parameters>
16385+ </function-macro>
16386+ <function-macro name="VALUE_HOLDS_ENUM"
16387+ c:identifier="G_VALUE_HOLDS_ENUM"
16388+ introspectable="0">
16389+ <doc xml:space="preserve"
16390+ filename="genums.h"
16391+ line="117">Checks whether the given #GValue can hold values derived from type %G_TYPE_ENUM.</doc>
16392+ <source-position filename="genums.h" line="125"/>
16393+ <parameters>
16394+ <parameter name="value">
16395+ <doc xml:space="preserve"
16396+ filename="genums.h"
16397+ line="119">a valid #GValue structure</doc>
16398+ </parameter>
16399+ </parameters>
16400+ </function-macro>
16401+ <function-macro name="VALUE_HOLDS_FLAGS"
16402+ c:identifier="G_VALUE_HOLDS_FLAGS"
16403+ introspectable="0">
16404+ <doc xml:space="preserve"
16405+ filename="genums.h"
16406+ line="126">Checks whether the given #GValue can hold values derived from type %G_TYPE_FLAGS.</doc>
16407+ <source-position filename="genums.h" line="134"/>
16408+ <parameters>
16409+ <parameter name="value">
16410+ <doc xml:space="preserve"
16411+ filename="genums.h"
16412+ line="128">a valid #GValue structure</doc>
16413+ </parameter>
16414+ </parameters>
16415+ </function-macro>
16416+ <function-macro name="VALUE_HOLDS_FLOAT"
16417+ c:identifier="G_VALUE_HOLDS_FLOAT"
16418+ introspectable="0">
16419+ <doc xml:space="preserve"
16420+ filename="gvaluetypes.h"
16421+ line="112">Checks whether the given #GValue can hold values of type %G_TYPE_FLOAT.</doc>
16422+ <source-position filename="gvaluetypes.h" line="120"/>
16423+ <parameters>
16424+ <parameter name="value">
16425+ <doc xml:space="preserve"
16426+ filename="gvaluetypes.h"
16427+ line="114">a valid #GValue structure</doc>
16428+ </parameter>
16429+ </parameters>
16430+ </function-macro>
16431+ <function-macro name="VALUE_HOLDS_GTYPE"
16432+ c:identifier="G_VALUE_HOLDS_GTYPE"
16433+ version="2.12"
16434+ introspectable="0">
16435+ <doc xml:space="preserve"
16436+ filename="gvaluetypes.h"
16437+ line="167">Checks whether the given #GValue can hold values of type %G_TYPE_GTYPE.</doc>
16438+ <source-position filename="gvaluetypes.h" line="176"/>
16439+ <parameters>
16440+ <parameter name="value">
16441+ <doc xml:space="preserve"
16442+ filename="gvaluetypes.h"
16443+ line="169">a valid #GValue structure</doc>
16444+ </parameter>
16445+ </parameters>
16446+ </function-macro>
16447+ <function-macro name="VALUE_HOLDS_INT"
16448+ c:identifier="G_VALUE_HOLDS_INT"
16449+ introspectable="0">
16450+ <doc xml:space="preserve"
16451+ filename="gvaluetypes.h"
16452+ line="58">Checks whether the given #GValue can hold values of type %G_TYPE_INT.</doc>
16453+ <source-position filename="gvaluetypes.h" line="66"/>
16454+ <parameters>
16455+ <parameter name="value">
16456+ <doc xml:space="preserve"
16457+ filename="gvaluetypes.h"
16458+ line="60">a valid #GValue structure</doc>
16459+ </parameter>
16460+ </parameters>
16461+ </function-macro>
16462+ <function-macro name="VALUE_HOLDS_INT64"
16463+ c:identifier="G_VALUE_HOLDS_INT64"
16464+ introspectable="0">
16465+ <doc xml:space="preserve"
16466+ filename="gvaluetypes.h"
16467+ line="94">Checks whether the given #GValue can hold values of type %G_TYPE_INT64.</doc>
16468+ <source-position filename="gvaluetypes.h" line="102"/>
16469+ <parameters>
16470+ <parameter name="value">
16471+ <doc xml:space="preserve"
16472+ filename="gvaluetypes.h"
16473+ line="96">a valid #GValue structure</doc>
16474+ </parameter>
16475+ </parameters>
16476+ </function-macro>
16477+ <function-macro name="VALUE_HOLDS_LONG"
16478+ c:identifier="G_VALUE_HOLDS_LONG"
16479+ introspectable="0">
16480+ <doc xml:space="preserve"
16481+ filename="gvaluetypes.h"
16482+ line="76">Checks whether the given #GValue can hold values of type %G_TYPE_LONG.</doc>
16483+ <source-position filename="gvaluetypes.h" line="84"/>
16484+ <parameters>
16485+ <parameter name="value">
16486+ <doc xml:space="preserve"
16487+ filename="gvaluetypes.h"
16488+ line="78">a valid #GValue structure</doc>
16489+ </parameter>
16490+ </parameters>
16491+ </function-macro>
16492+ <function-macro name="VALUE_HOLDS_OBJECT"
16493+ c:identifier="G_VALUE_HOLDS_OBJECT"
16494+ introspectable="0">
16495+ <doc xml:space="preserve"
16496+ filename="gobject.h"
16497+ line="126">Checks whether the given #GValue can hold values derived from type %G_TYPE_OBJECT.</doc>
16498+ <source-position filename="gobject.h" line="134"/>
16499+ <parameters>
16500+ <parameter name="value">
16501+ <doc xml:space="preserve"
16502+ filename="gobject.h"
16503+ line="128">a valid #GValue structure</doc>
16504+ </parameter>
16505+ </parameters>
16506+ </function-macro>
16507+ <function-macro name="VALUE_HOLDS_PARAM"
16508+ c:identifier="G_VALUE_HOLDS_PARAM"
16509+ introspectable="0">
16510+ <doc xml:space="preserve"
16511+ filename="gparam.h"
16512+ line="104">Checks whether the given #GValue can hold values derived from type %G_TYPE_PARAM.</doc>
16513+ <source-position filename="gparam.h" line="112"/>
16514+ <parameters>
16515+ <parameter name="value">
16516+ <doc xml:space="preserve"
16517+ filename="gparam.h"
16518+ line="106">a valid #GValue structure</doc>
16519+ </parameter>
16520+ </parameters>
16521+ </function-macro>
16522+ <function-macro name="VALUE_HOLDS_POINTER"
16523+ c:identifier="G_VALUE_HOLDS_POINTER"
16524+ introspectable="0">
16525+ <doc xml:space="preserve"
16526+ filename="gvaluetypes.h"
16527+ line="152">Checks whether the given #GValue can hold values of type %G_TYPE_POINTER.</doc>
16528+ <source-position filename="gvaluetypes.h" line="160"/>
16529+ <parameters>
16530+ <parameter name="value">
16531+ <doc xml:space="preserve"
16532+ filename="gvaluetypes.h"
16533+ line="154">a valid #GValue structure</doc>
16534+ </parameter>
16535+ </parameters>
16536+ </function-macro>
16537+ <function-macro name="VALUE_HOLDS_STRING"
16538+ c:identifier="G_VALUE_HOLDS_STRING"
16539+ introspectable="0">
16540+ <doc xml:space="preserve"
16541+ filename="gvaluetypes.h"
16542+ line="130">Checks whether the given #GValue can hold values of type %G_TYPE_STRING.</doc>
16543+ <source-position filename="gvaluetypes.h" line="138"/>
16544+ <parameters>
16545+ <parameter name="value">
16546+ <doc xml:space="preserve"
16547+ filename="gvaluetypes.h"
16548+ line="132">a valid #GValue structure</doc>
16549+ </parameter>
16550+ </parameters>
16551+ </function-macro>
16552+ <function-macro name="VALUE_HOLDS_UCHAR"
16553+ c:identifier="G_VALUE_HOLDS_UCHAR"
16554+ introspectable="0">
16555+ <doc xml:space="preserve"
16556+ filename="gvaluetypes.h"
16557+ line="40">Checks whether the given #GValue can hold values of type %G_TYPE_UCHAR.</doc>
16558+ <source-position filename="gvaluetypes.h" line="48"/>
16559+ <parameters>
16560+ <parameter name="value">
16561+ <doc xml:space="preserve"
16562+ filename="gvaluetypes.h"
16563+ line="42">a valid #GValue structure</doc>
16564+ </parameter>
16565+ </parameters>
16566+ </function-macro>
16567+ <function-macro name="VALUE_HOLDS_UINT"
16568+ c:identifier="G_VALUE_HOLDS_UINT"
16569+ introspectable="0">
16570+ <doc xml:space="preserve"
16571+ filename="gvaluetypes.h"
16572+ line="67">Checks whether the given #GValue can hold values of type %G_TYPE_UINT.</doc>
16573+ <source-position filename="gvaluetypes.h" line="75"/>
16574+ <parameters>
16575+ <parameter name="value">
16576+ <doc xml:space="preserve"
16577+ filename="gvaluetypes.h"
16578+ line="69">a valid #GValue structure</doc>
16579+ </parameter>
16580+ </parameters>
16581+ </function-macro>
16582+ <function-macro name="VALUE_HOLDS_UINT64"
16583+ c:identifier="G_VALUE_HOLDS_UINT64"
16584+ introspectable="0">
16585+ <doc xml:space="preserve"
16586+ filename="gvaluetypes.h"
16587+ line="103">Checks whether the given #GValue can hold values of type %G_TYPE_UINT64.</doc>
16588+ <source-position filename="gvaluetypes.h" line="111"/>
16589+ <parameters>
16590+ <parameter name="value">
16591+ <doc xml:space="preserve"
16592+ filename="gvaluetypes.h"
16593+ line="105">a valid #GValue structure</doc>
16594+ </parameter>
16595+ </parameters>
16596+ </function-macro>
16597+ <function-macro name="VALUE_HOLDS_ULONG"
16598+ c:identifier="G_VALUE_HOLDS_ULONG"
16599+ introspectable="0">
16600+ <doc xml:space="preserve"
16601+ filename="gvaluetypes.h"
16602+ line="85">Checks whether the given #GValue can hold values of type %G_TYPE_ULONG.</doc>
16603+ <source-position filename="gvaluetypes.h" line="93"/>
16604+ <parameters>
16605+ <parameter name="value">
16606+ <doc xml:space="preserve"
16607+ filename="gvaluetypes.h"
16608+ line="87">a valid #GValue structure</doc>
16609+ </parameter>
16610+ </parameters>
16611+ </function-macro>
16612+ <function-macro name="VALUE_HOLDS_VARIANT"
16613+ c:identifier="G_VALUE_HOLDS_VARIANT"
16614+ version="2.26"
16615+ introspectable="0">
16616+ <doc xml:space="preserve"
16617+ filename="gvaluetypes.h"
16618+ line="177">Checks whether the given #GValue can hold values of type %G_TYPE_VARIANT.</doc>
16619+ <source-position filename="gvaluetypes.h" line="187"/>
16620+ <parameters>
16621+ <parameter name="value">
16622+ <doc xml:space="preserve"
16623+ filename="gvaluetypes.h"
16624+ line="179">a valid #GValue structure</doc>
16625+ </parameter>
16626+ </parameters>
16627+ </function-macro>
16628+ <constant name="VALUE_INTERNED_STRING"
16629+ value="268435456"
16630+ c:type="G_VALUE_INTERNED_STRING"
16631+ version="2.66">
16632+ <doc xml:space="preserve"
16633+ filename="gvalue.h"
16634+ line="182">For string values, indicates that the string contained is canonical and will
16635+exist for the duration of the process. See g_value_set_interned_string().</doc>
16636+ <source-position filename="gvalue.h" line="190"/>
16637+ <type name="gint" c:type="gint"/>
16638+ </constant>
16639+ <function-macro name="VALUE_IS_INTERNED_STRING"
16640+ c:identifier="G_VALUE_IS_INTERNED_STRING"
16641+ version="2.66"
16642+ introspectable="0">
16643+ <doc xml:space="preserve"
16644+ filename="gvaluetypes.h"
16645+ line="139">Checks whether @value contains a string which is canonical.</doc>
16646+ <source-position filename="gvaluetypes.h" line="151"/>
16647+ <parameters>
16648+ <parameter name="value">
16649+ <doc xml:space="preserve"
16650+ filename="gvaluetypes.h"
16651+ line="141">a valid #GValue structure</doc>
16652+ </parameter>
16653+ </parameters>
16654+ </function-macro>
16655+ <constant name="VALUE_NOCOPY_CONTENTS"
16656+ value="134217728"
16657+ c:type="G_VALUE_NOCOPY_CONTENTS">
16658+ <doc xml:space="preserve"
16659+ filename="gvalue.h"
16660+ line="172">If passed to G_VALUE_COLLECT(), allocated data won't be copied
16661+but used verbatim. This does not affect ref-counted types like
16662+objects. This does not affect usage of g_value_copy(), the data will
16663+be copied if it is not ref-counted.</doc>
16664+ <source-position filename="gvalue.h" line="180"/>
16665+ <type name="gint" c:type="gint"/>
16666+ </constant>
16667+ <function-macro name="VALUE_TYPE"
16668+ c:identifier="G_VALUE_TYPE"
16669+ introspectable="0">
16670+ <doc xml:space="preserve"
16671+ filename="gvalue.h"
16672+ line="52">Get the type identifier of @value.</doc>
16673+ <source-position filename="gvalue.h" line="60"/>
16674+ <parameters>
16675+ <parameter name="value">
16676+ <doc xml:space="preserve"
16677+ filename="gvalue.h"
16678+ line="54">A #GValue structure.</doc>
16679+ </parameter>
16680+ </parameters>
16681+ </function-macro>
16682+ <function-macro name="VALUE_TYPE_NAME"
16683+ c:identifier="G_VALUE_TYPE_NAME"
16684+ introspectable="0">
16685+ <doc xml:space="preserve"
16686+ filename="gvalue.h"
16687+ line="61">Gets the type name of @value.</doc>
16688+ <source-position filename="gvalue.h" line="69"/>
16689+ <parameters>
16690+ <parameter name="value">
16691+ <doc xml:space="preserve"
16692+ filename="gvalue.h"
16693+ line="63">A #GValue structure.</doc>
16694+ </parameter>
16695+ </parameters>
16696+ </function-macro>
16697+ <callback name="VaClosureMarshal"
16698+ c:type="GVaClosureMarshal"
16699+ introspectable="0">
16700+ <doc xml:space="preserve"
16701+ filename="gclosure.h"
16702+ line="126">This is the signature of va_list marshaller functions, an optional
16703+marshaller that can be used in some situations to avoid
16704+marshalling the signal argument into GValues.</doc>
16705+ <source-position filename="gclosure.h" line="146"/>
16706+ <return-value transfer-ownership="none">
16707+ <type name="none" c:type="void"/>
16708+ </return-value>
16709+ <parameters>
16710+ <parameter name="closure" transfer-ownership="none">
16711+ <doc xml:space="preserve"
16712+ filename="gclosure.h"
16713+ line="128">the #GClosure to which the marshaller belongs</doc>
16714+ <type name="Closure" c:type="GClosure*"/>
16715+ </parameter>
16716+ <parameter name="return_value"
16717+ transfer-ownership="none"
16718+ nullable="1"
16719+ allow-none="1">
16720+ <doc xml:space="preserve"
16721+ filename="gclosure.h"
16722+ line="129">a #GValue to store the return
16723+ value. May be %NULL if the callback of @closure doesn't return a
16724+ value.</doc>
16725+ <type name="Value" c:type="GValue*"/>
16726+ </parameter>
16727+ <parameter name="instance" transfer-ownership="none">
16728+ <doc xml:space="preserve"
16729+ filename="gclosure.h"
16730+ line="132">the instance on which the closure is
16731+ invoked.</doc>
16732+ <type name="TypeInstance" c:type="gpointer"/>
16733+ </parameter>
16734+ <parameter name="args" transfer-ownership="none">
16735+ <doc xml:space="preserve"
16736+ filename="gclosure.h"
16737+ line="134">va_list of arguments to be passed to the closure.</doc>
16738+ <type name="va_list" c:type="va_list"/>
16739+ </parameter>
16740+ <parameter name="marshal_data"
16741+ transfer-ownership="none"
16742+ nullable="1"
16743+ allow-none="1">
16744+ <doc xml:space="preserve"
16745+ filename="gclosure.h"
16746+ line="135">additional data specified when
16747+ registering the marshaller, see g_closure_set_marshal() and
16748+ g_closure_set_meta_marshal()</doc>
16749+ <type name="gpointer" c:type="gpointer"/>
16750+ </parameter>
16751+ <parameter name="n_params" transfer-ownership="none">
16752+ <doc xml:space="preserve"
16753+ filename="gclosure.h"
16754+ line="138">the length of the @param_types array</doc>
16755+ <type name="gint" c:type="int"/>
16756+ </parameter>
16757+ <parameter name="param_types" transfer-ownership="none">
16758+ <doc xml:space="preserve"
16759+ filename="gclosure.h"
16760+ line="139">the #GType of each argument from
16761+ @args.</doc>
16762+ <array length="5" zero-terminated="0" c:type="GType*">
16763+ <type name="GType" c:type="GType"/>
16764+ </array>
16765+ </parameter>
16766+ </parameters>
16767+ </callback>
16768+ <record name="Value"
16769+ c:type="GValue"
16770+ glib:type-name="GValue"
16771+ glib:get-type="g_value_get_type"
16772+ c:symbol-prefix="value">
16773+ <doc xml:space="preserve"
16774+ filename="gvalue.h"
16775+ line="97">An opaque structure used to hold different types of values.
16776+
16777+The data within the structure has protected scope: it is accessible only
16778+to functions within a #GTypeValueTable structure, or implementations of
16779+the g_value_*() API. That is, code portions which implement new fundamental
16780+types.
16781+
16782+#GValue users cannot make any assumptions about how data is stored
16783+within the 2 element @data union, and the @g_type member should
16784+only be accessed through the G_VALUE_TYPE() macro.</doc>
16785+ <source-position filename="gvalue.h" line="128"/>
16786+ <field name="g_type" readable="0" private="1">
16787+ <type name="GType" c:type="GType"/>
16788+ </field>
16789+ <field name="data" writable="1">
16790+ <array zero-terminated="0" fixed-size="2">
16791+ <type name="_Value__data__union"/>
16792+ </array>
16793+ </field>
16794+ <method name="copy" c:identifier="g_value_copy">
16795+ <doc xml:space="preserve"
16796+ filename="gobject-2.0.c"
16797+ line="6852">Copies the value of @src_value into @dest_value.</doc>
16798+ <source-position filename="gvalue.h" line="136"/>
16799+ <return-value transfer-ownership="none">
16800+ <type name="none" c:type="void"/>
16801+ </return-value>
16802+ <parameters>
16803+ <instance-parameter name="src_value" transfer-ownership="none">
16804+ <doc xml:space="preserve"
16805+ filename="gobject-2.0.c"
16806+ line="6854">An initialized #GValue structure.</doc>
16807+ <type name="Value" c:type="const GValue*"/>
16808+ </instance-parameter>
16809+ <parameter name="dest_value" transfer-ownership="none">
16810+ <doc xml:space="preserve"
16811+ filename="gobject-2.0.c"
16812+ line="6855">An initialized #GValue structure of the same type as @src_value.</doc>
16813+ <type name="Value" c:type="GValue*"/>
16814+ </parameter>
16815+ </parameters>
16816+ </method>
16817+ <method name="dup_boxed"
16818+ c:identifier="g_value_dup_boxed"
16819+ introspectable="0">
16820+ <doc xml:space="preserve"
16821+ filename="gobject-2.0.c"
16822+ line="6861">Get the contents of a %G_TYPE_BOXED derived #GValue. Upon getting,
16823+the boxed value is duplicated and needs to be later freed with
16824+g_boxed_free(), e.g. like: g_boxed_free (G_VALUE_TYPE (@value),
16825+return_value);</doc>
16826+ <source-position filename="gboxed.h" line="90"/>
16827+ <return-value transfer-ownership="none" nullable="1">
16828+ <doc xml:space="preserve"
16829+ filename="gobject-2.0.c"
16830+ line="6870">boxed contents of @value</doc>
16831+ <type name="gpointer" c:type="gpointer"/>
16832+ </return-value>
16833+ <parameters>
16834+ <instance-parameter name="value" transfer-ownership="none">
16835+ <doc xml:space="preserve"
16836+ filename="gobject-2.0.c"
16837+ line="6863">a valid #GValue of %G_TYPE_BOXED derived type</doc>
16838+ <type name="Value" c:type="const GValue*"/>
16839+ </instance-parameter>
16840+ </parameters>
16841+ </method>
16842+ <method name="dup_object" c:identifier="g_value_dup_object">
16843+ <doc xml:space="preserve"
16844+ filename="gobject-2.0.c"
16845+ line="6874">Get the contents of a %G_TYPE_OBJECT derived #GValue, increasing
16846+its reference count. If the contents of the #GValue are %NULL, then
16847+%NULL will be returned.</doc>
16848+ <source-position filename="gobject.h" line="649"/>
16849+ <return-value transfer-ownership="full">
16850+ <doc xml:space="preserve"
16851+ filename="gobject-2.0.c"
16852+ line="6882">object content of @value,
16853+ should be unreferenced when no longer needed.</doc>
16854+ <type name="Object" c:type="gpointer"/>
16855+ </return-value>
16856+ <parameters>
16857+ <instance-parameter name="value" transfer-ownership="none">
16858+ <doc xml:space="preserve"
16859+ filename="gobject-2.0.c"
16860+ line="6876">a valid #GValue whose type is derived from %G_TYPE_OBJECT</doc>
16861+ <type name="Value" c:type="const GValue*"/>
16862+ </instance-parameter>
16863+ </parameters>
16864+ </method>
16865+ <method name="dup_param"
16866+ c:identifier="g_value_dup_param"
16867+ introspectable="0">
16868+ <doc xml:space="preserve"
16869+ filename="gobject-2.0.c"
16870+ line="6887">Get the contents of a %G_TYPE_PARAM #GValue, increasing its
16871+reference count.</doc>
16872+ <source-position filename="gparam.h" line="337"/>
16873+ <return-value transfer-ownership="full">
16874+ <doc xml:space="preserve"
16875+ filename="gobject-2.0.c"
16876+ line="6894">#GParamSpec content of @value, should be
16877+ unreferenced when no longer needed.</doc>
16878+ <type name="ParamSpec" c:type="GParamSpec*"/>
16879+ </return-value>
16880+ <parameters>
16881+ <instance-parameter name="value" transfer-ownership="none">
16882+ <doc xml:space="preserve"
16883+ filename="gobject-2.0.c"
16884+ line="6889">a valid #GValue whose type is derived from %G_TYPE_PARAM</doc>
16885+ <type name="Value" c:type="const GValue*"/>
16886+ </instance-parameter>
16887+ </parameters>
16888+ </method>
16889+ <method name="dup_string" c:identifier="g_value_dup_string">
16890+ <doc xml:space="preserve"
16891+ filename="gobject-2.0.c"
16892+ line="6899">Get a copy the contents of a %G_TYPE_STRING #GValue.</doc>
16893+ <source-position filename="gvaluetypes.h" line="263"/>
16894+ <return-value transfer-ownership="full">
16895+ <doc xml:space="preserve"
16896+ filename="gobject-2.0.c"
16897+ line="6905">a newly allocated copy of the string content of @value</doc>
16898+ <type name="utf8" c:type="gchar*"/>
16899+ </return-value>
16900+ <parameters>
16901+ <instance-parameter name="value" transfer-ownership="none">
16902+ <doc xml:space="preserve"
16903+ filename="gobject-2.0.c"
16904+ line="6901">a valid #GValue of type %G_TYPE_STRING</doc>
16905+ <type name="Value" c:type="const GValue*"/>
16906+ </instance-parameter>
16907+ </parameters>
16908+ </method>
16909+ <method name="dup_variant"
16910+ c:identifier="g_value_dup_variant"
16911+ version="2.26">
16912+ <doc xml:space="preserve"
16913+ filename="gobject-2.0.c"
16914+ line="6909">Get the contents of a variant #GValue, increasing its refcount. The returned
16915+#GVariant is never floating.</doc>
16916+ <source-position filename="gvaluetypes.h" line="285"/>
16917+ <return-value transfer-ownership="full" nullable="1">
16918+ <doc xml:space="preserve"
16919+ filename="gobject-2.0.c"
16920+ line="6916">variant contents of @value (may be %NULL);
16921+ should be unreffed using g_variant_unref() when no longer needed</doc>
16922+ <type name="GLib.Variant" c:type="GVariant*"/>
16923+ </return-value>
16924+ <parameters>
16925+ <instance-parameter name="value" transfer-ownership="none">
16926+ <doc xml:space="preserve"
16927+ filename="gobject-2.0.c"
16928+ line="6911">a valid #GValue of type %G_TYPE_VARIANT</doc>
16929+ <type name="Value" c:type="const GValue*"/>
16930+ </instance-parameter>
16931+ </parameters>
16932+ </method>
16933+ <method name="fits_pointer" c:identifier="g_value_fits_pointer">
16934+ <doc xml:space="preserve"
16935+ filename="gobject-2.0.c"
16936+ line="6922">Determines if @value will fit inside the size of a pointer value.
16937+This is an internal function introduced mainly for C marshallers.</doc>
16938+ <source-position filename="gvalue.h" line="152"/>
16939+ <return-value transfer-ownership="none">
16940+ <doc xml:space="preserve"
16941+ filename="gobject-2.0.c"
16942+ line="6929">%TRUE if @value will fit inside a pointer value.</doc>
16943+ <type name="gboolean" c:type="gboolean"/>
16944+ </return-value>
16945+ <parameters>
16946+ <instance-parameter name="value" transfer-ownership="none">
16947+ <doc xml:space="preserve"
16948+ filename="gobject-2.0.c"
16949+ line="6924">An initialized #GValue structure.</doc>
16950+ <type name="Value" c:type="const GValue*"/>
16951+ </instance-parameter>
16952+ </parameters>
16953+ </method>
16954+ <method name="get_boolean" c:identifier="g_value_get_boolean">
16955+ <doc xml:space="preserve"
16956+ filename="gobject-2.0.c"
16957+ line="6933">Get the contents of a %G_TYPE_BOOLEAN #GValue.</doc>
16958+ <source-position filename="gvaluetypes.h" line="210"/>
16959+ <return-value transfer-ownership="none">
16960+ <doc xml:space="preserve"
16961+ filename="gobject-2.0.c"
16962+ line="6939">boolean contents of @value</doc>
16963+ <type name="gboolean" c:type="gboolean"/>
16964+ </return-value>
16965+ <parameters>
16966+ <instance-parameter name="value" transfer-ownership="none">
16967+ <doc xml:space="preserve"
16968+ filename="gobject-2.0.c"
16969+ line="6935">a valid #GValue of type %G_TYPE_BOOLEAN</doc>
16970+ <type name="Value" c:type="const GValue*"/>
16971+ </instance-parameter>
16972+ </parameters>
16973+ </method>
16974+ <method name="get_boxed" c:identifier="g_value_get_boxed">
16975+ <doc xml:space="preserve"
16976+ filename="gobject-2.0.c"
16977+ line="6943">Get the contents of a %G_TYPE_BOXED derived #GValue.</doc>
16978+ <source-position filename="gboxed.h" line="88"/>
16979+ <return-value transfer-ownership="none" nullable="1">
16980+ <doc xml:space="preserve"
16981+ filename="gobject-2.0.c"
16982+ line="6949">boxed contents of @value</doc>
16983+ <type name="gpointer" c:type="gpointer"/>
16984+ </return-value>
16985+ <parameters>
16986+ <instance-parameter name="value" transfer-ownership="none">
16987+ <doc xml:space="preserve"
16988+ filename="gobject-2.0.c"
16989+ line="6945">a valid #GValue of %G_TYPE_BOXED derived type</doc>
16990+ <type name="Value" c:type="const GValue*"/>
16991+ </instance-parameter>
16992+ </parameters>
16993+ </method>
16994+ <method name="get_char"
16995+ c:identifier="g_value_get_char"
16996+ deprecated="1"
16997+ deprecated-version="2.32">
16998+ <doc xml:space="preserve"
16999+ filename="gobject-2.0.c"
17000+ line="6953">Do not use this function; it is broken on platforms where the %char
17001+type is unsigned, such as ARM and PowerPC. See g_value_get_schar().
17002+
17003+Get the contents of a %G_TYPE_CHAR #GValue.</doc>
17004+ <doc-deprecated xml:space="preserve">This function's return type is broken, see g_value_get_schar()</doc-deprecated>
17005+ <source-position filename="gvaluetypes.h" line="195"/>
17006+ <return-value transfer-ownership="none">
17007+ <doc xml:space="preserve"
17008+ filename="gobject-2.0.c"
17009+ line="6962">character contents of @value</doc>
17010+ <type name="gchar" c:type="gchar"/>
17011+ </return-value>
17012+ <parameters>
17013+ <instance-parameter name="value" transfer-ownership="none">
17014+ <doc xml:space="preserve"
17015+ filename="gobject-2.0.c"
17016+ line="6955">a valid #GValue of type %G_TYPE_CHAR</doc>
17017+ <type name="Value" c:type="const GValue*"/>
17018+ </instance-parameter>
17019+ </parameters>
17020+ </method>
17021+ <method name="get_double" c:identifier="g_value_get_double">
17022+ <doc xml:space="preserve"
17023+ filename="gobject-2.0.c"
17024+ line="6967">Get the contents of a %G_TYPE_DOUBLE #GValue.</doc>
17025+ <source-position filename="gvaluetypes.h" line="250"/>
17026+ <return-value transfer-ownership="none">
17027+ <doc xml:space="preserve"
17028+ filename="gobject-2.0.c"
17029+ line="6973">double contents of @value</doc>
17030+ <type name="gdouble" c:type="gdouble"/>
17031+ </return-value>
17032+ <parameters>
17033+ <instance-parameter name="value" transfer-ownership="none">
17034+ <doc xml:space="preserve"
17035+ filename="gobject-2.0.c"
17036+ line="6969">a valid #GValue of type %G_TYPE_DOUBLE</doc>
17037+ <type name="Value" c:type="const GValue*"/>
17038+ </instance-parameter>
17039+ </parameters>
17040+ </method>
17041+ <method name="get_enum" c:identifier="g_value_get_enum">
17042+ <doc xml:space="preserve"
17043+ filename="gobject-2.0.c"
17044+ line="6977">Get the contents of a %G_TYPE_ENUM #GValue.</doc>
17045+ <source-position filename="genums.h" line="246"/>
17046+ <return-value transfer-ownership="none">
17047+ <doc xml:space="preserve"
17048+ filename="gobject-2.0.c"
17049+ line="6983">enum contents of @value</doc>
17050+ <type name="gint" c:type="gint"/>
17051+ </return-value>
17052+ <parameters>
17053+ <instance-parameter name="value" transfer-ownership="none">
17054+ <doc xml:space="preserve"
17055+ filename="gobject-2.0.c"
17056+ line="6979">a valid #GValue whose type is derived from %G_TYPE_ENUM</doc>
17057+ <type name="Value" c:type="const GValue*"/>
17058+ </instance-parameter>
17059+ </parameters>
17060+ </method>
17061+ <method name="get_flags" c:identifier="g_value_get_flags">
17062+ <doc xml:space="preserve"
17063+ filename="gobject-2.0.c"
17064+ line="6987">Get the contents of a %G_TYPE_FLAGS #GValue.</doc>
17065+ <source-position filename="genums.h" line="251"/>
17066+ <return-value transfer-ownership="none">
17067+ <doc xml:space="preserve"
17068+ filename="gobject-2.0.c"
17069+ line="6993">flags contents of @value</doc>
17070+ <type name="guint" c:type="guint"/>
17071+ </return-value>
17072+ <parameters>
17073+ <instance-parameter name="value" transfer-ownership="none">
17074+ <doc xml:space="preserve"
17075+ filename="gobject-2.0.c"
17076+ line="6989">a valid #GValue whose type is derived from %G_TYPE_FLAGS</doc>
17077+ <type name="Value" c:type="const GValue*"/>
17078+ </instance-parameter>
17079+ </parameters>
17080+ </method>
17081+ <method name="get_float" c:identifier="g_value_get_float">
17082+ <doc xml:space="preserve"
17083+ filename="gobject-2.0.c"
17084+ line="6997">Get the contents of a %G_TYPE_FLOAT #GValue.</doc>
17085+ <source-position filename="gvaluetypes.h" line="245"/>
17086+ <return-value transfer-ownership="none">
17087+ <doc xml:space="preserve"
17088+ filename="gobject-2.0.c"
17089+ line="7003">float contents of @value</doc>
17090+ <type name="gfloat" c:type="gfloat"/>
17091+ </return-value>
17092+ <parameters>
17093+ <instance-parameter name="value" transfer-ownership="none">
17094+ <doc xml:space="preserve"
17095+ filename="gobject-2.0.c"
17096+ line="6999">a valid #GValue of type %G_TYPE_FLOAT</doc>
17097+ <type name="Value" c:type="const GValue*"/>
17098+ </instance-parameter>
17099+ </parameters>
17100+ </method>
17101+ <method name="get_gtype" c:identifier="g_value_get_gtype" version="2.12">
17102+ <doc xml:space="preserve"
17103+ filename="gobject-2.0.c"
17104+ line="7007">Get the contents of a %G_TYPE_GTYPE #GValue.</doc>
17105+ <source-position filename="gvaluetypes.h" line="275"/>
17106+ <return-value transfer-ownership="none">
17107+ <doc xml:space="preserve"
17108+ filename="gobject-2.0.c"
17109+ line="7014">the #GType stored in @value</doc>
17110+ <type name="GType" c:type="GType"/>
17111+ </return-value>
17112+ <parameters>
17113+ <instance-parameter name="value" transfer-ownership="none">
17114+ <doc xml:space="preserve"
17115+ filename="gobject-2.0.c"
17116+ line="7009">a valid #GValue of type %G_TYPE_GTYPE</doc>
17117+ <type name="Value" c:type="const GValue*"/>
17118+ </instance-parameter>
17119+ </parameters>
17120+ </method>
17121+ <method name="get_int" c:identifier="g_value_get_int">
17122+ <doc xml:space="preserve"
17123+ filename="gobject-2.0.c"
17124+ line="7018">Get the contents of a %G_TYPE_INT #GValue.</doc>
17125+ <source-position filename="gvaluetypes.h" line="215"/>
17126+ <return-value transfer-ownership="none">
17127+ <doc xml:space="preserve"
17128+ filename="gobject-2.0.c"
17129+ line="7024">integer contents of @value</doc>
17130+ <type name="gint" c:type="gint"/>
17131+ </return-value>
17132+ <parameters>
17133+ <instance-parameter name="value" transfer-ownership="none">
17134+ <doc xml:space="preserve"
17135+ filename="gobject-2.0.c"
17136+ line="7020">a valid #GValue of type %G_TYPE_INT</doc>
17137+ <type name="Value" c:type="const GValue*"/>
17138+ </instance-parameter>
17139+ </parameters>
17140+ </method>
17141+ <method name="get_int64" c:identifier="g_value_get_int64">
17142+ <doc xml:space="preserve"
17143+ filename="gobject-2.0.c"
17144+ line="7028">Get the contents of a %G_TYPE_INT64 #GValue.</doc>
17145+ <source-position filename="gvaluetypes.h" line="235"/>
17146+ <return-value transfer-ownership="none">
17147+ <doc xml:space="preserve"
17148+ filename="gobject-2.0.c"
17149+ line="7034">64bit integer contents of @value</doc>
17150+ <type name="gint64" c:type="gint64"/>
17151+ </return-value>
17152+ <parameters>
17153+ <instance-parameter name="value" transfer-ownership="none">
17154+ <doc xml:space="preserve"
17155+ filename="gobject-2.0.c"
17156+ line="7030">a valid #GValue of type %G_TYPE_INT64</doc>
17157+ <type name="Value" c:type="const GValue*"/>
17158+ </instance-parameter>
17159+ </parameters>
17160+ </method>
17161+ <method name="get_long" c:identifier="g_value_get_long">
17162+ <doc xml:space="preserve"
17163+ filename="gobject-2.0.c"
17164+ line="7038">Get the contents of a %G_TYPE_LONG #GValue.</doc>
17165+ <source-position filename="gvaluetypes.h" line="225"/>
17166+ <return-value transfer-ownership="none">
17167+ <doc xml:space="preserve"
17168+ filename="gobject-2.0.c"
17169+ line="7044">long integer contents of @value</doc>
17170+ <type name="glong" c:type="glong"/>
17171+ </return-value>
17172+ <parameters>
17173+ <instance-parameter name="value" transfer-ownership="none">
17174+ <doc xml:space="preserve"
17175+ filename="gobject-2.0.c"
17176+ line="7040">a valid #GValue of type %G_TYPE_LONG</doc>
17177+ <type name="Value" c:type="const GValue*"/>
17178+ </instance-parameter>
17179+ </parameters>
17180+ </method>
17181+ <method name="get_object" c:identifier="g_value_get_object">
17182+ <doc xml:space="preserve"
17183+ filename="gobject-2.0.c"
17184+ line="7048">Get the contents of a %G_TYPE_OBJECT derived #GValue.</doc>
17185+ <source-position filename="gobject.h" line="647"/>
17186+ <return-value transfer-ownership="none">
17187+ <doc xml:space="preserve"
17188+ filename="gobject-2.0.c"
17189+ line="7054">object contents of @value</doc>
17190+ <type name="Object" c:type="gpointer"/>
17191+ </return-value>
17192+ <parameters>
17193+ <instance-parameter name="value" transfer-ownership="none">
17194+ <doc xml:space="preserve"
17195+ filename="gobject-2.0.c"
17196+ line="7050">a valid #GValue of %G_TYPE_OBJECT derived type</doc>
17197+ <type name="Value" c:type="const GValue*"/>
17198+ </instance-parameter>
17199+ </parameters>
17200+ </method>
17201+ <method name="get_param" c:identifier="g_value_get_param">
17202+ <doc xml:space="preserve"
17203+ filename="gobject-2.0.c"
17204+ line="7058">Get the contents of a %G_TYPE_PARAM #GValue.</doc>
17205+ <source-position filename="gparam.h" line="335"/>
17206+ <return-value transfer-ownership="none">
17207+ <doc xml:space="preserve"
17208+ filename="gobject-2.0.c"
17209+ line="7064">#GParamSpec content of @value</doc>
17210+ <type name="ParamSpec" c:type="GParamSpec*"/>
17211+ </return-value>
17212+ <parameters>
17213+ <instance-parameter name="value" transfer-ownership="none">
17214+ <doc xml:space="preserve"
17215+ filename="gobject-2.0.c"
17216+ line="7060">a valid #GValue whose type is derived from %G_TYPE_PARAM</doc>
17217+ <type name="Value" c:type="const GValue*"/>
17218+ </instance-parameter>
17219+ </parameters>
17220+ </method>
17221+ <method name="get_pointer" c:identifier="g_value_get_pointer">
17222+ <doc xml:space="preserve"
17223+ filename="gobject-2.0.c"
17224+ line="7068">Get the contents of a pointer #GValue.</doc>
17225+ <source-position filename="gvaluetypes.h" line="268"/>
17226+ <return-value transfer-ownership="none" nullable="1">
17227+ <doc xml:space="preserve"
17228+ filename="gobject-2.0.c"
17229+ line="7074">pointer contents of @value</doc>
17230+ <type name="gpointer" c:type="gpointer"/>
17231+ </return-value>
17232+ <parameters>
17233+ <instance-parameter name="value" transfer-ownership="none">
17234+ <doc xml:space="preserve"
17235+ filename="gobject-2.0.c"
17236+ line="7070">a valid #GValue of %G_TYPE_POINTER</doc>
17237+ <type name="Value" c:type="const GValue*"/>
17238+ </instance-parameter>
17239+ </parameters>
17240+ </method>
17241+ <method name="get_schar" c:identifier="g_value_get_schar" version="2.32">
17242+ <doc xml:space="preserve"
17243+ filename="gobject-2.0.c"
17244+ line="7078">Get the contents of a %G_TYPE_CHAR #GValue.</doc>
17245+ <source-position filename="gvaluetypes.h" line="200"/>
17246+ <return-value transfer-ownership="none">
17247+ <doc xml:space="preserve"
17248+ filename="gobject-2.0.c"
17249+ line="7084">signed 8 bit integer contents of @value</doc>
17250+ <type name="gint8" c:type="gint8"/>
17251+ </return-value>
17252+ <parameters>
17253+ <instance-parameter name="value" transfer-ownership="none">
17254+ <doc xml:space="preserve"
17255+ filename="gobject-2.0.c"
17256+ line="7080">a valid #GValue of type %G_TYPE_CHAR</doc>
17257+ <type name="Value" c:type="const GValue*"/>
17258+ </instance-parameter>
17259+ </parameters>
17260+ </method>
17261+ <method name="get_string" c:identifier="g_value_get_string">
17262+ <doc xml:space="preserve"
17263+ filename="gobject-2.0.c"
17264+ line="7089">Get the contents of a %G_TYPE_STRING #GValue.</doc>
17265+ <source-position filename="gvaluetypes.h" line="261"/>
17266+ <return-value transfer-ownership="none">
17267+ <doc xml:space="preserve"
17268+ filename="gobject-2.0.c"
17269+ line="7095">string content of @value</doc>
17270+ <type name="utf8" c:type="const gchar*"/>
17271+ </return-value>
17272+ <parameters>
17273+ <instance-parameter name="value" transfer-ownership="none">
17274+ <doc xml:space="preserve"
17275+ filename="gobject-2.0.c"
17276+ line="7091">a valid #GValue of type %G_TYPE_STRING</doc>
17277+ <type name="Value" c:type="const GValue*"/>
17278+ </instance-parameter>
17279+ </parameters>
17280+ </method>
17281+ <method name="get_uchar" c:identifier="g_value_get_uchar">
17282+ <doc xml:space="preserve"
17283+ filename="gobject-2.0.c"
17284+ line="7099">Get the contents of a %G_TYPE_UCHAR #GValue.</doc>
17285+ <source-position filename="gvaluetypes.h" line="205"/>
17286+ <return-value transfer-ownership="none">
17287+ <doc xml:space="preserve"
17288+ filename="gobject-2.0.c"
17289+ line="7105">unsigned character contents of @value</doc>
17290+ <type name="guint8" c:type="guchar"/>
17291+ </return-value>
17292+ <parameters>
17293+ <instance-parameter name="value" transfer-ownership="none">
17294+ <doc xml:space="preserve"
17295+ filename="gobject-2.0.c"
17296+ line="7101">a valid #GValue of type %G_TYPE_UCHAR</doc>
17297+ <type name="Value" c:type="const GValue*"/>
17298+ </instance-parameter>
17299+ </parameters>
17300+ </method>
17301+ <method name="get_uint" c:identifier="g_value_get_uint">
17302+ <doc xml:space="preserve"
17303+ filename="gobject-2.0.c"
17304+ line="7109">Get the contents of a %G_TYPE_UINT #GValue.</doc>
17305+ <source-position filename="gvaluetypes.h" line="220"/>
17306+ <return-value transfer-ownership="none">
17307+ <doc xml:space="preserve"
17308+ filename="gobject-2.0.c"
17309+ line="7115">unsigned integer contents of @value</doc>
17310+ <type name="guint" c:type="guint"/>
17311+ </return-value>
17312+ <parameters>
17313+ <instance-parameter name="value" transfer-ownership="none">
17314+ <doc xml:space="preserve"
17315+ filename="gobject-2.0.c"
17316+ line="7111">a valid #GValue of type %G_TYPE_UINT</doc>
17317+ <type name="Value" c:type="const GValue*"/>
17318+ </instance-parameter>
17319+ </parameters>
17320+ </method>
17321+ <method name="get_uint64" c:identifier="g_value_get_uint64">
17322+ <doc xml:space="preserve"
17323+ filename="gobject-2.0.c"
17324+ line="7119">Get the contents of a %G_TYPE_UINT64 #GValue.</doc>
17325+ <source-position filename="gvaluetypes.h" line="240"/>
17326+ <return-value transfer-ownership="none">
17327+ <doc xml:space="preserve"
17328+ filename="gobject-2.0.c"
17329+ line="7125">unsigned 64bit integer contents of @value</doc>
17330+ <type name="guint64" c:type="guint64"/>
17331+ </return-value>
17332+ <parameters>
17333+ <instance-parameter name="value" transfer-ownership="none">
17334+ <doc xml:space="preserve"
17335+ filename="gobject-2.0.c"
17336+ line="7121">a valid #GValue of type %G_TYPE_UINT64</doc>
17337+ <type name="Value" c:type="const GValue*"/>
17338+ </instance-parameter>
17339+ </parameters>
17340+ </method>
17341+ <method name="get_ulong" c:identifier="g_value_get_ulong">
17342+ <doc xml:space="preserve"
17343+ filename="gobject-2.0.c"
17344+ line="7129">Get the contents of a %G_TYPE_ULONG #GValue.</doc>
17345+ <source-position filename="gvaluetypes.h" line="230"/>
17346+ <return-value transfer-ownership="none">
17347+ <doc xml:space="preserve"
17348+ filename="gobject-2.0.c"
17349+ line="7135">unsigned long integer contents of @value</doc>
17350+ <type name="gulong" c:type="gulong"/>
17351+ </return-value>
17352+ <parameters>
17353+ <instance-parameter name="value" transfer-ownership="none">
17354+ <doc xml:space="preserve"
17355+ filename="gobject-2.0.c"
17356+ line="7131">a valid #GValue of type %G_TYPE_ULONG</doc>
17357+ <type name="Value" c:type="const GValue*"/>
17358+ </instance-parameter>
17359+ </parameters>
17360+ </method>
17361+ <method name="get_variant"
17362+ c:identifier="g_value_get_variant"
17363+ version="2.26">
17364+ <doc xml:space="preserve"
17365+ filename="gobject-2.0.c"
17366+ line="7139">Get the contents of a variant #GValue.</doc>
17367+ <source-position filename="gvaluetypes.h" line="283"/>
17368+ <return-value transfer-ownership="none" nullable="1">
17369+ <doc xml:space="preserve"
17370+ filename="gobject-2.0.c"
17371+ line="7145">variant contents of @value (may be %NULL)</doc>
17372+ <type name="GLib.Variant" c:type="GVariant*"/>
17373+ </return-value>
17374+ <parameters>
17375+ <instance-parameter name="value" transfer-ownership="none">
17376+ <doc xml:space="preserve"
17377+ filename="gobject-2.0.c"
17378+ line="7141">a valid #GValue of type %G_TYPE_VARIANT</doc>
17379+ <type name="Value" c:type="const GValue*"/>
17380+ </instance-parameter>
17381+ </parameters>
17382+ </method>
17383+ <method name="init" c:identifier="g_value_init">
17384+ <doc xml:space="preserve"
17385+ filename="gobject-2.0.c"
17386+ line="7150">Initializes @value with the default value of @type.</doc>
17387+ <source-position filename="gvalue.h" line="133"/>
17388+ <return-value transfer-ownership="none">
17389+ <doc xml:space="preserve"
17390+ filename="gobject-2.0.c"
17391+ line="7157">the #GValue structure that has been passed in</doc>
17392+ <type name="Value" c:type="GValue*"/>
17393+ </return-value>
17394+ <parameters>
17395+ <instance-parameter name="value" transfer-ownership="none">
17396+ <doc xml:space="preserve"
17397+ filename="gobject-2.0.c"
17398+ line="7152">A zero-filled (uninitialized) #GValue structure.</doc>
17399+ <type name="Value" c:type="GValue*"/>
17400+ </instance-parameter>
17401+ <parameter name="g_type" transfer-ownership="none">
17402+ <doc xml:space="preserve"
17403+ filename="gobject-2.0.c"
17404+ line="7153">Type the #GValue should hold values of.</doc>
17405+ <type name="GType" c:type="GType"/>
17406+ </parameter>
17407+ </parameters>
17408+ </method>
17409+ <method name="init_from_instance"
17410+ c:identifier="g_value_init_from_instance"
17411+ version="2.42">
17412+ <doc xml:space="preserve"
17413+ filename="gobject-2.0.c"
17414+ line="7161">Initializes and sets @value from an instantiatable type via the
17415+value_table's collect_value() function.
17416+
17417+Note: The @value will be initialised with the exact type of
17418+@instance. If you wish to set the @value's type to a different GType
17419+(such as a parent class GType), you need to manually call
17420+g_value_init() and g_value_set_instance().</doc>
17421+ <source-position filename="gvalue.h" line="146"/>
17422+ <return-value transfer-ownership="none">
17423+ <type name="none" c:type="void"/>
17424+ </return-value>
17425+ <parameters>
17426+ <instance-parameter name="value" transfer-ownership="none">
17427+ <doc xml:space="preserve"
17428+ filename="gobject-2.0.c"
17429+ line="7163">An uninitialized #GValue structure.</doc>
17430+ <type name="Value" c:type="GValue*"/>
17431+ </instance-parameter>
17432+ <parameter name="instance" transfer-ownership="none">
17433+ <doc xml:space="preserve"
17434+ filename="gobject-2.0.c"
17435+ line="7164">the instance</doc>
17436+ <type name="TypeInstance" c:type="gpointer"/>
17437+ </parameter>
17438+ </parameters>
17439+ </method>
17440+ <method name="peek_pointer" c:identifier="g_value_peek_pointer">
17441+ <doc xml:space="preserve"
17442+ filename="gobject-2.0.c"
17443+ line="7178">Returns the value contents as pointer. This function asserts that
17444+g_value_fits_pointer() returned %TRUE for the passed in value.
17445+This is an internal function introduced mainly for C marshallers.</doc>
17446+ <source-position filename="gvalue.h" line="154"/>
17447+ <return-value transfer-ownership="none" nullable="1">
17448+ <doc xml:space="preserve"
17449+ filename="gobject-2.0.c"
17450+ line="7186">the value contents as pointer</doc>
17451+ <type name="gpointer" c:type="gpointer"/>
17452+ </return-value>
17453+ <parameters>
17454+ <instance-parameter name="value" transfer-ownership="none">
17455+ <doc xml:space="preserve"
17456+ filename="gobject-2.0.c"
17457+ line="7180">An initialized #GValue structure</doc>
17458+ <type name="Value" c:type="const GValue*"/>
17459+ </instance-parameter>
17460+ </parameters>
17461+ </method>
17462+ <method name="reset" c:identifier="g_value_reset">
17463+ <doc xml:space="preserve"
17464+ filename="gobject-2.0.c"
17465+ line="7203">Clears the current value in @value and resets it to the default value
17466+(as if the value had just been initialized).</doc>
17467+ <source-position filename="gvalue.h" line="139"/>
17468+ <return-value transfer-ownership="full">
17469+ <doc xml:space="preserve"
17470+ filename="gobject-2.0.c"
17471+ line="7210">the #GValue structure that has been passed in</doc>
17472+ <type name="Value" c:type="GValue*"/>
17473+ </return-value>
17474+ <parameters>
17475+ <instance-parameter name="value" transfer-ownership="none">
17476+ <doc xml:space="preserve"
17477+ filename="gobject-2.0.c"
17478+ line="7205">An initialized #GValue structure.</doc>
17479+ <type name="Value" c:type="GValue*"/>
17480+ </instance-parameter>
17481+ </parameters>
17482+ </method>
17483+ <method name="set_boolean" c:identifier="g_value_set_boolean">
17484+ <doc xml:space="preserve"
17485+ filename="gobject-2.0.c"
17486+ line="7214">Set the contents of a %G_TYPE_BOOLEAN #GValue to @v_boolean.</doc>
17487+ <source-position filename="gvaluetypes.h" line="207"/>
17488+ <return-value transfer-ownership="none">
17489+ <type name="none" c:type="void"/>
17490+ </return-value>
17491+ <parameters>
17492+ <instance-parameter name="value" transfer-ownership="none">
17493+ <doc xml:space="preserve"
17494+ filename="gobject-2.0.c"
17495+ line="7216">a valid #GValue of type %G_TYPE_BOOLEAN</doc>
17496+ <type name="Value" c:type="GValue*"/>
17497+ </instance-parameter>
17498+ <parameter name="v_boolean" transfer-ownership="none">
17499+ <doc xml:space="preserve"
17500+ filename="gobject-2.0.c"
17501+ line="7217">boolean value to be set</doc>
17502+ <type name="gboolean" c:type="gboolean"/>
17503+ </parameter>
17504+ </parameters>
17505+ </method>
17506+ <method name="set_boxed" c:identifier="g_value_set_boxed">
17507+ <doc xml:space="preserve"
17508+ filename="gobject-2.0.c"
17509+ line="7223">Set the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed.</doc>
17510+ <source-position filename="gboxed.h" line="76"/>
17511+ <return-value transfer-ownership="none">
17512+ <type name="none" c:type="void"/>
17513+ </return-value>
17514+ <parameters>
17515+ <instance-parameter name="value" transfer-ownership="none">
17516+ <doc xml:space="preserve"
17517+ filename="gobject-2.0.c"
17518+ line="7225">a valid #GValue of %G_TYPE_BOXED derived type</doc>
17519+ <type name="Value" c:type="GValue*"/>
17520+ </instance-parameter>
17521+ <parameter name="v_boxed"
17522+ transfer-ownership="none"
17523+ nullable="1"
17524+ allow-none="1">
17525+ <doc xml:space="preserve"
17526+ filename="gobject-2.0.c"
17527+ line="7226">boxed value to be set</doc>
17528+ <type name="gpointer" c:type="gconstpointer"/>
17529+ </parameter>
17530+ </parameters>
17531+ </method>
17532+ <method name="set_boxed_take_ownership"
17533+ c:identifier="g_value_set_boxed_take_ownership"
17534+ deprecated="1"
17535+ deprecated-version="2.4">
17536+ <doc xml:space="preserve"
17537+ filename="gobject-2.0.c"
17538+ line="7232">This is an internal function introduced mainly for C marshallers.</doc>
17539+ <doc-deprecated xml:space="preserve">Use g_value_take_boxed() instead.</doc-deprecated>
17540+ <source-position filename="gboxed.h" line="85"/>
17541+ <return-value transfer-ownership="none">
17542+ <type name="none" c:type="void"/>
17543+ </return-value>
17544+ <parameters>
17545+ <instance-parameter name="value" transfer-ownership="none">
17546+ <doc xml:space="preserve"
17547+ filename="gobject-2.0.c"
17548+ line="7234">a valid #GValue of %G_TYPE_BOXED derived type</doc>
17549+ <type name="Value" c:type="GValue*"/>
17550+ </instance-parameter>
17551+ <parameter name="v_boxed"
17552+ transfer-ownership="none"
17553+ nullable="1"
17554+ allow-none="1">
17555+ <doc xml:space="preserve"
17556+ filename="gobject-2.0.c"
17557+ line="7235">duplicated unowned boxed value to be set</doc>
17558+ <type name="gpointer" c:type="gconstpointer"/>
17559+ </parameter>
17560+ </parameters>
17561+ </method>
17562+ <method name="set_char"
17563+ c:identifier="g_value_set_char"
17564+ deprecated="1"
17565+ deprecated-version="2.32">
17566+ <doc xml:space="preserve"
17567+ filename="gobject-2.0.c"
17568+ line="7243">Set the contents of a %G_TYPE_CHAR #GValue to @v_char.</doc>
17569+ <doc-deprecated xml:space="preserve">This function's input type is broken, see g_value_set_schar()</doc-deprecated>
17570+ <source-position filename="gvaluetypes.h" line="192"/>
17571+ <return-value transfer-ownership="none">
17572+ <type name="none" c:type="void"/>
17573+ </return-value>
17574+ <parameters>
17575+ <instance-parameter name="value" transfer-ownership="none">
17576+ <doc xml:space="preserve"
17577+ filename="gobject-2.0.c"
17578+ line="7245">a valid #GValue of type %G_TYPE_CHAR</doc>
17579+ <type name="Value" c:type="GValue*"/>
17580+ </instance-parameter>
17581+ <parameter name="v_char" transfer-ownership="none">
17582+ <doc xml:space="preserve"
17583+ filename="gobject-2.0.c"
17584+ line="7246">character value to be set</doc>
17585+ <type name="gchar" c:type="gchar"/>
17586+ </parameter>
17587+ </parameters>
17588+ </method>
17589+ <method name="set_double" c:identifier="g_value_set_double">
17590+ <doc xml:space="preserve"
17591+ filename="gobject-2.0.c"
17592+ line="7254">Set the contents of a %G_TYPE_DOUBLE #GValue to @v_double.</doc>
17593+ <source-position filename="gvaluetypes.h" line="247"/>
17594+ <return-value transfer-ownership="none">
17595+ <type name="none" c:type="void"/>
17596+ </return-value>
17597+ <parameters>
17598+ <instance-parameter name="value" transfer-ownership="none">
17599+ <doc xml:space="preserve"
17600+ filename="gobject-2.0.c"
17601+ line="7256">a valid #GValue of type %G_TYPE_DOUBLE</doc>
17602+ <type name="Value" c:type="GValue*"/>
17603+ </instance-parameter>
17604+ <parameter name="v_double" transfer-ownership="none">
17605+ <doc xml:space="preserve"
17606+ filename="gobject-2.0.c"
17607+ line="7257">double value to be set</doc>
17608+ <type name="gdouble" c:type="gdouble"/>
17609+ </parameter>
17610+ </parameters>
17611+ </method>
17612+ <method name="set_enum" c:identifier="g_value_set_enum">
17613+ <doc xml:space="preserve"
17614+ filename="gobject-2.0.c"
17615+ line="7263">Set the contents of a %G_TYPE_ENUM #GValue to @v_enum.</doc>
17616+ <source-position filename="genums.h" line="243"/>
17617+ <return-value transfer-ownership="none">
17618+ <type name="none" c:type="void"/>
17619+ </return-value>
17620+ <parameters>
17621+ <instance-parameter name="value" transfer-ownership="none">
17622+ <doc xml:space="preserve"
17623+ filename="gobject-2.0.c"
17624+ line="7265">a valid #GValue whose type is derived from %G_TYPE_ENUM</doc>
17625+ <type name="Value" c:type="GValue*"/>
17626+ </instance-parameter>
17627+ <parameter name="v_enum" transfer-ownership="none">
17628+ <doc xml:space="preserve"
17629+ filename="gobject-2.0.c"
17630+ line="7266">enum value to be set</doc>
17631+ <type name="gint" c:type="gint"/>
17632+ </parameter>
17633+ </parameters>
17634+ </method>
17635+ <method name="set_flags" c:identifier="g_value_set_flags">
17636+ <doc xml:space="preserve"
17637+ filename="gobject-2.0.c"
17638+ line="7272">Set the contents of a %G_TYPE_FLAGS #GValue to @v_flags.</doc>
17639+ <source-position filename="genums.h" line="248"/>
17640+ <return-value transfer-ownership="none">
17641+ <type name="none" c:type="void"/>
17642+ </return-value>
17643+ <parameters>
17644+ <instance-parameter name="value" transfer-ownership="none">
17645+ <doc xml:space="preserve"
17646+ filename="gobject-2.0.c"
17647+ line="7274">a valid #GValue whose type is derived from %G_TYPE_FLAGS</doc>
17648+ <type name="Value" c:type="GValue*"/>
17649+ </instance-parameter>
17650+ <parameter name="v_flags" transfer-ownership="none">
17651+ <doc xml:space="preserve"
17652+ filename="gobject-2.0.c"
17653+ line="7275">flags value to be set</doc>
17654+ <type name="guint" c:type="guint"/>
17655+ </parameter>
17656+ </parameters>
17657+ </method>
17658+ <method name="set_float" c:identifier="g_value_set_float">
17659+ <doc xml:space="preserve"
17660+ filename="gobject-2.0.c"
17661+ line="7281">Set the contents of a %G_TYPE_FLOAT #GValue to @v_float.</doc>
17662+ <source-position filename="gvaluetypes.h" line="242"/>
17663+ <return-value transfer-ownership="none">
17664+ <type name="none" c:type="void"/>
17665+ </return-value>
17666+ <parameters>
17667+ <instance-parameter name="value" transfer-ownership="none">
17668+ <doc xml:space="preserve"
17669+ filename="gobject-2.0.c"
17670+ line="7283">a valid #GValue of type %G_TYPE_FLOAT</doc>
17671+ <type name="Value" c:type="GValue*"/>
17672+ </instance-parameter>
17673+ <parameter name="v_float" transfer-ownership="none">
17674+ <doc xml:space="preserve"
17675+ filename="gobject-2.0.c"
17676+ line="7284">float value to be set</doc>
17677+ <type name="gfloat" c:type="gfloat"/>
17678+ </parameter>
17679+ </parameters>
17680+ </method>
17681+ <method name="set_gtype" c:identifier="g_value_set_gtype" version="2.12">
17682+ <doc xml:space="preserve"
17683+ filename="gobject-2.0.c"
17684+ line="7290">Set the contents of a %G_TYPE_GTYPE #GValue to @v_gtype.</doc>
17685+ <source-position filename="gvaluetypes.h" line="272"/>
17686+ <return-value transfer-ownership="none">
17687+ <type name="none" c:type="void"/>
17688+ </return-value>
17689+ <parameters>
17690+ <instance-parameter name="value" transfer-ownership="none">
17691+ <doc xml:space="preserve"
17692+ filename="gobject-2.0.c"
17693+ line="7292">a valid #GValue of type %G_TYPE_GTYPE</doc>
17694+ <type name="Value" c:type="GValue*"/>
17695+ </instance-parameter>
17696+ <parameter name="v_gtype" transfer-ownership="none">
17697+ <doc xml:space="preserve"
17698+ filename="gobject-2.0.c"
17699+ line="7293">#GType to be set</doc>
17700+ <type name="GType" c:type="GType"/>
17701+ </parameter>
17702+ </parameters>
17703+ </method>
17704+ <method name="set_instance" c:identifier="g_value_set_instance">
17705+ <doc xml:space="preserve"
17706+ filename="gobject-2.0.c"
17707+ line="7301">Sets @value from an instantiatable type via the
17708+value_table's collect_value() function.</doc>
17709+ <source-position filename="gvalue.h" line="143"/>
17710+ <return-value transfer-ownership="none">
17711+ <type name="none" c:type="void"/>
17712+ </return-value>
17713+ <parameters>
17714+ <instance-parameter name="value" transfer-ownership="none">
17715+ <doc xml:space="preserve"
17716+ filename="gobject-2.0.c"
17717+ line="7303">An initialized #GValue structure.</doc>
17718+ <type name="Value" c:type="GValue*"/>
17719+ </instance-parameter>
17720+ <parameter name="instance"
17721+ transfer-ownership="none"
17722+ nullable="1"
17723+ allow-none="1">
17724+ <doc xml:space="preserve"
17725+ filename="gobject-2.0.c"
17726+ line="7304">the instance</doc>
17727+ <type name="gpointer" c:type="gpointer"/>
17728+ </parameter>
17729+ </parameters>
17730+ </method>
17731+ <method name="set_int" c:identifier="g_value_set_int">
17732+ <doc xml:space="preserve"
17733+ filename="gobject-2.0.c"
17734+ line="7311">Set the contents of a %G_TYPE_INT #GValue to @v_int.</doc>
17735+ <source-position filename="gvaluetypes.h" line="212"/>
17736+ <return-value transfer-ownership="none">
17737+ <type name="none" c:type="void"/>
17738+ </return-value>
17739+ <parameters>
17740+ <instance-parameter name="value" transfer-ownership="none">
17741+ <doc xml:space="preserve"
17742+ filename="gobject-2.0.c"
17743+ line="7313">a valid #GValue of type %G_TYPE_INT</doc>
17744+ <type name="Value" c:type="GValue*"/>
17745+ </instance-parameter>
17746+ <parameter name="v_int" transfer-ownership="none">
17747+ <doc xml:space="preserve"
17748+ filename="gobject-2.0.c"
17749+ line="7314">integer value to be set</doc>
17750+ <type name="gint" c:type="gint"/>
17751+ </parameter>
17752+ </parameters>
17753+ </method>
17754+ <method name="set_int64" c:identifier="g_value_set_int64">
17755+ <doc xml:space="preserve"
17756+ filename="gobject-2.0.c"
17757+ line="7320">Set the contents of a %G_TYPE_INT64 #GValue to @v_int64.</doc>
17758+ <source-position filename="gvaluetypes.h" line="232"/>
17759+ <return-value transfer-ownership="none">
17760+ <type name="none" c:type="void"/>
17761+ </return-value>
17762+ <parameters>
17763+ <instance-parameter name="value" transfer-ownership="none">
17764+ <doc xml:space="preserve"
17765+ filename="gobject-2.0.c"
17766+ line="7322">a valid #GValue of type %G_TYPE_INT64</doc>
17767+ <type name="Value" c:type="GValue*"/>
17768+ </instance-parameter>
17769+ <parameter name="v_int64" transfer-ownership="none">
17770+ <doc xml:space="preserve"
17771+ filename="gobject-2.0.c"
17772+ line="7323">64bit integer value to be set</doc>
17773+ <type name="gint64" c:type="gint64"/>
17774+ </parameter>
17775+ </parameters>
17776+ </method>
17777+ <method name="set_interned_string"
17778+ c:identifier="g_value_set_interned_string"
17779+ version="2.66">
17780+ <doc xml:space="preserve"
17781+ filename="gobject-2.0.c"
17782+ line="7329">Set the contents of a %G_TYPE_STRING #GValue to @v_string. The string is
17783+assumed to be static and interned (canonical, for example from
17784+g_intern_string()), and is thus not duplicated when setting the #GValue.</doc>
17785+ <source-position filename="gvaluetypes.h" line="258"/>
17786+ <return-value transfer-ownership="none">
17787+ <type name="none" c:type="void"/>
17788+ </return-value>
17789+ <parameters>
17790+ <instance-parameter name="value" transfer-ownership="none">
17791+ <doc xml:space="preserve"
17792+ filename="gobject-2.0.c"
17793+ line="7331">a valid #GValue of type %G_TYPE_STRING</doc>
17794+ <type name="Value" c:type="GValue*"/>
17795+ </instance-parameter>
17796+ <parameter name="v_string"
17797+ transfer-ownership="none"
17798+ nullable="1"
17799+ allow-none="1">
17800+ <doc xml:space="preserve"
17801+ filename="gobject-2.0.c"
17802+ line="7332">static string to be set</doc>
17803+ <type name="utf8" c:type="const gchar*"/>
17804+ </parameter>
17805+ </parameters>
17806+ </method>
17807+ <method name="set_long" c:identifier="g_value_set_long">
17808+ <doc xml:space="preserve"
17809+ filename="gobject-2.0.c"
17810+ line="7342">Set the contents of a %G_TYPE_LONG #GValue to @v_long.</doc>
17811+ <source-position filename="gvaluetypes.h" line="222"/>
17812+ <return-value transfer-ownership="none">
17813+ <type name="none" c:type="void"/>
17814+ </return-value>
17815+ <parameters>
17816+ <instance-parameter name="value" transfer-ownership="none">
17817+ <doc xml:space="preserve"
17818+ filename="gobject-2.0.c"
17819+ line="7344">a valid #GValue of type %G_TYPE_LONG</doc>
17820+ <type name="Value" c:type="GValue*"/>
17821+ </instance-parameter>
17822+ <parameter name="v_long" transfer-ownership="none">
17823+ <doc xml:space="preserve"
17824+ filename="gobject-2.0.c"
17825+ line="7345">long integer value to be set</doc>
17826+ <type name="glong" c:type="glong"/>
17827+ </parameter>
17828+ </parameters>
17829+ </method>
17830+ <method name="set_object" c:identifier="g_value_set_object">
17831+ <doc xml:space="preserve"
17832+ filename="gobject-2.0.c"
17833+ line="7351">Set the contents of a %G_TYPE_OBJECT derived #GValue to @v_object.
17834+
17835+g_value_set_object() increases the reference count of @v_object
17836+(the #GValue holds a reference to @v_object). If you do not wish
17837+to increase the reference count of the object (i.e. you wish to
17838+pass your current reference to the #GValue because you no longer
17839+need it), use g_value_take_object() instead.
17840+
17841+It is important that your #GValue holds a reference to @v_object (either its
17842+own, or one it has taken) to ensure that the object won't be destroyed while
17843+the #GValue still exists).</doc>
17844+ <source-position filename="gobject.h" line="644"/>
17845+ <return-value transfer-ownership="none">
17846+ <type name="none" c:type="void"/>
17847+ </return-value>
17848+ <parameters>
17849+ <instance-parameter name="value" transfer-ownership="none">
17850+ <doc xml:space="preserve"
17851+ filename="gobject-2.0.c"
17852+ line="7353">a valid #GValue of %G_TYPE_OBJECT derived type</doc>
17853+ <type name="Value" c:type="GValue*"/>
17854+ </instance-parameter>
17855+ <parameter name="v_object"
17856+ transfer-ownership="none"
17857+ nullable="1"
17858+ allow-none="1">
17859+ <doc xml:space="preserve"
17860+ filename="gobject-2.0.c"
17861+ line="7354">object value to be set</doc>
17862+ <type name="Object" c:type="gpointer"/>
17863+ </parameter>
17864+ </parameters>
17865+ </method>
17866+ <method name="set_object_take_ownership"
17867+ c:identifier="g_value_set_object_take_ownership"
17868+ introspectable="0"
17869+ deprecated="1"
17870+ deprecated-version="2.4">
17871+ <doc xml:space="preserve"
17872+ filename="gobject-2.0.c"
17873+ line="7370">This is an internal function introduced mainly for C marshallers.</doc>
17874+ <doc-deprecated xml:space="preserve">Use g_value_take_object() instead.</doc-deprecated>
17875+ <source-position filename="gobject.h" line="668"/>
17876+ <return-value transfer-ownership="none">
17877+ <type name="none" c:type="void"/>
17878+ </return-value>
17879+ <parameters>
17880+ <instance-parameter name="value" transfer-ownership="none">
17881+ <doc xml:space="preserve"
17882+ filename="gobject-2.0.c"
17883+ line="7372">a valid #GValue of %G_TYPE_OBJECT derived type</doc>
17884+ <type name="Value" c:type="GValue*"/>
17885+ </instance-parameter>
17886+ <parameter name="v_object"
17887+ transfer-ownership="none"
17888+ nullable="1"
17889+ allow-none="1">
17890+ <doc xml:space="preserve"
17891+ filename="gobject-2.0.c"
17892+ line="7373">object value to be set</doc>
17893+ <type name="gpointer" c:type="gpointer"/>
17894+ </parameter>
17895+ </parameters>
17896+ </method>
17897+ <method name="set_param" c:identifier="g_value_set_param">
17898+ <doc xml:space="preserve"
17899+ filename="gobject-2.0.c"
17900+ line="7381">Set the contents of a %G_TYPE_PARAM #GValue to @param.</doc>
17901+ <source-position filename="gparam.h" line="332"/>
17902+ <return-value transfer-ownership="none">
17903+ <type name="none" c:type="void"/>
17904+ </return-value>
17905+ <parameters>
17906+ <instance-parameter name="value" transfer-ownership="none">
17907+ <doc xml:space="preserve"
17908+ filename="gobject-2.0.c"
17909+ line="7383">a valid #GValue of type %G_TYPE_PARAM</doc>
17910+ <type name="Value" c:type="GValue*"/>
17911+ </instance-parameter>
17912+ <parameter name="param"
17913+ transfer-ownership="none"
17914+ nullable="1"
17915+ allow-none="1">
17916+ <doc xml:space="preserve"
17917+ filename="gobject-2.0.c"
17918+ line="7384">the #GParamSpec to be set</doc>
17919+ <type name="ParamSpec" c:type="GParamSpec*"/>
17920+ </parameter>
17921+ </parameters>
17922+ </method>
17923+ <method name="set_param_take_ownership"
17924+ c:identifier="g_value_set_param_take_ownership"
17925+ introspectable="0"
17926+ deprecated="1"
17927+ deprecated-version="2.4">
17928+ <doc xml:space="preserve"
17929+ filename="gobject-2.0.c"
17930+ line="7390">This is an internal function introduced mainly for C marshallers.</doc>
17931+ <doc-deprecated xml:space="preserve">Use g_value_take_param() instead.</doc-deprecated>
17932+ <source-position filename="gparam.h" line="344"/>
17933+ <return-value transfer-ownership="none">
17934+ <type name="none" c:type="void"/>
17935+ </return-value>
17936+ <parameters>
17937+ <instance-parameter name="value" transfer-ownership="none">
17938+ <doc xml:space="preserve"
17939+ filename="gobject-2.0.c"
17940+ line="7392">a valid #GValue of type %G_TYPE_PARAM</doc>
17941+ <type name="Value" c:type="GValue*"/>
17942+ </instance-parameter>
17943+ <parameter name="param"
17944+ transfer-ownership="none"
17945+ nullable="1"
17946+ allow-none="1">
17947+ <doc xml:space="preserve"
17948+ filename="gobject-2.0.c"
17949+ line="7393">the #GParamSpec to be set</doc>
17950+ <type name="ParamSpec" c:type="GParamSpec*"/>
17951+ </parameter>
17952+ </parameters>
17953+ </method>
17954+ <method name="set_pointer" c:identifier="g_value_set_pointer">
17955+ <doc xml:space="preserve"
17956+ filename="gobject-2.0.c"
17957+ line="7401">Set the contents of a pointer #GValue to @v_pointer.</doc>
17958+ <source-position filename="gvaluetypes.h" line="265"/>
17959+ <return-value transfer-ownership="none">
17960+ <type name="none" c:type="void"/>
17961+ </return-value>
17962+ <parameters>
17963+ <instance-parameter name="value" transfer-ownership="none">
17964+ <doc xml:space="preserve"
17965+ filename="gobject-2.0.c"
17966+ line="7403">a valid #GValue of %G_TYPE_POINTER</doc>
17967+ <type name="Value" c:type="GValue*"/>
17968+ </instance-parameter>
17969+ <parameter name="v_pointer"
17970+ transfer-ownership="none"
17971+ nullable="1"
17972+ allow-none="1">
17973+ <doc xml:space="preserve"
17974+ filename="gobject-2.0.c"
17975+ line="7404">pointer value to be set</doc>
17976+ <type name="gpointer" c:type="gpointer"/>
17977+ </parameter>
17978+ </parameters>
17979+ </method>
17980+ <method name="set_schar" c:identifier="g_value_set_schar" version="2.32">
17981+ <doc xml:space="preserve"
17982+ filename="gobject-2.0.c"
17983+ line="7410">Set the contents of a %G_TYPE_CHAR #GValue to @v_char.</doc>
17984+ <source-position filename="gvaluetypes.h" line="197"/>
17985+ <return-value transfer-ownership="none">
17986+ <type name="none" c:type="void"/>
17987+ </return-value>
17988+ <parameters>
17989+ <instance-parameter name="value" transfer-ownership="none">
17990+ <doc xml:space="preserve"
17991+ filename="gobject-2.0.c"
17992+ line="7412">a valid #GValue of type %G_TYPE_CHAR</doc>
17993+ <type name="Value" c:type="GValue*"/>
17994+ </instance-parameter>
17995+ <parameter name="v_char" transfer-ownership="none">
17996+ <doc xml:space="preserve"
17997+ filename="gobject-2.0.c"
17998+ line="7413">signed 8 bit integer to be set</doc>
17999+ <type name="gint8" c:type="gint8"/>
18000+ </parameter>
18001+ </parameters>
18002+ </method>
18003+ <method name="set_static_boxed" c:identifier="g_value_set_static_boxed">
18004+ <doc xml:space="preserve"
18005+ filename="gobject-2.0.c"
18006+ line="7421">Set the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed.
18007+
18008+The boxed value is assumed to be static, and is thus not duplicated
18009+when setting the #GValue.</doc>
18010+ <source-position filename="gboxed.h" line="79"/>
18011+ <return-value transfer-ownership="none">
18012+ <type name="none" c:type="void"/>
18013+ </return-value>
18014+ <parameters>
18015+ <instance-parameter name="value" transfer-ownership="none">
18016+ <doc xml:space="preserve"
18017+ filename="gobject-2.0.c"
18018+ line="7423">a valid #GValue of %G_TYPE_BOXED derived type</doc>
18019+ <type name="Value" c:type="GValue*"/>
18020+ </instance-parameter>
18021+ <parameter name="v_boxed"
18022+ transfer-ownership="none"
18023+ nullable="1"
18024+ allow-none="1">
18025+ <doc xml:space="preserve"
18026+ filename="gobject-2.0.c"
18027+ line="7424">static boxed value to be set</doc>
18028+ <type name="gpointer" c:type="gconstpointer"/>
18029+ </parameter>
18030+ </parameters>
18031+ </method>
18032+ <method name="set_static_string"
18033+ c:identifier="g_value_set_static_string">
18034+ <doc xml:space="preserve"
18035+ filename="gobject-2.0.c"
18036+ line="7433">Set the contents of a %G_TYPE_STRING #GValue to @v_string.
18037+The string is assumed to be static, and is thus not duplicated
18038+when setting the #GValue.
18039+
18040+If the the string is a canonical string, using g_value_set_interned_string()
18041+is more appropriate.</doc>
18042+ <source-position filename="gvaluetypes.h" line="255"/>
18043+ <return-value transfer-ownership="none">
18044+ <type name="none" c:type="void"/>
18045+ </return-value>
18046+ <parameters>
18047+ <instance-parameter name="value" transfer-ownership="none">
18048+ <doc xml:space="preserve"
18049+ filename="gobject-2.0.c"
18050+ line="7435">a valid #GValue of type %G_TYPE_STRING</doc>
18051+ <type name="Value" c:type="GValue*"/>
18052+ </instance-parameter>
18053+ <parameter name="v_string"
18054+ transfer-ownership="none"
18055+ nullable="1"
18056+ allow-none="1">
18057+ <doc xml:space="preserve"
18058+ filename="gobject-2.0.c"
18059+ line="7436">static string to be set</doc>
18060+ <type name="utf8" c:type="const gchar*"/>
18061+ </parameter>
18062+ </parameters>
18063+ </method>
18064+ <method name="set_string" c:identifier="g_value_set_string">
18065+ <doc xml:space="preserve"
18066+ filename="gobject-2.0.c"
18067+ line="7447">Set the contents of a %G_TYPE_STRING #GValue to a copy of @v_string.</doc>
18068+ <source-position filename="gvaluetypes.h" line="252"/>
18069+ <return-value transfer-ownership="none">
18070+ <type name="none" c:type="void"/>
18071+ </return-value>
18072+ <parameters>
18073+ <instance-parameter name="value" transfer-ownership="none">
18074+ <doc xml:space="preserve"
18075+ filename="gobject-2.0.c"
18076+ line="7449">a valid #GValue of type %G_TYPE_STRING</doc>
18077+ <type name="Value" c:type="GValue*"/>
18078+ </instance-parameter>
18079+ <parameter name="v_string"
18080+ transfer-ownership="none"
18081+ nullable="1"
18082+ allow-none="1">
18083+ <doc xml:space="preserve"
18084+ filename="gobject-2.0.c"
18085+ line="7450">caller-owned string to be duplicated for the #GValue</doc>
18086+ <type name="utf8" c:type="const gchar*"/>
18087+ </parameter>
18088+ </parameters>
18089+ </method>
18090+ <method name="set_string_take_ownership"
18091+ c:identifier="g_value_set_string_take_ownership"
18092+ deprecated="1"
18093+ deprecated-version="2.4">
18094+ <doc xml:space="preserve"
18095+ filename="gobject-2.0.c"
18096+ line="7456">This is an internal function introduced mainly for C marshallers.</doc>
18097+ <doc-deprecated xml:space="preserve">Use g_value_take_string() instead.</doc-deprecated>
18098+ <source-position filename="gvaluetypes.h" line="301"/>
18099+ <return-value transfer-ownership="none">
18100+ <type name="none" c:type="void"/>
18101+ </return-value>
18102+ <parameters>
18103+ <instance-parameter name="value" transfer-ownership="none">
18104+ <doc xml:space="preserve"
18105+ filename="gobject-2.0.c"
18106+ line="7458">a valid #GValue of type %G_TYPE_STRING</doc>
18107+ <type name="Value" c:type="GValue*"/>
18108+ </instance-parameter>
18109+ <parameter name="v_string"
18110+ transfer-ownership="none"
18111+ nullable="1"
18112+ allow-none="1">
18113+ <doc xml:space="preserve"
18114+ filename="gobject-2.0.c"
18115+ line="7459">duplicated unowned string to be set</doc>
18116+ <type name="utf8" c:type="gchar*"/>
18117+ </parameter>
18118+ </parameters>
18119+ </method>
18120+ <method name="set_uchar" c:identifier="g_value_set_uchar">
18121+ <doc xml:space="preserve"
18122+ filename="gobject-2.0.c"
18123+ line="7467">Set the contents of a %G_TYPE_UCHAR #GValue to @v_uchar.</doc>
18124+ <source-position filename="gvaluetypes.h" line="202"/>
18125+ <return-value transfer-ownership="none">
18126+ <type name="none" c:type="void"/>
18127+ </return-value>
18128+ <parameters>
18129+ <instance-parameter name="value" transfer-ownership="none">
18130+ <doc xml:space="preserve"
18131+ filename="gobject-2.0.c"
18132+ line="7469">a valid #GValue of type %G_TYPE_UCHAR</doc>
18133+ <type name="Value" c:type="GValue*"/>
18134+ </instance-parameter>
18135+ <parameter name="v_uchar" transfer-ownership="none">
18136+ <doc xml:space="preserve"
18137+ filename="gobject-2.0.c"
18138+ line="7470">unsigned character value to be set</doc>
18139+ <type name="guint8" c:type="guchar"/>
18140+ </parameter>
18141+ </parameters>
18142+ </method>
18143+ <method name="set_uint" c:identifier="g_value_set_uint">
18144+ <doc xml:space="preserve"
18145+ filename="gobject-2.0.c"
18146+ line="7476">Set the contents of a %G_TYPE_UINT #GValue to @v_uint.</doc>
18147+ <source-position filename="gvaluetypes.h" line="217"/>
18148+ <return-value transfer-ownership="none">
18149+ <type name="none" c:type="void"/>
18150+ </return-value>
18151+ <parameters>
18152+ <instance-parameter name="value" transfer-ownership="none">
18153+ <doc xml:space="preserve"
18154+ filename="gobject-2.0.c"
18155+ line="7478">a valid #GValue of type %G_TYPE_UINT</doc>
18156+ <type name="Value" c:type="GValue*"/>
18157+ </instance-parameter>
18158+ <parameter name="v_uint" transfer-ownership="none">
18159+ <doc xml:space="preserve"
18160+ filename="gobject-2.0.c"
18161+ line="7479">unsigned integer value to be set</doc>
18162+ <type name="guint" c:type="guint"/>
18163+ </parameter>
18164+ </parameters>
18165+ </method>
18166+ <method name="set_uint64" c:identifier="g_value_set_uint64">
18167+ <doc xml:space="preserve"
18168+ filename="gobject-2.0.c"
18169+ line="7485">Set the contents of a %G_TYPE_UINT64 #GValue to @v_uint64.</doc>
18170+ <source-position filename="gvaluetypes.h" line="237"/>
18171+ <return-value transfer-ownership="none">
18172+ <type name="none" c:type="void"/>
18173+ </return-value>
18174+ <parameters>
18175+ <instance-parameter name="value" transfer-ownership="none">
18176+ <doc xml:space="preserve"
18177+ filename="gobject-2.0.c"
18178+ line="7487">a valid #GValue of type %G_TYPE_UINT64</doc>
18179+ <type name="Value" c:type="GValue*"/>
18180+ </instance-parameter>
18181+ <parameter name="v_uint64" transfer-ownership="none">
18182+ <doc xml:space="preserve"
18183+ filename="gobject-2.0.c"
18184+ line="7488">unsigned 64bit integer value to be set</doc>
18185+ <type name="guint64" c:type="guint64"/>
18186+ </parameter>
18187+ </parameters>
18188+ </method>
18189+ <method name="set_ulong" c:identifier="g_value_set_ulong">
18190+ <doc xml:space="preserve"
18191+ filename="gobject-2.0.c"
18192+ line="7494">Set the contents of a %G_TYPE_ULONG #GValue to @v_ulong.</doc>
18193+ <source-position filename="gvaluetypes.h" line="227"/>
18194+ <return-value transfer-ownership="none">
18195+ <type name="none" c:type="void"/>
18196+ </return-value>
18197+ <parameters>
18198+ <instance-parameter name="value" transfer-ownership="none">
18199+ <doc xml:space="preserve"
18200+ filename="gobject-2.0.c"
18201+ line="7496">a valid #GValue of type %G_TYPE_ULONG</doc>
18202+ <type name="Value" c:type="GValue*"/>
18203+ </instance-parameter>
18204+ <parameter name="v_ulong" transfer-ownership="none">
18205+ <doc xml:space="preserve"
18206+ filename="gobject-2.0.c"
18207+ line="7497">unsigned long integer value to be set</doc>
18208+ <type name="gulong" c:type="gulong"/>
18209+ </parameter>
18210+ </parameters>
18211+ </method>
18212+ <method name="set_variant"
18213+ c:identifier="g_value_set_variant"
18214+ version="2.26">
18215+ <doc xml:space="preserve"
18216+ filename="gobject-2.0.c"
18217+ line="7503">Set the contents of a variant #GValue to @variant.
18218+If the variant is floating, it is consumed.</doc>
18219+ <source-position filename="gvaluetypes.h" line="277"/>
18220+ <return-value transfer-ownership="none">
18221+ <type name="none" c:type="void"/>
18222+ </return-value>
18223+ <parameters>
18224+ <instance-parameter name="value" transfer-ownership="none">
18225+ <doc xml:space="preserve"
18226+ filename="gobject-2.0.c"
18227+ line="7505">a valid #GValue of type %G_TYPE_VARIANT</doc>
18228+ <type name="Value" c:type="GValue*"/>
18229+ </instance-parameter>
18230+ <parameter name="variant"
18231+ transfer-ownership="none"
18232+ nullable="1"
18233+ allow-none="1">
18234+ <doc xml:space="preserve"
18235+ filename="gobject-2.0.c"
18236+ line="7506">a #GVariant, or %NULL</doc>
18237+ <type name="GLib.Variant" c:type="GVariant*"/>
18238+ </parameter>
18239+ </parameters>
18240+ </method>
18241+ <method name="take_boxed"
18242+ c:identifier="g_value_take_boxed"
18243+ version="2.4">
18244+ <doc xml:space="preserve"
18245+ filename="gobject-2.0.c"
18246+ line="7515">Sets the contents of a %G_TYPE_BOXED derived #GValue to @v_boxed
18247+and takes over the ownership of the caller’s reference to @v_boxed;
18248+the caller doesn’t have to unref it any more.</doc>
18249+ <source-position filename="gboxed.h" line="82"/>
18250+ <return-value transfer-ownership="none">
18251+ <type name="none" c:type="void"/>
18252+ </return-value>
18253+ <parameters>
18254+ <instance-parameter name="value" transfer-ownership="none">
18255+ <doc xml:space="preserve"
18256+ filename="gobject-2.0.c"
18257+ line="7517">a valid #GValue of %G_TYPE_BOXED derived type</doc>
18258+ <type name="Value" c:type="GValue*"/>
18259+ </instance-parameter>
18260+ <parameter name="v_boxed"
18261+ transfer-ownership="none"
18262+ nullable="1"
18263+ allow-none="1">
18264+ <doc xml:space="preserve"
18265+ filename="gobject-2.0.c"
18266+ line="7518">duplicated unowned boxed value to be set</doc>
18267+ <type name="gpointer" c:type="gconstpointer"/>
18268+ </parameter>
18269+ </parameters>
18270+ </method>
18271+ <method name="take_object"
18272+ c:identifier="g_value_take_object"
18273+ version="2.4"
18274+ introspectable="0">
18275+ <doc xml:space="preserve"
18276+ filename="gobject-2.0.c"
18277+ line="7528">Sets the contents of a %G_TYPE_OBJECT derived #GValue to @v_object
18278+and takes over the ownership of the caller’s reference to @v_object;
18279+the caller doesn’t have to unref it any more (i.e. the reference
18280+count of the object is not increased).
18281+
18282+If you want the #GValue to hold its own reference to @v_object, use
18283+g_value_set_object() instead.</doc>
18284+ <source-position filename="gobject.h" line="665"/>
18285+ <return-value transfer-ownership="none">
18286+ <type name="none" c:type="void"/>
18287+ </return-value>
18288+ <parameters>
18289+ <instance-parameter name="value" transfer-ownership="none">
18290+ <doc xml:space="preserve"
18291+ filename="gobject-2.0.c"
18292+ line="7530">a valid #GValue of %G_TYPE_OBJECT derived type</doc>
18293+ <type name="Value" c:type="GValue*"/>
18294+ </instance-parameter>
18295+ <parameter name="v_object"
18296+ transfer-ownership="none"
18297+ nullable="1"
18298+ allow-none="1">
18299+ <doc xml:space="preserve"
18300+ filename="gobject-2.0.c"
18301+ line="7531">object value to be set</doc>
18302+ <type name="gpointer" c:type="gpointer"/>
18303+ </parameter>
18304+ </parameters>
18305+ </method>
18306+ <method name="take_param"
18307+ c:identifier="g_value_take_param"
18308+ version="2.4"
18309+ introspectable="0">
18310+ <doc xml:space="preserve"
18311+ filename="gobject-2.0.c"
18312+ line="7545">Sets the contents of a %G_TYPE_PARAM #GValue to @param and takes
18313+over the ownership of the caller’s reference to @param; the caller
18314+doesn’t have to unref it any more.</doc>
18315+ <source-position filename="gparam.h" line="341"/>
18316+ <return-value transfer-ownership="none">
18317+ <type name="none" c:type="void"/>
18318+ </return-value>
18319+ <parameters>
18320+ <instance-parameter name="value" transfer-ownership="none">
18321+ <doc xml:space="preserve"
18322+ filename="gobject-2.0.c"
18323+ line="7547">a valid #GValue of type %G_TYPE_PARAM</doc>
18324+ <type name="Value" c:type="GValue*"/>
18325+ </instance-parameter>
18326+ <parameter name="param"
18327+ transfer-ownership="none"
18328+ nullable="1"
18329+ allow-none="1">
18330+ <doc xml:space="preserve"
18331+ filename="gobject-2.0.c"
18332+ line="7548">the #GParamSpec to be set</doc>
18333+ <type name="ParamSpec" c:type="GParamSpec*"/>
18334+ </parameter>
18335+ </parameters>
18336+ </method>
18337+ <method name="take_string"
18338+ c:identifier="g_value_take_string"
18339+ version="2.4">
18340+ <doc xml:space="preserve"
18341+ filename="gobject-2.0.c"
18342+ line="7558">Sets the contents of a %G_TYPE_STRING #GValue to @v_string.</doc>
18343+ <source-position filename="gvaluetypes.h" line="298"/>
18344+ <return-value transfer-ownership="none">
18345+ <type name="none" c:type="void"/>
18346+ </return-value>
18347+ <parameters>
18348+ <instance-parameter name="value" transfer-ownership="none">
18349+ <doc xml:space="preserve"
18350+ filename="gobject-2.0.c"
18351+ line="7560">a valid #GValue of type %G_TYPE_STRING</doc>
18352+ <type name="Value" c:type="GValue*"/>
18353+ </instance-parameter>
18354+ <parameter name="v_string"
18355+ transfer-ownership="none"
18356+ nullable="1"
18357+ allow-none="1">
18358+ <doc xml:space="preserve"
18359+ filename="gobject-2.0.c"
18360+ line="7561">string to take ownership of</doc>
18361+ <type name="utf8" c:type="gchar*"/>
18362+ </parameter>
18363+ </parameters>
18364+ </method>
18365+ <method name="take_variant"
18366+ c:identifier="g_value_take_variant"
18367+ version="2.26">
18368+ <doc xml:space="preserve"
18369+ filename="gobject-2.0.c"
18370+ line="7569">Set the contents of a variant #GValue to @variant, and takes over
18371+the ownership of the caller's reference to @variant;
18372+the caller doesn't have to unref it any more (i.e. the reference
18373+count of the variant is not increased).
18374+
18375+If @variant was floating then its floating reference is converted to
18376+a hard reference.
18377+
18378+If you want the #GValue to hold its own reference to @variant, use
18379+g_value_set_variant() instead.
18380+
18381+This is an internal function introduced mainly for C marshallers.</doc>
18382+ <source-position filename="gvaluetypes.h" line="280"/>
18383+ <return-value transfer-ownership="none">
18384+ <type name="none" c:type="void"/>
18385+ </return-value>
18386+ <parameters>
18387+ <instance-parameter name="value" transfer-ownership="none">
18388+ <doc xml:space="preserve"
18389+ filename="gobject-2.0.c"
18390+ line="7571">a valid #GValue of type %G_TYPE_VARIANT</doc>
18391+ <type name="Value" c:type="GValue*"/>
18392+ </instance-parameter>
18393+ <parameter name="variant"
18394+ transfer-ownership="full"
18395+ nullable="1"
18396+ allow-none="1">
18397+ <doc xml:space="preserve"
18398+ filename="gobject-2.0.c"
18399+ line="7572">a #GVariant, or %NULL</doc>
18400+ <type name="GLib.Variant" c:type="GVariant*"/>
18401+ </parameter>
18402+ </parameters>
18403+ </method>
18404+ <method name="transform" c:identifier="g_value_transform">
18405+ <doc xml:space="preserve"
18406+ filename="gobject-2.0.c"
18407+ line="7591">Tries to cast the contents of @src_value into a type appropriate
18408+to store in @dest_value, e.g. to transform a %G_TYPE_INT value
18409+into a %G_TYPE_FLOAT value. Performing transformations between
18410+value types might incur precision lossage. Especially
18411+transformations into strings might reveal seemingly arbitrary
18412+results and shouldn't be relied upon for production code (such
18413+as rcfile value or object property serialization).</doc>
18414+ <source-position filename="gvalue.h" line="165"/>
18415+ <return-value transfer-ownership="none">
18416+ <doc xml:space="preserve"
18417+ filename="gobject-2.0.c"
18418+ line="7604">Whether a transformation rule was found and could be applied.
18419+ Upon failing transformations, @dest_value is left untouched.</doc>
18420+ <type name="gboolean" c:type="gboolean"/>
18421+ </return-value>
18422+ <parameters>
18423+ <instance-parameter name="src_value" transfer-ownership="none">
18424+ <doc xml:space="preserve"
18425+ filename="gobject-2.0.c"
18426+ line="7593">Source value.</doc>
18427+ <type name="Value" c:type="const GValue*"/>
18428+ </instance-parameter>
18429+ <parameter name="dest_value" transfer-ownership="none">
18430+ <doc xml:space="preserve"
18431+ filename="gobject-2.0.c"
18432+ line="7594">Target value.</doc>
18433+ <type name="Value" c:type="GValue*"/>
18434+ </parameter>
18435+ </parameters>
18436+ </method>
18437+ <method name="unset" c:identifier="g_value_unset">
18438+ <doc xml:space="preserve"
18439+ filename="gobject-2.0.c"
18440+ line="7635">Clears the current value in @value (if any) and "unsets" the type,
18441+this releases all resources associated with this GValue. An unset
18442+value is the same as an uninitialized (zero-filled) #GValue
18443+structure.</doc>
18444+ <source-position filename="gvalue.h" line="141"/>
18445+ <return-value transfer-ownership="none">
18446+ <type name="none" c:type="void"/>
18447+ </return-value>
18448+ <parameters>
18449+ <instance-parameter name="value" transfer-ownership="none">
18450+ <doc xml:space="preserve"
18451+ filename="gobject-2.0.c"
18452+ line="7637">An initialized #GValue structure.</doc>
18453+ <type name="Value" c:type="GValue*"/>
18454+ </instance-parameter>
18455+ </parameters>
18456+ </method>
18457+ <function name="register_transform_func"
18458+ c:identifier="g_value_register_transform_func"
18459+ introspectable="0">
18460+ <doc xml:space="preserve"
18461+ filename="gobject-2.0.c"
18462+ line="7190">Registers a value transformation function for use in g_value_transform().
18463+A previously registered transformation function for @src_type and @dest_type
18464+will be replaced.</doc>
18465+ <source-position filename="gvalue.h" line="168"/>
18466+ <return-value transfer-ownership="none">
18467+ <type name="none" c:type="void"/>
18468+ </return-value>
18469+ <parameters>
18470+ <parameter name="src_type" transfer-ownership="none">
18471+ <doc xml:space="preserve"
18472+ filename="gobject-2.0.c"
18473+ line="7192">Source type.</doc>
18474+ <type name="GType" c:type="GType"/>
18475+ </parameter>
18476+ <parameter name="dest_type" transfer-ownership="none">
18477+ <doc xml:space="preserve"
18478+ filename="gobject-2.0.c"
18479+ line="7193">Target type.</doc>
18480+ <type name="GType" c:type="GType"/>
18481+ </parameter>
18482+ <parameter name="transform_func" transfer-ownership="none">
18483+ <doc xml:space="preserve"
18484+ filename="gobject-2.0.c"
18485+ line="7194">a function which transforms values of type @src_type
18486+ into value of type @dest_type</doc>
18487+ <type name="ValueTransform" c:type="GValueTransform"/>
18488+ </parameter>
18489+ </parameters>
18490+ </function>
18491+ <function name="type_compatible" c:identifier="g_value_type_compatible">
18492+ <doc xml:space="preserve"
18493+ filename="gobject-2.0.c"
18494+ line="7609">Returns whether a #GValue of type @src_type can be copied into
18495+a #GValue of type @dest_type.</doc>
18496+ <source-position filename="gvalue.h" line="159"/>
18497+ <return-value transfer-ownership="none">
18498+ <doc xml:space="preserve"
18499+ filename="gobject-2.0.c"
18500+ line="7617">%TRUE if g_value_copy() is possible with @src_type and @dest_type.</doc>
18501+ <type name="gboolean" c:type="gboolean"/>
18502+ </return-value>
18503+ <parameters>
18504+ <parameter name="src_type" transfer-ownership="none">
18505+ <doc xml:space="preserve"
18506+ filename="gobject-2.0.c"
18507+ line="7611">source type to be copied.</doc>
18508+ <type name="GType" c:type="GType"/>
18509+ </parameter>
18510+ <parameter name="dest_type" transfer-ownership="none">
18511+ <doc xml:space="preserve"
18512+ filename="gobject-2.0.c"
18513+ line="7612">destination type for copying.</doc>
18514+ <type name="GType" c:type="GType"/>
18515+ </parameter>
18516+ </parameters>
18517+ </function>
18518+ <function name="type_transformable"
18519+ c:identifier="g_value_type_transformable">
18520+ <doc xml:space="preserve"
18521+ filename="gobject-2.0.c"
18522+ line="7621">Check whether g_value_transform() is able to transform values
18523+of type @src_type into values of type @dest_type. Note that for
18524+the types to be transformable, they must be compatible or a
18525+transformation function must be registered.</doc>
18526+ <source-position filename="gvalue.h" line="162"/>
18527+ <return-value transfer-ownership="none">
18528+ <doc xml:space="preserve"
18529+ filename="gobject-2.0.c"
18530+ line="7631">%TRUE if the transformation is possible, %FALSE otherwise.</doc>
18531+ <type name="gboolean" c:type="gboolean"/>
18532+ </return-value>
18533+ <parameters>
18534+ <parameter name="src_type" transfer-ownership="none">
18535+ <doc xml:space="preserve"
18536+ filename="gobject-2.0.c"
18537+ line="7623">Source type.</doc>
18538+ <type name="GType" c:type="GType"/>
18539+ </parameter>
18540+ <parameter name="dest_type" transfer-ownership="none">
18541+ <doc xml:space="preserve"
18542+ filename="gobject-2.0.c"
18543+ line="7624">Target type.</doc>
18544+ <type name="GType" c:type="GType"/>
18545+ </parameter>
18546+ </parameters>
18547+ </function>
18548+ </record>
18549+ <record name="ValueArray"
18550+ c:type="GValueArray"
18551+ glib:type-name="GValueArray"
18552+ glib:get-type="g_value_array_get_type"
18553+ c:symbol-prefix="value_array">
18554+ <doc xml:space="preserve"
18555+ filename="gvaluearray.h"
18556+ line="42">A #GValueArray contains an array of #GValue elements.</doc>
18557+ <source-position filename="gvaluearray.h" line="56"/>
18558+ <field name="n_values" writable="1">
18559+ <doc xml:space="preserve"
18560+ filename="gvaluearray.h"
18561+ line="44">number of values contained in the array</doc>
18562+ <type name="guint" c:type="guint"/>
18563+ </field>
18564+ <field name="values" writable="1">
18565+ <doc xml:space="preserve"
18566+ filename="gvaluearray.h"
18567+ line="45">array of values</doc>
18568+ <type name="Value" c:type="GValue*"/>
18569+ </field>
18570+ <field name="n_prealloced" readable="0" private="1">
18571+ <type name="guint" c:type="guint"/>
18572+ </field>
18573+ <constructor name="new"
18574+ c:identifier="g_value_array_new"
18575+ deprecated="1"
18576+ deprecated-version="2.32">
18577+ <doc xml:space="preserve"
18578+ filename="gobject-2.0.c"
18579+ line="6780">Allocate and initialize a new #GValueArray, optionally preserve space
18580+for @n_prealloced elements. New arrays always contain 0 elements,
18581+regardless of the value of @n_prealloced.</doc>
18582+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_sized_new() instead.</doc-deprecated>
18583+ <source-position filename="gvaluearray.h" line="67"/>
18584+ <return-value transfer-ownership="full">
18585+ <doc xml:space="preserve"
18586+ filename="gobject-2.0.c"
18587+ line="6788">a newly allocated #GValueArray with 0 values</doc>
18588+ <type name="ValueArray" c:type="GValueArray*"/>
18589+ </return-value>
18590+ <parameters>
18591+ <parameter name="n_prealloced" transfer-ownership="none">
18592+ <doc xml:space="preserve"
18593+ filename="gobject-2.0.c"
18594+ line="6782">number of values to preallocate space for</doc>
18595+ <type name="guint" c:type="guint"/>
18596+ </parameter>
18597+ </parameters>
18598+ </constructor>
18599+ <method name="append"
18600+ c:identifier="g_value_array_append"
18601+ deprecated="1"
18602+ deprecated-version="2.32">
18603+ <doc xml:space="preserve"
18604+ filename="gobject-2.0.c"
18605+ line="6719">Insert a copy of @value as last element of @value_array. If @value is
18606+%NULL, an uninitialized value is appended.</doc>
18607+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_append_val() instead.</doc-deprecated>
18608+ <source-position filename="gvaluearray.h" line="80"/>
18609+ <return-value transfer-ownership="none">
18610+ <doc xml:space="preserve"
18611+ filename="gobject-2.0.c"
18612+ line="6727">the #GValueArray passed in as @value_array</doc>
18613+ <type name="ValueArray" c:type="GValueArray*"/>
18614+ </return-value>
18615+ <parameters>
18616+ <instance-parameter name="value_array" transfer-ownership="none">
18617+ <doc xml:space="preserve"
18618+ filename="gobject-2.0.c"
18619+ line="6721">#GValueArray to add an element to</doc>
18620+ <type name="ValueArray" c:type="GValueArray*"/>
18621+ </instance-parameter>
18622+ <parameter name="value"
18623+ transfer-ownership="none"
18624+ nullable="1"
18625+ allow-none="1">
18626+ <doc xml:space="preserve"
18627+ filename="gobject-2.0.c"
18628+ line="6722">#GValue to copy into #GValueArray, or %NULL</doc>
18629+ <type name="Value" c:type="const GValue*"/>
18630+ </parameter>
18631+ </parameters>
18632+ </method>
18633+ <method name="copy"
18634+ c:identifier="g_value_array_copy"
18635+ deprecated="1"
18636+ deprecated-version="2.32">
18637+ <doc xml:space="preserve"
18638+ filename="gobject-2.0.c"
18639+ line="6732">Construct an exact copy of a #GValueArray by duplicating all its
18640+contents.</doc>
18641+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_ref() instead.</doc-deprecated>
18642+ <source-position filename="gvaluearray.h" line="73"/>
18643+ <return-value transfer-ownership="full">
18644+ <doc xml:space="preserve"
18645+ filename="gobject-2.0.c"
18646+ line="6739">Newly allocated copy of #GValueArray</doc>
18647+ <type name="ValueArray" c:type="GValueArray*"/>
18648+ </return-value>
18649+ <parameters>
18650+ <instance-parameter name="value_array" transfer-ownership="none">
18651+ <doc xml:space="preserve"
18652+ filename="gobject-2.0.c"
18653+ line="6734">#GValueArray to copy</doc>
18654+ <type name="ValueArray" c:type="const GValueArray*"/>
18655+ </instance-parameter>
18656+ </parameters>
18657+ </method>
18658+ <method name="free"
18659+ c:identifier="g_value_array_free"
18660+ introspectable="0"
18661+ deprecated="1"
18662+ deprecated-version="2.32">
18663+ <doc xml:space="preserve"
18664+ filename="gobject-2.0.c"
18665+ line="6744">Free a #GValueArray including its contents.</doc>
18666+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_unref() instead.</doc-deprecated>
18667+ <source-position filename="gvaluearray.h" line="70"/>
18668+ <return-value transfer-ownership="none">
18669+ <type name="none" c:type="void"/>
18670+ </return-value>
18671+ <parameters>
18672+ <instance-parameter name="value_array" transfer-ownership="none">
18673+ <doc xml:space="preserve"
18674+ filename="gobject-2.0.c"
18675+ line="6746">#GValueArray to free</doc>
18676+ <type name="ValueArray" c:type="GValueArray*"/>
18677+ </instance-parameter>
18678+ </parameters>
18679+ </method>
18680+ <method name="get_nth"
18681+ c:identifier="g_value_array_get_nth"
18682+ deprecated="1"
18683+ deprecated-version="2.32">
18684+ <doc xml:space="preserve"
18685+ filename="gobject-2.0.c"
18686+ line="6754">Return a pointer to the value at @index_ containd in @value_array.</doc>
18687+ <doc-deprecated xml:space="preserve">Use g_array_index() instead.</doc-deprecated>
18688+ <source-position filename="gvaluearray.h" line="63"/>
18689+ <return-value transfer-ownership="none">
18690+ <doc xml:space="preserve"
18691+ filename="gobject-2.0.c"
18692+ line="6761">pointer to a value at @index_ in @value_array</doc>
18693+ <type name="Value" c:type="GValue*"/>
18694+ </return-value>
18695+ <parameters>
18696+ <instance-parameter name="value_array" transfer-ownership="none">
18697+ <doc xml:space="preserve"
18698+ filename="gobject-2.0.c"
18699+ line="6756">#GValueArray to get a value from</doc>
18700+ <type name="ValueArray" c:type="GValueArray*"/>
18701+ </instance-parameter>
18702+ <parameter name="index_" transfer-ownership="none">
18703+ <doc xml:space="preserve"
18704+ filename="gobject-2.0.c"
18705+ line="6757">index of the value of interest</doc>
18706+ <type name="guint" c:type="guint"/>
18707+ </parameter>
18708+ </parameters>
18709+ </method>
18710+ <method name="insert"
18711+ c:identifier="g_value_array_insert"
18712+ deprecated="1"
18713+ deprecated-version="2.32">
18714+ <doc xml:space="preserve"
18715+ filename="gobject-2.0.c"
18716+ line="6766">Insert a copy of @value at specified position into @value_array. If @value
18717+is %NULL, an uninitialized value is inserted.</doc>
18718+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_insert_val() instead.</doc-deprecated>
18719+ <source-position filename="gvaluearray.h" line="84"/>
18720+ <return-value transfer-ownership="none">
18721+ <doc xml:space="preserve"
18722+ filename="gobject-2.0.c"
18723+ line="6775">the #GValueArray passed in as @value_array</doc>
18724+ <type name="ValueArray" c:type="GValueArray*"/>
18725+ </return-value>
18726+ <parameters>
18727+ <instance-parameter name="value_array" transfer-ownership="none">
18728+ <doc xml:space="preserve"
18729+ filename="gobject-2.0.c"
18730+ line="6768">#GValueArray to add an element to</doc>
18731+ <type name="ValueArray" c:type="GValueArray*"/>
18732+ </instance-parameter>
18733+ <parameter name="index_" transfer-ownership="none">
18734+ <doc xml:space="preserve"
18735+ filename="gobject-2.0.c"
18736+ line="6769">insertion position, must be &lt;= value_array-&gt;;n_values</doc>
18737+ <type name="guint" c:type="guint"/>
18738+ </parameter>
18739+ <parameter name="value"
18740+ transfer-ownership="none"
18741+ nullable="1"
18742+ allow-none="1">
18743+ <doc xml:space="preserve"
18744+ filename="gobject-2.0.c"
18745+ line="6770">#GValue to copy into #GValueArray, or %NULL</doc>
18746+ <type name="Value" c:type="const GValue*"/>
18747+ </parameter>
18748+ </parameters>
18749+ </method>
18750+ <method name="prepend"
18751+ c:identifier="g_value_array_prepend"
18752+ deprecated="1"
18753+ deprecated-version="2.32">
18754+ <doc xml:space="preserve"
18755+ filename="gobject-2.0.c"
18756+ line="6793">Insert a copy of @value as first element of @value_array. If @value is
18757+%NULL, an uninitialized value is prepended.</doc>
18758+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_prepend_val() instead.</doc-deprecated>
18759+ <source-position filename="gvaluearray.h" line="76"/>
18760+ <return-value transfer-ownership="none">
18761+ <doc xml:space="preserve"
18762+ filename="gobject-2.0.c"
18763+ line="6801">the #GValueArray passed in as @value_array</doc>
18764+ <type name="ValueArray" c:type="GValueArray*"/>
18765+ </return-value>
18766+ <parameters>
18767+ <instance-parameter name="value_array" transfer-ownership="none">
18768+ <doc xml:space="preserve"
18769+ filename="gobject-2.0.c"
18770+ line="6795">#GValueArray to add an element to</doc>
18771+ <type name="ValueArray" c:type="GValueArray*"/>
18772+ </instance-parameter>
18773+ <parameter name="value"
18774+ transfer-ownership="none"
18775+ nullable="1"
18776+ allow-none="1">
18777+ <doc xml:space="preserve"
18778+ filename="gobject-2.0.c"
18779+ line="6796">#GValue to copy into #GValueArray, or %NULL</doc>
18780+ <type name="Value" c:type="const GValue*"/>
18781+ </parameter>
18782+ </parameters>
18783+ </method>
18784+ <method name="remove"
18785+ c:identifier="g_value_array_remove"
18786+ deprecated="1"
18787+ deprecated-version="2.32">
18788+ <doc xml:space="preserve"
18789+ filename="gobject-2.0.c"
18790+ line="6806">Remove the value at position @index_ from @value_array.</doc>
18791+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_remove_index() instead.</doc-deprecated>
18792+ <source-position filename="gvaluearray.h" line="89"/>
18793+ <return-value transfer-ownership="none">
18794+ <doc xml:space="preserve"
18795+ filename="gobject-2.0.c"
18796+ line="6814">the #GValueArray passed in as @value_array</doc>
18797+ <type name="ValueArray" c:type="GValueArray*"/>
18798+ </return-value>
18799+ <parameters>
18800+ <instance-parameter name="value_array" transfer-ownership="none">
18801+ <doc xml:space="preserve"
18802+ filename="gobject-2.0.c"
18803+ line="6808">#GValueArray to remove an element from</doc>
18804+ <type name="ValueArray" c:type="GValueArray*"/>
18805+ </instance-parameter>
18806+ <parameter name="index_" transfer-ownership="none">
18807+ <doc xml:space="preserve"
18808+ filename="gobject-2.0.c"
18809+ line="6809">position of value to remove, which must be less than
18810+ @value_array-&gt;n_values</doc>
18811+ <type name="guint" c:type="guint"/>
18812+ </parameter>
18813+ </parameters>
18814+ </method>
18815+ <method name="sort"
18816+ c:identifier="g_value_array_sort"
18817+ shadowed-by="sort_with_data"
18818+ deprecated="1"
18819+ deprecated-version="2.32">
18820+ <doc xml:space="preserve"
18821+ filename="gobject-2.0.c"
18822+ line="6819">Sort @value_array using @compare_func to compare the elements according to
18823+the semantics of #GCompareFunc.
18824+
18825+The current implementation uses the same sorting algorithm as standard
18826+C qsort() function.</doc>
18827+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_sort().</doc-deprecated>
18828+ <source-position filename="gvaluearray.h" line="93"/>
18829+ <return-value transfer-ownership="none">
18830+ <doc xml:space="preserve"
18831+ filename="gobject-2.0.c"
18832+ line="6830">the #GValueArray passed in as @value_array</doc>
18833+ <type name="ValueArray" c:type="GValueArray*"/>
18834+ </return-value>
18835+ <parameters>
18836+ <instance-parameter name="value_array" transfer-ownership="none">
18837+ <doc xml:space="preserve"
18838+ filename="gobject-2.0.c"
18839+ line="6821">#GValueArray to sort</doc>
18840+ <type name="ValueArray" c:type="GValueArray*"/>
18841+ </instance-parameter>
18842+ <parameter name="compare_func"
18843+ transfer-ownership="none"
18844+ scope="call">
18845+ <doc xml:space="preserve"
18846+ filename="gobject-2.0.c"
18847+ line="6822">function to compare elements</doc>
18848+ <type name="GLib.CompareFunc" c:type="GCompareFunc"/>
18849+ </parameter>
18850+ </parameters>
18851+ </method>
18852+ <method name="sort_with_data"
18853+ c:identifier="g_value_array_sort_with_data"
18854+ shadows="sort"
18855+ deprecated="1"
18856+ deprecated-version="2.32">
18857+ <doc xml:space="preserve"
18858+ filename="gobject-2.0.c"
18859+ line="6835">Sort @value_array using @compare_func to compare the elements according
18860+to the semantics of #GCompareDataFunc.
18861+
18862+The current implementation uses the same sorting algorithm as standard
18863+C qsort() function.</doc>
18864+ <doc-deprecated xml:space="preserve">Use #GArray and g_array_sort_with_data().</doc-deprecated>
18865+ <source-position filename="gvaluearray.h" line="97"/>
18866+ <return-value transfer-ownership="none">
18867+ <doc xml:space="preserve"
18868+ filename="gobject-2.0.c"
18869+ line="6847">the #GValueArray passed in as @value_array</doc>
18870+ <type name="ValueArray" c:type="GValueArray*"/>
18871+ </return-value>
18872+ <parameters>
18873+ <instance-parameter name="value_array" transfer-ownership="none">
18874+ <doc xml:space="preserve"
18875+ filename="gobject-2.0.c"
18876+ line="6837">#GValueArray to sort</doc>
18877+ <type name="ValueArray" c:type="GValueArray*"/>
18878+ </instance-parameter>
18879+ <parameter name="compare_func"
18880+ transfer-ownership="none"
18881+ scope="call"
18882+ closure="1">
18883+ <doc xml:space="preserve"
18884+ filename="gobject-2.0.c"
18885+ line="6838">function to compare elements</doc>
18886+ <type name="GLib.CompareDataFunc" c:type="GCompareDataFunc"/>
18887+ </parameter>
18888+ <parameter name="user_data"
18889+ transfer-ownership="none"
18890+ nullable="1"
18891+ allow-none="1">
18892+ <doc xml:space="preserve"
18893+ filename="gobject-2.0.c"
18894+ line="6839">extra data argument provided for @compare_func</doc>
18895+ <type name="gpointer" c:type="gpointer"/>
18896+ </parameter>
18897+ </parameters>
18898+ </method>
18899+ </record>
18900+ <callback name="ValueTransform" c:type="GValueTransform">
18901+ <doc xml:space="preserve"
18902+ filename="gvalue.h"
18903+ line="85">The type of value transformation functions which can be registered with
18904+g_value_register_transform_func().
18905+
18906+@dest_value will be initialized to the correct destination type.</doc>
18907+ <source-position filename="gvalue.h" line="95"/>
18908+ <return-value transfer-ownership="none">
18909+ <type name="none" c:type="void"/>
18910+ </return-value>
18911+ <parameters>
18912+ <parameter name="src_value" transfer-ownership="none">
18913+ <doc xml:space="preserve"
18914+ filename="gvalue.h"
18915+ line="87">Source value.</doc>
18916+ <type name="Value" c:type="const GValue*"/>
18917+ </parameter>
18918+ <parameter name="dest_value" transfer-ownership="none">
18919+ <doc xml:space="preserve"
18920+ filename="gvalue.h"
18921+ line="88">Target value.</doc>
18922+ <type name="Value" c:type="GValue*"/>
18923+ </parameter>
18924+ </parameters>
18925+ </callback>
18926+ <callback name="WeakNotify" c:type="GWeakNotify">
18927+ <doc xml:space="preserve"
18928+ filename="gobject.h"
18929+ line="230">A #GWeakNotify function can be added to an object as a callback that gets
18930+triggered when the object is finalized.
18931+
18932+Since the object is already being disposed when the #GWeakNotify is called,
18933+there's not much you could do with the object, apart from e.g. using its
18934+address as hash-index or the like.
18935+
18936+In particular, this means it’s invalid to call g_object_ref(),
18937+g_weak_ref_init(), g_weak_ref_set(), g_object_add_toggle_ref(),
18938+g_object_weak_ref(), g_object_add_weak_pointer() or any function which calls
18939+them on the object from this callback.</doc>
18940+ <source-position filename="gobject.h" line="247"/>
18941+ <return-value transfer-ownership="none">
18942+ <type name="none" c:type="void"/>
18943+ </return-value>
18944+ <parameters>
18945+ <parameter name="data"
18946+ transfer-ownership="none"
18947+ nullable="1"
18948+ allow-none="1">
18949+ <doc xml:space="preserve"
18950+ filename="gobject.h"
18951+ line="232">data that was provided when the weak reference was established</doc>
18952+ <type name="gpointer" c:type="gpointer"/>
18953+ </parameter>
18954+ <parameter name="where_the_object_was" transfer-ownership="none">
18955+ <doc xml:space="preserve"
18956+ filename="gobject.h"
18957+ line="233">the object being disposed</doc>
18958+ <type name="Object" c:type="GObject*"/>
18959+ </parameter>
18960+ </parameters>
18961+ </callback>
18962+ <record name="WeakRef" c:type="GWeakRef">
18963+ <doc xml:space="preserve"
18964+ filename="gobject-2.0.c"
18965+ line="157">A structure containing a weak reference to a #GObject.
18966+
18967+A `GWeakRef` can either be empty (i.e. point to %NULL), or point to an
18968+object for as long as at least one "strong" reference to that object
18969+exists. Before the object's #GObjectClass.dispose method is called,
18970+every #GWeakRef associated with becomes empty (i.e. points to %NULL).
18971+
18972+Like #GValue, #GWeakRef can be statically allocated, stack- or
18973+heap-allocated, or embedded in larger structures.
18974+
18975+Unlike g_object_weak_ref() and g_object_add_weak_pointer(), this weak
18976+reference is thread-safe: converting a weak pointer to a reference is
18977+atomic with respect to invalidation of weak pointers to destroyed
18978+objects.
18979+
18980+If the object's #GObjectClass.dispose method results in additional
18981+references to the object being held (‘re-referencing’), any #GWeakRefs taken
18982+before it was disposed will continue to point to %NULL. Any #GWeakRefs taken
18983+during disposal and after re-referencing, or after disposal has returned due
18984+to the re-referencing, will continue to point to the object until its refcount
18985+goes back to zero, at which point they too will be invalidated.
18986+
18987+It is invalid to take a #GWeakRef on an object during #GObjectClass.dispose
18988+without first having or creating a strong reference to the object.</doc>
18989+ <source-position filename="gobject.h" line="931"/>
18990+ <union name="priv" c:type="priv">
18991+ <source-position filename="gobject.h" line="930"/>
18992+ <field name="p" writable="1">
18993+ <type name="gpointer" c:type="gpointer"/>
18994+ </field>
18995+ </union>
18996+ <method name="clear"
18997+ c:identifier="g_weak_ref_clear"
18998+ version="2.32"
18999+ introspectable="0">
19000+ <doc xml:space="preserve"
19001+ filename="gobject-2.0.c"
19002+ line="7646">Frees resources associated with a non-statically-allocated #GWeakRef.
19003+After this call, the #GWeakRef is left in an undefined state.
19004+
19005+You should only call this on a #GWeakRef that previously had
19006+g_weak_ref_init() called on it.</doc>
19007+ <source-position filename="gobject.h" line="937"/>
19008+ <return-value transfer-ownership="none">
19009+ <type name="none" c:type="void"/>
19010+ </return-value>
19011+ <parameters>
19012+ <instance-parameter name="weak_ref"
19013+ direction="inout"
19014+ caller-allocates="0"
19015+ transfer-ownership="full">
19016+ <doc xml:space="preserve"
19017+ filename="gobject-2.0.c"
19018+ line="7648">location of a weak reference, which
19019+ may be empty</doc>
19020+ <type name="WeakRef" c:type="GWeakRef*"/>
19021+ </instance-parameter>
19022+ </parameters>
19023+ </method>
19024+ <method name="get"
19025+ c:identifier="g_weak_ref_get"
19026+ version="2.32"
19027+ introspectable="0">
19028+ <doc xml:space="preserve"
19029+ filename="gobject-2.0.c"
19030+ line="7661">If @weak_ref is not empty, atomically acquire a strong
19031+reference to the object it points to, and return that reference.
19032+
19033+This function is needed because of the potential race between taking
19034+the pointer value and g_object_ref() on it, if the object was losing
19035+its last reference at the same time in a different thread.
19036+
19037+The caller should release the resulting reference in the usual way,
19038+by using g_object_unref().</doc>
19039+ <source-position filename="gobject.h" line="939"/>
19040+ <return-value transfer-ownership="full">
19041+ <doc xml:space="preserve"
19042+ filename="gobject-2.0.c"
19043+ line="7675">the object pointed to
19044+ by @weak_ref, or %NULL if it was empty</doc>
19045+ <type name="Object" c:type="gpointer"/>
19046+ </return-value>
19047+ <parameters>
19048+ <instance-parameter name="weak_ref"
19049+ direction="inout"
19050+ caller-allocates="0"
19051+ transfer-ownership="full">
19052+ <doc xml:space="preserve"
19053+ filename="gobject-2.0.c"
19054+ line="7663">location of a weak reference to a #GObject</doc>
19055+ <type name="WeakRef" c:type="GWeakRef*"/>
19056+ </instance-parameter>
19057+ </parameters>
19058+ </method>
19059+ <method name="init"
19060+ c:identifier="g_weak_ref_init"
19061+ version="2.32"
19062+ introspectable="0">
19063+ <doc xml:space="preserve"
19064+ filename="gobject-2.0.c"
19065+ line="7681">Initialise a non-statically-allocated #GWeakRef.
19066+
19067+This function also calls g_weak_ref_set() with @object on the
19068+freshly-initialised weak reference.
19069+
19070+This function should always be matched with a call to
19071+g_weak_ref_clear(). It is not necessary to use this function for a
19072+#GWeakRef in static storage because it will already be
19073+properly initialised. Just use g_weak_ref_set() directly.</doc>
19074+ <source-position filename="gobject.h" line="934"/>
19075+ <return-value transfer-ownership="none">
19076+ <type name="none" c:type="void"/>
19077+ </return-value>
19078+ <parameters>
19079+ <instance-parameter name="weak_ref"
19080+ direction="inout"
19081+ caller-allocates="0"
19082+ transfer-ownership="full">
19083+ <doc xml:space="preserve"
19084+ filename="gobject-2.0.c"
19085+ line="7683">uninitialized or empty location for a weak
19086+ reference</doc>
19087+ <type name="WeakRef" c:type="GWeakRef*"/>
19088+ </instance-parameter>
19089+ <parameter name="object"
19090+ transfer-ownership="none"
19091+ nullable="1"
19092+ allow-none="1">
19093+ <doc xml:space="preserve"
19094+ filename="gobject-2.0.c"
19095+ line="7685">a #GObject or %NULL</doc>
19096+ <type name="Object" c:type="gpointer"/>
19097+ </parameter>
19098+ </parameters>
19099+ </method>
19100+ <method name="set"
19101+ c:identifier="g_weak_ref_set"
19102+ version="2.32"
19103+ introspectable="0">
19104+ <doc xml:space="preserve"
19105+ filename="gobject-2.0.c"
19106+ line="7701">Change the object to which @weak_ref points, or set it to
19107+%NULL.
19108+
19109+You must own a strong reference on @object while calling this
19110+function.</doc>
19111+ <source-position filename="gobject.h" line="941"/>
19112+ <return-value transfer-ownership="none">
19113+ <type name="none" c:type="void"/>
19114+ </return-value>
19115+ <parameters>
19116+ <instance-parameter name="weak_ref" transfer-ownership="none">
19117+ <doc xml:space="preserve"
19118+ filename="gobject-2.0.c"
19119+ line="7703">location for a weak reference</doc>
19120+ <type name="WeakRef" c:type="GWeakRef*"/>
19121+ </instance-parameter>
19122+ <parameter name="object"
19123+ transfer-ownership="none"
19124+ nullable="1"
19125+ allow-none="1">
19126+ <doc xml:space="preserve"
19127+ filename="gobject-2.0.c"
19128+ line="7704">a #GObject or %NULL</doc>
19129+ <type name="Object" c:type="gpointer"/>
19130+ </parameter>
19131+ </parameters>
19132+ </method>
19133+ </record>
19134+ <union name="_Value__data__union">
19135+ <field name="v_int" writable="1">
19136+ <type name="gint" c:type="gint"/>
19137+ </field>
19138+ <field name="v_uint" writable="1">
19139+ <type name="guint" c:type="guint"/>
19140+ </field>
19141+ <field name="v_long" writable="1">
19142+ <type name="glong" c:type="glong"/>
19143+ </field>
19144+ <field name="v_ulong" writable="1">
19145+ <type name="gulong" c:type="gulong"/>
19146+ </field>
19147+ <field name="v_int64" writable="1">
19148+ <type name="gint64" c:type="gint64"/>
19149+ </field>
19150+ <field name="v_uint64" writable="1">
19151+ <type name="guint64" c:type="guint64"/>
19152+ </field>
19153+ <field name="v_float" writable="1">
19154+ <type name="gfloat" c:type="gfloat"/>
19155+ </field>
19156+ <field name="v_double" writable="1">
19157+ <type name="gdouble" c:type="gdouble"/>
19158+ </field>
19159+ <field name="v_pointer" writable="1">
19160+ <type name="gpointer" c:type="gpointer"/>
19161+ </field>
19162+ </union>
19163+ <function-macro name="assert_finalize_object"
19164+ c:identifier="g_assert_finalize_object"
19165+ version="2.62"
19166+ introspectable="0">
19167+ <doc xml:space="preserve"
19168+ filename="gobject.h"
19169+ line="792">Assert that @object is non-%NULL, then release one reference to it with
19170+g_object_unref() and assert that it has been finalized (i.e. that there
19171+are no more references).
19172+
19173+If assertions are disabled via `G_DISABLE_ASSERT`,
19174+this macro just calls g_object_unref() without any further checks.
19175+
19176+This macro should only be used in regression tests.</doc>
19177+ <source-position filename="gobject.h" line="819"/>
19178+ <parameters>
19179+ <parameter name="object">
19180+ <doc xml:space="preserve"
19181+ filename="gobject.h"
19182+ line="794">an object</doc>
19183+ </parameter>
19184+ </parameters>
19185+ </function-macro>
19186+ <function name="boxed_copy" c:identifier="g_boxed_copy">
19187+ <doc xml:space="preserve"
19188+ filename="gobject-2.0.c"
19189+ line="1211">Provide a copy of a boxed structure @src_boxed which is of type @boxed_type.</doc>
19190+ <source-position filename="gboxed.h" line="70"/>
19191+ <return-value transfer-ownership="full">
19192+ <doc xml:space="preserve"
19193+ filename="gobject-2.0.c"
19194+ line="1218">The newly created copy of the boxed
19195+ structure.</doc>
19196+ <type name="gpointer" c:type="gpointer"/>
19197+ </return-value>
19198+ <parameters>
19199+ <parameter name="boxed_type" transfer-ownership="none">
19200+ <doc xml:space="preserve"
19201+ filename="gobject-2.0.c"
19202+ line="1213">The type of @src_boxed.</doc>
19203+ <type name="GType" c:type="GType"/>
19204+ </parameter>
19205+ <parameter name="src_boxed" transfer-ownership="none">
19206+ <doc xml:space="preserve"
19207+ filename="gobject-2.0.c"
19208+ line="1214">The boxed structure to be copied.</doc>
19209+ <type name="gpointer" c:type="gconstpointer"/>
19210+ </parameter>
19211+ </parameters>
19212+ </function>
19213+ <function name="boxed_free" c:identifier="g_boxed_free">
19214+ <doc xml:space="preserve"
19215+ filename="gobject-2.0.c"
19216+ line="1223">Free the boxed structure @boxed which is of type @boxed_type.</doc>
19217+ <source-position filename="gboxed.h" line="73"/>
19218+ <return-value transfer-ownership="none">
19219+ <type name="none" c:type="void"/>
19220+ </return-value>
19221+ <parameters>
19222+ <parameter name="boxed_type" transfer-ownership="none">
19223+ <doc xml:space="preserve"
19224+ filename="gobject-2.0.c"
19225+ line="1225">The type of @boxed.</doc>
19226+ <type name="GType" c:type="GType"/>
19227+ </parameter>
19228+ <parameter name="boxed" transfer-ownership="none">
19229+ <doc xml:space="preserve"
19230+ filename="gobject-2.0.c"
19231+ line="1226">The boxed structure to be freed.</doc>
19232+ <type name="gpointer" c:type="gpointer"/>
19233+ </parameter>
19234+ </parameters>
19235+ </function>
19236+ <function name="boxed_type_register_static"
19237+ c:identifier="g_boxed_type_register_static"
19238+ introspectable="0">
19239+ <doc xml:space="preserve"
19240+ filename="gobject-2.0.c"
19241+ line="1232">This function creates a new %G_TYPE_BOXED derived type id for a new
19242+boxed type with name @name.
19243+
19244+Boxed type handling functions have to be provided to copy and free
19245+opaque boxed structures of this type.
19246+
19247+For the general case, it is recommended to use G_DEFINE_BOXED_TYPE()
19248+instead of calling g_boxed_type_register_static() directly. The macro
19249+will create the appropriate `*_get_type()` function for the boxed type.</doc>
19250+ <source-position filename="gboxed.h" line="95"/>
19251+ <return-value transfer-ownership="none">
19252+ <doc xml:space="preserve"
19253+ filename="gobject-2.0.c"
19254+ line="1248">New %G_TYPE_BOXED derived type id for @name.</doc>
19255+ <type name="GType" c:type="GType"/>
19256+ </return-value>
19257+ <parameters>
19258+ <parameter name="name" transfer-ownership="none">
19259+ <doc xml:space="preserve"
19260+ filename="gobject-2.0.c"
19261+ line="1234">Name of the new boxed type.</doc>
19262+ <type name="utf8" c:type="const gchar*"/>
19263+ </parameter>
19264+ <parameter name="boxed_copy" transfer-ownership="none">
19265+ <doc xml:space="preserve"
19266+ filename="gobject-2.0.c"
19267+ line="1235">Boxed structure copy function.</doc>
19268+ <type name="BoxedCopyFunc" c:type="GBoxedCopyFunc"/>
19269+ </parameter>
19270+ <parameter name="boxed_free" transfer-ownership="none">
19271+ <doc xml:space="preserve"
19272+ filename="gobject-2.0.c"
19273+ line="1236">Boxed structure free function.</doc>
19274+ <type name="BoxedFreeFunc" c:type="GBoxedFreeFunc"/>
19275+ </parameter>
19276+ </parameters>
19277+ </function>
19278+ <function name="cclosure_marshal_BOOLEAN__BOXED_BOXED"
19279+ c:identifier="g_cclosure_marshal_BOOLEAN__BOXED_BOXED"
19280+ moved-to="CClosure.marshal_BOOLEAN__BOXED_BOXED">
19281+ <doc xml:space="preserve"
19282+ filename="gobject-2.0.c"
19283+ line="1252">A #GClosureMarshal function for use with signals with handlers that
19284+take two boxed pointers as arguments and return a boolean. If you
19285+have such a signal, you will probably also need to use an
19286+accumulator, such as g_signal_accumulator_true_handled().</doc>
19287+ <source-position filename="gmarshal.h" line="399"/>
19288+ <return-value transfer-ownership="none">
19289+ <type name="none" c:type="void"/>
19290+ </return-value>
19291+ <parameters>
19292+ <parameter name="closure" transfer-ownership="none">
19293+ <doc xml:space="preserve"
19294+ filename="gobject-2.0.c"
19295+ line="1254">A #GClosure.</doc>
19296+ <type name="Closure" c:type="GClosure*"/>
19297+ </parameter>
19298+ <parameter name="return_value" transfer-ownership="none">
19299+ <doc xml:space="preserve"
19300+ filename="gobject-2.0.c"
19301+ line="1255">A #GValue to store the return value. May be %NULL
19302+ if the callback of closure doesn't return a value.</doc>
19303+ <type name="Value" c:type="GValue*"/>
19304+ </parameter>
19305+ <parameter name="n_param_values" transfer-ownership="none">
19306+ <doc xml:space="preserve"
19307+ filename="gobject-2.0.c"
19308+ line="1257">The length of the @param_values array.</doc>
19309+ <type name="guint" c:type="guint"/>
19310+ </parameter>
19311+ <parameter name="param_values" transfer-ownership="none">
19312+ <doc xml:space="preserve"
19313+ filename="gobject-2.0.c"
19314+ line="1258">An array of #GValues holding the arguments
19315+ on which to invoke the callback of closure.</doc>
19316+ <type name="Value" c:type="const GValue*"/>
19317+ </parameter>
19318+ <parameter name="invocation_hint"
19319+ transfer-ownership="none"
19320+ nullable="1"
19321+ allow-none="1">
19322+ <doc xml:space="preserve"
19323+ filename="gobject-2.0.c"
19324+ line="1260">The invocation hint given as the last argument to
19325+ g_closure_invoke().</doc>
19326+ <type name="gpointer" c:type="gpointer"/>
19327+ </parameter>
19328+ <parameter name="marshal_data"
19329+ transfer-ownership="none"
19330+ nullable="1"
19331+ allow-none="1">
19332+ <doc xml:space="preserve"
19333+ filename="gobject-2.0.c"
19334+ line="1262">Additional data specified when registering the
19335+ marshaller, see g_closure_set_marshal() and
19336+ g_closure_set_meta_marshal()</doc>
19337+ <type name="gpointer" c:type="gpointer"/>
19338+ </parameter>
19339+ </parameters>
19340+ </function>
19341+ <function name="cclosure_marshal_BOOLEAN__FLAGS"
19342+ c:identifier="g_cclosure_marshal_BOOLEAN__FLAGS"
19343+ moved-to="CClosure.marshal_BOOLEAN__FLAGS">
19344+ <doc xml:space="preserve"
19345+ filename="gobject-2.0.c"
19346+ line="1292">A marshaller for a #GCClosure with a callback of type
19347+`gboolean (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter
19348+denotes a flags type.</doc>
19349+ <source-position filename="gmarshal.h" line="347"/>
19350+ <return-value transfer-ownership="none">
19351+ <type name="none" c:type="void"/>
19352+ </return-value>
19353+ <parameters>
19354+ <parameter name="closure" transfer-ownership="none">
19355+ <doc xml:space="preserve"
19356+ filename="gobject-2.0.c"
19357+ line="1294">the #GClosure to which the marshaller belongs</doc>
19358+ <type name="Closure" c:type="GClosure*"/>
19359+ </parameter>
19360+ <parameter name="return_value" transfer-ownership="none">
19361+ <doc xml:space="preserve"
19362+ filename="gobject-2.0.c"
19363+ line="1295">a #GValue which can store the returned #gboolean</doc>
19364+ <type name="Value" c:type="GValue*"/>
19365+ </parameter>
19366+ <parameter name="n_param_values" transfer-ownership="none">
19367+ <doc xml:space="preserve"
19368+ filename="gobject-2.0.c"
19369+ line="1296">2</doc>
19370+ <type name="guint" c:type="guint"/>
19371+ </parameter>
19372+ <parameter name="param_values" transfer-ownership="none">
19373+ <doc xml:space="preserve"
19374+ filename="gobject-2.0.c"
19375+ line="1297">a #GValue array holding instance and arg1</doc>
19376+ <type name="Value" c:type="const GValue*"/>
19377+ </parameter>
19378+ <parameter name="invocation_hint"
19379+ transfer-ownership="none"
19380+ nullable="1"
19381+ allow-none="1">
19382+ <doc xml:space="preserve"
19383+ filename="gobject-2.0.c"
19384+ line="1298">the invocation hint given as the last argument
19385+ to g_closure_invoke()</doc>
19386+ <type name="gpointer" c:type="gpointer"/>
19387+ </parameter>
19388+ <parameter name="marshal_data"
19389+ transfer-ownership="none"
19390+ nullable="1"
19391+ allow-none="1">
19392+ <doc xml:space="preserve"
19393+ filename="gobject-2.0.c"
19394+ line="1300">additional data specified when registering the marshaller</doc>
19395+ <type name="gpointer" c:type="gpointer"/>
19396+ </parameter>
19397+ </parameters>
19398+ </function>
19399+ <function name="cclosure_marshal_STRING__OBJECT_POINTER"
19400+ c:identifier="g_cclosure_marshal_STRING__OBJECT_POINTER"
19401+ moved-to="CClosure.marshal_STRING__OBJECT_POINTER">
19402+ <doc xml:space="preserve"
19403+ filename="gobject-2.0.c"
19404+ line="1351">A marshaller for a #GCClosure with a callback of type
19405+`gchar* (*callback) (gpointer instance, GObject *arg1, gpointer arg2, gpointer user_data)`.</doc>
19406+ <source-position filename="gmarshal.h" line="382"/>
19407+ <return-value transfer-ownership="none">
19408+ <type name="none" c:type="void"/>
19409+ </return-value>
19410+ <parameters>
19411+ <parameter name="closure" transfer-ownership="none">
19412+ <doc xml:space="preserve"
19413+ filename="gobject-2.0.c"
19414+ line="1353">the #GClosure to which the marshaller belongs</doc>
19415+ <type name="Closure" c:type="GClosure*"/>
19416+ </parameter>
19417+ <parameter name="return_value" transfer-ownership="none">
19418+ <doc xml:space="preserve"
19419+ filename="gobject-2.0.c"
19420+ line="1354">a #GValue, which can store the returned string</doc>
19421+ <type name="Value" c:type="GValue*"/>
19422+ </parameter>
19423+ <parameter name="n_param_values" transfer-ownership="none">
19424+ <doc xml:space="preserve"
19425+ filename="gobject-2.0.c"
19426+ line="1355">3</doc>
19427+ <type name="guint" c:type="guint"/>
19428+ </parameter>
19429+ <parameter name="param_values" transfer-ownership="none">
19430+ <doc xml:space="preserve"
19431+ filename="gobject-2.0.c"
19432+ line="1356">a #GValue array holding instance, arg1 and arg2</doc>
19433+ <type name="Value" c:type="const GValue*"/>
19434+ </parameter>
19435+ <parameter name="invocation_hint"
19436+ transfer-ownership="none"
19437+ nullable="1"
19438+ allow-none="1">
19439+ <doc xml:space="preserve"
19440+ filename="gobject-2.0.c"
19441+ line="1357">the invocation hint given as the last argument
19442+ to g_closure_invoke()</doc>
19443+ <type name="gpointer" c:type="gpointer"/>
19444+ </parameter>
19445+ <parameter name="marshal_data"
19446+ transfer-ownership="none"
19447+ nullable="1"
19448+ allow-none="1">
19449+ <doc xml:space="preserve"
19450+ filename="gobject-2.0.c"
19451+ line="1359">additional data specified when registering the marshaller</doc>
19452+ <type name="gpointer" c:type="gpointer"/>
19453+ </parameter>
19454+ </parameters>
19455+ </function>
19456+ <function name="cclosure_marshal_VOID__BOOLEAN"
19457+ c:identifier="g_cclosure_marshal_VOID__BOOLEAN"
19458+ moved-to="CClosure.marshal_VOID__BOOLEAN">
19459+ <doc xml:space="preserve"
19460+ filename="gobject-2.0.c"
19461+ line="1385">A marshaller for a #GCClosure with a callback of type
19462+`void (*callback) (gpointer instance, gboolean arg1, gpointer user_data)`.</doc>
19463+ <source-position filename="gmarshal.h" line="41"/>
19464+ <return-value transfer-ownership="none">
19465+ <type name="none" c:type="void"/>
19466+ </return-value>
19467+ <parameters>
19468+ <parameter name="closure" transfer-ownership="none">
19469+ <doc xml:space="preserve"
19470+ filename="gobject-2.0.c"
19471+ line="1387">the #GClosure to which the marshaller belongs</doc>
19472+ <type name="Closure" c:type="GClosure*"/>
19473+ </parameter>
19474+ <parameter name="return_value" transfer-ownership="none">
19475+ <doc xml:space="preserve"
19476+ filename="gobject-2.0.c"
19477+ line="1388">ignored</doc>
19478+ <type name="Value" c:type="GValue*"/>
19479+ </parameter>
19480+ <parameter name="n_param_values" transfer-ownership="none">
19481+ <doc xml:space="preserve"
19482+ filename="gobject-2.0.c"
19483+ line="1389">2</doc>
19484+ <type name="guint" c:type="guint"/>
19485+ </parameter>
19486+ <parameter name="param_values" transfer-ownership="none">
19487+ <doc xml:space="preserve"
19488+ filename="gobject-2.0.c"
19489+ line="1390">a #GValue array holding the instance and the #gboolean parameter</doc>
19490+ <type name="Value" c:type="const GValue*"/>
19491+ </parameter>
19492+ <parameter name="invocation_hint"
19493+ transfer-ownership="none"
19494+ nullable="1"
19495+ allow-none="1">
19496+ <doc xml:space="preserve"
19497+ filename="gobject-2.0.c"
19498+ line="1391">the invocation hint given as the last argument
19499+ to g_closure_invoke()</doc>
19500+ <type name="gpointer" c:type="gpointer"/>
19501+ </parameter>
19502+ <parameter name="marshal_data"
19503+ transfer-ownership="none"
19504+ nullable="1"
19505+ allow-none="1">
19506+ <doc xml:space="preserve"
19507+ filename="gobject-2.0.c"
19508+ line="1393">additional data specified when registering the marshaller</doc>
19509+ <type name="gpointer" c:type="gpointer"/>
19510+ </parameter>
19511+ </parameters>
19512+ </function>
19513+ <function name="cclosure_marshal_VOID__BOXED"
19514+ c:identifier="g_cclosure_marshal_VOID__BOXED"
19515+ moved-to="CClosure.marshal_VOID__BOXED">
19516+ <doc xml:space="preserve"
19517+ filename="gobject-2.0.c"
19518+ line="1419">A marshaller for a #GCClosure with a callback of type
19519+`void (*callback) (gpointer instance, GBoxed *arg1, gpointer user_data)`.</doc>
19520+ <source-position filename="gmarshal.h" line="262"/>
19521+ <return-value transfer-ownership="none">
19522+ <type name="none" c:type="void"/>
19523+ </return-value>
19524+ <parameters>
19525+ <parameter name="closure" transfer-ownership="none">
19526+ <doc xml:space="preserve"
19527+ filename="gobject-2.0.c"
19528+ line="1421">the #GClosure to which the marshaller belongs</doc>
19529+ <type name="Closure" c:type="GClosure*"/>
19530+ </parameter>
19531+ <parameter name="return_value" transfer-ownership="none">
19532+ <doc xml:space="preserve"
19533+ filename="gobject-2.0.c"
19534+ line="1422">ignored</doc>
19535+ <type name="Value" c:type="GValue*"/>
19536+ </parameter>
19537+ <parameter name="n_param_values" transfer-ownership="none">
19538+ <doc xml:space="preserve"
19539+ filename="gobject-2.0.c"
19540+ line="1423">2</doc>
19541+ <type name="guint" c:type="guint"/>
19542+ </parameter>
19543+ <parameter name="param_values" transfer-ownership="none">
19544+ <doc xml:space="preserve"
19545+ filename="gobject-2.0.c"
19546+ line="1424">a #GValue array holding the instance and the #GBoxed* parameter</doc>
19547+ <type name="Value" c:type="const GValue*"/>
19548+ </parameter>
19549+ <parameter name="invocation_hint"
19550+ transfer-ownership="none"
19551+ nullable="1"
19552+ allow-none="1">
19553+ <doc xml:space="preserve"
19554+ filename="gobject-2.0.c"
19555+ line="1425">the invocation hint given as the last argument
19556+ to g_closure_invoke()</doc>
19557+ <type name="gpointer" c:type="gpointer"/>
19558+ </parameter>
19559+ <parameter name="marshal_data"
19560+ transfer-ownership="none"
19561+ nullable="1"
19562+ allow-none="1">
19563+ <doc xml:space="preserve"
19564+ filename="gobject-2.0.c"
19565+ line="1427">additional data specified when registering the marshaller</doc>
19566+ <type name="gpointer" c:type="gpointer"/>
19567+ </parameter>
19568+ </parameters>
19569+ </function>
19570+ <function name="cclosure_marshal_VOID__CHAR"
19571+ c:identifier="g_cclosure_marshal_VOID__CHAR"
19572+ moved-to="CClosure.marshal_VOID__CHAR">
19573+ <doc xml:space="preserve"
19574+ filename="gobject-2.0.c"
19575+ line="1453">A marshaller for a #GCClosure with a callback of type
19576+`void (*callback) (gpointer instance, gchar arg1, gpointer user_data)`.</doc>
19577+ <source-position filename="gmarshal.h" line="58"/>
19578+ <return-value transfer-ownership="none">
19579+ <type name="none" c:type="void"/>
19580+ </return-value>
19581+ <parameters>
19582+ <parameter name="closure" transfer-ownership="none">
19583+ <doc xml:space="preserve"
19584+ filename="gobject-2.0.c"
19585+ line="1455">the #GClosure to which the marshaller belongs</doc>
19586+ <type name="Closure" c:type="GClosure*"/>
19587+ </parameter>
19588+ <parameter name="return_value" transfer-ownership="none">
19589+ <doc xml:space="preserve"
19590+ filename="gobject-2.0.c"
19591+ line="1456">ignored</doc>
19592+ <type name="Value" c:type="GValue*"/>
19593+ </parameter>
19594+ <parameter name="n_param_values" transfer-ownership="none">
19595+ <doc xml:space="preserve"
19596+ filename="gobject-2.0.c"
19597+ line="1457">2</doc>
19598+ <type name="guint" c:type="guint"/>
19599+ </parameter>
19600+ <parameter name="param_values" transfer-ownership="none">
19601+ <doc xml:space="preserve"
19602+ filename="gobject-2.0.c"
19603+ line="1458">a #GValue array holding the instance and the #gchar parameter</doc>
19604+ <type name="Value" c:type="const GValue*"/>
19605+ </parameter>
19606+ <parameter name="invocation_hint"
19607+ transfer-ownership="none"
19608+ nullable="1"
19609+ allow-none="1">
19610+ <doc xml:space="preserve"
19611+ filename="gobject-2.0.c"
19612+ line="1459">the invocation hint given as the last argument
19613+ to g_closure_invoke()</doc>
19614+ <type name="gpointer" c:type="gpointer"/>
19615+ </parameter>
19616+ <parameter name="marshal_data"
19617+ transfer-ownership="none"
19618+ nullable="1"
19619+ allow-none="1">
19620+ <doc xml:space="preserve"
19621+ filename="gobject-2.0.c"
19622+ line="1461">additional data specified when registering the marshaller</doc>
19623+ <type name="gpointer" c:type="gpointer"/>
19624+ </parameter>
19625+ </parameters>
19626+ </function>
19627+ <function name="cclosure_marshal_VOID__DOUBLE"
19628+ c:identifier="g_cclosure_marshal_VOID__DOUBLE"
19629+ moved-to="CClosure.marshal_VOID__DOUBLE">
19630+ <doc xml:space="preserve"
19631+ filename="gobject-2.0.c"
19632+ line="1487">A marshaller for a #GCClosure with a callback of type
19633+`void (*callback) (gpointer instance, gdouble arg1, gpointer user_data)`.</doc>
19634+ <source-position filename="gmarshal.h" line="211"/>
19635+ <return-value transfer-ownership="none">
19636+ <type name="none" c:type="void"/>
19637+ </return-value>
19638+ <parameters>
19639+ <parameter name="closure" transfer-ownership="none">
19640+ <doc xml:space="preserve"
19641+ filename="gobject-2.0.c"
19642+ line="1489">the #GClosure to which the marshaller belongs</doc>
19643+ <type name="Closure" c:type="GClosure*"/>
19644+ </parameter>
19645+ <parameter name="return_value" transfer-ownership="none">
19646+ <doc xml:space="preserve"
19647+ filename="gobject-2.0.c"
19648+ line="1490">ignored</doc>
19649+ <type name="Value" c:type="GValue*"/>
19650+ </parameter>
19651+ <parameter name="n_param_values" transfer-ownership="none">
19652+ <doc xml:space="preserve"
19653+ filename="gobject-2.0.c"
19654+ line="1491">2</doc>
19655+ <type name="guint" c:type="guint"/>
19656+ </parameter>
19657+ <parameter name="param_values" transfer-ownership="none">
19658+ <doc xml:space="preserve"
19659+ filename="gobject-2.0.c"
19660+ line="1492">a #GValue array holding the instance and the #gdouble parameter</doc>
19661+ <type name="Value" c:type="const GValue*"/>
19662+ </parameter>
19663+ <parameter name="invocation_hint"
19664+ transfer-ownership="none"
19665+ nullable="1"
19666+ allow-none="1">
19667+ <doc xml:space="preserve"
19668+ filename="gobject-2.0.c"
19669+ line="1493">the invocation hint given as the last argument
19670+ to g_closure_invoke()</doc>
19671+ <type name="gpointer" c:type="gpointer"/>
19672+ </parameter>
19673+ <parameter name="marshal_data"
19674+ transfer-ownership="none"
19675+ nullable="1"
19676+ allow-none="1">
19677+ <doc xml:space="preserve"
19678+ filename="gobject-2.0.c"
19679+ line="1495">additional data specified when registering the marshaller</doc>
19680+ <type name="gpointer" c:type="gpointer"/>
19681+ </parameter>
19682+ </parameters>
19683+ </function>
19684+ <function name="cclosure_marshal_VOID__ENUM"
19685+ c:identifier="g_cclosure_marshal_VOID__ENUM"
19686+ moved-to="CClosure.marshal_VOID__ENUM">
19687+ <doc xml:space="preserve"
19688+ filename="gobject-2.0.c"
19689+ line="1521">A marshaller for a #GCClosure with a callback of type
19690+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter denotes an enumeration type..</doc>
19691+ <source-position filename="gmarshal.h" line="160"/>
19692+ <return-value transfer-ownership="none">
19693+ <type name="none" c:type="void"/>
19694+ </return-value>
19695+ <parameters>
19696+ <parameter name="closure" transfer-ownership="none">
19697+ <doc xml:space="preserve"
19698+ filename="gobject-2.0.c"
19699+ line="1523">the #GClosure to which the marshaller belongs</doc>
19700+ <type name="Closure" c:type="GClosure*"/>
19701+ </parameter>
19702+ <parameter name="return_value" transfer-ownership="none">
19703+ <doc xml:space="preserve"
19704+ filename="gobject-2.0.c"
19705+ line="1524">ignored</doc>
19706+ <type name="Value" c:type="GValue*"/>
19707+ </parameter>
19708+ <parameter name="n_param_values" transfer-ownership="none">
19709+ <doc xml:space="preserve"
19710+ filename="gobject-2.0.c"
19711+ line="1525">2</doc>
19712+ <type name="guint" c:type="guint"/>
19713+ </parameter>
19714+ <parameter name="param_values" transfer-ownership="none">
19715+ <doc xml:space="preserve"
19716+ filename="gobject-2.0.c"
19717+ line="1526">a #GValue array holding the instance and the enumeration parameter</doc>
19718+ <type name="Value" c:type="const GValue*"/>
19719+ </parameter>
19720+ <parameter name="invocation_hint"
19721+ transfer-ownership="none"
19722+ nullable="1"
19723+ allow-none="1">
19724+ <doc xml:space="preserve"
19725+ filename="gobject-2.0.c"
19726+ line="1527">the invocation hint given as the last argument
19727+ to g_closure_invoke()</doc>
19728+ <type name="gpointer" c:type="gpointer"/>
19729+ </parameter>
19730+ <parameter name="marshal_data"
19731+ transfer-ownership="none"
19732+ nullable="1"
19733+ allow-none="1">
19734+ <doc xml:space="preserve"
19735+ filename="gobject-2.0.c"
19736+ line="1529">additional data specified when registering the marshaller</doc>
19737+ <type name="gpointer" c:type="gpointer"/>
19738+ </parameter>
19739+ </parameters>
19740+ </function>
19741+ <function name="cclosure_marshal_VOID__FLAGS"
19742+ c:identifier="g_cclosure_marshal_VOID__FLAGS"
19743+ moved-to="CClosure.marshal_VOID__FLAGS">
19744+ <doc xml:space="preserve"
19745+ filename="gobject-2.0.c"
19746+ line="1555">A marshaller for a #GCClosure with a callback of type
19747+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)` where the #gint parameter denotes a flags type.</doc>
19748+ <source-position filename="gmarshal.h" line="177"/>
19749+ <return-value transfer-ownership="none">
19750+ <type name="none" c:type="void"/>
19751+ </return-value>
19752+ <parameters>
19753+ <parameter name="closure" transfer-ownership="none">
19754+ <doc xml:space="preserve"
19755+ filename="gobject-2.0.c"
19756+ line="1557">the #GClosure to which the marshaller belongs</doc>
19757+ <type name="Closure" c:type="GClosure*"/>
19758+ </parameter>
19759+ <parameter name="return_value" transfer-ownership="none">
19760+ <doc xml:space="preserve"
19761+ filename="gobject-2.0.c"
19762+ line="1558">ignored</doc>
19763+ <type name="Value" c:type="GValue*"/>
19764+ </parameter>
19765+ <parameter name="n_param_values" transfer-ownership="none">
19766+ <doc xml:space="preserve"
19767+ filename="gobject-2.0.c"
19768+ line="1559">2</doc>
19769+ <type name="guint" c:type="guint"/>
19770+ </parameter>
19771+ <parameter name="param_values" transfer-ownership="none">
19772+ <doc xml:space="preserve"
19773+ filename="gobject-2.0.c"
19774+ line="1560">a #GValue array holding the instance and the flags parameter</doc>
19775+ <type name="Value" c:type="const GValue*"/>
19776+ </parameter>
19777+ <parameter name="invocation_hint"
19778+ transfer-ownership="none"
19779+ nullable="1"
19780+ allow-none="1">
19781+ <doc xml:space="preserve"
19782+ filename="gobject-2.0.c"
19783+ line="1561">the invocation hint given as the last argument
19784+ to g_closure_invoke()</doc>
19785+ <type name="gpointer" c:type="gpointer"/>
19786+ </parameter>
19787+ <parameter name="marshal_data"
19788+ transfer-ownership="none"
19789+ nullable="1"
19790+ allow-none="1">
19791+ <doc xml:space="preserve"
19792+ filename="gobject-2.0.c"
19793+ line="1563">additional data specified when registering the marshaller</doc>
19794+ <type name="gpointer" c:type="gpointer"/>
19795+ </parameter>
19796+ </parameters>
19797+ </function>
19798+ <function name="cclosure_marshal_VOID__FLOAT"
19799+ c:identifier="g_cclosure_marshal_VOID__FLOAT"
19800+ moved-to="CClosure.marshal_VOID__FLOAT">
19801+ <doc xml:space="preserve"
19802+ filename="gobject-2.0.c"
19803+ line="1589">A marshaller for a #GCClosure with a callback of type
19804+`void (*callback) (gpointer instance, gfloat arg1, gpointer user_data)`.</doc>
19805+ <source-position filename="gmarshal.h" line="194"/>
19806+ <return-value transfer-ownership="none">
19807+ <type name="none" c:type="void"/>
19808+ </return-value>
19809+ <parameters>
19810+ <parameter name="closure" transfer-ownership="none">
19811+ <doc xml:space="preserve"
19812+ filename="gobject-2.0.c"
19813+ line="1591">the #GClosure to which the marshaller belongs</doc>
19814+ <type name="Closure" c:type="GClosure*"/>
19815+ </parameter>
19816+ <parameter name="return_value" transfer-ownership="none">
19817+ <doc xml:space="preserve"
19818+ filename="gobject-2.0.c"
19819+ line="1592">ignored</doc>
19820+ <type name="Value" c:type="GValue*"/>
19821+ </parameter>
19822+ <parameter name="n_param_values" transfer-ownership="none">
19823+ <doc xml:space="preserve"
19824+ filename="gobject-2.0.c"
19825+ line="1593">2</doc>
19826+ <type name="guint" c:type="guint"/>
19827+ </parameter>
19828+ <parameter name="param_values" transfer-ownership="none">
19829+ <doc xml:space="preserve"
19830+ filename="gobject-2.0.c"
19831+ line="1594">a #GValue array holding the instance and the #gfloat parameter</doc>
19832+ <type name="Value" c:type="const GValue*"/>
19833+ </parameter>
19834+ <parameter name="invocation_hint"
19835+ transfer-ownership="none"
19836+ nullable="1"
19837+ allow-none="1">
19838+ <doc xml:space="preserve"
19839+ filename="gobject-2.0.c"
19840+ line="1595">the invocation hint given as the last argument
19841+ to g_closure_invoke()</doc>
19842+ <type name="gpointer" c:type="gpointer"/>
19843+ </parameter>
19844+ <parameter name="marshal_data"
19845+ transfer-ownership="none"
19846+ nullable="1"
19847+ allow-none="1">
19848+ <doc xml:space="preserve"
19849+ filename="gobject-2.0.c"
19850+ line="1597">additional data specified when registering the marshaller</doc>
19851+ <type name="gpointer" c:type="gpointer"/>
19852+ </parameter>
19853+ </parameters>
19854+ </function>
19855+ <function name="cclosure_marshal_VOID__INT"
19856+ c:identifier="g_cclosure_marshal_VOID__INT"
19857+ moved-to="CClosure.marshal_VOID__INT">
19858+ <doc xml:space="preserve"
19859+ filename="gobject-2.0.c"
19860+ line="1623">A marshaller for a #GCClosure with a callback of type
19861+`void (*callback) (gpointer instance, gint arg1, gpointer user_data)`.</doc>
19862+ <source-position filename="gmarshal.h" line="92"/>
19863+ <return-value transfer-ownership="none">
19864+ <type name="none" c:type="void"/>
19865+ </return-value>
19866+ <parameters>
19867+ <parameter name="closure" transfer-ownership="none">
19868+ <doc xml:space="preserve"
19869+ filename="gobject-2.0.c"
19870+ line="1625">the #GClosure to which the marshaller belongs</doc>
19871+ <type name="Closure" c:type="GClosure*"/>
19872+ </parameter>
19873+ <parameter name="return_value" transfer-ownership="none">
19874+ <doc xml:space="preserve"
19875+ filename="gobject-2.0.c"
19876+ line="1626">ignored</doc>
19877+ <type name="Value" c:type="GValue*"/>
19878+ </parameter>
19879+ <parameter name="n_param_values" transfer-ownership="none">
19880+ <doc xml:space="preserve"
19881+ filename="gobject-2.0.c"
19882+ line="1627">2</doc>
19883+ <type name="guint" c:type="guint"/>
19884+ </parameter>
19885+ <parameter name="param_values" transfer-ownership="none">
19886+ <doc xml:space="preserve"
19887+ filename="gobject-2.0.c"
19888+ line="1628">a #GValue array holding the instance and the #gint parameter</doc>
19889+ <type name="Value" c:type="const GValue*"/>
19890+ </parameter>
19891+ <parameter name="invocation_hint"
19892+ transfer-ownership="none"
19893+ nullable="1"
19894+ allow-none="1">
19895+ <doc xml:space="preserve"
19896+ filename="gobject-2.0.c"
19897+ line="1629">the invocation hint given as the last argument
19898+ to g_closure_invoke()</doc>
19899+ <type name="gpointer" c:type="gpointer"/>
19900+ </parameter>
19901+ <parameter name="marshal_data"
19902+ transfer-ownership="none"
19903+ nullable="1"
19904+ allow-none="1">
19905+ <doc xml:space="preserve"
19906+ filename="gobject-2.0.c"
19907+ line="1631">additional data specified when registering the marshaller</doc>
19908+ <type name="gpointer" c:type="gpointer"/>
19909+ </parameter>
19910+ </parameters>
19911+ </function>
19912+ <function name="cclosure_marshal_VOID__LONG"
19913+ c:identifier="g_cclosure_marshal_VOID__LONG"
19914+ moved-to="CClosure.marshal_VOID__LONG">
19915+ <doc xml:space="preserve"
19916+ filename="gobject-2.0.c"
19917+ line="1657">A marshaller for a #GCClosure with a callback of type
19918+`void (*callback) (gpointer instance, glong arg1, gpointer user_data)`.</doc>
19919+ <source-position filename="gmarshal.h" line="126"/>
19920+ <return-value transfer-ownership="none">
19921+ <type name="none" c:type="void"/>
19922+ </return-value>
19923+ <parameters>
19924+ <parameter name="closure" transfer-ownership="none">
19925+ <doc xml:space="preserve"
19926+ filename="gobject-2.0.c"
19927+ line="1659">the #GClosure to which the marshaller belongs</doc>
19928+ <type name="Closure" c:type="GClosure*"/>
19929+ </parameter>
19930+ <parameter name="return_value" transfer-ownership="none">
19931+ <doc xml:space="preserve"
19932+ filename="gobject-2.0.c"
19933+ line="1660">ignored</doc>
19934+ <type name="Value" c:type="GValue*"/>
19935+ </parameter>
19936+ <parameter name="n_param_values" transfer-ownership="none">
19937+ <doc xml:space="preserve"
19938+ filename="gobject-2.0.c"
19939+ line="1661">2</doc>
19940+ <type name="guint" c:type="guint"/>
19941+ </parameter>
19942+ <parameter name="param_values" transfer-ownership="none">
19943+ <doc xml:space="preserve"
19944+ filename="gobject-2.0.c"
19945+ line="1662">a #GValue array holding the instance and the #glong parameter</doc>
19946+ <type name="Value" c:type="const GValue*"/>
19947+ </parameter>
19948+ <parameter name="invocation_hint"
19949+ transfer-ownership="none"
19950+ nullable="1"
19951+ allow-none="1">
19952+ <doc xml:space="preserve"
19953+ filename="gobject-2.0.c"
19954+ line="1663">the invocation hint given as the last argument
19955+ to g_closure_invoke()</doc>
19956+ <type name="gpointer" c:type="gpointer"/>
19957+ </parameter>
19958+ <parameter name="marshal_data"
19959+ transfer-ownership="none"
19960+ nullable="1"
19961+ allow-none="1">
19962+ <doc xml:space="preserve"
19963+ filename="gobject-2.0.c"
19964+ line="1665">additional data specified when registering the marshaller</doc>
19965+ <type name="gpointer" c:type="gpointer"/>
19966+ </parameter>
19967+ </parameters>
19968+ </function>
19969+ <function name="cclosure_marshal_VOID__OBJECT"
19970+ c:identifier="g_cclosure_marshal_VOID__OBJECT"
19971+ moved-to="CClosure.marshal_VOID__OBJECT">
19972+ <doc xml:space="preserve"
19973+ filename="gobject-2.0.c"
19974+ line="1691">A marshaller for a #GCClosure with a callback of type
19975+`void (*callback) (gpointer instance, GObject *arg1, gpointer user_data)`.</doc>
19976+ <source-position filename="gmarshal.h" line="296"/>
19977+ <return-value transfer-ownership="none">
19978+ <type name="none" c:type="void"/>
19979+ </return-value>
19980+ <parameters>
19981+ <parameter name="closure" transfer-ownership="none">
19982+ <doc xml:space="preserve"
19983+ filename="gobject-2.0.c"
19984+ line="1693">the #GClosure to which the marshaller belongs</doc>
19985+ <type name="Closure" c:type="GClosure*"/>
19986+ </parameter>
19987+ <parameter name="return_value" transfer-ownership="none">
19988+ <doc xml:space="preserve"
19989+ filename="gobject-2.0.c"
19990+ line="1694">ignored</doc>
19991+ <type name="Value" c:type="GValue*"/>
19992+ </parameter>
19993+ <parameter name="n_param_values" transfer-ownership="none">
19994+ <doc xml:space="preserve"
19995+ filename="gobject-2.0.c"
19996+ line="1695">2</doc>
19997+ <type name="guint" c:type="guint"/>
19998+ </parameter>
19999+ <parameter name="param_values" transfer-ownership="none">
20000+ <doc xml:space="preserve"
20001+ filename="gobject-2.0.c"
20002+ line="1696">a #GValue array holding the instance and the #GObject* parameter</doc>
20003+ <type name="Value" c:type="const GValue*"/>
20004+ </parameter>
20005+ <parameter name="invocation_hint"
20006+ transfer-ownership="none"
20007+ nullable="1"
20008+ allow-none="1">
20009+ <doc xml:space="preserve"
20010+ filename="gobject-2.0.c"
20011+ line="1697">the invocation hint given as the last argument
20012+ to g_closure_invoke()</doc>
20013+ <type name="gpointer" c:type="gpointer"/>
20014+ </parameter>
20015+ <parameter name="marshal_data"
20016+ transfer-ownership="none"
20017+ nullable="1"
20018+ allow-none="1">
20019+ <doc xml:space="preserve"
20020+ filename="gobject-2.0.c"
20021+ line="1699">additional data specified when registering the marshaller</doc>
20022+ <type name="gpointer" c:type="gpointer"/>
20023+ </parameter>
20024+ </parameters>
20025+ </function>
20026+ <function name="cclosure_marshal_VOID__PARAM"
20027+ c:identifier="g_cclosure_marshal_VOID__PARAM"
20028+ moved-to="CClosure.marshal_VOID__PARAM">
20029+ <doc xml:space="preserve"
20030+ filename="gobject-2.0.c"
20031+ line="1725">A marshaller for a #GCClosure with a callback of type
20032+`void (*callback) (gpointer instance, GParamSpec *arg1, gpointer user_data)`.</doc>
20033+ <source-position filename="gmarshal.h" line="245"/>
20034+ <return-value transfer-ownership="none">
20035+ <type name="none" c:type="void"/>
20036+ </return-value>
20037+ <parameters>
20038+ <parameter name="closure" transfer-ownership="none">
20039+ <doc xml:space="preserve"
20040+ filename="gobject-2.0.c"
20041+ line="1727">the #GClosure to which the marshaller belongs</doc>
20042+ <type name="Closure" c:type="GClosure*"/>
20043+ </parameter>
20044+ <parameter name="return_value" transfer-ownership="none">
20045+ <doc xml:space="preserve"
20046+ filename="gobject-2.0.c"
20047+ line="1728">ignored</doc>
20048+ <type name="Value" c:type="GValue*"/>
20049+ </parameter>
20050+ <parameter name="n_param_values" transfer-ownership="none">
20051+ <doc xml:space="preserve"
20052+ filename="gobject-2.0.c"
20053+ line="1729">2</doc>
20054+ <type name="guint" c:type="guint"/>
20055+ </parameter>
20056+ <parameter name="param_values" transfer-ownership="none">
20057+ <doc xml:space="preserve"
20058+ filename="gobject-2.0.c"
20059+ line="1730">a #GValue array holding the instance and the #GParamSpec* parameter</doc>
20060+ <type name="Value" c:type="const GValue*"/>
20061+ </parameter>
20062+ <parameter name="invocation_hint"
20063+ transfer-ownership="none"
20064+ nullable="1"
20065+ allow-none="1">
20066+ <doc xml:space="preserve"
20067+ filename="gobject-2.0.c"
20068+ line="1731">the invocation hint given as the last argument
20069+ to g_closure_invoke()</doc>
20070+ <type name="gpointer" c:type="gpointer"/>
20071+ </parameter>
20072+ <parameter name="marshal_data"
20073+ transfer-ownership="none"
20074+ nullable="1"
20075+ allow-none="1">
20076+ <doc xml:space="preserve"
20077+ filename="gobject-2.0.c"
20078+ line="1733">additional data specified when registering the marshaller</doc>
20079+ <type name="gpointer" c:type="gpointer"/>
20080+ </parameter>
20081+ </parameters>
20082+ </function>
20083+ <function name="cclosure_marshal_VOID__POINTER"
20084+ c:identifier="g_cclosure_marshal_VOID__POINTER"
20085+ moved-to="CClosure.marshal_VOID__POINTER">
20086+ <doc xml:space="preserve"
20087+ filename="gobject-2.0.c"
20088+ line="1759">A marshaller for a #GCClosure with a callback of type
20089+`void (*callback) (gpointer instance, gpointer arg1, gpointer user_data)`.</doc>
20090+ <source-position filename="gmarshal.h" line="279"/>
20091+ <return-value transfer-ownership="none">
20092+ <type name="none" c:type="void"/>
20093+ </return-value>
20094+ <parameters>
20095+ <parameter name="closure" transfer-ownership="none">
20096+ <doc xml:space="preserve"
20097+ filename="gobject-2.0.c"
20098+ line="1761">the #GClosure to which the marshaller belongs</doc>
20099+ <type name="Closure" c:type="GClosure*"/>
20100+ </parameter>
20101+ <parameter name="return_value" transfer-ownership="none">
20102+ <doc xml:space="preserve"
20103+ filename="gobject-2.0.c"
20104+ line="1762">ignored</doc>
20105+ <type name="Value" c:type="GValue*"/>
20106+ </parameter>
20107+ <parameter name="n_param_values" transfer-ownership="none">
20108+ <doc xml:space="preserve"
20109+ filename="gobject-2.0.c"
20110+ line="1763">2</doc>
20111+ <type name="guint" c:type="guint"/>
20112+ </parameter>
20113+ <parameter name="param_values" transfer-ownership="none">
20114+ <doc xml:space="preserve"
20115+ filename="gobject-2.0.c"
20116+ line="1764">a #GValue array holding the instance and the #gpointer parameter</doc>
20117+ <type name="Value" c:type="const GValue*"/>
20118+ </parameter>
20119+ <parameter name="invocation_hint"
20120+ transfer-ownership="none"
20121+ nullable="1"
20122+ allow-none="1">
20123+ <doc xml:space="preserve"
20124+ filename="gobject-2.0.c"
20125+ line="1765">the invocation hint given as the last argument
20126+ to g_closure_invoke()</doc>
20127+ <type name="gpointer" c:type="gpointer"/>
20128+ </parameter>
20129+ <parameter name="marshal_data"
20130+ transfer-ownership="none"
20131+ nullable="1"
20132+ allow-none="1">
20133+ <doc xml:space="preserve"
20134+ filename="gobject-2.0.c"
20135+ line="1767">additional data specified when registering the marshaller</doc>
20136+ <type name="gpointer" c:type="gpointer"/>
20137+ </parameter>
20138+ </parameters>
20139+ </function>
20140+ <function name="cclosure_marshal_VOID__STRING"
20141+ c:identifier="g_cclosure_marshal_VOID__STRING"
20142+ moved-to="CClosure.marshal_VOID__STRING">
20143+ <doc xml:space="preserve"
20144+ filename="gobject-2.0.c"
20145+ line="1793">A marshaller for a #GCClosure with a callback of type
20146+`void (*callback) (gpointer instance, const gchar *arg1, gpointer user_data)`.</doc>
20147+ <source-position filename="gmarshal.h" line="228"/>
20148+ <return-value transfer-ownership="none">
20149+ <type name="none" c:type="void"/>
20150+ </return-value>
20151+ <parameters>
20152+ <parameter name="closure" transfer-ownership="none">
20153+ <doc xml:space="preserve"
20154+ filename="gobject-2.0.c"
20155+ line="1795">the #GClosure to which the marshaller belongs</doc>
20156+ <type name="Closure" c:type="GClosure*"/>
20157+ </parameter>
20158+ <parameter name="return_value" transfer-ownership="none">
20159+ <doc xml:space="preserve"
20160+ filename="gobject-2.0.c"
20161+ line="1796">ignored</doc>
20162+ <type name="Value" c:type="GValue*"/>
20163+ </parameter>
20164+ <parameter name="n_param_values" transfer-ownership="none">
20165+ <doc xml:space="preserve"
20166+ filename="gobject-2.0.c"
20167+ line="1797">2</doc>
20168+ <type name="guint" c:type="guint"/>
20169+ </parameter>
20170+ <parameter name="param_values" transfer-ownership="none">
20171+ <doc xml:space="preserve"
20172+ filename="gobject-2.0.c"
20173+ line="1798">a #GValue array holding the instance and the #gchar* parameter</doc>
20174+ <type name="Value" c:type="const GValue*"/>
20175+ </parameter>
20176+ <parameter name="invocation_hint"
20177+ transfer-ownership="none"
20178+ nullable="1"
20179+ allow-none="1">
20180+ <doc xml:space="preserve"
20181+ filename="gobject-2.0.c"
20182+ line="1799">the invocation hint given as the last argument
20183+ to g_closure_invoke()</doc>
20184+ <type name="gpointer" c:type="gpointer"/>
20185+ </parameter>
20186+ <parameter name="marshal_data"
20187+ transfer-ownership="none"
20188+ nullable="1"
20189+ allow-none="1">
20190+ <doc xml:space="preserve"
20191+ filename="gobject-2.0.c"
20192+ line="1801">additional data specified when registering the marshaller</doc>
20193+ <type name="gpointer" c:type="gpointer"/>
20194+ </parameter>
20195+ </parameters>
20196+ </function>
20197+ <function name="cclosure_marshal_VOID__UCHAR"
20198+ c:identifier="g_cclosure_marshal_VOID__UCHAR"
20199+ moved-to="CClosure.marshal_VOID__UCHAR">
20200+ <doc xml:space="preserve"
20201+ filename="gobject-2.0.c"
20202+ line="1827">A marshaller for a #GCClosure with a callback of type
20203+`void (*callback) (gpointer instance, guchar arg1, gpointer user_data)`.</doc>
20204+ <source-position filename="gmarshal.h" line="75"/>
20205+ <return-value transfer-ownership="none">
20206+ <type name="none" c:type="void"/>
20207+ </return-value>
20208+ <parameters>
20209+ <parameter name="closure" transfer-ownership="none">
20210+ <doc xml:space="preserve"
20211+ filename="gobject-2.0.c"
20212+ line="1829">the #GClosure to which the marshaller belongs</doc>
20213+ <type name="Closure" c:type="GClosure*"/>
20214+ </parameter>
20215+ <parameter name="return_value" transfer-ownership="none">
20216+ <doc xml:space="preserve"
20217+ filename="gobject-2.0.c"
20218+ line="1830">ignored</doc>
20219+ <type name="Value" c:type="GValue*"/>
20220+ </parameter>
20221+ <parameter name="n_param_values" transfer-ownership="none">
20222+ <doc xml:space="preserve"
20223+ filename="gobject-2.0.c"
20224+ line="1831">2</doc>
20225+ <type name="guint" c:type="guint"/>
20226+ </parameter>
20227+ <parameter name="param_values" transfer-ownership="none">
20228+ <doc xml:space="preserve"
20229+ filename="gobject-2.0.c"
20230+ line="1832">a #GValue array holding the instance and the #guchar parameter</doc>
20231+ <type name="Value" c:type="const GValue*"/>
20232+ </parameter>
20233+ <parameter name="invocation_hint"
20234+ transfer-ownership="none"
20235+ nullable="1"
20236+ allow-none="1">
20237+ <doc xml:space="preserve"
20238+ filename="gobject-2.0.c"
20239+ line="1833">the invocation hint given as the last argument
20240+ to g_closure_invoke()</doc>
20241+ <type name="gpointer" c:type="gpointer"/>
20242+ </parameter>
20243+ <parameter name="marshal_data"
20244+ transfer-ownership="none"
20245+ nullable="1"
20246+ allow-none="1">
20247+ <doc xml:space="preserve"
20248+ filename="gobject-2.0.c"
20249+ line="1835">additional data specified when registering the marshaller</doc>
20250+ <type name="gpointer" c:type="gpointer"/>
20251+ </parameter>
20252+ </parameters>
20253+ </function>
20254+ <function name="cclosure_marshal_VOID__UINT"
20255+ c:identifier="g_cclosure_marshal_VOID__UINT"
20256+ moved-to="CClosure.marshal_VOID__UINT">
20257+ <doc xml:space="preserve"
20258+ filename="gobject-2.0.c"
20259+ line="1861">A marshaller for a #GCClosure with a callback of type
20260+`void (*callback) (gpointer instance, guint arg1, gpointer user_data)`.</doc>
20261+ <source-position filename="gmarshal.h" line="109"/>
20262+ <return-value transfer-ownership="none">
20263+ <type name="none" c:type="void"/>
20264+ </return-value>
20265+ <parameters>
20266+ <parameter name="closure" transfer-ownership="none">
20267+ <doc xml:space="preserve"
20268+ filename="gobject-2.0.c"
20269+ line="1863">the #GClosure to which the marshaller belongs</doc>
20270+ <type name="Closure" c:type="GClosure*"/>
20271+ </parameter>
20272+ <parameter name="return_value" transfer-ownership="none">
20273+ <doc xml:space="preserve"
20274+ filename="gobject-2.0.c"
20275+ line="1864">ignored</doc>
20276+ <type name="Value" c:type="GValue*"/>
20277+ </parameter>
20278+ <parameter name="n_param_values" transfer-ownership="none">
20279+ <doc xml:space="preserve"
20280+ filename="gobject-2.0.c"
20281+ line="1865">2</doc>
20282+ <type name="guint" c:type="guint"/>
20283+ </parameter>
20284+ <parameter name="param_values" transfer-ownership="none">
20285+ <doc xml:space="preserve"
20286+ filename="gobject-2.0.c"
20287+ line="1866">a #GValue array holding the instance and the #guint parameter</doc>
20288+ <type name="Value" c:type="const GValue*"/>
20289+ </parameter>
20290+ <parameter name="invocation_hint"
20291+ transfer-ownership="none"
20292+ nullable="1"
20293+ allow-none="1">
20294+ <doc xml:space="preserve"
20295+ filename="gobject-2.0.c"
20296+ line="1867">the invocation hint given as the last argument
20297+ to g_closure_invoke()</doc>
20298+ <type name="gpointer" c:type="gpointer"/>
20299+ </parameter>
20300+ <parameter name="marshal_data"
20301+ transfer-ownership="none"
20302+ nullable="1"
20303+ allow-none="1">
20304+ <doc xml:space="preserve"
20305+ filename="gobject-2.0.c"
20306+ line="1869">additional data specified when registering the marshaller</doc>
20307+ <type name="gpointer" c:type="gpointer"/>
20308+ </parameter>
20309+ </parameters>
20310+ </function>
20311+ <function name="cclosure_marshal_VOID__UINT_POINTER"
20312+ c:identifier="g_cclosure_marshal_VOID__UINT_POINTER"
20313+ moved-to="CClosure.marshal_VOID__UINT_POINTER">
20314+ <doc xml:space="preserve"
20315+ filename="gobject-2.0.c"
20316+ line="1876">A marshaller for a #GCClosure with a callback of type
20317+`void (*callback) (gpointer instance, guint arg1, gpointer arg2, gpointer user_data)`.</doc>
20318+ <source-position filename="gmarshal.h" line="330"/>
20319+ <return-value transfer-ownership="none">
20320+ <type name="none" c:type="void"/>
20321+ </return-value>
20322+ <parameters>
20323+ <parameter name="closure" transfer-ownership="none">
20324+ <doc xml:space="preserve"
20325+ filename="gobject-2.0.c"
20326+ line="1878">the #GClosure to which the marshaller belongs</doc>
20327+ <type name="Closure" c:type="GClosure*"/>
20328+ </parameter>
20329+ <parameter name="return_value" transfer-ownership="none">
20330+ <doc xml:space="preserve"
20331+ filename="gobject-2.0.c"
20332+ line="1879">ignored</doc>
20333+ <type name="Value" c:type="GValue*"/>
20334+ </parameter>
20335+ <parameter name="n_param_values" transfer-ownership="none">
20336+ <doc xml:space="preserve"
20337+ filename="gobject-2.0.c"
20338+ line="1880">3</doc>
20339+ <type name="guint" c:type="guint"/>
20340+ </parameter>
20341+ <parameter name="param_values" transfer-ownership="none">
20342+ <doc xml:space="preserve"
20343+ filename="gobject-2.0.c"
20344+ line="1881">a #GValue array holding instance, arg1 and arg2</doc>
20345+ <type name="Value" c:type="const GValue*"/>
20346+ </parameter>
20347+ <parameter name="invocation_hint"
20348+ transfer-ownership="none"
20349+ nullable="1"
20350+ allow-none="1">
20351+ <doc xml:space="preserve"
20352+ filename="gobject-2.0.c"
20353+ line="1882">the invocation hint given as the last argument
20354+ to g_closure_invoke()</doc>
20355+ <type name="gpointer" c:type="gpointer"/>
20356+ </parameter>
20357+ <parameter name="marshal_data"
20358+ transfer-ownership="none"
20359+ nullable="1"
20360+ allow-none="1">
20361+ <doc xml:space="preserve"
20362+ filename="gobject-2.0.c"
20363+ line="1884">additional data specified when registering the marshaller</doc>
20364+ <type name="gpointer" c:type="gpointer"/>
20365+ </parameter>
20366+ </parameters>
20367+ </function>
20368+ <function name="cclosure_marshal_VOID__ULONG"
20369+ c:identifier="g_cclosure_marshal_VOID__ULONG"
20370+ moved-to="CClosure.marshal_VOID__ULONG">
20371+ <doc xml:space="preserve"
20372+ filename="gobject-2.0.c"
20373+ line="1929">A marshaller for a #GCClosure with a callback of type
20374+`void (*callback) (gpointer instance, gulong arg1, gpointer user_data)`.</doc>
20375+ <source-position filename="gmarshal.h" line="143"/>
20376+ <return-value transfer-ownership="none">
20377+ <type name="none" c:type="void"/>
20378+ </return-value>
20379+ <parameters>
20380+ <parameter name="closure" transfer-ownership="none">
20381+ <doc xml:space="preserve"
20382+ filename="gobject-2.0.c"
20383+ line="1931">the #GClosure to which the marshaller belongs</doc>
20384+ <type name="Closure" c:type="GClosure*"/>
20385+ </parameter>
20386+ <parameter name="return_value" transfer-ownership="none">
20387+ <doc xml:space="preserve"
20388+ filename="gobject-2.0.c"
20389+ line="1932">ignored</doc>
20390+ <type name="Value" c:type="GValue*"/>
20391+ </parameter>
20392+ <parameter name="n_param_values" transfer-ownership="none">
20393+ <doc xml:space="preserve"
20394+ filename="gobject-2.0.c"
20395+ line="1933">2</doc>
20396+ <type name="guint" c:type="guint"/>
20397+ </parameter>
20398+ <parameter name="param_values" transfer-ownership="none">
20399+ <doc xml:space="preserve"
20400+ filename="gobject-2.0.c"
20401+ line="1934">a #GValue array holding the instance and the #gulong parameter</doc>
20402+ <type name="Value" c:type="const GValue*"/>
20403+ </parameter>
20404+ <parameter name="invocation_hint"
20405+ transfer-ownership="none"
20406+ nullable="1"
20407+ allow-none="1">
20408+ <doc xml:space="preserve"
20409+ filename="gobject-2.0.c"
20410+ line="1935">the invocation hint given as the last argument
20411+ to g_closure_invoke()</doc>
20412+ <type name="gpointer" c:type="gpointer"/>
20413+ </parameter>
20414+ <parameter name="marshal_data"
20415+ transfer-ownership="none"
20416+ nullable="1"
20417+ allow-none="1">
20418+ <doc xml:space="preserve"
20419+ filename="gobject-2.0.c"
20420+ line="1937">additional data specified when registering the marshaller</doc>
20421+ <type name="gpointer" c:type="gpointer"/>
20422+ </parameter>
20423+ </parameters>
20424+ </function>
20425+ <function name="cclosure_marshal_VOID__VARIANT"
20426+ c:identifier="g_cclosure_marshal_VOID__VARIANT"
20427+ moved-to="CClosure.marshal_VOID__VARIANT"
20428+ version="2.26">
20429+ <doc xml:space="preserve"
20430+ filename="gobject-2.0.c"
20431+ line="1963">A marshaller for a #GCClosure with a callback of type
20432+`void (*callback) (gpointer instance, GVariant *arg1, gpointer user_data)`.</doc>
20433+ <source-position filename="gmarshal.h" line="313"/>
20434+ <return-value transfer-ownership="none">
20435+ <type name="none" c:type="void"/>
20436+ </return-value>
20437+ <parameters>
20438+ <parameter name="closure" transfer-ownership="none">
20439+ <doc xml:space="preserve"
20440+ filename="gobject-2.0.c"
20441+ line="1965">the #GClosure to which the marshaller belongs</doc>
20442+ <type name="Closure" c:type="GClosure*"/>
20443+ </parameter>
20444+ <parameter name="return_value" transfer-ownership="none">
20445+ <doc xml:space="preserve"
20446+ filename="gobject-2.0.c"
20447+ line="1966">ignored</doc>
20448+ <type name="Value" c:type="GValue*"/>
20449+ </parameter>
20450+ <parameter name="n_param_values" transfer-ownership="none">
20451+ <doc xml:space="preserve"
20452+ filename="gobject-2.0.c"
20453+ line="1967">2</doc>
20454+ <type name="guint" c:type="guint"/>
20455+ </parameter>
20456+ <parameter name="param_values" transfer-ownership="none">
20457+ <doc xml:space="preserve"
20458+ filename="gobject-2.0.c"
20459+ line="1968">a #GValue array holding the instance and the #GVariant* parameter</doc>
20460+ <type name="Value" c:type="const GValue*"/>
20461+ </parameter>
20462+ <parameter name="invocation_hint"
20463+ transfer-ownership="none"
20464+ nullable="1"
20465+ allow-none="1">
20466+ <doc xml:space="preserve"
20467+ filename="gobject-2.0.c"
20468+ line="1969">the invocation hint given as the last argument
20469+ to g_closure_invoke()</doc>
20470+ <type name="gpointer" c:type="gpointer"/>
20471+ </parameter>
20472+ <parameter name="marshal_data"
20473+ transfer-ownership="none"
20474+ nullable="1"
20475+ allow-none="1">
20476+ <doc xml:space="preserve"
20477+ filename="gobject-2.0.c"
20478+ line="1971">additional data specified when registering the marshaller</doc>
20479+ <type name="gpointer" c:type="gpointer"/>
20480+ </parameter>
20481+ </parameters>
20482+ </function>
20483+ <function name="cclosure_marshal_VOID__VOID"
20484+ c:identifier="g_cclosure_marshal_VOID__VOID"
20485+ moved-to="CClosure.marshal_VOID__VOID">
20486+ <doc xml:space="preserve"
20487+ filename="gobject-2.0.c"
20488+ line="1999">A marshaller for a #GCClosure with a callback of type
20489+`void (*callback) (gpointer instance, gpointer user_data)`.</doc>
20490+ <source-position filename="gmarshal.h" line="24"/>
20491+ <return-value transfer-ownership="none">
20492+ <type name="none" c:type="void"/>
20493+ </return-value>
20494+ <parameters>
20495+ <parameter name="closure" transfer-ownership="none">
20496+ <doc xml:space="preserve"
20497+ filename="gobject-2.0.c"
20498+ line="2001">the #GClosure to which the marshaller belongs</doc>
20499+ <type name="Closure" c:type="GClosure*"/>
20500+ </parameter>
20501+ <parameter name="return_value" transfer-ownership="none">
20502+ <doc xml:space="preserve"
20503+ filename="gobject-2.0.c"
20504+ line="2002">ignored</doc>
20505+ <type name="Value" c:type="GValue*"/>
20506+ </parameter>
20507+ <parameter name="n_param_values" transfer-ownership="none">
20508+ <doc xml:space="preserve"
20509+ filename="gobject-2.0.c"
20510+ line="2003">1</doc>
20511+ <type name="guint" c:type="guint"/>
20512+ </parameter>
20513+ <parameter name="param_values" transfer-ownership="none">
20514+ <doc xml:space="preserve"
20515+ filename="gobject-2.0.c"
20516+ line="2004">a #GValue array holding only the instance</doc>
20517+ <type name="Value" c:type="const GValue*"/>
20518+ </parameter>
20519+ <parameter name="invocation_hint"
20520+ transfer-ownership="none"
20521+ nullable="1"
20522+ allow-none="1">
20523+ <doc xml:space="preserve"
20524+ filename="gobject-2.0.c"
20525+ line="2005">the invocation hint given as the last argument
20526+ to g_closure_invoke()</doc>
20527+ <type name="gpointer" c:type="gpointer"/>
20528+ </parameter>
20529+ <parameter name="marshal_data"
20530+ transfer-ownership="none"
20531+ nullable="1"
20532+ allow-none="1">
20533+ <doc xml:space="preserve"
20534+ filename="gobject-2.0.c"
20535+ line="2007">additional data specified when registering the marshaller</doc>
20536+ <type name="gpointer" c:type="gpointer"/>
20537+ </parameter>
20538+ </parameters>
20539+ </function>
20540+ <function name="cclosure_marshal_generic"
20541+ c:identifier="g_cclosure_marshal_generic"
20542+ moved-to="CClosure.marshal_generic"
20543+ version="2.30">
20544+ <doc xml:space="preserve"
20545+ filename="gobject-2.0.c"
20546+ line="2033">A generic marshaller function implemented via
20547+[libffi](http://sourceware.org/libffi/).
20548+
20549+Normally this function is not passed explicitly to g_signal_new(),
20550+but used automatically by GLib when specifying a %NULL marshaller.</doc>
20551+ <source-position filename="gclosure.h" line="302"/>
20552+ <return-value transfer-ownership="none">
20553+ <type name="none" c:type="void"/>
20554+ </return-value>
20555+ <parameters>
20556+ <parameter name="closure" transfer-ownership="none">
20557+ <doc xml:space="preserve"
20558+ filename="gobject-2.0.c"
20559+ line="2035">A #GClosure.</doc>
20560+ <type name="Closure" c:type="GClosure*"/>
20561+ </parameter>
20562+ <parameter name="return_gvalue" transfer-ownership="none">
20563+ <doc xml:space="preserve"
20564+ filename="gobject-2.0.c"
20565+ line="2036">A #GValue to store the return value. May be %NULL
20566+ if the callback of closure doesn't return a value.</doc>
20567+ <type name="Value" c:type="GValue*"/>
20568+ </parameter>
20569+ <parameter name="n_param_values" transfer-ownership="none">
20570+ <doc xml:space="preserve"
20571+ filename="gobject-2.0.c"
20572+ line="2038">The length of the @param_values array.</doc>
20573+ <type name="guint" c:type="guint"/>
20574+ </parameter>
20575+ <parameter name="param_values" transfer-ownership="none">
20576+ <doc xml:space="preserve"
20577+ filename="gobject-2.0.c"
20578+ line="2039">An array of #GValues holding the arguments
20579+ on which to invoke the callback of closure.</doc>
20580+ <type name="Value" c:type="const GValue*"/>
20581+ </parameter>
20582+ <parameter name="invocation_hint"
20583+ transfer-ownership="none"
20584+ nullable="1"
20585+ allow-none="1">
20586+ <doc xml:space="preserve"
20587+ filename="gobject-2.0.c"
20588+ line="2041">The invocation hint given as the last argument to
20589+ g_closure_invoke().</doc>
20590+ <type name="gpointer" c:type="gpointer"/>
20591+ </parameter>
20592+ <parameter name="marshal_data"
20593+ transfer-ownership="none"
20594+ nullable="1"
20595+ allow-none="1">
20596+ <doc xml:space="preserve"
20597+ filename="gobject-2.0.c"
20598+ line="2043">Additional data specified when registering the
20599+ marshaller, see g_closure_set_marshal() and
20600+ g_closure_set_meta_marshal()</doc>
20601+ <type name="gpointer" c:type="gpointer"/>
20602+ </parameter>
20603+ </parameters>
20604+ </function>
20605+ <function name="cclosure_new"
20606+ c:identifier="g_cclosure_new"
20607+ moved-to="CClosure.new"
20608+ introspectable="0">
20609+ <doc xml:space="preserve"
20610+ filename="gobject-2.0.c"
20611+ line="2080">Creates a new closure which invokes @callback_func with @user_data as
20612+the last parameter.
20613+
20614+@destroy_data will be called as a finalize notifier on the #GClosure.</doc>
20615+ <source-position filename="gclosure.h" line="229"/>
20616+ <return-value transfer-ownership="none">
20617+ <doc xml:space="preserve"
20618+ filename="gobject-2.0.c"
20619+ line="2091">a floating reference to a new #GCClosure</doc>
20620+ <type name="Closure" c:type="GClosure*"/>
20621+ </return-value>
20622+ <parameters>
20623+ <parameter name="callback_func"
20624+ transfer-ownership="none"
20625+ nullable="1"
20626+ allow-none="1"
20627+ closure="1">
20628+ <doc xml:space="preserve"
20629+ filename="gobject-2.0.c"
20630+ line="2082">the function to invoke</doc>
20631+ <type name="Callback" c:type="GCallback"/>
20632+ </parameter>
20633+ <parameter name="user_data"
20634+ transfer-ownership="none"
20635+ nullable="1"
20636+ allow-none="1"
20637+ closure="0">
20638+ <doc xml:space="preserve"
20639+ filename="gobject-2.0.c"
20640+ line="2083">user data to pass to @callback_func</doc>
20641+ <type name="gpointer" c:type="gpointer"/>
20642+ </parameter>
20643+ <parameter name="destroy_data" transfer-ownership="none">
20644+ <doc xml:space="preserve"
20645+ filename="gobject-2.0.c"
20646+ line="2084">destroy notify to be called when @user_data is no longer used</doc>
20647+ <type name="ClosureNotify" c:type="GClosureNotify"/>
20648+ </parameter>
20649+ </parameters>
20650+ </function>
20651+ <function name="cclosure_new_object"
20652+ c:identifier="g_cclosure_new_object"
20653+ moved-to="CClosure.new_object"
20654+ introspectable="0">
20655+ <doc xml:space="preserve"
20656+ filename="gobject-2.0.c"
20657+ line="2095">A variant of g_cclosure_new() which uses @object as @user_data and
20658+calls g_object_watch_closure() on @object and the created
20659+closure. This function is useful when you have a callback closely
20660+associated with a #GObject, and want the callback to no longer run
20661+after the object is is freed.</doc>
20662+ <source-position filename="gobject.h" line="635"/>
20663+ <return-value transfer-ownership="full">
20664+ <doc xml:space="preserve"
20665+ filename="gobject-2.0.c"
20666+ line="2106">a new #GCClosure</doc>
20667+ <type name="Closure" c:type="GClosure*"/>
20668+ </return-value>
20669+ <parameters>
20670+ <parameter name="callback_func" transfer-ownership="none">
20671+ <doc xml:space="preserve"
20672+ filename="gobject-2.0.c"
20673+ line="2097">the function to invoke</doc>
20674+ <type name="Callback" c:type="GCallback"/>
20675+ </parameter>
20676+ <parameter name="object" transfer-ownership="none">
20677+ <doc xml:space="preserve"
20678+ filename="gobject-2.0.c"
20679+ line="2098">a #GObject pointer to pass to @callback_func</doc>
20680+ <type name="Object" c:type="GObject*"/>
20681+ </parameter>
20682+ </parameters>
20683+ </function>
20684+ <function name="cclosure_new_object_swap"
20685+ c:identifier="g_cclosure_new_object_swap"
20686+ moved-to="CClosure.new_object_swap"
20687+ introspectable="0">
20688+ <doc xml:space="preserve"
20689+ filename="gobject-2.0.c"
20690+ line="2110">A variant of g_cclosure_new_swap() which uses @object as @user_data
20691+and calls g_object_watch_closure() on @object and the created
20692+closure. This function is useful when you have a callback closely
20693+associated with a #GObject, and want the callback to no longer run
20694+after the object is is freed.</doc>
20695+ <source-position filename="gobject.h" line="638"/>
20696+ <return-value transfer-ownership="full">
20697+ <doc xml:space="preserve"
20698+ filename="gobject-2.0.c"
20699+ line="2121">a new #GCClosure</doc>
20700+ <type name="Closure" c:type="GClosure*"/>
20701+ </return-value>
20702+ <parameters>
20703+ <parameter name="callback_func" transfer-ownership="none">
20704+ <doc xml:space="preserve"
20705+ filename="gobject-2.0.c"
20706+ line="2112">the function to invoke</doc>
20707+ <type name="Callback" c:type="GCallback"/>
20708+ </parameter>
20709+ <parameter name="object" transfer-ownership="none">
20710+ <doc xml:space="preserve"
20711+ filename="gobject-2.0.c"
20712+ line="2113">a #GObject pointer to pass to @callback_func</doc>
20713+ <type name="Object" c:type="GObject*"/>
20714+ </parameter>
20715+ </parameters>
20716+ </function>
20717+ <function name="cclosure_new_swap"
20718+ c:identifier="g_cclosure_new_swap"
20719+ moved-to="CClosure.new_swap"
20720+ introspectable="0">
20721+ <doc xml:space="preserve"
20722+ filename="gobject-2.0.c"
20723+ line="2125">Creates a new closure which invokes @callback_func with @user_data as
20724+the first parameter.
20725+
20726+@destroy_data will be called as a finalize notifier on the #GClosure.</doc>
20727+ <source-position filename="gclosure.h" line="233"/>
20728+ <return-value transfer-ownership="none">
20729+ <doc xml:space="preserve"
20730+ filename="gobject-2.0.c"
20731+ line="2136">a floating reference to a new #GCClosure</doc>
20732+ <type name="Closure" c:type="GClosure*"/>
20733+ </return-value>
20734+ <parameters>
20735+ <parameter name="callback_func"
20736+ transfer-ownership="none"
20737+ nullable="1"
20738+ allow-none="1"
20739+ closure="1">
20740+ <doc xml:space="preserve"
20741+ filename="gobject-2.0.c"
20742+ line="2127">the function to invoke</doc>
20743+ <type name="Callback" c:type="GCallback"/>
20744+ </parameter>
20745+ <parameter name="user_data"
20746+ transfer-ownership="none"
20747+ nullable="1"
20748+ allow-none="1"
20749+ closure="0">
20750+ <doc xml:space="preserve"
20751+ filename="gobject-2.0.c"
20752+ line="2128">user data to pass to @callback_func</doc>
20753+ <type name="gpointer" c:type="gpointer"/>
20754+ </parameter>
20755+ <parameter name="destroy_data" transfer-ownership="none">
20756+ <doc xml:space="preserve"
20757+ filename="gobject-2.0.c"
20758+ line="2129">destroy notify to be called when @user_data is no longer used</doc>
20759+ <type name="ClosureNotify" c:type="GClosureNotify"/>
20760+ </parameter>
20761+ </parameters>
20762+ </function>
20763+ <function name="clear_object"
20764+ c:identifier="g_clear_object"
20765+ version="2.28"
20766+ introspectable="0">
20767+ <doc xml:space="preserve"
20768+ filename="gobject-2.0.c"
20769+ line="2140">Clears a reference to a #GObject.
20770+
20771+@object_ptr must not be %NULL.
20772+
20773+If the reference is %NULL then this function does nothing.
20774+Otherwise, the reference count of the object is decreased and the
20775+pointer is set to %NULL.
20776+
20777+A macro is also included that allows this function to be used without
20778+pointer casts.</doc>
20779+ <source-position filename="gobject.h" line="702"/>
20780+ <return-value transfer-ownership="none">
20781+ <type name="none" c:type="void"/>
20782+ </return-value>
20783+ <parameters>
20784+ <parameter name="object_ptr" transfer-ownership="none">
20785+ <doc xml:space="preserve"
20786+ filename="gobject-2.0.c"
20787+ line="2142">a pointer to a #GObject reference</doc>
20788+ <type name="Object" c:type="GObject**"/>
20789+ </parameter>
20790+ </parameters>
20791+ </function>
20792+ <function name="clear_signal_handler"
20793+ c:identifier="g_clear_signal_handler"
20794+ version="2.62">
20795+ <doc xml:space="preserve"
20796+ filename="gobject-2.0.c"
20797+ line="2159">Disconnects a handler from @instance so it will not be called during
20798+any future or currently ongoing emissions of the signal it has been
20799+connected to. The @handler_id_ptr is then set to zero, which is never a valid handler ID value (see g_signal_connect()).
20800+
20801+If the handler ID is 0 then this function does nothing.
20802+
20803+There is also a macro version of this function so that the code
20804+will be inlined.</doc>
20805+ <source-position filename="gsignal.h" line="456"/>
20806+ <return-value transfer-ownership="none">
20807+ <type name="none" c:type="void"/>
20808+ </return-value>
20809+ <parameters>
20810+ <parameter name="handler_id_ptr" transfer-ownership="none">
20811+ <doc xml:space="preserve"
20812+ filename="gobject-2.0.c"
20813+ line="2161">A pointer to a handler ID (of type #gulong) of the handler to be disconnected.</doc>
20814+ <type name="gulong" c:type="gulong*"/>
20815+ </parameter>
20816+ <parameter name="instance" transfer-ownership="none">
20817+ <doc xml:space="preserve"
20818+ filename="gobject-2.0.c"
20819+ line="2162">The instance to remove the signal handler from.
20820+ This pointer may be %NULL or invalid, if the handler ID is zero.</doc>
20821+ <type name="Object" c:type="gpointer"/>
20822+ </parameter>
20823+ </parameters>
20824+ </function>
20825+ <function-macro name="clear_weak_pointer"
20826+ c:identifier="g_clear_weak_pointer"
20827+ version="2.56"
20828+ introspectable="0">
20829+ <doc xml:space="preserve"
20830+ filename="gobject.h"
20831+ line="824">Clears a weak reference to a #GObject.
20832+
20833+@weak_pointer_location must not be %NULL.
20834+
20835+If the weak reference is %NULL then this function does nothing.
20836+Otherwise, the weak reference to the object is removed for that location
20837+and the pointer is set to %NULL.
20838+
20839+A macro is also included that allows this function to be used without
20840+pointer casts. The function itself is static inline, so its address may vary
20841+between compilation units.</doc>
20842+ <source-position filename="gobject.h" line="854"/>
20843+ <parameters>
20844+ <parameter name="weak_pointer_location">
20845+ <doc xml:space="preserve"
20846+ filename="gobject.h"
20847+ line="826">The memory address of a pointer</doc>
20848+ </parameter>
20849+ </parameters>
20850+ </function-macro>
20851+ <function name="enum_complete_type_info"
20852+ c:identifier="g_enum_complete_type_info">
20853+ <doc xml:space="preserve"
20854+ filename="gobject-2.0.c"
20855+ line="2478">This function is meant to be called from the `complete_type_info`
20856+function of a #GTypePlugin implementation, as in the following
20857+example:
20858+
20859+|[&lt;!-- language="C" --&gt;
20860+static void
20861+my_enum_complete_type_info (GTypePlugin *plugin,
20862+ GType g_type,
20863+ GTypeInfo *info,
20864+ GTypeValueTable *value_table)
20865+{
20866+ static const GEnumValue values[] = {
20867+ { MY_ENUM_FOO, "MY_ENUM_FOO", "foo" },
20868+ { MY_ENUM_BAR, "MY_ENUM_BAR", "bar" },
20869+ { 0, NULL, NULL }
20870+ };
20871+
20872+ g_enum_complete_type_info (type, info, values);
20873+}
20874+]|</doc>
20875+ <source-position filename="genums.h" line="269"/>
20876+ <return-value transfer-ownership="none">
20877+ <type name="none" c:type="void"/>
20878+ </return-value>
20879+ <parameters>
20880+ <parameter name="g_enum_type" transfer-ownership="none">
20881+ <doc xml:space="preserve"
20882+ filename="gobject-2.0.c"
20883+ line="2480">the type identifier of the type being completed</doc>
20884+ <type name="GType" c:type="GType"/>
20885+ </parameter>
20886+ <parameter name="info"
20887+ direction="out"
20888+ caller-allocates="0"
20889+ transfer-ownership="full">
20890+ <doc xml:space="preserve"
20891+ filename="gobject-2.0.c"
20892+ line="2481">the #GTypeInfo struct to be filled in</doc>
20893+ <type name="TypeInfo" c:type="GTypeInfo*"/>
20894+ </parameter>
20895+ <parameter name="const_values" transfer-ownership="none">
20896+ <doc xml:space="preserve"
20897+ filename="gobject-2.0.c"
20898+ line="2482">An array of #GEnumValue structs for the possible
20899+ enumeration values. The array is terminated by a struct with all
20900+ members being 0.</doc>
20901+ <type name="EnumValue" c:type="const GEnumValue*"/>
20902+ </parameter>
20903+ </parameters>
20904+ </function>
20905+ <function name="enum_get_value" c:identifier="g_enum_get_value">
20906+ <doc xml:space="preserve"
20907+ filename="gobject-2.0.c"
20908+ line="2509">Returns the #GEnumValue for a value.</doc>
20909+ <source-position filename="genums.h" line="219"/>
20910+ <return-value transfer-ownership="none" nullable="1">
20911+ <doc xml:space="preserve"
20912+ filename="gobject-2.0.c"
20913+ line="2516">the #GEnumValue for @value, or %NULL
20914+ if @value is not a member of the enumeration</doc>
20915+ <type name="EnumValue" c:type="GEnumValue*"/>
20916+ </return-value>
20917+ <parameters>
20918+ <parameter name="enum_class" transfer-ownership="none">
20919+ <doc xml:space="preserve"
20920+ filename="gobject-2.0.c"
20921+ line="2511">a #GEnumClass</doc>
20922+ <type name="EnumClass" c:type="GEnumClass*"/>
20923+ </parameter>
20924+ <parameter name="value" transfer-ownership="none">
20925+ <doc xml:space="preserve"
20926+ filename="gobject-2.0.c"
20927+ line="2512">the value to look up</doc>
20928+ <type name="gint" c:type="gint"/>
20929+ </parameter>
20930+ </parameters>
20931+ </function>
20932+ <function name="enum_get_value_by_name"
20933+ c:identifier="g_enum_get_value_by_name">
20934+ <doc xml:space="preserve"
20935+ filename="gobject-2.0.c"
20936+ line="2521">Looks up a #GEnumValue by name.</doc>
20937+ <source-position filename="genums.h" line="222"/>
20938+ <return-value transfer-ownership="none" nullable="1">
20939+ <doc xml:space="preserve"
20940+ filename="gobject-2.0.c"
20941+ line="2528">the #GEnumValue with name @name,
20942+ or %NULL if the enumeration doesn't have a member
20943+ with that name</doc>
20944+ <type name="EnumValue" c:type="GEnumValue*"/>
20945+ </return-value>
20946+ <parameters>
20947+ <parameter name="enum_class" transfer-ownership="none">
20948+ <doc xml:space="preserve"
20949+ filename="gobject-2.0.c"
20950+ line="2523">a #GEnumClass</doc>
20951+ <type name="EnumClass" c:type="GEnumClass*"/>
20952+ </parameter>
20953+ <parameter name="name" transfer-ownership="none">
20954+ <doc xml:space="preserve"
20955+ filename="gobject-2.0.c"
20956+ line="2524">the name to look up</doc>
20957+ <type name="utf8" c:type="const gchar*"/>
20958+ </parameter>
20959+ </parameters>
20960+ </function>
20961+ <function name="enum_get_value_by_nick"
20962+ c:identifier="g_enum_get_value_by_nick">
20963+ <doc xml:space="preserve"
20964+ filename="gobject-2.0.c"
20965+ line="2534">Looks up a #GEnumValue by nickname.</doc>
20966+ <source-position filename="genums.h" line="225"/>
20967+ <return-value transfer-ownership="none" nullable="1">
20968+ <doc xml:space="preserve"
20969+ filename="gobject-2.0.c"
20970+ line="2541">the #GEnumValue with nickname @nick,
20971+ or %NULL if the enumeration doesn't have a member
20972+ with that nickname</doc>
20973+ <type name="EnumValue" c:type="GEnumValue*"/>
20974+ </return-value>
20975+ <parameters>
20976+ <parameter name="enum_class" transfer-ownership="none">
20977+ <doc xml:space="preserve"
20978+ filename="gobject-2.0.c"
20979+ line="2536">a #GEnumClass</doc>
20980+ <type name="EnumClass" c:type="GEnumClass*"/>
20981+ </parameter>
20982+ <parameter name="nick" transfer-ownership="none">
20983+ <doc xml:space="preserve"
20984+ filename="gobject-2.0.c"
20985+ line="2537">the nickname to look up</doc>
20986+ <type name="utf8" c:type="const gchar*"/>
20987+ </parameter>
20988+ </parameters>
20989+ </function>
20990+ <function name="enum_register_static"
20991+ c:identifier="g_enum_register_static">
20992+ <doc xml:space="preserve"
20993+ filename="gobject-2.0.c"
20994+ line="2547">Registers a new static enumeration type with the name @name.
20995+
20996+It is normally more convenient to let [glib-mkenums][glib-mkenums],
20997+generate a my_enum_get_type() function from a usual C enumeration
20998+definition than to write one yourself using g_enum_register_static().</doc>
20999+ <source-position filename="genums.h" line="260"/>
21000+ <return-value transfer-ownership="none">
21001+ <doc xml:space="preserve"
21002+ filename="gobject-2.0.c"
21003+ line="2561">The new type identifier.</doc>
21004+ <type name="GType" c:type="GType"/>
21005+ </return-value>
21006+ <parameters>
21007+ <parameter name="name" transfer-ownership="none">
21008+ <doc xml:space="preserve"
21009+ filename="gobject-2.0.c"
21010+ line="2549">A nul-terminated string used as the name of the new type.</doc>
21011+ <type name="utf8" c:type="const gchar*"/>
21012+ </parameter>
21013+ <parameter name="const_static_values" transfer-ownership="none">
21014+ <doc xml:space="preserve"
21015+ filename="gobject-2.0.c"
21016+ line="2550">An array of #GEnumValue structs for the possible
21017+ enumeration values. The array is terminated by a struct with all
21018+ members being 0. GObject keeps a reference to the data, so it cannot
21019+ be stack-allocated.</doc>
21020+ <type name="EnumValue" c:type="const GEnumValue*"/>
21021+ </parameter>
21022+ </parameters>
21023+ </function>
21024+ <function name="enum_to_string"
21025+ c:identifier="g_enum_to_string"
21026+ version="2.54">
21027+ <doc xml:space="preserve"
21028+ filename="gobject-2.0.c"
21029+ line="2565">Pretty-prints @value in the form of the enum’s name.
21030+
21031+This is intended to be used for debugging purposes. The format of the output
21032+may change in the future.</doc>
21033+ <source-position filename="genums.h" line="237"/>
21034+ <return-value transfer-ownership="full">
21035+ <doc xml:space="preserve"
21036+ filename="gobject-2.0.c"
21037+ line="2575">a newly-allocated text string</doc>
21038+ <type name="utf8" c:type="gchar*"/>
21039+ </return-value>
21040+ <parameters>
21041+ <parameter name="g_enum_type" transfer-ownership="none">
21042+ <doc xml:space="preserve"
21043+ filename="gobject-2.0.c"
21044+ line="2567">the type identifier of a #GEnumClass type</doc>
21045+ <type name="GType" c:type="GType"/>
21046+ </parameter>
21047+ <parameter name="value" transfer-ownership="none">
21048+ <doc xml:space="preserve"
21049+ filename="gobject-2.0.c"
21050+ line="2568">the value</doc>
21051+ <type name="gint" c:type="gint"/>
21052+ </parameter>
21053+ </parameters>
21054+ </function>
21055+ <docsection name="enumerations_flags">
21056+ <doc xml:space="preserve"
21057+ filename="gobject-2.0.c"
21058+ line="187">The GLib type system provides fundamental types for enumeration and
21059+flags types. (Flags types are like enumerations, but allow their
21060+values to be combined by bitwise or). A registered enumeration or
21061+flags type associates a name and a nickname with each allowed
21062+value, and the methods g_enum_get_value_by_name(),
21063+g_enum_get_value_by_nick(), g_flags_get_value_by_name() and
21064+g_flags_get_value_by_nick() can look up values by their name or
21065+nickname. When an enumeration or flags type is registered with the
21066+GLib type system, it can be used as value type for object
21067+properties, using g_param_spec_enum() or g_param_spec_flags().
21068+
21069+GObject ships with a utility called [glib-mkenums][glib-mkenums],
21070+that can construct suitable type registration functions from C enumeration
21071+definitions.
21072+
21073+Example of how to get a string representation of an enum value:
21074+|[&lt;!-- language="C" --&gt;
21075+GEnumClass *enum_class;
21076+GEnumValue *enum_value;
21077+
21078+enum_class = g_type_class_ref (MAMAN_TYPE_MY_ENUM);
21079+enum_value = g_enum_get_value (enum_class, MAMAN_MY_ENUM_FOO);
21080+
21081+g_print ("Name: %s\n", enum_value-&gt;value_name);
21082+
21083+g_type_class_unref (enum_class);
21084+]|</doc>
21085+ </docsection>
21086+ <function name="flags_complete_type_info"
21087+ c:identifier="g_flags_complete_type_info">
21088+ <doc xml:space="preserve"
21089+ filename="gobject-2.0.c"
21090+ line="2580">This function is meant to be called from the complete_type_info()
21091+function of a #GTypePlugin implementation, see the example for
21092+g_enum_complete_type_info() above.</doc>
21093+ <source-position filename="genums.h" line="273"/>
21094+ <return-value transfer-ownership="none">
21095+ <type name="none" c:type="void"/>
21096+ </return-value>
21097+ <parameters>
21098+ <parameter name="g_flags_type" transfer-ownership="none">
21099+ <doc xml:space="preserve"
21100+ filename="gobject-2.0.c"
21101+ line="2582">the type identifier of the type being completed</doc>
21102+ <type name="GType" c:type="GType"/>
21103+ </parameter>
21104+ <parameter name="info"
21105+ direction="out"
21106+ caller-allocates="0"
21107+ transfer-ownership="full">
21108+ <doc xml:space="preserve"
21109+ filename="gobject-2.0.c"
21110+ line="2583">the #GTypeInfo struct to be filled in</doc>
21111+ <type name="TypeInfo" c:type="GTypeInfo*"/>
21112+ </parameter>
21113+ <parameter name="const_values" transfer-ownership="none">
21114+ <doc xml:space="preserve"
21115+ filename="gobject-2.0.c"
21116+ line="2584">An array of #GFlagsValue structs for the possible
21117+ enumeration values. The array is terminated by a struct with all
21118+ members being 0.</doc>
21119+ <type name="FlagsValue" c:type="const GFlagsValue*"/>
21120+ </parameter>
21121+ </parameters>
21122+ </function>
21123+ <function name="flags_get_first_value"
21124+ c:identifier="g_flags_get_first_value">
21125+ <doc xml:space="preserve"
21126+ filename="gobject-2.0.c"
21127+ line="2594">Returns the first #GFlagsValue which is set in @value.</doc>
21128+ <source-position filename="genums.h" line="228"/>
21129+ <return-value transfer-ownership="none" nullable="1">
21130+ <doc xml:space="preserve"
21131+ filename="gobject-2.0.c"
21132+ line="2601">the first #GFlagsValue which is set in
21133+ @value, or %NULL if none is set</doc>
21134+ <type name="FlagsValue" c:type="GFlagsValue*"/>
21135+ </return-value>
21136+ <parameters>
21137+ <parameter name="flags_class" transfer-ownership="none">
21138+ <doc xml:space="preserve"
21139+ filename="gobject-2.0.c"
21140+ line="2596">a #GFlagsClass</doc>
21141+ <type name="FlagsClass" c:type="GFlagsClass*"/>
21142+ </parameter>
21143+ <parameter name="value" transfer-ownership="none">
21144+ <doc xml:space="preserve"
21145+ filename="gobject-2.0.c"
21146+ line="2597">the value</doc>
21147+ <type name="guint" c:type="guint"/>
21148+ </parameter>
21149+ </parameters>
21150+ </function>
21151+ <function name="flags_get_value_by_name"
21152+ c:identifier="g_flags_get_value_by_name">
21153+ <doc xml:space="preserve"
21154+ filename="gobject-2.0.c"
21155+ line="2606">Looks up a #GFlagsValue by name.</doc>
21156+ <source-position filename="genums.h" line="231"/>
21157+ <return-value transfer-ownership="none" nullable="1">
21158+ <doc xml:space="preserve"
21159+ filename="gobject-2.0.c"
21160+ line="2613">the #GFlagsValue with name @name,
21161+ or %NULL if there is no flag with that name</doc>
21162+ <type name="FlagsValue" c:type="GFlagsValue*"/>
21163+ </return-value>
21164+ <parameters>
21165+ <parameter name="flags_class" transfer-ownership="none">
21166+ <doc xml:space="preserve"
21167+ filename="gobject-2.0.c"
21168+ line="2608">a #GFlagsClass</doc>
21169+ <type name="FlagsClass" c:type="GFlagsClass*"/>
21170+ </parameter>
21171+ <parameter name="name" transfer-ownership="none">
21172+ <doc xml:space="preserve"
21173+ filename="gobject-2.0.c"
21174+ line="2609">the name to look up</doc>
21175+ <type name="utf8" c:type="const gchar*"/>
21176+ </parameter>
21177+ </parameters>
21178+ </function>
21179+ <function name="flags_get_value_by_nick"
21180+ c:identifier="g_flags_get_value_by_nick">
21181+ <doc xml:space="preserve"
21182+ filename="gobject-2.0.c"
21183+ line="2618">Looks up a #GFlagsValue by nickname.</doc>
21184+ <source-position filename="genums.h" line="234"/>
21185+ <return-value transfer-ownership="none" nullable="1">
21186+ <doc xml:space="preserve"
21187+ filename="gobject-2.0.c"
21188+ line="2625">the #GFlagsValue with nickname @nick,
21189+ or %NULL if there is no flag with that nickname</doc>
21190+ <type name="FlagsValue" c:type="GFlagsValue*"/>
21191+ </return-value>
21192+ <parameters>
21193+ <parameter name="flags_class" transfer-ownership="none">
21194+ <doc xml:space="preserve"
21195+ filename="gobject-2.0.c"
21196+ line="2620">a #GFlagsClass</doc>
21197+ <type name="FlagsClass" c:type="GFlagsClass*"/>
21198+ </parameter>
21199+ <parameter name="nick" transfer-ownership="none">
21200+ <doc xml:space="preserve"
21201+ filename="gobject-2.0.c"
21202+ line="2621">the nickname to look up</doc>
21203+ <type name="utf8" c:type="const gchar*"/>
21204+ </parameter>
21205+ </parameters>
21206+ </function>
21207+ <function name="flags_register_static"
21208+ c:identifier="g_flags_register_static">
21209+ <doc xml:space="preserve"
21210+ filename="gobject-2.0.c"
21211+ line="2630">Registers a new static flags type with the name @name.
21212+
21213+It is normally more convenient to let [glib-mkenums][glib-mkenums]
21214+generate a my_flags_get_type() function from a usual C enumeration
21215+definition than to write one yourself using g_flags_register_static().</doc>
21216+ <source-position filename="genums.h" line="263"/>
21217+ <return-value transfer-ownership="none">
21218+ <doc xml:space="preserve"
21219+ filename="gobject-2.0.c"
21220+ line="2643">The new type identifier.</doc>
21221+ <type name="GType" c:type="GType"/>
21222+ </return-value>
21223+ <parameters>
21224+ <parameter name="name" transfer-ownership="none">
21225+ <doc xml:space="preserve"
21226+ filename="gobject-2.0.c"
21227+ line="2632">A nul-terminated string used as the name of the new type.</doc>
21228+ <type name="utf8" c:type="const gchar*"/>
21229+ </parameter>
21230+ <parameter name="const_static_values" transfer-ownership="none">
21231+ <doc xml:space="preserve"
21232+ filename="gobject-2.0.c"
21233+ line="2633">An array of #GFlagsValue structs for the possible
21234+ flags values. The array is terminated by a struct with all members being 0.
21235+ GObject keeps a reference to the data, so it cannot be stack-allocated.</doc>
21236+ <type name="FlagsValue" c:type="const GFlagsValue*"/>
21237+ </parameter>
21238+ </parameters>
21239+ </function>
21240+ <function name="flags_to_string"
21241+ c:identifier="g_flags_to_string"
21242+ version="2.54">
21243+ <doc xml:space="preserve"
21244+ filename="gobject-2.0.c"
21245+ line="2647">Pretty-prints @value in the form of the flag names separated by ` | ` and
21246+sorted. Any extra bits will be shown at the end as a hexadecimal number.
21247+
21248+This is intended to be used for debugging purposes. The format of the output
21249+may change in the future.</doc>
21250+ <source-position filename="genums.h" line="240"/>
21251+ <return-value transfer-ownership="full">
21252+ <doc xml:space="preserve"
21253+ filename="gobject-2.0.c"
21254+ line="2658">a newly-allocated text string</doc>
21255+ <type name="utf8" c:type="gchar*"/>
21256+ </return-value>
21257+ <parameters>
21258+ <parameter name="flags_type" transfer-ownership="none">
21259+ <doc xml:space="preserve"
21260+ filename="gobject-2.0.c"
21261+ line="2649">the type identifier of a #GFlagsClass type</doc>
21262+ <type name="GType" c:type="GType"/>
21263+ </parameter>
21264+ <parameter name="value" transfer-ownership="none">
21265+ <doc xml:space="preserve"
21266+ filename="gobject-2.0.c"
21267+ line="2650">the value</doc>
21268+ <type name="guint" c:type="guint"/>
21269+ </parameter>
21270+ </parameters>
21271+ </function>
21272+ <docsection name="gboxed">
21273+ <doc xml:space="preserve"
21274+ filename="gobject-2.0.c"
21275+ line="328">#GBoxed is a generic wrapper mechanism for arbitrary C structures.
21276+
21277+The only thing the type system needs to know about the structures is how to
21278+copy them (a #GBoxedCopyFunc) and how to free them (a #GBoxedFreeFunc);
21279+beyond that, they are treated as opaque chunks of memory.
21280+
21281+Boxed types are useful for simple value-holder structures like rectangles or
21282+points. They can also be used for wrapping structures defined in non-#GObject
21283+based libraries. They allow arbitrary structures to be handled in a uniform
21284+way, allowing uniform copying (or referencing) and freeing (or unreferencing)
21285+of them, and uniform representation of the type of the contained structure.
21286+In turn, this allows any type which can be boxed to be set as the data in a
21287+#GValue, which allows for polymorphic handling of a much wider range of data
21288+types, and hence usage of such types as #GObject property values.
21289+
21290+#GBoxed is designed so that reference counted types can be boxed. Use the
21291+type’s ‘ref’ function as the #GBoxedCopyFunc, and its ‘unref’ function as the
21292+#GBoxedFreeFunc. For example, for #GBytes, the #GBoxedCopyFunc is
21293+g_bytes_ref(), and the #GBoxedFreeFunc is g_bytes_unref().</doc>
21294+ </docsection>
21295+ <docsection name="generic_values">
21296+ <doc xml:space="preserve"
21297+ filename="gobject-2.0.c"
21298+ line="409">The #GValue structure is basically a variable container that consists
21299+of a type identifier and a specific value of that type.
21300+
21301+The type identifier within a #GValue structure always determines the
21302+type of the associated value.
21303+
21304+To create an undefined #GValue structure, simply create a zero-filled
21305+#GValue structure. To initialize the #GValue, use the g_value_init()
21306+function. A #GValue cannot be used until it is initialized. Before
21307+destruction you must always use g_value_unset() to make sure allocated
21308+memory is freed.
21309+
21310+The basic type operations (such as freeing and copying) are determined
21311+by the #GTypeValueTable associated with the type ID stored in the #GValue.
21312+Other #GValue operations (such as converting values between types) are
21313+provided by this interface.
21314+
21315+The code in the example program below demonstrates #GValue's
21316+features.
21317+
21318+|[&lt;!-- language="C" --&gt;
21319+#include &lt;glib-object.h&gt;
21320+
21321+static void
21322+int2string (const GValue *src_value,
21323+ GValue *dest_value)
21324+{
21325+ if (g_value_get_int (src_value) == 42)
21326+ g_value_set_static_string (dest_value, "An important number");
21327+ else
21328+ g_value_set_static_string (dest_value, "What's that?");
21329+}
21330+
21331+int
21332+main (int argc,
21333+ char *argv[])
21334+{
21335+ // GValues must be initialized
21336+ GValue a = G_VALUE_INIT;
21337+ GValue b = G_VALUE_INIT;
21338+ const gchar *message;
21339+
21340+ // The GValue starts empty
21341+ g_assert (!G_VALUE_HOLDS_STRING (&amp;a));
21342+
21343+ // Put a string in it
21344+ g_value_init (&amp;a, G_TYPE_STRING);
21345+ g_assert (G_VALUE_HOLDS_STRING (&amp;a));
21346+ g_value_set_static_string (&amp;a, "Hello, world!");
21347+ g_printf ("%s\n", g_value_get_string (&amp;a));
21348+
21349+ // Reset it to its pristine state
21350+ g_value_unset (&amp;a);
21351+
21352+ // It can then be reused for another type
21353+ g_value_init (&amp;a, G_TYPE_INT);
21354+ g_value_set_int (&amp;a, 42);
21355+
21356+ // Attempt to transform it into a GValue of type STRING
21357+ g_value_init (&amp;b, G_TYPE_STRING);
21358+
21359+ // An INT is transformable to a STRING
21360+ g_assert (g_value_type_transformable (G_TYPE_INT, G_TYPE_STRING));
21361+
21362+ g_value_transform (&amp;a, &amp;b);
21363+ g_printf ("%s\n", g_value_get_string (&amp;b));
21364+
21365+ // Attempt to transform it again using a custom transform function
21366+ g_value_register_transform_func (G_TYPE_INT, G_TYPE_STRING, int2string);
21367+ g_value_transform (&amp;a, &amp;b);
21368+ g_printf ("%s\n", g_value_get_string (&amp;b));
21369+ return 0;
21370+}
21371+]|
21372+
21373+See also [gobject-Standard-Parameter-and-Value-Types] for more information on
21374+validation of #GValue.
21375+
21376+For letting a #GValue own (and memory manage) arbitrary types or pointers,
21377+they need to become a [boxed type][gboxed]. The example below shows how
21378+the pointer `mystruct` of type `MyStruct` is used as a [boxed type][gboxed].
21379+
21380+|[&lt;!-- language="C" --&gt;
21381+typedef struct { ... } MyStruct;
21382+G_DEFINE_BOXED_TYPE (MyStruct, my_struct, my_struct_copy, my_struct_free)
21383+
21384+// These two lines normally go in a public header. By GObject convention,
21385+// the naming scheme is NAMESPACE_TYPE_NAME:
21386+#define MY_TYPE_STRUCT (my_struct_get_type ())
21387+GType my_struct_get_type (void);
21388+
21389+void
21390+foo ()
21391+{
21392+ GValue *value = g_new0 (GValue, 1);
21393+ g_value_init (value, MY_TYPE_STRUCT);
21394+ g_value_set_boxed (value, mystruct);
21395+ // [... your code ....]
21396+ g_value_unset (value);
21397+ g_value_free (value);
21398+}
21399+]|</doc>
21400+ </docsection>
21401+ <docsection name="gtype">
21402+ <doc xml:space="preserve"
21403+ filename="gobject-2.0.c"
21404+ line="577">The GType API is the foundation of the GObject system. It provides the
21405+facilities for registering and managing all fundamental data types,
21406+user-defined object and interface types.
21407+
21408+For type creation and registration purposes, all types fall into one of
21409+two categories: static or dynamic. Static types are never loaded or
21410+unloaded at run-time as dynamic types may be. Static types are created
21411+with g_type_register_static() that gets type specific information passed
21412+in via a #GTypeInfo structure.
21413+
21414+Dynamic types are created with g_type_register_dynamic() which takes a
21415+#GTypePlugin structure instead. The remaining type information (the
21416+#GTypeInfo structure) is retrieved during runtime through #GTypePlugin
21417+and the g_type_plugin_*() API.
21418+
21419+These registration functions are usually called only once from a
21420+function whose only purpose is to return the type identifier for a
21421+specific class. Once the type (or class or interface) is registered,
21422+it may be instantiated, inherited, or implemented depending on exactly
21423+what sort of type it is.
21424+
21425+There is also a third registration function for registering fundamental
21426+types called g_type_register_fundamental() which requires both a #GTypeInfo
21427+structure and a #GTypeFundamentalInfo structure but it is seldom used
21428+since most fundamental types are predefined rather than user-defined.
21429+
21430+Type instance and class structs are limited to a total of 64 KiB,
21431+including all parent types. Similarly, type instances' private data
21432+(as created by G_ADD_PRIVATE()) are limited to a total of
21433+64 KiB. If a type instance needs a large static buffer, allocate it
21434+separately (typically by using #GArray or #GPtrArray) and put a pointer
21435+to the buffer in the structure.
21436+
21437+As mentioned in the [GType conventions][gtype-conventions], type names must
21438+be at least three characters long. There is no upper length limit. The first
21439+character must be a letter (a–z or A–Z) or an underscore (‘_’). Subsequent
21440+characters can be letters, numbers or any of ‘-_+’.</doc>
21441+ </docsection>
21442+ <function name="gtype_get_type" c:identifier="g_gtype_get_type">
21443+ <source-position filename="gvaluetypes.h" line="270"/>
21444+ <return-value transfer-ownership="none">
21445+ <type name="GType" c:type="GType"/>
21446+ </return-value>
21447+ </function>
21448+ <docsection name="objects">
21449+ <doc xml:space="preserve"
21450+ filename="gobject-2.0.c"
21451+ line="719">GObject is the fundamental type providing the common attributes and
21452+methods for all object types in GTK+, Pango and other libraries
21453+based on GObject. The GObject class provides methods for object
21454+construction and destruction, property access methods, and signal
21455+support. Signals are described in detail [here][gobject-Signals].
21456+
21457+For a tutorial on implementing a new GObject class, see [How to define and
21458+implement a new GObject][howto-gobject]. For a list of naming conventions for
21459+GObjects and their methods, see the [GType conventions][gtype-conventions].
21460+For the high-level concepts behind GObject, read [Instantiatable classed types:
21461+Objects][gtype-instantiatable-classed].
21462+
21463+## Floating references # {#floating-ref}
21464+
21465+**Note**: Floating references are a C convenience API and should not be
21466+used in modern GObject code. Language bindings in particular find the
21467+concept highly problematic, as floating references are not identifiable
21468+through annotations, and neither are deviations from the floating reference
21469+behavior, like types that inherit from #GInitiallyUnowned and still return
21470+a full reference from g_object_new().
21471+
21472+GInitiallyUnowned is derived from GObject. The only difference between
21473+the two is that the initial reference of a GInitiallyUnowned is flagged
21474+as a "floating" reference. This means that it is not specifically
21475+claimed to be "owned" by any code portion. The main motivation for
21476+providing floating references is C convenience. In particular, it
21477+allows code to be written as:
21478+
21479+|[&lt;!-- language="C" --&gt;
21480+container = create_container ();
21481+container_add_child (container, create_child());
21482+]|
21483+
21484+If container_add_child() calls g_object_ref_sink() on the passed-in child,
21485+no reference of the newly created child is leaked. Without floating
21486+references, container_add_child() can only g_object_ref() the new child,
21487+so to implement this code without reference leaks, it would have to be
21488+written as:
21489+
21490+|[&lt;!-- language="C" --&gt;
21491+Child *child;
21492+container = create_container ();
21493+child = create_child ();
21494+container_add_child (container, child);
21495+g_object_unref (child);
21496+]|
21497+
21498+The floating reference can be converted into an ordinary reference by
21499+calling g_object_ref_sink(). For already sunken objects (objects that
21500+don't have a floating reference anymore), g_object_ref_sink() is equivalent
21501+to g_object_ref() and returns a new reference.
21502+
21503+Since floating references are useful almost exclusively for C convenience,
21504+language bindings that provide automated reference and memory ownership
21505+maintenance (such as smart pointers or garbage collection) should not
21506+expose floating references in their API. The best practice for handling
21507+types that have initially floating references is to immediately sink those
21508+references after g_object_new() returns, by checking if the #GType
21509+inherits from #GInitiallyUnowned. For instance:
21510+
21511+|[&lt;!-- language="C" --&gt;
21512+GObject *res = g_object_new_with_properties (gtype,
21513+ n_props,
21514+ prop_names,
21515+ prop_values);
21516+
21517+// or: if (g_type_is_a (gtype, G_TYPE_INITIALLY_UNOWNED))
21518+if (G_IS_INITIALLY_UNOWNED (res))
21519+ g_object_ref_sink (res);
21520+
21521+return res;
21522+]|
21523+
21524+Some object implementations may need to save an objects floating state
21525+across certain code portions (an example is #GtkMenu), to achieve this,
21526+the following sequence can be used:
21527+
21528+|[&lt;!-- language="C" --&gt;
21529+// save floating state
21530+gboolean was_floating = g_object_is_floating (object);
21531+g_object_ref_sink (object);
21532+// protected code portion
21533+
21534+...
21535+
21536+// restore floating state
21537+if (was_floating)
21538+ g_object_force_floating (object);
21539+else
21540+ g_object_unref (object); // release previously acquired reference
21541+]|</doc>
21542+ </docsection>
21543+ <function name="param_spec_boolean" c:identifier="g_param_spec_boolean">
21544+ <doc xml:space="preserve"
21545+ filename="gobject-2.0.c"
21546+ line="3925">Creates a new #GParamSpecBoolean instance specifying a %G_TYPE_BOOLEAN
21547+property. In many cases, it may be more appropriate to use an enum with
21548+g_param_spec_enum(), both to improve code clarity by using explicitly named
21549+values, and to allow for more values to be added in future without breaking
21550+API.
21551+
21552+See g_param_spec_internal() for details on property names.</doc>
21553+ <source-position filename="gparamspecs.h" line="1004"/>
21554+ <return-value transfer-ownership="full">
21555+ <doc xml:space="preserve"
21556+ filename="gobject-2.0.c"
21557+ line="3941">a newly created parameter specification</doc>
21558+ <type name="ParamSpec" c:type="GParamSpec*"/>
21559+ </return-value>
21560+ <parameters>
21561+ <parameter name="name" transfer-ownership="none">
21562+ <doc xml:space="preserve"
21563+ filename="gobject-2.0.c"
21564+ line="3927">canonical name of the property specified</doc>
21565+ <type name="utf8" c:type="const gchar*"/>
21566+ </parameter>
21567+ <parameter name="nick" transfer-ownership="none">
21568+ <doc xml:space="preserve"
21569+ filename="gobject-2.0.c"
21570+ line="3928">nick name for the property specified</doc>
21571+ <type name="utf8" c:type="const gchar*"/>
21572+ </parameter>
21573+ <parameter name="blurb" transfer-ownership="none">
21574+ <doc xml:space="preserve"
21575+ filename="gobject-2.0.c"
21576+ line="3929">description of the property specified</doc>
21577+ <type name="utf8" c:type="const gchar*"/>
21578+ </parameter>
21579+ <parameter name="default_value" transfer-ownership="none">
21580+ <doc xml:space="preserve"
21581+ filename="gobject-2.0.c"
21582+ line="3930">default value for the property specified</doc>
21583+ <type name="gboolean" c:type="gboolean"/>
21584+ </parameter>
21585+ <parameter name="flags" transfer-ownership="none">
21586+ <doc xml:space="preserve"
21587+ filename="gobject-2.0.c"
21588+ line="3931">flags for the property specified</doc>
21589+ <type name="ParamFlags" c:type="GParamFlags"/>
21590+ </parameter>
21591+ </parameters>
21592+ </function>
21593+ <function name="param_spec_boxed" c:identifier="g_param_spec_boxed">
21594+ <doc xml:space="preserve"
21595+ filename="gobject-2.0.c"
21596+ line="3945">Creates a new #GParamSpecBoxed instance specifying a %G_TYPE_BOXED
21597+derived property.
21598+
21599+See g_param_spec_internal() for details on property names.</doc>
21600+ <source-position filename="gparamspecs.h" line="1106"/>
21601+ <return-value transfer-ownership="full">
21602+ <doc xml:space="preserve"
21603+ filename="gobject-2.0.c"
21604+ line="3958">a newly created parameter specification</doc>
21605+ <type name="ParamSpec" c:type="GParamSpec*"/>
21606+ </return-value>
21607+ <parameters>
21608+ <parameter name="name" transfer-ownership="none">
21609+ <doc xml:space="preserve"
21610+ filename="gobject-2.0.c"
21611+ line="3947">canonical name of the property specified</doc>
21612+ <type name="utf8" c:type="const gchar*"/>
21613+ </parameter>
21614+ <parameter name="nick" transfer-ownership="none">
21615+ <doc xml:space="preserve"
21616+ filename="gobject-2.0.c"
21617+ line="3948">nick name for the property specified</doc>
21618+ <type name="utf8" c:type="const gchar*"/>
21619+ </parameter>
21620+ <parameter name="blurb" transfer-ownership="none">
21621+ <doc xml:space="preserve"
21622+ filename="gobject-2.0.c"
21623+ line="3949">description of the property specified</doc>
21624+ <type name="utf8" c:type="const gchar*"/>
21625+ </parameter>
21626+ <parameter name="boxed_type" transfer-ownership="none">
21627+ <doc xml:space="preserve"
21628+ filename="gobject-2.0.c"
21629+ line="3950">%G_TYPE_BOXED derived type of this property</doc>
21630+ <type name="GType" c:type="GType"/>
21631+ </parameter>
21632+ <parameter name="flags" transfer-ownership="none">
21633+ <doc xml:space="preserve"
21634+ filename="gobject-2.0.c"
21635+ line="3951">flags for the property specified</doc>
21636+ <type name="ParamFlags" c:type="GParamFlags"/>
21637+ </parameter>
21638+ </parameters>
21639+ </function>
21640+ <function name="param_spec_char" c:identifier="g_param_spec_char">
21641+ <doc xml:space="preserve"
21642+ filename="gobject-2.0.c"
21643+ line="3962">Creates a new #GParamSpecChar instance specifying a %G_TYPE_CHAR property.</doc>
21644+ <source-position filename="gparamspecs.h" line="988"/>
21645+ <return-value transfer-ownership="full">
21646+ <doc xml:space="preserve"
21647+ filename="gobject-2.0.c"
21648+ line="3974">a newly created parameter specification</doc>
21649+ <type name="ParamSpec" c:type="GParamSpec*"/>
21650+ </return-value>
21651+ <parameters>
21652+ <parameter name="name" transfer-ownership="none">
21653+ <doc xml:space="preserve"
21654+ filename="gobject-2.0.c"
21655+ line="3964">canonical name of the property specified</doc>
21656+ <type name="utf8" c:type="const gchar*"/>
21657+ </parameter>
21658+ <parameter name="nick" transfer-ownership="none">
21659+ <doc xml:space="preserve"
21660+ filename="gobject-2.0.c"
21661+ line="3965">nick name for the property specified</doc>
21662+ <type name="utf8" c:type="const gchar*"/>
21663+ </parameter>
21664+ <parameter name="blurb" transfer-ownership="none">
21665+ <doc xml:space="preserve"
21666+ filename="gobject-2.0.c"
21667+ line="3966">description of the property specified</doc>
21668+ <type name="utf8" c:type="const gchar*"/>
21669+ </parameter>
21670+ <parameter name="minimum" transfer-ownership="none">
21671+ <doc xml:space="preserve"
21672+ filename="gobject-2.0.c"
21673+ line="3967">minimum value for the property specified</doc>
21674+ <type name="gint8" c:type="gint8"/>
21675+ </parameter>
21676+ <parameter name="maximum" transfer-ownership="none">
21677+ <doc xml:space="preserve"
21678+ filename="gobject-2.0.c"
21679+ line="3968">maximum value for the property specified</doc>
21680+ <type name="gint8" c:type="gint8"/>
21681+ </parameter>
21682+ <parameter name="default_value" transfer-ownership="none">
21683+ <doc xml:space="preserve"
21684+ filename="gobject-2.0.c"
21685+ line="3969">default value for the property specified</doc>
21686+ <type name="gint8" c:type="gint8"/>
21687+ </parameter>
21688+ <parameter name="flags" transfer-ownership="none">
21689+ <doc xml:space="preserve"
21690+ filename="gobject-2.0.c"
21691+ line="3970">flags for the property specified</doc>
21692+ <type name="ParamFlags" c:type="GParamFlags"/>
21693+ </parameter>
21694+ </parameters>
21695+ </function>
21696+ <function name="param_spec_double" c:identifier="g_param_spec_double">
21697+ <doc xml:space="preserve"
21698+ filename="gobject-2.0.c"
21699+ line="3978">Creates a new #GParamSpecDouble instance specifying a %G_TYPE_DOUBLE
21700+property.
21701+
21702+See g_param_spec_internal() for details on property names.</doc>
21703+ <source-position filename="gparamspecs.h" line="1086"/>
21704+ <return-value transfer-ownership="full">
21705+ <doc xml:space="preserve"
21706+ filename="gobject-2.0.c"
21707+ line="3993">a newly created parameter specification</doc>
21708+ <type name="ParamSpec" c:type="GParamSpec*"/>
21709+ </return-value>
21710+ <parameters>
21711+ <parameter name="name" transfer-ownership="none">
21712+ <doc xml:space="preserve"
21713+ filename="gobject-2.0.c"
21714+ line="3980">canonical name of the property specified</doc>
21715+ <type name="utf8" c:type="const gchar*"/>
21716+ </parameter>
21717+ <parameter name="nick" transfer-ownership="none">
21718+ <doc xml:space="preserve"
21719+ filename="gobject-2.0.c"
21720+ line="3981">nick name for the property specified</doc>
21721+ <type name="utf8" c:type="const gchar*"/>
21722+ </parameter>
21723+ <parameter name="blurb" transfer-ownership="none">
21724+ <doc xml:space="preserve"
21725+ filename="gobject-2.0.c"
21726+ line="3982">description of the property specified</doc>
21727+ <type name="utf8" c:type="const gchar*"/>
21728+ </parameter>
21729+ <parameter name="minimum" transfer-ownership="none">
21730+ <doc xml:space="preserve"
21731+ filename="gobject-2.0.c"
21732+ line="3983">minimum value for the property specified</doc>
21733+ <type name="gdouble" c:type="gdouble"/>
21734+ </parameter>
21735+ <parameter name="maximum" transfer-ownership="none">
21736+ <doc xml:space="preserve"
21737+ filename="gobject-2.0.c"
21738+ line="3984">maximum value for the property specified</doc>
21739+ <type name="gdouble" c:type="gdouble"/>
21740+ </parameter>
21741+ <parameter name="default_value" transfer-ownership="none">
21742+ <doc xml:space="preserve"
21743+ filename="gobject-2.0.c"
21744+ line="3985">default value for the property specified</doc>
21745+ <type name="gdouble" c:type="gdouble"/>
21746+ </parameter>
21747+ <parameter name="flags" transfer-ownership="none">
21748+ <doc xml:space="preserve"
21749+ filename="gobject-2.0.c"
21750+ line="3986">flags for the property specified</doc>
21751+ <type name="ParamFlags" c:type="GParamFlags"/>
21752+ </parameter>
21753+ </parameters>
21754+ </function>
21755+ <function name="param_spec_enum" c:identifier="g_param_spec_enum">
21756+ <doc xml:space="preserve"
21757+ filename="gobject-2.0.c"
21758+ line="3997">Creates a new #GParamSpecEnum instance specifying a %G_TYPE_ENUM
21759+property.
21760+
21761+See g_param_spec_internal() for details on property names.</doc>
21762+ <source-position filename="gparamspecs.h" line="1064"/>
21763+ <return-value transfer-ownership="full">
21764+ <doc xml:space="preserve"
21765+ filename="gobject-2.0.c"
21766+ line="4011">a newly created parameter specification</doc>
21767+ <type name="ParamSpec" c:type="GParamSpec*"/>
21768+ </return-value>
21769+ <parameters>
21770+ <parameter name="name" transfer-ownership="none">
21771+ <doc xml:space="preserve"
21772+ filename="gobject-2.0.c"
21773+ line="3999">canonical name of the property specified</doc>
21774+ <type name="utf8" c:type="const gchar*"/>
21775+ </parameter>
21776+ <parameter name="nick" transfer-ownership="none">
21777+ <doc xml:space="preserve"
21778+ filename="gobject-2.0.c"
21779+ line="4000">nick name for the property specified</doc>
21780+ <type name="utf8" c:type="const gchar*"/>
21781+ </parameter>
21782+ <parameter name="blurb" transfer-ownership="none">
21783+ <doc xml:space="preserve"
21784+ filename="gobject-2.0.c"
21785+ line="4001">description of the property specified</doc>
21786+ <type name="utf8" c:type="const gchar*"/>
21787+ </parameter>
21788+ <parameter name="enum_type" transfer-ownership="none">
21789+ <doc xml:space="preserve"
21790+ filename="gobject-2.0.c"
21791+ line="4002">a #GType derived from %G_TYPE_ENUM</doc>
21792+ <type name="GType" c:type="GType"/>
21793+ </parameter>
21794+ <parameter name="default_value" transfer-ownership="none">
21795+ <doc xml:space="preserve"
21796+ filename="gobject-2.0.c"
21797+ line="4003">default value for the property specified</doc>
21798+ <type name="gint" c:type="gint"/>
21799+ </parameter>
21800+ <parameter name="flags" transfer-ownership="none">
21801+ <doc xml:space="preserve"
21802+ filename="gobject-2.0.c"
21803+ line="4004">flags for the property specified</doc>
21804+ <type name="ParamFlags" c:type="GParamFlags"/>
21805+ </parameter>
21806+ </parameters>
21807+ </function>
21808+ <function name="param_spec_flags" c:identifier="g_param_spec_flags">
21809+ <doc xml:space="preserve"
21810+ filename="gobject-2.0.c"
21811+ line="4015">Creates a new #GParamSpecFlags instance specifying a %G_TYPE_FLAGS
21812+property.
21813+
21814+See g_param_spec_internal() for details on property names.</doc>
21815+ <source-position filename="gparamspecs.h" line="1071"/>
21816+ <return-value transfer-ownership="full">
21817+ <doc xml:space="preserve"
21818+ filename="gobject-2.0.c"
21819+ line="4029">a newly created parameter specification</doc>
21820+ <type name="ParamSpec" c:type="GParamSpec*"/>
21821+ </return-value>
21822+ <parameters>
21823+ <parameter name="name" transfer-ownership="none">
21824+ <doc xml:space="preserve"
21825+ filename="gobject-2.0.c"
21826+ line="4017">canonical name of the property specified</doc>
21827+ <type name="utf8" c:type="const gchar*"/>
21828+ </parameter>
21829+ <parameter name="nick" transfer-ownership="none">
21830+ <doc xml:space="preserve"
21831+ filename="gobject-2.0.c"
21832+ line="4018">nick name for the property specified</doc>
21833+ <type name="utf8" c:type="const gchar*"/>
21834+ </parameter>
21835+ <parameter name="blurb" transfer-ownership="none">
21836+ <doc xml:space="preserve"
21837+ filename="gobject-2.0.c"
21838+ line="4019">description of the property specified</doc>
21839+ <type name="utf8" c:type="const gchar*"/>
21840+ </parameter>
21841+ <parameter name="flags_type" transfer-ownership="none">
21842+ <doc xml:space="preserve"
21843+ filename="gobject-2.0.c"
21844+ line="4020">a #GType derived from %G_TYPE_FLAGS</doc>
21845+ <type name="GType" c:type="GType"/>
21846+ </parameter>
21847+ <parameter name="default_value" transfer-ownership="none">
21848+ <doc xml:space="preserve"
21849+ filename="gobject-2.0.c"
21850+ line="4021">default value for the property specified</doc>
21851+ <type name="guint" c:type="guint"/>
21852+ </parameter>
21853+ <parameter name="flags" transfer-ownership="none">
21854+ <doc xml:space="preserve"
21855+ filename="gobject-2.0.c"
21856+ line="4022">flags for the property specified</doc>
21857+ <type name="ParamFlags" c:type="GParamFlags"/>
21858+ </parameter>
21859+ </parameters>
21860+ </function>
21861+ <function name="param_spec_float" c:identifier="g_param_spec_float">
21862+ <doc xml:space="preserve"
21863+ filename="gobject-2.0.c"
21864+ line="4033">Creates a new #GParamSpecFloat instance specifying a %G_TYPE_FLOAT property.
21865+
21866+See g_param_spec_internal() for details on property names.</doc>
21867+ <source-position filename="gparamspecs.h" line="1078"/>
21868+ <return-value transfer-ownership="full">
21869+ <doc xml:space="preserve"
21870+ filename="gobject-2.0.c"
21871+ line="4047">a newly created parameter specification</doc>
21872+ <type name="ParamSpec" c:type="GParamSpec*"/>
21873+ </return-value>
21874+ <parameters>
21875+ <parameter name="name" transfer-ownership="none">
21876+ <doc xml:space="preserve"
21877+ filename="gobject-2.0.c"
21878+ line="4035">canonical name of the property specified</doc>
21879+ <type name="utf8" c:type="const gchar*"/>
21880+ </parameter>
21881+ <parameter name="nick" transfer-ownership="none">
21882+ <doc xml:space="preserve"
21883+ filename="gobject-2.0.c"
21884+ line="4036">nick name for the property specified</doc>
21885+ <type name="utf8" c:type="const gchar*"/>
21886+ </parameter>
21887+ <parameter name="blurb" transfer-ownership="none">
21888+ <doc xml:space="preserve"
21889+ filename="gobject-2.0.c"
21890+ line="4037">description of the property specified</doc>
21891+ <type name="utf8" c:type="const gchar*"/>
21892+ </parameter>
21893+ <parameter name="minimum" transfer-ownership="none">
21894+ <doc xml:space="preserve"
21895+ filename="gobject-2.0.c"
21896+ line="4038">minimum value for the property specified</doc>
21897+ <type name="gfloat" c:type="gfloat"/>
21898+ </parameter>
21899+ <parameter name="maximum" transfer-ownership="none">
21900+ <doc xml:space="preserve"
21901+ filename="gobject-2.0.c"
21902+ line="4039">maximum value for the property specified</doc>
21903+ <type name="gfloat" c:type="gfloat"/>
21904+ </parameter>
21905+ <parameter name="default_value" transfer-ownership="none">
21906+ <doc xml:space="preserve"
21907+ filename="gobject-2.0.c"
21908+ line="4040">default value for the property specified</doc>
21909+ <type name="gfloat" c:type="gfloat"/>
21910+ </parameter>
21911+ <parameter name="flags" transfer-ownership="none">
21912+ <doc xml:space="preserve"
21913+ filename="gobject-2.0.c"
21914+ line="4041">flags for the property specified</doc>
21915+ <type name="ParamFlags" c:type="GParamFlags"/>
21916+ </parameter>
21917+ </parameters>
21918+ </function>
21919+ <function name="param_spec_gtype"
21920+ c:identifier="g_param_spec_gtype"
21921+ version="2.10">
21922+ <doc xml:space="preserve"
21923+ filename="gobject-2.0.c"
21924+ line="4137">Creates a new #GParamSpecGType instance specifying a
21925+%G_TYPE_GTYPE property.
21926+
21927+See g_param_spec_internal() for details on property names.</doc>
21928+ <source-position filename="gparamspecs.h" line="1132"/>
21929+ <return-value transfer-ownership="full">
21930+ <doc xml:space="preserve"
21931+ filename="gobject-2.0.c"
21932+ line="4152">a newly created parameter specification</doc>
21933+ <type name="ParamSpec" c:type="GParamSpec*"/>
21934+ </return-value>
21935+ <parameters>
21936+ <parameter name="name" transfer-ownership="none">
21937+ <doc xml:space="preserve"
21938+ filename="gobject-2.0.c"
21939+ line="4139">canonical name of the property specified</doc>
21940+ <type name="utf8" c:type="const gchar*"/>
21941+ </parameter>
21942+ <parameter name="nick" transfer-ownership="none">
21943+ <doc xml:space="preserve"
21944+ filename="gobject-2.0.c"
21945+ line="4140">nick name for the property specified</doc>
21946+ <type name="utf8" c:type="const gchar*"/>
21947+ </parameter>
21948+ <parameter name="blurb" transfer-ownership="none">
21949+ <doc xml:space="preserve"
21950+ filename="gobject-2.0.c"
21951+ line="4141">description of the property specified</doc>
21952+ <type name="utf8" c:type="const gchar*"/>
21953+ </parameter>
21954+ <parameter name="is_a_type" transfer-ownership="none">
21955+ <doc xml:space="preserve"
21956+ filename="gobject-2.0.c"
21957+ line="4142">a #GType whose subtypes are allowed as values
21958+ of the property (use %G_TYPE_NONE for any type)</doc>
21959+ <type name="GType" c:type="GType"/>
21960+ </parameter>
21961+ <parameter name="flags" transfer-ownership="none">
21962+ <doc xml:space="preserve"
21963+ filename="gobject-2.0.c"
21964+ line="4144">flags for the property specified</doc>
21965+ <type name="ParamFlags" c:type="GParamFlags"/>
21966+ </parameter>
21967+ </parameters>
21968+ </function>
21969+ <function name="param_spec_int" c:identifier="g_param_spec_int">
21970+ <doc xml:space="preserve"
21971+ filename="gobject-2.0.c"
21972+ line="4156">Creates a new #GParamSpecInt instance specifying a %G_TYPE_INT property.
21973+
21974+See g_param_spec_internal() for details on property names.</doc>
21975+ <source-position filename="gparamspecs.h" line="1010"/>
21976+ <return-value transfer-ownership="full">
21977+ <doc xml:space="preserve"
21978+ filename="gobject-2.0.c"
21979+ line="4170">a newly created parameter specification</doc>
21980+ <type name="ParamSpec" c:type="GParamSpec*"/>
21981+ </return-value>
21982+ <parameters>
21983+ <parameter name="name" transfer-ownership="none">
21984+ <doc xml:space="preserve"
21985+ filename="gobject-2.0.c"
21986+ line="4158">canonical name of the property specified</doc>
21987+ <type name="utf8" c:type="const gchar*"/>
21988+ </parameter>
21989+ <parameter name="nick" transfer-ownership="none">
21990+ <doc xml:space="preserve"
21991+ filename="gobject-2.0.c"
21992+ line="4159">nick name for the property specified</doc>
21993+ <type name="utf8" c:type="const gchar*"/>
21994+ </parameter>
21995+ <parameter name="blurb" transfer-ownership="none">
21996+ <doc xml:space="preserve"
21997+ filename="gobject-2.0.c"
21998+ line="4160">description of the property specified</doc>
21999+ <type name="utf8" c:type="const gchar*"/>
22000+ </parameter>
22001+ <parameter name="minimum" transfer-ownership="none">
22002+ <doc xml:space="preserve"
22003+ filename="gobject-2.0.c"
22004+ line="4161">minimum value for the property specified</doc>
22005+ <type name="gint" c:type="gint"/>
22006+ </parameter>
22007+ <parameter name="maximum" transfer-ownership="none">
22008+ <doc xml:space="preserve"
22009+ filename="gobject-2.0.c"
22010+ line="4162">maximum value for the property specified</doc>
22011+ <type name="gint" c:type="gint"/>
22012+ </parameter>
22013+ <parameter name="default_value" transfer-ownership="none">
22014+ <doc xml:space="preserve"
22015+ filename="gobject-2.0.c"
22016+ line="4163">default value for the property specified</doc>
22017+ <type name="gint" c:type="gint"/>
22018+ </parameter>
22019+ <parameter name="flags" transfer-ownership="none">
22020+ <doc xml:space="preserve"
22021+ filename="gobject-2.0.c"
22022+ line="4164">flags for the property specified</doc>
22023+ <type name="ParamFlags" c:type="GParamFlags"/>
22024+ </parameter>
22025+ </parameters>
22026+ </function>
22027+ <function name="param_spec_int64" c:identifier="g_param_spec_int64">
22028+ <doc xml:space="preserve"
22029+ filename="gobject-2.0.c"
22030+ line="4174">Creates a new #GParamSpecInt64 instance specifying a %G_TYPE_INT64 property.
22031+
22032+See g_param_spec_internal() for details on property names.</doc>
22033+ <source-position filename="gparamspecs.h" line="1042"/>
22034+ <return-value transfer-ownership="full">
22035+ <doc xml:space="preserve"
22036+ filename="gobject-2.0.c"
22037+ line="4188">a newly created parameter specification</doc>
22038+ <type name="ParamSpec" c:type="GParamSpec*"/>
22039+ </return-value>
22040+ <parameters>
22041+ <parameter name="name" transfer-ownership="none">
22042+ <doc xml:space="preserve"
22043+ filename="gobject-2.0.c"
22044+ line="4176">canonical name of the property specified</doc>
22045+ <type name="utf8" c:type="const gchar*"/>
22046+ </parameter>
22047+ <parameter name="nick" transfer-ownership="none">
22048+ <doc xml:space="preserve"
22049+ filename="gobject-2.0.c"
22050+ line="4177">nick name for the property specified</doc>
22051+ <type name="utf8" c:type="const gchar*"/>
22052+ </parameter>
22053+ <parameter name="blurb" transfer-ownership="none">
22054+ <doc xml:space="preserve"
22055+ filename="gobject-2.0.c"
22056+ line="4178">description of the property specified</doc>
22057+ <type name="utf8" c:type="const gchar*"/>
22058+ </parameter>
22059+ <parameter name="minimum" transfer-ownership="none">
22060+ <doc xml:space="preserve"
22061+ filename="gobject-2.0.c"
22062+ line="4179">minimum value for the property specified</doc>
22063+ <type name="gint64" c:type="gint64"/>
22064+ </parameter>
22065+ <parameter name="maximum" transfer-ownership="none">
22066+ <doc xml:space="preserve"
22067+ filename="gobject-2.0.c"
22068+ line="4180">maximum value for the property specified</doc>
22069+ <type name="gint64" c:type="gint64"/>
22070+ </parameter>
22071+ <parameter name="default_value" transfer-ownership="none">
22072+ <doc xml:space="preserve"
22073+ filename="gobject-2.0.c"
22074+ line="4181">default value for the property specified</doc>
22075+ <type name="gint64" c:type="gint64"/>
22076+ </parameter>
22077+ <parameter name="flags" transfer-ownership="none">
22078+ <doc xml:space="preserve"
22079+ filename="gobject-2.0.c"
22080+ line="4182">flags for the property specified</doc>
22081+ <type name="ParamFlags" c:type="GParamFlags"/>
22082+ </parameter>
22083+ </parameters>
22084+ </function>
22085+ <function name="param_spec_long" c:identifier="g_param_spec_long">
22086+ <doc xml:space="preserve"
22087+ filename="gobject-2.0.c"
22088+ line="4233">Creates a new #GParamSpecLong instance specifying a %G_TYPE_LONG property.
22089+
22090+See g_param_spec_internal() for details on property names.</doc>
22091+ <source-position filename="gparamspecs.h" line="1026"/>
22092+ <return-value transfer-ownership="full">
22093+ <doc xml:space="preserve"
22094+ filename="gobject-2.0.c"
22095+ line="4247">a newly created parameter specification</doc>
22096+ <type name="ParamSpec" c:type="GParamSpec*"/>
22097+ </return-value>
22098+ <parameters>
22099+ <parameter name="name" transfer-ownership="none">
22100+ <doc xml:space="preserve"
22101+ filename="gobject-2.0.c"
22102+ line="4235">canonical name of the property specified</doc>
22103+ <type name="utf8" c:type="const gchar*"/>
22104+ </parameter>
22105+ <parameter name="nick" transfer-ownership="none">
22106+ <doc xml:space="preserve"
22107+ filename="gobject-2.0.c"
22108+ line="4236">nick name for the property specified</doc>
22109+ <type name="utf8" c:type="const gchar*"/>
22110+ </parameter>
22111+ <parameter name="blurb" transfer-ownership="none">
22112+ <doc xml:space="preserve"
22113+ filename="gobject-2.0.c"
22114+ line="4237">description of the property specified</doc>
22115+ <type name="utf8" c:type="const gchar*"/>
22116+ </parameter>
22117+ <parameter name="minimum" transfer-ownership="none">
22118+ <doc xml:space="preserve"
22119+ filename="gobject-2.0.c"
22120+ line="4238">minimum value for the property specified</doc>
22121+ <type name="glong" c:type="glong"/>
22122+ </parameter>
22123+ <parameter name="maximum" transfer-ownership="none">
22124+ <doc xml:space="preserve"
22125+ filename="gobject-2.0.c"
22126+ line="4239">maximum value for the property specified</doc>
22127+ <type name="glong" c:type="glong"/>
22128+ </parameter>
22129+ <parameter name="default_value" transfer-ownership="none">
22130+ <doc xml:space="preserve"
22131+ filename="gobject-2.0.c"
22132+ line="4240">default value for the property specified</doc>
22133+ <type name="glong" c:type="glong"/>
22134+ </parameter>
22135+ <parameter name="flags" transfer-ownership="none">
22136+ <doc xml:space="preserve"
22137+ filename="gobject-2.0.c"
22138+ line="4241">flags for the property specified</doc>
22139+ <type name="ParamFlags" c:type="GParamFlags"/>
22140+ </parameter>
22141+ </parameters>
22142+ </function>
22143+ <function name="param_spec_object" c:identifier="g_param_spec_object">
22144+ <doc xml:space="preserve"
22145+ filename="gobject-2.0.c"
22146+ line="4251">Creates a new #GParamSpecBoxed instance specifying a %G_TYPE_OBJECT
22147+derived property.
22148+
22149+See g_param_spec_internal() for details on property names.</doc>
22150+ <source-position filename="gparamspecs.h" line="1123"/>
22151+ <return-value transfer-ownership="full">
22152+ <doc xml:space="preserve"
22153+ filename="gobject-2.0.c"
22154+ line="4264">a newly created parameter specification</doc>
22155+ <type name="ParamSpec" c:type="GParamSpec*"/>
22156+ </return-value>
22157+ <parameters>
22158+ <parameter name="name" transfer-ownership="none">
22159+ <doc xml:space="preserve"
22160+ filename="gobject-2.0.c"
22161+ line="4253">canonical name of the property specified</doc>
22162+ <type name="utf8" c:type="const gchar*"/>
22163+ </parameter>
22164+ <parameter name="nick" transfer-ownership="none">
22165+ <doc xml:space="preserve"
22166+ filename="gobject-2.0.c"
22167+ line="4254">nick name for the property specified</doc>
22168+ <type name="utf8" c:type="const gchar*"/>
22169+ </parameter>
22170+ <parameter name="blurb" transfer-ownership="none">
22171+ <doc xml:space="preserve"
22172+ filename="gobject-2.0.c"
22173+ line="4255">description of the property specified</doc>
22174+ <type name="utf8" c:type="const gchar*"/>
22175+ </parameter>
22176+ <parameter name="object_type" transfer-ownership="none">
22177+ <doc xml:space="preserve"
22178+ filename="gobject-2.0.c"
22179+ line="4256">%G_TYPE_OBJECT derived type of this property</doc>
22180+ <type name="GType" c:type="GType"/>
22181+ </parameter>
22182+ <parameter name="flags" transfer-ownership="none">
22183+ <doc xml:space="preserve"
22184+ filename="gobject-2.0.c"
22185+ line="4257">flags for the property specified</doc>
22186+ <type name="ParamFlags" c:type="GParamFlags"/>
22187+ </parameter>
22188+ </parameters>
22189+ </function>
22190+ <function name="param_spec_override"
22191+ c:identifier="g_param_spec_override"
22192+ version="2.4"
22193+ introspectable="0">
22194+ <doc xml:space="preserve"
22195+ filename="gobject-2.0.c"
22196+ line="4268">Creates a new property of type #GParamSpecOverride. This is used
22197+to direct operations to another paramspec, and will not be directly
22198+useful unless you are implementing a new base type similar to GObject.</doc>
22199+ <source-position filename="gparamspecs.h" line="1129"/>
22200+ <return-value>
22201+ <doc xml:space="preserve"
22202+ filename="gobject-2.0.c"
22203+ line="4278">the newly created #GParamSpec</doc>
22204+ <type name="ParamSpec" c:type="GParamSpec*"/>
22205+ </return-value>
22206+ <parameters>
22207+ <parameter name="name" transfer-ownership="none">
22208+ <doc xml:space="preserve"
22209+ filename="gobject-2.0.c"
22210+ line="4270">the name of the property.</doc>
22211+ <type name="utf8" c:type="const gchar*"/>
22212+ </parameter>
22213+ <parameter name="overridden" transfer-ownership="none">
22214+ <doc xml:space="preserve"
22215+ filename="gobject-2.0.c"
22216+ line="4271">The property that is being overridden</doc>
22217+ <type name="ParamSpec" c:type="GParamSpec*"/>
22218+ </parameter>
22219+ </parameters>
22220+ </function>
22221+ <function name="param_spec_param" c:identifier="g_param_spec_param">
22222+ <doc xml:space="preserve"
22223+ filename="gobject-2.0.c"
22224+ line="4282">Creates a new #GParamSpecParam instance specifying a %G_TYPE_PARAM
22225+property.
22226+
22227+See g_param_spec_internal() for details on property names.</doc>
22228+ <source-position filename="gparamspecs.h" line="1100"/>
22229+ <return-value transfer-ownership="full">
22230+ <doc xml:space="preserve"
22231+ filename="gobject-2.0.c"
22232+ line="4295">a newly created parameter specification</doc>
22233+ <type name="ParamSpec" c:type="GParamSpec*"/>
22234+ </return-value>
22235+ <parameters>
22236+ <parameter name="name" transfer-ownership="none">
22237+ <doc xml:space="preserve"
22238+ filename="gobject-2.0.c"
22239+ line="4284">canonical name of the property specified</doc>
22240+ <type name="utf8" c:type="const gchar*"/>
22241+ </parameter>
22242+ <parameter name="nick" transfer-ownership="none">
22243+ <doc xml:space="preserve"
22244+ filename="gobject-2.0.c"
22245+ line="4285">nick name for the property specified</doc>
22246+ <type name="utf8" c:type="const gchar*"/>
22247+ </parameter>
22248+ <parameter name="blurb" transfer-ownership="none">
22249+ <doc xml:space="preserve"
22250+ filename="gobject-2.0.c"
22251+ line="4286">description of the property specified</doc>
22252+ <type name="utf8" c:type="const gchar*"/>
22253+ </parameter>
22254+ <parameter name="param_type" transfer-ownership="none">
22255+ <doc xml:space="preserve"
22256+ filename="gobject-2.0.c"
22257+ line="4287">a #GType derived from %G_TYPE_PARAM</doc>
22258+ <type name="GType" c:type="GType"/>
22259+ </parameter>
22260+ <parameter name="flags" transfer-ownership="none">
22261+ <doc xml:space="preserve"
22262+ filename="gobject-2.0.c"
22263+ line="4288">flags for the property specified</doc>
22264+ <type name="ParamFlags" c:type="GParamFlags"/>
22265+ </parameter>
22266+ </parameters>
22267+ </function>
22268+ <function name="param_spec_pointer" c:identifier="g_param_spec_pointer">
22269+ <doc xml:space="preserve"
22270+ filename="gobject-2.0.c"
22271+ line="4299">Creates a new #GParamSpecPointer instance specifying a pointer property.
22272+Where possible, it is better to use g_param_spec_object() or
22273+g_param_spec_boxed() to expose memory management information.
22274+
22275+See g_param_spec_internal() for details on property names.</doc>
22276+ <source-position filename="gparamspecs.h" line="1112"/>
22277+ <return-value transfer-ownership="full">
22278+ <doc xml:space="preserve"
22279+ filename="gobject-2.0.c"
22280+ line="4312">a newly created parameter specification</doc>
22281+ <type name="ParamSpec" c:type="GParamSpec*"/>
22282+ </return-value>
22283+ <parameters>
22284+ <parameter name="name" transfer-ownership="none">
22285+ <doc xml:space="preserve"
22286+ filename="gobject-2.0.c"
22287+ line="4301">canonical name of the property specified</doc>
22288+ <type name="utf8" c:type="const gchar*"/>
22289+ </parameter>
22290+ <parameter name="nick" transfer-ownership="none">
22291+ <doc xml:space="preserve"
22292+ filename="gobject-2.0.c"
22293+ line="4302">nick name for the property specified</doc>
22294+ <type name="utf8" c:type="const gchar*"/>
22295+ </parameter>
22296+ <parameter name="blurb" transfer-ownership="none">
22297+ <doc xml:space="preserve"
22298+ filename="gobject-2.0.c"
22299+ line="4303">description of the property specified</doc>
22300+ <type name="utf8" c:type="const gchar*"/>
22301+ </parameter>
22302+ <parameter name="flags" transfer-ownership="none">
22303+ <doc xml:space="preserve"
22304+ filename="gobject-2.0.c"
22305+ line="4304">flags for the property specified</doc>
22306+ <type name="ParamFlags" c:type="GParamFlags"/>
22307+ </parameter>
22308+ </parameters>
22309+ </function>
22310+ <function name="param_spec_string" c:identifier="g_param_spec_string">
22311+ <doc xml:space="preserve"
22312+ filename="gobject-2.0.c"
22313+ line="4474">Creates a new #GParamSpecString instance.
22314+
22315+See g_param_spec_internal() for details on property names.</doc>
22316+ <source-position filename="gparamspecs.h" line="1094"/>
22317+ <return-value transfer-ownership="full">
22318+ <doc xml:space="preserve"
22319+ filename="gobject-2.0.c"
22320+ line="4486">a newly created parameter specification</doc>
22321+ <type name="ParamSpec" c:type="GParamSpec*"/>
22322+ </return-value>
22323+ <parameters>
22324+ <parameter name="name" transfer-ownership="none">
22325+ <doc xml:space="preserve"
22326+ filename="gobject-2.0.c"
22327+ line="4476">canonical name of the property specified</doc>
22328+ <type name="utf8" c:type="const gchar*"/>
22329+ </parameter>
22330+ <parameter name="nick" transfer-ownership="none">
22331+ <doc xml:space="preserve"
22332+ filename="gobject-2.0.c"
22333+ line="4477">nick name for the property specified</doc>
22334+ <type name="utf8" c:type="const gchar*"/>
22335+ </parameter>
22336+ <parameter name="blurb" transfer-ownership="none">
22337+ <doc xml:space="preserve"
22338+ filename="gobject-2.0.c"
22339+ line="4478">description of the property specified</doc>
22340+ <type name="utf8" c:type="const gchar*"/>
22341+ </parameter>
22342+ <parameter name="default_value"
22343+ transfer-ownership="none"
22344+ nullable="1"
22345+ allow-none="1">
22346+ <doc xml:space="preserve"
22347+ filename="gobject-2.0.c"
22348+ line="4479">default value for the property specified</doc>
22349+ <type name="utf8" c:type="const gchar*"/>
22350+ </parameter>
22351+ <parameter name="flags" transfer-ownership="none">
22352+ <doc xml:space="preserve"
22353+ filename="gobject-2.0.c"
22354+ line="4480">flags for the property specified</doc>
22355+ <type name="ParamFlags" c:type="GParamFlags"/>
22356+ </parameter>
22357+ </parameters>
22358+ </function>
22359+ <function name="param_spec_uchar" c:identifier="g_param_spec_uchar">
22360+ <doc xml:space="preserve"
22361+ filename="gobject-2.0.c"
22362+ line="4490">Creates a new #GParamSpecUChar instance specifying a %G_TYPE_UCHAR property.</doc>
22363+ <source-position filename="gparamspecs.h" line="996"/>
22364+ <return-value transfer-ownership="full">
22365+ <doc xml:space="preserve"
22366+ filename="gobject-2.0.c"
22367+ line="4502">a newly created parameter specification</doc>
22368+ <type name="ParamSpec" c:type="GParamSpec*"/>
22369+ </return-value>
22370+ <parameters>
22371+ <parameter name="name" transfer-ownership="none">
22372+ <doc xml:space="preserve"
22373+ filename="gobject-2.0.c"
22374+ line="4492">canonical name of the property specified</doc>
22375+ <type name="utf8" c:type="const gchar*"/>
22376+ </parameter>
22377+ <parameter name="nick" transfer-ownership="none">
22378+ <doc xml:space="preserve"
22379+ filename="gobject-2.0.c"
22380+ line="4493">nick name for the property specified</doc>
22381+ <type name="utf8" c:type="const gchar*"/>
22382+ </parameter>
22383+ <parameter name="blurb" transfer-ownership="none">
22384+ <doc xml:space="preserve"
22385+ filename="gobject-2.0.c"
22386+ line="4494">description of the property specified</doc>
22387+ <type name="utf8" c:type="const gchar*"/>
22388+ </parameter>
22389+ <parameter name="minimum" transfer-ownership="none">
22390+ <doc xml:space="preserve"
22391+ filename="gobject-2.0.c"
22392+ line="4495">minimum value for the property specified</doc>
22393+ <type name="guint8" c:type="guint8"/>
22394+ </parameter>
22395+ <parameter name="maximum" transfer-ownership="none">
22396+ <doc xml:space="preserve"
22397+ filename="gobject-2.0.c"
22398+ line="4496">maximum value for the property specified</doc>
22399+ <type name="guint8" c:type="guint8"/>
22400+ </parameter>
22401+ <parameter name="default_value" transfer-ownership="none">
22402+ <doc xml:space="preserve"
22403+ filename="gobject-2.0.c"
22404+ line="4497">default value for the property specified</doc>
22405+ <type name="guint8" c:type="guint8"/>
22406+ </parameter>
22407+ <parameter name="flags" transfer-ownership="none">
22408+ <doc xml:space="preserve"
22409+ filename="gobject-2.0.c"
22410+ line="4498">flags for the property specified</doc>
22411+ <type name="ParamFlags" c:type="GParamFlags"/>
22412+ </parameter>
22413+ </parameters>
22414+ </function>
22415+ <function name="param_spec_uint" c:identifier="g_param_spec_uint">
22416+ <doc xml:space="preserve"
22417+ filename="gobject-2.0.c"
22418+ line="4506">Creates a new #GParamSpecUInt instance specifying a %G_TYPE_UINT property.
22419+
22420+See g_param_spec_internal() for details on property names.</doc>
22421+ <source-position filename="gparamspecs.h" line="1018"/>
22422+ <return-value transfer-ownership="full">
22423+ <doc xml:space="preserve"
22424+ filename="gobject-2.0.c"
22425+ line="4520">a newly created parameter specification</doc>
22426+ <type name="ParamSpec" c:type="GParamSpec*"/>
22427+ </return-value>
22428+ <parameters>
22429+ <parameter name="name" transfer-ownership="none">
22430+ <doc xml:space="preserve"
22431+ filename="gobject-2.0.c"
22432+ line="4508">canonical name of the property specified</doc>
22433+ <type name="utf8" c:type="const gchar*"/>
22434+ </parameter>
22435+ <parameter name="nick" transfer-ownership="none">
22436+ <doc xml:space="preserve"
22437+ filename="gobject-2.0.c"
22438+ line="4509">nick name for the property specified</doc>
22439+ <type name="utf8" c:type="const gchar*"/>
22440+ </parameter>
22441+ <parameter name="blurb" transfer-ownership="none">
22442+ <doc xml:space="preserve"
22443+ filename="gobject-2.0.c"
22444+ line="4510">description of the property specified</doc>
22445+ <type name="utf8" c:type="const gchar*"/>
22446+ </parameter>
22447+ <parameter name="minimum" transfer-ownership="none">
22448+ <doc xml:space="preserve"
22449+ filename="gobject-2.0.c"
22450+ line="4511">minimum value for the property specified</doc>
22451+ <type name="guint" c:type="guint"/>
22452+ </parameter>
22453+ <parameter name="maximum" transfer-ownership="none">
22454+ <doc xml:space="preserve"
22455+ filename="gobject-2.0.c"
22456+ line="4512">maximum value for the property specified</doc>
22457+ <type name="guint" c:type="guint"/>
22458+ </parameter>
22459+ <parameter name="default_value" transfer-ownership="none">
22460+ <doc xml:space="preserve"
22461+ filename="gobject-2.0.c"
22462+ line="4513">default value for the property specified</doc>
22463+ <type name="guint" c:type="guint"/>
22464+ </parameter>
22465+ <parameter name="flags" transfer-ownership="none">
22466+ <doc xml:space="preserve"
22467+ filename="gobject-2.0.c"
22468+ line="4514">flags for the property specified</doc>
22469+ <type name="ParamFlags" c:type="GParamFlags"/>
22470+ </parameter>
22471+ </parameters>
22472+ </function>
22473+ <function name="param_spec_uint64" c:identifier="g_param_spec_uint64">
22474+ <doc xml:space="preserve"
22475+ filename="gobject-2.0.c"
22476+ line="4524">Creates a new #GParamSpecUInt64 instance specifying a %G_TYPE_UINT64
22477+property.
22478+
22479+See g_param_spec_internal() for details on property names.</doc>
22480+ <source-position filename="gparamspecs.h" line="1050"/>
22481+ <return-value transfer-ownership="full">
22482+ <doc xml:space="preserve"
22483+ filename="gobject-2.0.c"
22484+ line="4539">a newly created parameter specification</doc>
22485+ <type name="ParamSpec" c:type="GParamSpec*"/>
22486+ </return-value>
22487+ <parameters>
22488+ <parameter name="name" transfer-ownership="none">
22489+ <doc xml:space="preserve"
22490+ filename="gobject-2.0.c"
22491+ line="4526">canonical name of the property specified</doc>
22492+ <type name="utf8" c:type="const gchar*"/>
22493+ </parameter>
22494+ <parameter name="nick" transfer-ownership="none">
22495+ <doc xml:space="preserve"
22496+ filename="gobject-2.0.c"
22497+ line="4527">nick name for the property specified</doc>
22498+ <type name="utf8" c:type="const gchar*"/>
22499+ </parameter>
22500+ <parameter name="blurb" transfer-ownership="none">
22501+ <doc xml:space="preserve"
22502+ filename="gobject-2.0.c"
22503+ line="4528">description of the property specified</doc>
22504+ <type name="utf8" c:type="const gchar*"/>
22505+ </parameter>
22506+ <parameter name="minimum" transfer-ownership="none">
22507+ <doc xml:space="preserve"
22508+ filename="gobject-2.0.c"
22509+ line="4529">minimum value for the property specified</doc>
22510+ <type name="guint64" c:type="guint64"/>
22511+ </parameter>
22512+ <parameter name="maximum" transfer-ownership="none">
22513+ <doc xml:space="preserve"
22514+ filename="gobject-2.0.c"
22515+ line="4530">maximum value for the property specified</doc>
22516+ <type name="guint64" c:type="guint64"/>
22517+ </parameter>
22518+ <parameter name="default_value" transfer-ownership="none">
22519+ <doc xml:space="preserve"
22520+ filename="gobject-2.0.c"
22521+ line="4531">default value for the property specified</doc>
22522+ <type name="guint64" c:type="guint64"/>
22523+ </parameter>
22524+ <parameter name="flags" transfer-ownership="none">
22525+ <doc xml:space="preserve"
22526+ filename="gobject-2.0.c"
22527+ line="4532">flags for the property specified</doc>
22528+ <type name="ParamFlags" c:type="GParamFlags"/>
22529+ </parameter>
22530+ </parameters>
22531+ </function>
22532+ <function name="param_spec_ulong" c:identifier="g_param_spec_ulong">
22533+ <doc xml:space="preserve"
22534+ filename="gobject-2.0.c"
22535+ line="4543">Creates a new #GParamSpecULong instance specifying a %G_TYPE_ULONG
22536+property.
22537+
22538+See g_param_spec_internal() for details on property names.</doc>
22539+ <source-position filename="gparamspecs.h" line="1034"/>
22540+ <return-value transfer-ownership="full">
22541+ <doc xml:space="preserve"
22542+ filename="gobject-2.0.c"
22543+ line="4558">a newly created parameter specification</doc>
22544+ <type name="ParamSpec" c:type="GParamSpec*"/>
22545+ </return-value>
22546+ <parameters>
22547+ <parameter name="name" transfer-ownership="none">
22548+ <doc xml:space="preserve"
22549+ filename="gobject-2.0.c"
22550+ line="4545">canonical name of the property specified</doc>
22551+ <type name="utf8" c:type="const gchar*"/>
22552+ </parameter>
22553+ <parameter name="nick" transfer-ownership="none">
22554+ <doc xml:space="preserve"
22555+ filename="gobject-2.0.c"
22556+ line="4546">nick name for the property specified</doc>
22557+ <type name="utf8" c:type="const gchar*"/>
22558+ </parameter>
22559+ <parameter name="blurb" transfer-ownership="none">
22560+ <doc xml:space="preserve"
22561+ filename="gobject-2.0.c"
22562+ line="4547">description of the property specified</doc>
22563+ <type name="utf8" c:type="const gchar*"/>
22564+ </parameter>
22565+ <parameter name="minimum" transfer-ownership="none">
22566+ <doc xml:space="preserve"
22567+ filename="gobject-2.0.c"
22568+ line="4548">minimum value for the property specified</doc>
22569+ <type name="gulong" c:type="gulong"/>
22570+ </parameter>
22571+ <parameter name="maximum" transfer-ownership="none">
22572+ <doc xml:space="preserve"
22573+ filename="gobject-2.0.c"
22574+ line="4549">maximum value for the property specified</doc>
22575+ <type name="gulong" c:type="gulong"/>
22576+ </parameter>
22577+ <parameter name="default_value" transfer-ownership="none">
22578+ <doc xml:space="preserve"
22579+ filename="gobject-2.0.c"
22580+ line="4550">default value for the property specified</doc>
22581+ <type name="gulong" c:type="gulong"/>
22582+ </parameter>
22583+ <parameter name="flags" transfer-ownership="none">
22584+ <doc xml:space="preserve"
22585+ filename="gobject-2.0.c"
22586+ line="4551">flags for the property specified</doc>
22587+ <type name="ParamFlags" c:type="GParamFlags"/>
22588+ </parameter>
22589+ </parameters>
22590+ </function>
22591+ <function name="param_spec_unichar" c:identifier="g_param_spec_unichar">
22592+ <doc xml:space="preserve"
22593+ filename="gobject-2.0.c"
22594+ line="4562">Creates a new #GParamSpecUnichar instance specifying a %G_TYPE_UINT
22595+property. #GValue structures for this property can be accessed with
22596+g_value_set_uint() and g_value_get_uint().
22597+
22598+See g_param_spec_internal() for details on property names.</doc>
22599+ <source-position filename="gparamspecs.h" line="1058"/>
22600+ <return-value transfer-ownership="full">
22601+ <doc xml:space="preserve"
22602+ filename="gobject-2.0.c"
22603+ line="4576">a newly created parameter specification</doc>
22604+ <type name="ParamSpec" c:type="GParamSpec*"/>
22605+ </return-value>
22606+ <parameters>
22607+ <parameter name="name" transfer-ownership="none">
22608+ <doc xml:space="preserve"
22609+ filename="gobject-2.0.c"
22610+ line="4564">canonical name of the property specified</doc>
22611+ <type name="utf8" c:type="const gchar*"/>
22612+ </parameter>
22613+ <parameter name="nick" transfer-ownership="none">
22614+ <doc xml:space="preserve"
22615+ filename="gobject-2.0.c"
22616+ line="4565">nick name for the property specified</doc>
22617+ <type name="utf8" c:type="const gchar*"/>
22618+ </parameter>
22619+ <parameter name="blurb" transfer-ownership="none">
22620+ <doc xml:space="preserve"
22621+ filename="gobject-2.0.c"
22622+ line="4566">description of the property specified</doc>
22623+ <type name="utf8" c:type="const gchar*"/>
22624+ </parameter>
22625+ <parameter name="default_value" transfer-ownership="none">
22626+ <doc xml:space="preserve"
22627+ filename="gobject-2.0.c"
22628+ line="4567">default value for the property specified</doc>
22629+ <type name="gunichar" c:type="gunichar"/>
22630+ </parameter>
22631+ <parameter name="flags" transfer-ownership="none">
22632+ <doc xml:space="preserve"
22633+ filename="gobject-2.0.c"
22634+ line="4568">flags for the property specified</doc>
22635+ <type name="ParamFlags" c:type="GParamFlags"/>
22636+ </parameter>
22637+ </parameters>
22638+ </function>
22639+ <function name="param_spec_value_array"
22640+ c:identifier="g_param_spec_value_array"
22641+ introspectable="0">
22642+ <doc xml:space="preserve"
22643+ filename="gobject-2.0.c"
22644+ line="4588">Creates a new #GParamSpecValueArray instance specifying a
22645+%G_TYPE_VALUE_ARRAY property. %G_TYPE_VALUE_ARRAY is a
22646+%G_TYPE_BOXED type, as such, #GValue structures for this property
22647+can be accessed with g_value_set_boxed() and g_value_get_boxed().
22648+
22649+See g_param_spec_internal() for details on property names.</doc>
22650+ <source-position filename="gparamspecs.h" line="1117"/>
22651+ <return-value>
22652+ <doc xml:space="preserve"
22653+ filename="gobject-2.0.c"
22654+ line="4604">a newly created parameter specification</doc>
22655+ <type name="ParamSpec" c:type="GParamSpec*"/>
22656+ </return-value>
22657+ <parameters>
22658+ <parameter name="name" transfer-ownership="none">
22659+ <doc xml:space="preserve"
22660+ filename="gobject-2.0.c"
22661+ line="4590">canonical name of the property specified</doc>
22662+ <type name="utf8" c:type="const gchar*"/>
22663+ </parameter>
22664+ <parameter name="nick" transfer-ownership="none">
22665+ <doc xml:space="preserve"
22666+ filename="gobject-2.0.c"
22667+ line="4591">nick name for the property specified</doc>
22668+ <type name="utf8" c:type="const gchar*"/>
22669+ </parameter>
22670+ <parameter name="blurb" transfer-ownership="none">
22671+ <doc xml:space="preserve"
22672+ filename="gobject-2.0.c"
22673+ line="4592">description of the property specified</doc>
22674+ <type name="utf8" c:type="const gchar*"/>
22675+ </parameter>
22676+ <parameter name="element_spec" transfer-ownership="none">
22677+ <doc xml:space="preserve"
22678+ filename="gobject-2.0.c"
22679+ line="4593">a #GParamSpec describing the elements contained in
22680+ arrays of this property, may be %NULL</doc>
22681+ <type name="ParamSpec" c:type="GParamSpec*"/>
22682+ </parameter>
22683+ <parameter name="flags" transfer-ownership="none">
22684+ <doc xml:space="preserve"
22685+ filename="gobject-2.0.c"
22686+ line="4595">flags for the property specified</doc>
22687+ <type name="ParamFlags" c:type="GParamFlags"/>
22688+ </parameter>
22689+ </parameters>
22690+ </function>
22691+ <function name="param_spec_variant"
22692+ c:identifier="g_param_spec_variant"
22693+ version="2.26">
22694+ <doc xml:space="preserve"
22695+ filename="gobject-2.0.c"
22696+ line="4608">Creates a new #GParamSpecVariant instance specifying a #GVariant
22697+property.
22698+
22699+If @default_value is floating, it is consumed.
22700+
22701+See g_param_spec_internal() for details on property names.</doc>
22702+ <source-position filename="gparamspecs.h" line="1138"/>
22703+ <return-value transfer-ownership="full">
22704+ <doc xml:space="preserve"
22705+ filename="gobject-2.0.c"
22706+ line="4625">the newly created #GParamSpec</doc>
22707+ <type name="ParamSpec" c:type="GParamSpec*"/>
22708+ </return-value>
22709+ <parameters>
22710+ <parameter name="name" transfer-ownership="none">
22711+ <doc xml:space="preserve"
22712+ filename="gobject-2.0.c"
22713+ line="4610">canonical name of the property specified</doc>
22714+ <type name="utf8" c:type="const gchar*"/>
22715+ </parameter>
22716+ <parameter name="nick" transfer-ownership="none">
22717+ <doc xml:space="preserve"
22718+ filename="gobject-2.0.c"
22719+ line="4611">nick name for the property specified</doc>
22720+ <type name="utf8" c:type="const gchar*"/>
22721+ </parameter>
22722+ <parameter name="blurb" transfer-ownership="none">
22723+ <doc xml:space="preserve"
22724+ filename="gobject-2.0.c"
22725+ line="4612">description of the property specified</doc>
22726+ <type name="utf8" c:type="const gchar*"/>
22727+ </parameter>
22728+ <parameter name="type" transfer-ownership="none">
22729+ <doc xml:space="preserve"
22730+ filename="gobject-2.0.c"
22731+ line="4613">a #GVariantType</doc>
22732+ <type name="GLib.VariantType" c:type="const GVariantType*"/>
22733+ </parameter>
22734+ <parameter name="default_value"
22735+ transfer-ownership="full"
22736+ nullable="1"
22737+ allow-none="1">
22738+ <doc xml:space="preserve"
22739+ filename="gobject-2.0.c"
22740+ line="4614">a #GVariant of type @type to
22741+ use as the default value, or %NULL</doc>
22742+ <type name="GLib.Variant" c:type="GVariant*"/>
22743+ </parameter>
22744+ <parameter name="flags" transfer-ownership="none">
22745+ <doc xml:space="preserve"
22746+ filename="gobject-2.0.c"
22747+ line="4616">flags for the property specified</doc>
22748+ <type name="ParamFlags" c:type="GParamFlags"/>
22749+ </parameter>
22750+ </parameters>
22751+ </function>
22752+ <function name="param_type_register_static"
22753+ c:identifier="g_param_type_register_static">
22754+ <doc xml:space="preserve"
22755+ filename="gobject-2.0.c"
22756+ line="4630">Registers @name as the name of a new static type derived
22757+from %G_TYPE_PARAM.
22758+
22759+The type system uses the information contained in the #GParamSpecTypeInfo
22760+structure pointed to by @info to manage the #GParamSpec type and its
22761+instances.</doc>
22762+ <source-position filename="gparam.h" line="398"/>
22763+ <return-value transfer-ownership="none">
22764+ <doc xml:space="preserve"
22765+ filename="gobject-2.0.c"
22766+ line="4642">The new type identifier.</doc>
22767+ <type name="GType" c:type="GType"/>
22768+ </return-value>
22769+ <parameters>
22770+ <parameter name="name" transfer-ownership="none">
22771+ <doc xml:space="preserve"
22772+ filename="gobject-2.0.c"
22773+ line="4632">0-terminated string used as the name of the new #GParamSpec type.</doc>
22774+ <type name="utf8" c:type="const gchar*"/>
22775+ </parameter>
22776+ <parameter name="pspec_info" transfer-ownership="none">
22777+ <doc xml:space="preserve"
22778+ filename="gobject-2.0.c"
22779+ line="4633">The #GParamSpecTypeInfo for this #GParamSpec type.</doc>
22780+ <type name="ParamSpecTypeInfo" c:type="const GParamSpecTypeInfo*"/>
22781+ </parameter>
22782+ </parameters>
22783+ </function>
22784+ <function name="param_value_convert" c:identifier="g_param_value_convert">
22785+ <doc xml:space="preserve"
22786+ filename="gobject-2.0.c"
22787+ line="4646">Transforms @src_value into @dest_value if possible, and then
22788+validates @dest_value, in order for it to conform to @pspec. If
22789+@strict_validation is %TRUE this function will only succeed if the
22790+transformed @dest_value complied to @pspec without modifications.
22791+
22792+See also g_value_type_transformable(), g_value_transform() and
22793+g_param_value_validate().</doc>
22794+ <source-position filename="gparam.h" line="317"/>
22795+ <return-value transfer-ownership="none">
22796+ <doc xml:space="preserve"
22797+ filename="gobject-2.0.c"
22798+ line="4662">%TRUE if transformation and validation were successful,
22799+ %FALSE otherwise and @dest_value is left untouched.</doc>
22800+ <type name="gboolean" c:type="gboolean"/>
22801+ </return-value>
22802+ <parameters>
22803+ <parameter name="pspec" transfer-ownership="none">
22804+ <doc xml:space="preserve"
22805+ filename="gobject-2.0.c"
22806+ line="4648">a valid #GParamSpec</doc>
22807+ <type name="ParamSpec" c:type="GParamSpec*"/>
22808+ </parameter>
22809+ <parameter name="src_value" transfer-ownership="none">
22810+ <doc xml:space="preserve"
22811+ filename="gobject-2.0.c"
22812+ line="4649">source #GValue</doc>
22813+ <type name="Value" c:type="const GValue*"/>
22814+ </parameter>
22815+ <parameter name="dest_value" transfer-ownership="none">
22816+ <doc xml:space="preserve"
22817+ filename="gobject-2.0.c"
22818+ line="4650">destination #GValue of correct type for @pspec</doc>
22819+ <type name="Value" c:type="GValue*"/>
22820+ </parameter>
22821+ <parameter name="strict_validation" transfer-ownership="none">
22822+ <doc xml:space="preserve"
22823+ filename="gobject-2.0.c"
22824+ line="4651">%TRUE requires @dest_value to conform to @pspec
22825+without modifications</doc>
22826+ <type name="gboolean" c:type="gboolean"/>
22827+ </parameter>
22828+ </parameters>
22829+ </function>
22830+ <function name="param_value_defaults"
22831+ c:identifier="g_param_value_defaults">
22832+ <doc xml:space="preserve"
22833+ filename="gobject-2.0.c"
22834+ line="4667">Checks whether @value contains the default value as specified in @pspec.</doc>
22835+ <source-position filename="gparam.h" line="311"/>
22836+ <return-value transfer-ownership="none">
22837+ <doc xml:space="preserve"
22838+ filename="gobject-2.0.c"
22839+ line="4674">whether @value contains the canonical default for this @pspec</doc>
22840+ <type name="gboolean" c:type="gboolean"/>
22841+ </return-value>
22842+ <parameters>
22843+ <parameter name="pspec" transfer-ownership="none">
22844+ <doc xml:space="preserve"
22845+ filename="gobject-2.0.c"
22846+ line="4669">a valid #GParamSpec</doc>
22847+ <type name="ParamSpec" c:type="GParamSpec*"/>
22848+ </parameter>
22849+ <parameter name="value" transfer-ownership="none">
22850+ <doc xml:space="preserve"
22851+ filename="gobject-2.0.c"
22852+ line="4670">a #GValue of correct type for @pspec</doc>
22853+ <type name="Value" c:type="const GValue*"/>
22854+ </parameter>
22855+ </parameters>
22856+ </function>
22857+ <function name="param_value_set_default"
22858+ c:identifier="g_param_value_set_default">
22859+ <doc xml:space="preserve"
22860+ filename="gobject-2.0.c"
22861+ line="4678">Sets @value to its default value as specified in @pspec.</doc>
22862+ <source-position filename="gparam.h" line="308"/>
22863+ <return-value transfer-ownership="none">
22864+ <type name="none" c:type="void"/>
22865+ </return-value>
22866+ <parameters>
22867+ <parameter name="pspec" transfer-ownership="none">
22868+ <doc xml:space="preserve"
22869+ filename="gobject-2.0.c"
22870+ line="4680">a valid #GParamSpec</doc>
22871+ <type name="ParamSpec" c:type="GParamSpec*"/>
22872+ </parameter>
22873+ <parameter name="value" transfer-ownership="none">
22874+ <doc xml:space="preserve"
22875+ filename="gobject-2.0.c"
22876+ line="4681">a #GValue of correct type for @pspec; since 2.64, you
22877+ can also pass an empty #GValue, initialized with %G_VALUE_INIT</doc>
22878+ <type name="Value" c:type="GValue*"/>
22879+ </parameter>
22880+ </parameters>
22881+ </function>
22882+ <docsection name="param_value_types">
22883+ <doc xml:space="preserve"
22884+ filename="gobject-2.0.c"
22885+ line="819">#GValue provides an abstract container structure which can be
22886+copied, transformed and compared while holding a value of any
22887+(derived) type, which is registered as a #GType with a
22888+#GTypeValueTable in its #GTypeInfo structure. Parameter
22889+specifications for most value types can be created as #GParamSpec
22890+derived instances, to implement e.g. #GObject properties which
22891+operate on #GValue containers.
22892+
22893+Parameter names need to start with a letter (a-z or A-Z). Subsequent
22894+characters can be letters, numbers or a '-'.
22895+All other characters are replaced by a '-' during construction.
22896+
22897+See also #GValue for more information.</doc>
22898+ </docsection>
22899+ <function name="param_value_validate"
22900+ c:identifier="g_param_value_validate">
22901+ <doc xml:space="preserve"
22902+ filename="gobject-2.0.c"
22903+ line="4688">Ensures that the contents of @value comply with the specifications
22904+set out by @pspec. For example, a #GParamSpecInt might require
22905+that integers stored in @value may not be smaller than -42 and not be
22906+greater than +42. If @value contains an integer outside of this range,
22907+it is modified accordingly, so the resulting value will fit into the
22908+range -42 .. +42.</doc>
22909+ <source-position filename="gparam.h" line="314"/>
22910+ <return-value transfer-ownership="none">
22911+ <doc xml:space="preserve"
22912+ filename="gobject-2.0.c"
22913+ line="4700">whether modifying @value was necessary to ensure validity</doc>
22914+ <type name="gboolean" c:type="gboolean"/>
22915+ </return-value>
22916+ <parameters>
22917+ <parameter name="pspec" transfer-ownership="none">
22918+ <doc xml:space="preserve"
22919+ filename="gobject-2.0.c"
22920+ line="4690">a valid #GParamSpec</doc>
22921+ <type name="ParamSpec" c:type="GParamSpec*"/>
22922+ </parameter>
22923+ <parameter name="value" transfer-ownership="none">
22924+ <doc xml:space="preserve"
22925+ filename="gobject-2.0.c"
22926+ line="4691">a #GValue of correct type for @pspec</doc>
22927+ <type name="Value" c:type="GValue*"/>
22928+ </parameter>
22929+ </parameters>
22930+ </function>
22931+ <function name="param_values_cmp" c:identifier="g_param_values_cmp">
22932+ <doc xml:space="preserve"
22933+ filename="gobject-2.0.c"
22934+ line="4704">Compares @value1 with @value2 according to @pspec, and return -1, 0 or +1,
22935+if @value1 is found to be less than, equal to or greater than @value2,
22936+respectively.</doc>
22937+ <source-position filename="gparam.h" line="322"/>
22938+ <return-value transfer-ownership="none">
22939+ <doc xml:space="preserve"
22940+ filename="gobject-2.0.c"
22941+ line="4714">-1, 0 or +1, for a less than, equal to or greater than result</doc>
22942+ <type name="gint" c:type="gint"/>
22943+ </return-value>
22944+ <parameters>
22945+ <parameter name="pspec" transfer-ownership="none">
22946+ <doc xml:space="preserve"
22947+ filename="gobject-2.0.c"
22948+ line="4706">a valid #GParamSpec</doc>
22949+ <type name="ParamSpec" c:type="GParamSpec*"/>
22950+ </parameter>
22951+ <parameter name="value1" transfer-ownership="none">
22952+ <doc xml:space="preserve"
22953+ filename="gobject-2.0.c"
22954+ line="4707">a #GValue of correct type for @pspec</doc>
22955+ <type name="Value" c:type="const GValue*"/>
22956+ </parameter>
22957+ <parameter name="value2" transfer-ownership="none">
22958+ <doc xml:space="preserve"
22959+ filename="gobject-2.0.c"
22960+ line="4708">a #GValue of correct type for @pspec</doc>
22961+ <type name="Value" c:type="const GValue*"/>
22962+ </parameter>
22963+ </parameters>
22964+ </function>
22965+ <function name="pointer_type_register_static"
22966+ c:identifier="g_pointer_type_register_static">
22967+ <doc xml:space="preserve"
22968+ filename="gobject-2.0.c"
22969+ line="4718">Creates a new %G_TYPE_POINTER derived type id for a new
22970+pointer type with name @name.</doc>
22971+ <source-position filename="gvaluetypes.h" line="290"/>
22972+ <return-value transfer-ownership="none">
22973+ <doc xml:space="preserve"
22974+ filename="gobject-2.0.c"
22975+ line="4725">a new %G_TYPE_POINTER derived type id for @name.</doc>
22976+ <type name="GType" c:type="GType"/>
22977+ </return-value>
22978+ <parameters>
22979+ <parameter name="name" transfer-ownership="none">
22980+ <doc xml:space="preserve"
22981+ filename="gobject-2.0.c"
22982+ line="4720">the name of the new pointer type.</doc>
22983+ <type name="utf8" c:type="const gchar*"/>
22984+ </parameter>
22985+ </parameters>
22986+ </function>
22987+ <function-macro name="set_object"
22988+ c:identifier="g_set_object"
22989+ version="2.44"
22990+ introspectable="0">
22991+ <doc xml:space="preserve"
22992+ filename="gobject.h"
22993+ line="705">Updates a #GObject pointer to refer to @new_object.
22994+
22995+It increments the reference count of @new_object (if non-%NULL), decrements
22996+the reference count of the current value of @object_ptr (if non-%NULL), and
22997+assigns @new_object to @object_ptr. The assignment is not atomic.
22998+
22999+@object_ptr must not be %NULL, but can point to a %NULL value.
23000+
23001+A macro is also included that allows this function to be used without
23002+pointer casts. The function itself is static inline, so its address may vary
23003+between compilation units.
23004+
23005+One convenient usage of this function is in implementing property setters:
23006+|[
23007+ void
23008+ foo_set_bar (Foo *foo,
23009+ Bar *new_bar)
23010+ {
23011+ g_return_if_fail (IS_FOO (foo));
23012+ g_return_if_fail (new_bar == NULL || IS_BAR (new_bar));
23013+
23014+ if (g_set_object (&amp;foo-&gt;bar, new_bar))
23015+ g_object_notify (foo, "bar");
23016+ }
23017+]|</doc>
23018+ <source-position filename="gobject.h" line="770"/>
23019+ <parameters>
23020+ <parameter name="object_ptr">
23021+ <doc xml:space="preserve"
23022+ filename="gobject.h"
23023+ line="707">a pointer to a #GObject reference</doc>
23024+ </parameter>
23025+ <parameter name="new_object">
23026+ <doc xml:space="preserve"
23027+ filename="gobject.h"
23028+ line="708">a pointer to the new #GObject to
23029+ assign to @object_ptr, or %NULL to clear the pointer</doc>
23030+ </parameter>
23031+ </parameters>
23032+ </function-macro>
23033+ <function-macro name="set_weak_pointer"
23034+ c:identifier="g_set_weak_pointer"
23035+ version="2.56"
23036+ introspectable="0">
23037+ <doc xml:space="preserve"
23038+ filename="gobject.h"
23039+ line="859">Updates a pointer to weakly refer to @new_object.
23040+
23041+It assigns @new_object to @weak_pointer_location and ensures
23042+that @weak_pointer_location will automatically be set to %NULL
23043+if @new_object gets destroyed. The assignment is not atomic.
23044+The weak reference is not thread-safe, see g_object_add_weak_pointer()
23045+for details.
23046+
23047+The @weak_pointer_location argument must not be %NULL.
23048+
23049+A macro is also included that allows this function to be used without
23050+pointer casts. The function itself is static inline, so its address may vary
23051+between compilation units.
23052+
23053+One convenient usage of this function is in implementing property setters:
23054+|[
23055+ void
23056+ foo_set_bar (Foo *foo,
23057+ Bar *new_bar)
23058+ {
23059+ g_return_if_fail (IS_FOO (foo));
23060+ g_return_if_fail (new_bar == NULL || IS_BAR (new_bar));
23061+
23062+ if (g_set_weak_pointer (&amp;foo-&gt;bar, new_bar))
23063+ g_object_notify (foo, "bar");
23064+ }
23065+]|</doc>
23066+ <source-position filename="gobject.h" line="922"/>
23067+ <parameters>
23068+ <parameter name="weak_pointer_location">
23069+ <doc xml:space="preserve"
23070+ filename="gobject.h"
23071+ line="861">the memory address of a pointer</doc>
23072+ </parameter>
23073+ <parameter name="new_object">
23074+ <doc xml:space="preserve"
23075+ filename="gobject.h"
23076+ line="862">a pointer to the new #GObject to
23077+ assign to it, or %NULL to clear the pointer</doc>
23078+ </parameter>
23079+ </parameters>
23080+ </function-macro>
23081+ <function name="signal_accumulator_first_wins"
23082+ c:identifier="g_signal_accumulator_first_wins"
23083+ version="2.28">
23084+ <doc xml:space="preserve"
23085+ filename="gobject-2.0.c"
23086+ line="4729">A predefined #GSignalAccumulator for signals intended to be used as a
23087+hook for application code to provide a particular value. Usually
23088+only one such value is desired and multiple handlers for the same
23089+signal don't make much sense (except for the case of the default
23090+handler defined in the class structure, in which case you will
23091+usually want the signal connection to override the class handler).
23092+
23093+This accumulator will use the return value from the first signal
23094+handler that is run as the return value for the signal and not run
23095+any further handlers (ie: the first handler "wins").</doc>
23096+ <source-position filename="gsignal.h" line="628"/>
23097+ <return-value transfer-ownership="none">
23098+ <doc xml:space="preserve"
23099+ filename="gobject-2.0.c"
23100+ line="4747">standard #GSignalAccumulator result</doc>
23101+ <type name="gboolean" c:type="gboolean"/>
23102+ </return-value>
23103+ <parameters>
23104+ <parameter name="ihint" transfer-ownership="none">
23105+ <doc xml:space="preserve"
23106+ filename="gobject-2.0.c"
23107+ line="4731">standard #GSignalAccumulator parameter</doc>
23108+ <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
23109+ </parameter>
23110+ <parameter name="return_accu" transfer-ownership="none">
23111+ <doc xml:space="preserve"
23112+ filename="gobject-2.0.c"
23113+ line="4732">standard #GSignalAccumulator parameter</doc>
23114+ <type name="Value" c:type="GValue*"/>
23115+ </parameter>
23116+ <parameter name="handler_return" transfer-ownership="none">
23117+ <doc xml:space="preserve"
23118+ filename="gobject-2.0.c"
23119+ line="4733">standard #GSignalAccumulator parameter</doc>
23120+ <type name="Value" c:type="const GValue*"/>
23121+ </parameter>
23122+ <parameter name="dummy"
23123+ transfer-ownership="none"
23124+ nullable="1"
23125+ allow-none="1">
23126+ <doc xml:space="preserve"
23127+ filename="gobject-2.0.c"
23128+ line="4734">standard #GSignalAccumulator parameter</doc>
23129+ <type name="gpointer" c:type="gpointer"/>
23130+ </parameter>
23131+ </parameters>
23132+ </function>
23133+ <function name="signal_accumulator_true_handled"
23134+ c:identifier="g_signal_accumulator_true_handled"
23135+ version="2.4">
23136+ <doc xml:space="preserve"
23137+ filename="gobject-2.0.c"
23138+ line="4752">A predefined #GSignalAccumulator for signals that return a
23139+boolean values. The behavior that this accumulator gives is
23140+that a return of %TRUE stops the signal emission: no further
23141+callbacks will be invoked, while a return of %FALSE allows
23142+the emission to continue. The idea here is that a %TRUE return
23143+indicates that the callback handled the signal, and no further
23144+handling is needed.</doc>
23145+ <source-position filename="gsignal.h" line="622"/>
23146+ <return-value transfer-ownership="none">
23147+ <doc xml:space="preserve"
23148+ filename="gobject-2.0.c"
23149+ line="4768">standard #GSignalAccumulator result</doc>
23150+ <type name="gboolean" c:type="gboolean"/>
23151+ </return-value>
23152+ <parameters>
23153+ <parameter name="ihint" transfer-ownership="none">
23154+ <doc xml:space="preserve"
23155+ filename="gobject-2.0.c"
23156+ line="4754">standard #GSignalAccumulator parameter</doc>
23157+ <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
23158+ </parameter>
23159+ <parameter name="return_accu" transfer-ownership="none">
23160+ <doc xml:space="preserve"
23161+ filename="gobject-2.0.c"
23162+ line="4755">standard #GSignalAccumulator parameter</doc>
23163+ <type name="Value" c:type="GValue*"/>
23164+ </parameter>
23165+ <parameter name="handler_return" transfer-ownership="none">
23166+ <doc xml:space="preserve"
23167+ filename="gobject-2.0.c"
23168+ line="4756">standard #GSignalAccumulator parameter</doc>
23169+ <type name="Value" c:type="const GValue*"/>
23170+ </parameter>
23171+ <parameter name="dummy"
23172+ transfer-ownership="none"
23173+ nullable="1"
23174+ allow-none="1">
23175+ <doc xml:space="preserve"
23176+ filename="gobject-2.0.c"
23177+ line="4757">standard #GSignalAccumulator parameter</doc>
23178+ <type name="gpointer" c:type="gpointer"/>
23179+ </parameter>
23180+ </parameters>
23181+ </function>
23182+ <function name="signal_add_emission_hook"
23183+ c:identifier="g_signal_add_emission_hook">
23184+ <doc xml:space="preserve"
23185+ filename="gobject-2.0.c"
23186+ line="4772">Adds an emission hook for a signal, which will get called for any emission
23187+of that signal, independent of the instance. This is possible only
23188+for signals which don't have %G_SIGNAL_NO_HOOKS flag set.</doc>
23189+ <source-position filename="gsignal.h" line="376"/>
23190+ <return-value transfer-ownership="none">
23191+ <doc xml:space="preserve"
23192+ filename="gobject-2.0.c"
23193+ line="4784">the hook id, for later use with g_signal_remove_emission_hook().</doc>
23194+ <type name="gulong" c:type="gulong"/>
23195+ </return-value>
23196+ <parameters>
23197+ <parameter name="signal_id" transfer-ownership="none">
23198+ <doc xml:space="preserve"
23199+ filename="gobject-2.0.c"
23200+ line="4774">the signal identifier, as returned by g_signal_lookup().</doc>
23201+ <type name="guint" c:type="guint"/>
23202+ </parameter>
23203+ <parameter name="detail" transfer-ownership="none">
23204+ <doc xml:space="preserve"
23205+ filename="gobject-2.0.c"
23206+ line="4775">the detail on which to call the hook.</doc>
23207+ <type name="GLib.Quark" c:type="GQuark"/>
23208+ </parameter>
23209+ <parameter name="hook_func"
23210+ transfer-ownership="none"
23211+ scope="notified"
23212+ closure="3"
23213+ destroy="4">
23214+ <doc xml:space="preserve"
23215+ filename="gobject-2.0.c"
23216+ line="4776">a #GSignalEmissionHook function.</doc>
23217+ <type name="SignalEmissionHook" c:type="GSignalEmissionHook"/>
23218+ </parameter>
23219+ <parameter name="hook_data"
23220+ transfer-ownership="none"
23221+ nullable="1"
23222+ allow-none="1"
23223+ scope="notified"
23224+ closure="2">
23225+ <doc xml:space="preserve"
23226+ filename="gobject-2.0.c"
23227+ line="4777">user data for @hook_func.</doc>
23228+ <type name="gpointer" c:type="gpointer"/>
23229+ </parameter>
23230+ <parameter name="data_destroy"
23231+ transfer-ownership="none"
23232+ nullable="1"
23233+ allow-none="1"
23234+ scope="async"
23235+ destroy="3">
23236+ <doc xml:space="preserve"
23237+ filename="gobject-2.0.c"
23238+ line="4778">a #GDestroyNotify for @hook_data.</doc>
23239+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
23240+ </parameter>
23241+ </parameters>
23242+ </function>
23243+ <function name="signal_chain_from_overridden"
23244+ c:identifier="g_signal_chain_from_overridden">
23245+ <doc xml:space="preserve"
23246+ filename="gobject-2.0.c"
23247+ line="4788">Calls the original class closure of a signal. This function should only
23248+be called from an overridden class closure; see
23249+g_signal_override_class_closure() and
23250+g_signal_override_class_handler().</doc>
23251+ <source-position filename="gsignal.h" line="483"/>
23252+ <return-value transfer-ownership="none">
23253+ <type name="none" c:type="void"/>
23254+ </return-value>
23255+ <parameters>
23256+ <parameter name="instance_and_params" transfer-ownership="none">
23257+ <doc xml:space="preserve"
23258+ filename="gobject-2.0.c"
23259+ line="4790">the argument list of the signal emission.
23260+ The first element in the array is a #GValue for the instance the signal
23261+ is being emitted on. The rest are any arguments to be passed to the signal.</doc>
23262+ <array zero-terminated="0" c:type="const GValue*">
23263+ <type name="Value" c:type="GValue"/>
23264+ </array>
23265+ </parameter>
23266+ <parameter name="return_value" transfer-ownership="none">
23267+ <doc xml:space="preserve"
23268+ filename="gobject-2.0.c"
23269+ line="4793">Location for the return value.</doc>
23270+ <type name="Value" c:type="GValue*"/>
23271+ </parameter>
23272+ </parameters>
23273+ </function>
23274+ <function name="signal_chain_from_overridden_handler"
23275+ c:identifier="g_signal_chain_from_overridden_handler"
23276+ version="2.18"
23277+ introspectable="0">
23278+ <doc xml:space="preserve"
23279+ filename="gobject-2.0.c"
23280+ line="4802">Calls the original class closure of a signal. This function should
23281+only be called from an overridden class closure; see
23282+g_signal_override_class_closure() and
23283+g_signal_override_class_handler().</doc>
23284+ <source-position filename="gsignal.h" line="486"/>
23285+ <return-value transfer-ownership="none">
23286+ <type name="none" c:type="void"/>
23287+ </return-value>
23288+ <parameters>
23289+ <parameter name="instance" transfer-ownership="none">
23290+ <doc xml:space="preserve"
23291+ filename="gobject-2.0.c"
23292+ line="4804">the instance the signal is being
23293+ emitted on.</doc>
23294+ <type name="TypeInstance" c:type="gpointer"/>
23295+ </parameter>
23296+ <parameter name="..." transfer-ownership="none">
23297+ <doc xml:space="preserve"
23298+ filename="gobject-2.0.c"
23299+ line="4806">parameters to be passed to the parent class closure, followed by a
23300+ location for the return value. If the return type of the signal
23301+ is %G_TYPE_NONE, the return value location can be omitted.</doc>
23302+ <varargs/>
23303+ </parameter>
23304+ </parameters>
23305+ </function>
23306+ <function-macro name="signal_connect"
23307+ c:identifier="g_signal_connect"
23308+ introspectable="0">
23309+ <doc xml:space="preserve"
23310+ filename="gsignal.h"
23311+ line="491">Connects a #GCallback function to a signal for a particular object.
23312+
23313+The handler will be called synchronously, before the default handler of the signal. g_signal_emit() will not return control until all handlers are called.
23314+
23315+See [memory management of signal handlers][signal-memory-management] for
23316+details on how to handle the return value and memory management of @data.</doc>
23317+ <source-position filename="gsignal.h" line="507"/>
23318+ <parameters>
23319+ <parameter name="instance">
23320+ <doc xml:space="preserve"
23321+ filename="gsignal.h"
23322+ line="493">the instance to connect to.</doc>
23323+ </parameter>
23324+ <parameter name="detailed_signal">
23325+ <doc xml:space="preserve"
23326+ filename="gsignal.h"
23327+ line="494">a string of the form "signal-name::detail".</doc>
23328+ </parameter>
23329+ <parameter name="c_handler">
23330+ <doc xml:space="preserve"
23331+ filename="gsignal.h"
23332+ line="495">the #GCallback to connect.</doc>
23333+ </parameter>
23334+ <parameter name="data">
23335+ <doc xml:space="preserve"
23336+ filename="gsignal.h"
23337+ line="496">data to pass to @c_handler calls.</doc>
23338+ </parameter>
23339+ </parameters>
23340+ </function-macro>
23341+ <function-macro name="signal_connect_after"
23342+ c:identifier="g_signal_connect_after"
23343+ introspectable="0">
23344+ <doc xml:space="preserve"
23345+ filename="gsignal.h"
23346+ line="509">Connects a #GCallback function to a signal for a particular object.
23347+
23348+The handler will be called synchronously, after the default handler of the signal.</doc>
23349+ <source-position filename="gsignal.h" line="522"/>
23350+ <parameters>
23351+ <parameter name="instance">
23352+ <doc xml:space="preserve"
23353+ filename="gsignal.h"
23354+ line="511">the instance to connect to.</doc>
23355+ </parameter>
23356+ <parameter name="detailed_signal">
23357+ <doc xml:space="preserve"
23358+ filename="gsignal.h"
23359+ line="512">a string of the form "signal-name::detail".</doc>
23360+ </parameter>
23361+ <parameter name="c_handler">
23362+ <doc xml:space="preserve"
23363+ filename="gsignal.h"
23364+ line="513">the #GCallback to connect.</doc>
23365+ </parameter>
23366+ <parameter name="data">
23367+ <doc xml:space="preserve"
23368+ filename="gsignal.h"
23369+ line="514">data to pass to @c_handler calls.</doc>
23370+ </parameter>
23371+ </parameters>
23372+ </function-macro>
23373+ <function name="signal_connect_closure"
23374+ c:identifier="g_signal_connect_closure">
23375+ <doc xml:space="preserve"
23376+ filename="gobject-2.0.c"
23377+ line="4819">Connects a closure to a signal for a particular object.</doc>
23378+ <source-position filename="gsignal.h" line="399"/>
23379+ <return-value transfer-ownership="none">
23380+ <doc xml:space="preserve"
23381+ filename="gobject-2.0.c"
23382+ line="4829">the handler ID (always greater than 0 for successful connections)</doc>
23383+ <type name="gulong" c:type="gulong"/>
23384+ </return-value>
23385+ <parameters>
23386+ <parameter name="instance" transfer-ownership="none">
23387+ <doc xml:space="preserve"
23388+ filename="gobject-2.0.c"
23389+ line="4821">the instance to connect to.</doc>
23390+ <type name="Object" c:type="gpointer"/>
23391+ </parameter>
23392+ <parameter name="detailed_signal" transfer-ownership="none">
23393+ <doc xml:space="preserve"
23394+ filename="gobject-2.0.c"
23395+ line="4822">a string of the form "signal-name::detail".</doc>
23396+ <type name="utf8" c:type="const gchar*"/>
23397+ </parameter>
23398+ <parameter name="closure" transfer-ownership="none">
23399+ <doc xml:space="preserve"
23400+ filename="gobject-2.0.c"
23401+ line="4823">the closure to connect.</doc>
23402+ <type name="Closure" c:type="GClosure*"/>
23403+ </parameter>
23404+ <parameter name="after" transfer-ownership="none">
23405+ <doc xml:space="preserve"
23406+ filename="gobject-2.0.c"
23407+ line="4824">whether the handler should be called before or after the
23408+ default handler of the signal.</doc>
23409+ <type name="gboolean" c:type="gboolean"/>
23410+ </parameter>
23411+ </parameters>
23412+ </function>
23413+ <function name="signal_connect_closure_by_id"
23414+ c:identifier="g_signal_connect_closure_by_id">
23415+ <doc xml:space="preserve"
23416+ filename="gobject-2.0.c"
23417+ line="4833">Connects a closure to a signal for a particular object.</doc>
23418+ <source-position filename="gsignal.h" line="393"/>
23419+ <return-value transfer-ownership="none">
23420+ <doc xml:space="preserve"
23421+ filename="gobject-2.0.c"
23422+ line="4844">the handler ID (always greater than 0 for successful connections)</doc>
23423+ <type name="gulong" c:type="gulong"/>
23424+ </return-value>
23425+ <parameters>
23426+ <parameter name="instance" transfer-ownership="none">
23427+ <doc xml:space="preserve"
23428+ filename="gobject-2.0.c"
23429+ line="4835">the instance to connect to.</doc>
23430+ <type name="Object" c:type="gpointer"/>
23431+ </parameter>
23432+ <parameter name="signal_id" transfer-ownership="none">
23433+ <doc xml:space="preserve"
23434+ filename="gobject-2.0.c"
23435+ line="4836">the id of the signal.</doc>
23436+ <type name="guint" c:type="guint"/>
23437+ </parameter>
23438+ <parameter name="detail" transfer-ownership="none">
23439+ <doc xml:space="preserve"
23440+ filename="gobject-2.0.c"
23441+ line="4837">the detail.</doc>
23442+ <type name="GLib.Quark" c:type="GQuark"/>
23443+ </parameter>
23444+ <parameter name="closure" transfer-ownership="none">
23445+ <doc xml:space="preserve"
23446+ filename="gobject-2.0.c"
23447+ line="4838">the closure to connect.</doc>
23448+ <type name="Closure" c:type="GClosure*"/>
23449+ </parameter>
23450+ <parameter name="after" transfer-ownership="none">
23451+ <doc xml:space="preserve"
23452+ filename="gobject-2.0.c"
23453+ line="4839">whether the handler should be called before or after the
23454+ default handler of the signal.</doc>
23455+ <type name="gboolean" c:type="gboolean"/>
23456+ </parameter>
23457+ </parameters>
23458+ </function>
23459+ <function name="signal_connect_data"
23460+ c:identifier="g_signal_connect_data"
23461+ introspectable="0">
23462+ <doc xml:space="preserve"
23463+ filename="gobject-2.0.c"
23464+ line="4848">Connects a #GCallback function to a signal for a particular object. Similar
23465+to g_signal_connect(), but allows to provide a #GClosureNotify for the data
23466+which will be called when the signal handler is disconnected and no longer
23467+used. Specify @connect_flags if you need `..._after()` or
23468+`..._swapped()` variants of this function.</doc>
23469+ <source-position filename="gsignal.h" line="404"/>
23470+ <return-value transfer-ownership="none">
23471+ <doc xml:space="preserve"
23472+ filename="gobject-2.0.c"
23473+ line="4863">the handler ID (always greater than 0 for successful connections)</doc>
23474+ <type name="gulong" c:type="gulong"/>
23475+ </return-value>
23476+ <parameters>
23477+ <parameter name="instance" transfer-ownership="none">
23478+ <doc xml:space="preserve"
23479+ filename="gobject-2.0.c"
23480+ line="4850">the instance to connect to.</doc>
23481+ <type name="Object" c:type="gpointer"/>
23482+ </parameter>
23483+ <parameter name="detailed_signal" transfer-ownership="none">
23484+ <doc xml:space="preserve"
23485+ filename="gobject-2.0.c"
23486+ line="4851">a string of the form "signal-name::detail".</doc>
23487+ <type name="utf8" c:type="const gchar*"/>
23488+ </parameter>
23489+ <parameter name="c_handler" transfer-ownership="none" closure="3">
23490+ <doc xml:space="preserve"
23491+ filename="gobject-2.0.c"
23492+ line="4852">the #GCallback to connect.</doc>
23493+ <type name="Callback" c:type="GCallback"/>
23494+ </parameter>
23495+ <parameter name="data"
23496+ transfer-ownership="none"
23497+ nullable="1"
23498+ allow-none="1"
23499+ scope="notified"
23500+ closure="2">
23501+ <doc xml:space="preserve"
23502+ filename="gobject-2.0.c"
23503+ line="4853">data to pass to @c_handler calls.</doc>
23504+ <type name="gpointer" c:type="gpointer"/>
23505+ </parameter>
23506+ <parameter name="destroy_data"
23507+ transfer-ownership="none"
23508+ nullable="1"
23509+ allow-none="1"
23510+ scope="notified"
23511+ destroy="3">
23512+ <doc xml:space="preserve"
23513+ filename="gobject-2.0.c"
23514+ line="4854">a #GClosureNotify for @data.</doc>
23515+ <type name="ClosureNotify" c:type="GClosureNotify"/>
23516+ </parameter>
23517+ <parameter name="connect_flags" transfer-ownership="none">
23518+ <doc xml:space="preserve"
23519+ filename="gobject-2.0.c"
23520+ line="4855">a combination of #GConnectFlags.</doc>
23521+ <type name="ConnectFlags" c:type="GConnectFlags"/>
23522+ </parameter>
23523+ </parameters>
23524+ </function>
23525+ <function name="signal_connect_object"
23526+ c:identifier="g_signal_connect_object"
23527+ introspectable="0">
23528+ <doc xml:space="preserve"
23529+ filename="gobject-2.0.c"
23530+ line="4867">This is similar to g_signal_connect_data(), but uses a closure which
23531+ensures that the @gobject stays alive during the call to @c_handler
23532+by temporarily adding a reference count to @gobject.
23533+
23534+When the @gobject is destroyed the signal handler will be automatically
23535+disconnected. Note that this is not currently threadsafe (ie:
23536+emitting a signal while @gobject is being destroyed in another thread
23537+is not safe).</doc>
23538+ <source-position filename="gobject.h" line="651"/>
23539+ <return-value transfer-ownership="none">
23540+ <doc xml:space="preserve"
23541+ filename="gobject-2.0.c"
23542+ line="4885">the handler id.</doc>
23543+ <type name="gulong" c:type="gulong"/>
23544+ </return-value>
23545+ <parameters>
23546+ <parameter name="instance" transfer-ownership="none">
23547+ <doc xml:space="preserve"
23548+ filename="gobject-2.0.c"
23549+ line="4869">the instance to connect to.</doc>
23550+ <type name="TypeInstance" c:type="gpointer"/>
23551+ </parameter>
23552+ <parameter name="detailed_signal" transfer-ownership="none">
23553+ <doc xml:space="preserve"
23554+ filename="gobject-2.0.c"
23555+ line="4870">a string of the form "signal-name::detail".</doc>
23556+ <type name="utf8" c:type="const gchar*"/>
23557+ </parameter>
23558+ <parameter name="c_handler" transfer-ownership="none">
23559+ <doc xml:space="preserve"
23560+ filename="gobject-2.0.c"
23561+ line="4871">the #GCallback to connect.</doc>
23562+ <type name="Callback" c:type="GCallback"/>
23563+ </parameter>
23564+ <parameter name="gobject"
23565+ transfer-ownership="none"
23566+ nullable="1"
23567+ allow-none="1">
23568+ <doc xml:space="preserve"
23569+ filename="gobject-2.0.c"
23570+ line="4872">the object to pass as data
23571+ to @c_handler.</doc>
23572+ <type name="Object" c:type="gpointer"/>
23573+ </parameter>
23574+ <parameter name="connect_flags" transfer-ownership="none">
23575+ <doc xml:space="preserve"
23576+ filename="gobject-2.0.c"
23577+ line="4874">a combination of #GConnectFlags.</doc>
23578+ <type name="ConnectFlags" c:type="GConnectFlags"/>
23579+ </parameter>
23580+ </parameters>
23581+ </function>
23582+ <function-macro name="signal_connect_swapped"
23583+ c:identifier="g_signal_connect_swapped"
23584+ introspectable="0">
23585+ <doc xml:space="preserve"
23586+ filename="gsignal.h"
23587+ line="524">Connects a #GCallback function to a signal for a particular object.
23588+
23589+The instance on which the signal is emitted and @data will be swapped when
23590+calling the handler. This is useful when calling pre-existing functions to
23591+operate purely on the @data, rather than the @instance: swapping the
23592+parameters avoids the need to write a wrapper function.
23593+
23594+For example, this allows the shorter code:
23595+|[&lt;!-- language="C" --&gt;
23596+g_signal_connect_swapped (button, "clicked",
23597+ (GCallback) gtk_widget_hide, other_widget);
23598+]|
23599+
23600+Rather than the cumbersome:
23601+|[&lt;!-- language="C" --&gt;
23602+static void
23603+button_clicked_cb (GtkButton *button, GtkWidget *other_widget)
23604+{
23605+ gtk_widget_hide (other_widget);
23606+}
23607+
23608+...
23609+
23610+g_signal_connect (button, "clicked",
23611+ (GCallback) button_clicked_cb, other_widget);
23612+]|</doc>
23613+ <source-position filename="gsignal.h" line="560"/>
23614+ <parameters>
23615+ <parameter name="instance">
23616+ <doc xml:space="preserve"
23617+ filename="gsignal.h"
23618+ line="526">the instance to connect to.</doc>
23619+ </parameter>
23620+ <parameter name="detailed_signal">
23621+ <doc xml:space="preserve"
23622+ filename="gsignal.h"
23623+ line="527">a string of the form "signal-name::detail".</doc>
23624+ </parameter>
23625+ <parameter name="c_handler">
23626+ <doc xml:space="preserve"
23627+ filename="gsignal.h"
23628+ line="528">the #GCallback to connect.</doc>
23629+ </parameter>
23630+ <parameter name="data">
23631+ <doc xml:space="preserve"
23632+ filename="gsignal.h"
23633+ line="529">data to pass to @c_handler calls.</doc>
23634+ </parameter>
23635+ </parameters>
23636+ </function-macro>
23637+ <function name="signal_emit"
23638+ c:identifier="g_signal_emit"
23639+ introspectable="0">
23640+ <doc xml:space="preserve"
23641+ filename="gobject-2.0.c"
23642+ line="4889">Emits a signal. Signal emission is done synchronously.
23643+The method will only return control after all handlers are called or signal emission was stopped.
23644+
23645+Note that g_signal_emit() resets the return value to the default
23646+if no handlers are connected, in contrast to g_signal_emitv().</doc>
23647+ <source-position filename="gsignal.h" line="336"/>
23648+ <return-value transfer-ownership="none">
23649+ <type name="none" c:type="void"/>
23650+ </return-value>
23651+ <parameters>
23652+ <parameter name="instance" transfer-ownership="none">
23653+ <doc xml:space="preserve"
23654+ filename="gobject-2.0.c"
23655+ line="4891">the instance the signal is being emitted on.</doc>
23656+ <type name="Object" c:type="gpointer"/>
23657+ </parameter>
23658+ <parameter name="signal_id" transfer-ownership="none">
23659+ <doc xml:space="preserve"
23660+ filename="gobject-2.0.c"
23661+ line="4892">the signal id</doc>
23662+ <type name="guint" c:type="guint"/>
23663+ </parameter>
23664+ <parameter name="detail" transfer-ownership="none">
23665+ <doc xml:space="preserve"
23666+ filename="gobject-2.0.c"
23667+ line="4893">the detail</doc>
23668+ <type name="GLib.Quark" c:type="GQuark"/>
23669+ </parameter>
23670+ <parameter name="..." transfer-ownership="none">
23671+ <doc xml:space="preserve"
23672+ filename="gobject-2.0.c"
23673+ line="4894">parameters to be passed to the signal, followed by a
23674+ location for the return value. If the return type of the signal
23675+ is %G_TYPE_NONE, the return value location can be omitted.</doc>
23676+ <varargs/>
23677+ </parameter>
23678+ </parameters>
23679+ </function>
23680+ <function name="signal_emit_by_name"
23681+ c:identifier="g_signal_emit_by_name"
23682+ introspectable="0">
23683+ <doc xml:space="preserve"
23684+ filename="gobject-2.0.c"
23685+ line="4906">Emits a signal. Signal emission is done synchronously.
23686+The method will only return control after all handlers are called or signal emission was stopped.
23687+
23688+Note that g_signal_emit_by_name() resets the return value to the default
23689+if no handlers are connected, in contrast to g_signal_emitv().</doc>
23690+ <source-position filename="gsignal.h" line="341"/>
23691+ <return-value transfer-ownership="none">
23692+ <type name="none" c:type="void"/>
23693+ </return-value>
23694+ <parameters>
23695+ <parameter name="instance" transfer-ownership="none">
23696+ <doc xml:space="preserve"
23697+ filename="gobject-2.0.c"
23698+ line="4908">the instance the signal is being emitted on.</doc>
23699+ <type name="Object" c:type="gpointer"/>
23700+ </parameter>
23701+ <parameter name="detailed_signal" transfer-ownership="none">
23702+ <doc xml:space="preserve"
23703+ filename="gobject-2.0.c"
23704+ line="4909">a string of the form "signal-name::detail".</doc>
23705+ <type name="utf8" c:type="const gchar*"/>
23706+ </parameter>
23707+ <parameter name="..." transfer-ownership="none">
23708+ <doc xml:space="preserve"
23709+ filename="gobject-2.0.c"
23710+ line="4910">parameters to be passed to the signal, followed by a
23711+ location for the return value. If the return type of the signal
23712+ is %G_TYPE_NONE, the return value location can be omitted. The
23713+ number of parameters to pass to this function is defined when creating the signal.</doc>
23714+ <varargs/>
23715+ </parameter>
23716+ </parameters>
23717+ </function>
23718+ <function name="signal_emit_valist"
23719+ c:identifier="g_signal_emit_valist"
23720+ introspectable="0">
23721+ <doc xml:space="preserve"
23722+ filename="gobject-2.0.c"
23723+ line="4923">Emits a signal. Signal emission is done synchronously.
23724+The method will only return control after all handlers are called or signal emission was stopped.
23725+
23726+Note that g_signal_emit_valist() resets the return value to the default
23727+if no handlers are connected, in contrast to g_signal_emitv().</doc>
23728+ <source-position filename="gsignal.h" line="331"/>
23729+ <return-value transfer-ownership="none">
23730+ <type name="none" c:type="void"/>
23731+ </return-value>
23732+ <parameters>
23733+ <parameter name="instance" transfer-ownership="none">
23734+ <doc xml:space="preserve"
23735+ filename="gobject-2.0.c"
23736+ line="4925">the instance the signal is being
23737+ emitted on.</doc>
23738+ <type name="TypeInstance" c:type="gpointer"/>
23739+ </parameter>
23740+ <parameter name="signal_id" transfer-ownership="none">
23741+ <doc xml:space="preserve"
23742+ filename="gobject-2.0.c"
23743+ line="4927">the signal id</doc>
23744+ <type name="guint" c:type="guint"/>
23745+ </parameter>
23746+ <parameter name="detail" transfer-ownership="none">
23747+ <doc xml:space="preserve"
23748+ filename="gobject-2.0.c"
23749+ line="4928">the detail</doc>
23750+ <type name="GLib.Quark" c:type="GQuark"/>
23751+ </parameter>
23752+ <parameter name="var_args" transfer-ownership="none">
23753+ <doc xml:space="preserve"
23754+ filename="gobject-2.0.c"
23755+ line="4929">a list of parameters to be passed to the signal, followed by a
23756+ location for the return value. If the return type of the signal
23757+ is %G_TYPE_NONE, the return value location can be omitted.</doc>
23758+ <type name="va_list" c:type="va_list"/>
23759+ </parameter>
23760+ </parameters>
23761+ </function>
23762+ <function name="signal_emitv" c:identifier="g_signal_emitv">
23763+ <doc xml:space="preserve"
23764+ filename="gobject-2.0.c"
23765+ line="4941">Emits a signal. Signal emission is done synchronously.
23766+The method will only return control after all handlers are called or signal emission was stopped.
23767+
23768+Note that g_signal_emitv() doesn't change @return_value if no handlers are
23769+connected, in contrast to g_signal_emit() and g_signal_emit_valist().</doc>
23770+ <source-position filename="gsignal.h" line="326"/>
23771+ <return-value transfer-ownership="none">
23772+ <type name="none" c:type="void"/>
23773+ </return-value>
23774+ <parameters>
23775+ <parameter name="instance_and_params" transfer-ownership="none">
23776+ <doc xml:space="preserve"
23777+ filename="gobject-2.0.c"
23778+ line="4943">argument list for the signal emission.
23779+ The first element in the array is a #GValue for the instance the signal
23780+ is being emitted on. The rest are any arguments to be passed to the signal.</doc>
23781+ <array zero-terminated="0" c:type="const GValue*">
23782+ <type name="Value" c:type="GValue"/>
23783+ </array>
23784+ </parameter>
23785+ <parameter name="signal_id" transfer-ownership="none">
23786+ <doc xml:space="preserve"
23787+ filename="gobject-2.0.c"
23788+ line="4946">the signal id</doc>
23789+ <type name="guint" c:type="guint"/>
23790+ </parameter>
23791+ <parameter name="detail" transfer-ownership="none">
23792+ <doc xml:space="preserve"
23793+ filename="gobject-2.0.c"
23794+ line="4947">the detail</doc>
23795+ <type name="GLib.Quark" c:type="GQuark"/>
23796+ </parameter>
23797+ <parameter name="return_value"
23798+ direction="inout"
23799+ caller-allocates="0"
23800+ transfer-ownership="full"
23801+ optional="1">
23802+ <doc xml:space="preserve"
23803+ filename="gobject-2.0.c"
23804+ line="4948">Location to
23805+store the return value of the signal emission. This must be provided if the
23806+specified signal returns a value, but may be ignored otherwise.</doc>
23807+ <type name="Value" c:type="GValue*"/>
23808+ </parameter>
23809+ </parameters>
23810+ </function>
23811+ <function name="signal_get_invocation_hint"
23812+ c:identifier="g_signal_get_invocation_hint">
23813+ <doc xml:space="preserve"
23814+ filename="gobject-2.0.c"
23815+ line="4960">Returns the invocation hint of the innermost signal emission of instance.</doc>
23816+ <source-position filename="gsignal.h" line="364"/>
23817+ <return-value transfer-ownership="none" nullable="1">
23818+ <doc xml:space="preserve"
23819+ filename="gobject-2.0.c"
23820+ line="4966">the invocation hint of the innermost
23821+ signal emission, or %NULL if not found.</doc>
23822+ <type name="SignalInvocationHint" c:type="GSignalInvocationHint*"/>
23823+ </return-value>
23824+ <parameters>
23825+ <parameter name="instance" transfer-ownership="none">
23826+ <doc xml:space="preserve"
23827+ filename="gobject-2.0.c"
23828+ line="4962">the instance to query</doc>
23829+ <type name="Object" c:type="gpointer"/>
23830+ </parameter>
23831+ </parameters>
23832+ </function>
23833+ <function name="signal_handler_block"
23834+ c:identifier="g_signal_handler_block">
23835+ <doc xml:space="preserve"
23836+ filename="gobject-2.0.c"
23837+ line="5128">Blocks a handler of an instance so it will not be called during any
23838+signal emissions unless it is unblocked again. Thus "blocking" a
23839+signal handler means to temporarily deactivate it, a signal handler
23840+has to be unblocked exactly the same amount of times it has been
23841+blocked before to become active again.
23842+
23843+The @handler_id has to be a valid signal handler id, connected to a
23844+signal of @instance.</doc>
23845+ <source-position filename="gsignal.h" line="411"/>
23846+ <return-value transfer-ownership="none">
23847+ <type name="none" c:type="void"/>
23848+ </return-value>
23849+ <parameters>
23850+ <parameter name="instance" transfer-ownership="none">
23851+ <doc xml:space="preserve"
23852+ filename="gobject-2.0.c"
23853+ line="5130">The instance to block the signal handler of.</doc>
23854+ <type name="Object" c:type="gpointer"/>
23855+ </parameter>
23856+ <parameter name="handler_id" transfer-ownership="none">
23857+ <doc xml:space="preserve"
23858+ filename="gobject-2.0.c"
23859+ line="5131">Handler id of the handler to be blocked.</doc>
23860+ <type name="gulong" c:type="gulong"/>
23861+ </parameter>
23862+ </parameters>
23863+ </function>
23864+ <function name="signal_handler_disconnect"
23865+ c:identifier="g_signal_handler_disconnect">
23866+ <doc xml:space="preserve"
23867+ filename="gobject-2.0.c"
23868+ line="5144">Disconnects a handler from an instance so it will not be called during
23869+any future or currently ongoing emissions of the signal it has been
23870+connected to. The @handler_id becomes invalid and may be reused.
23871+
23872+The @handler_id has to be a valid signal handler id, connected to a
23873+signal of @instance.</doc>
23874+ <source-position filename="gsignal.h" line="417"/>
23875+ <return-value transfer-ownership="none">
23876+ <type name="none" c:type="void"/>
23877+ </return-value>
23878+ <parameters>
23879+ <parameter name="instance" transfer-ownership="none">
23880+ <doc xml:space="preserve"
23881+ filename="gobject-2.0.c"
23882+ line="5146">The instance to remove the signal handler from.</doc>
23883+ <type name="Object" c:type="gpointer"/>
23884+ </parameter>
23885+ <parameter name="handler_id" transfer-ownership="none">
23886+ <doc xml:space="preserve"
23887+ filename="gobject-2.0.c"
23888+ line="5147">Handler id of the handler to be disconnected.</doc>
23889+ <type name="gulong" c:type="gulong"/>
23890+ </parameter>
23891+ </parameters>
23892+ </function>
23893+ <function name="signal_handler_find" c:identifier="g_signal_handler_find">
23894+ <doc xml:space="preserve"
23895+ filename="gobject-2.0.c"
23896+ line="5158">Finds the first signal handler that matches certain selection criteria.
23897+The criteria mask is passed as an OR-ed combination of #GSignalMatchType
23898+flags, and the criteria values are passed as arguments.
23899+The match @mask has to be non-0 for successful matches.
23900+If no handler was found, 0 is returned.</doc>
23901+ <source-position filename="gsignal.h" line="423"/>
23902+ <return-value transfer-ownership="none">
23903+ <doc xml:space="preserve"
23904+ filename="gobject-2.0.c"
23905+ line="5175">A valid non-0 signal handler id for a successful match.</doc>
23906+ <type name="gulong" c:type="gulong"/>
23907+ </return-value>
23908+ <parameters>
23909+ <parameter name="instance" transfer-ownership="none">
23910+ <doc xml:space="preserve"
23911+ filename="gobject-2.0.c"
23912+ line="5160">The instance owning the signal handler to be found.</doc>
23913+ <type name="Object" c:type="gpointer"/>
23914+ </parameter>
23915+ <parameter name="mask" transfer-ownership="none">
23916+ <doc xml:space="preserve"
23917+ filename="gobject-2.0.c"
23918+ line="5161">Mask indicating which of @signal_id, @detail, @closure, @func
23919+ and/or @data the handler has to match.</doc>
23920+ <type name="SignalMatchType" c:type="GSignalMatchType"/>
23921+ </parameter>
23922+ <parameter name="signal_id" transfer-ownership="none">
23923+ <doc xml:space="preserve"
23924+ filename="gobject-2.0.c"
23925+ line="5163">Signal the handler has to be connected to.</doc>
23926+ <type name="guint" c:type="guint"/>
23927+ </parameter>
23928+ <parameter name="detail" transfer-ownership="none">
23929+ <doc xml:space="preserve"
23930+ filename="gobject-2.0.c"
23931+ line="5164">Signal detail the handler has to be connected to.</doc>
23932+ <type name="GLib.Quark" c:type="GQuark"/>
23933+ </parameter>
23934+ <parameter name="closure"
23935+ transfer-ownership="none"
23936+ nullable="1"
23937+ allow-none="1">
23938+ <doc xml:space="preserve"
23939+ filename="gobject-2.0.c"
23940+ line="5165">The closure the handler will invoke.</doc>
23941+ <type name="Closure" c:type="GClosure*"/>
23942+ </parameter>
23943+ <parameter name="func"
23944+ transfer-ownership="none"
23945+ nullable="1"
23946+ allow-none="1">
23947+ <doc xml:space="preserve"
23948+ filename="gobject-2.0.c"
23949+ line="5166">The C closure callback of the handler (useless for non-C closures).</doc>
23950+ <type name="gpointer" c:type="gpointer"/>
23951+ </parameter>
23952+ <parameter name="data"
23953+ transfer-ownership="none"
23954+ nullable="1"
23955+ allow-none="1"
23956+ closure="4">
23957+ <doc xml:space="preserve"
23958+ filename="gobject-2.0.c"
23959+ line="5167">The closure data of the handler's closure.</doc>
23960+ <type name="gpointer" c:type="gpointer"/>
23961+ </parameter>
23962+ </parameters>
23963+ </function>
23964+ <function name="signal_handler_is_connected"
23965+ c:identifier="g_signal_handler_is_connected">
23966+ <doc xml:space="preserve"
23967+ filename="gobject-2.0.c"
23968+ line="5179">Returns whether @handler_id is the ID of a handler connected to @instance.</doc>
23969+ <source-position filename="gsignal.h" line="420"/>
23970+ <return-value transfer-ownership="none">
23971+ <doc xml:space="preserve"
23972+ filename="gobject-2.0.c"
23973+ line="5186">whether @handler_id identifies a handler connected to @instance.</doc>
23974+ <type name="gboolean" c:type="gboolean"/>
23975+ </return-value>
23976+ <parameters>
23977+ <parameter name="instance" transfer-ownership="none">
23978+ <doc xml:space="preserve"
23979+ filename="gobject-2.0.c"
23980+ line="5181">The instance where a signal handler is sought.</doc>
23981+ <type name="Object" c:type="gpointer"/>
23982+ </parameter>
23983+ <parameter name="handler_id" transfer-ownership="none">
23984+ <doc xml:space="preserve"
23985+ filename="gobject-2.0.c"
23986+ line="5182">the handler ID.</doc>
23987+ <type name="gulong" c:type="gulong"/>
23988+ </parameter>
23989+ </parameters>
23990+ </function>
23991+ <function name="signal_handler_unblock"
23992+ c:identifier="g_signal_handler_unblock">
23993+ <doc xml:space="preserve"
23994+ filename="gobject-2.0.c"
23995+ line="5190">Undoes the effect of a previous g_signal_handler_block() call. A
23996+blocked handler is skipped during signal emissions and will not be
23997+invoked, unblocking it (for exactly the amount of times it has been
23998+blocked before) reverts its "blocked" state, so the handler will be
23999+recognized by the signal system and is called upon future or
24000+currently ongoing signal emissions (since the order in which
24001+handlers are called during signal emissions is deterministic,
24002+whether the unblocked handler in question is called as part of a
24003+currently ongoing emission depends on how far that emission has
24004+proceeded yet).
24005+
24006+The @handler_id has to be a valid id of a signal handler that is
24007+connected to a signal of @instance and is currently blocked.</doc>
24008+ <source-position filename="gsignal.h" line="414"/>
24009+ <return-value transfer-ownership="none">
24010+ <type name="none" c:type="void"/>
24011+ </return-value>
24012+ <parameters>
24013+ <parameter name="instance" transfer-ownership="none">
24014+ <doc xml:space="preserve"
24015+ filename="gobject-2.0.c"
24016+ line="5192">The instance to unblock the signal handler of.</doc>
24017+ <type name="Object" c:type="gpointer"/>
24018+ </parameter>
24019+ <parameter name="handler_id" transfer-ownership="none">
24020+ <doc xml:space="preserve"
24021+ filename="gobject-2.0.c"
24022+ line="5193">Handler id of the handler to be unblocked.</doc>
24023+ <type name="gulong" c:type="gulong"/>
24024+ </parameter>
24025+ </parameters>
24026+ </function>
24027+ <function-macro name="signal_handlers_block_by_func"
24028+ c:identifier="g_signal_handlers_block_by_func"
24029+ introspectable="0">
24030+ <doc xml:space="preserve"
24031+ filename="gsignal.h"
24032+ line="591">Blocks all handlers on an instance that match @func and @data.</doc>
24033+ <source-position filename="gsignal.h" line="601"/>
24034+ <parameters>
24035+ <parameter name="instance">
24036+ <doc xml:space="preserve"
24037+ filename="gsignal.h"
24038+ line="593">The instance to block handlers from.</doc>
24039+ </parameter>
24040+ <parameter name="func">
24041+ <doc xml:space="preserve"
24042+ filename="gsignal.h"
24043+ line="594">The C closure callback of the handlers (useless for non-C closures).</doc>
24044+ </parameter>
24045+ <parameter name="data">
24046+ <doc xml:space="preserve"
24047+ filename="gsignal.h"
24048+ line="595">The closure data of the handlers' closures.</doc>
24049+ </parameter>
24050+ </parameters>
24051+ </function-macro>
24052+ <function name="signal_handlers_block_matched"
24053+ c:identifier="g_signal_handlers_block_matched">
24054+ <doc xml:space="preserve"
24055+ filename="gobject-2.0.c"
24056+ line="5211">Blocks all handlers on an instance that match a certain selection criteria.
24057+The criteria mask is passed as an OR-ed combination of #GSignalMatchType
24058+flags, and the criteria values are passed as arguments.
24059+Passing at least one of the %G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC
24060+or %G_SIGNAL_MATCH_DATA match flags is required for successful matches.
24061+If no handlers were found, 0 is returned, the number of blocked handlers
24062+otherwise.</doc>
24063+ <source-position filename="gsignal.h" line="431"/>
24064+ <return-value transfer-ownership="none">
24065+ <doc xml:space="preserve"
24066+ filename="gobject-2.0.c"
24067+ line="5230">The number of handlers that matched.</doc>
24068+ <type name="guint" c:type="guint"/>
24069+ </return-value>
24070+ <parameters>
24071+ <parameter name="instance" transfer-ownership="none">
24072+ <doc xml:space="preserve"
24073+ filename="gobject-2.0.c"
24074+ line="5213">The instance to block handlers from.</doc>
24075+ <type name="Object" c:type="gpointer"/>
24076+ </parameter>
24077+ <parameter name="mask" transfer-ownership="none">
24078+ <doc xml:space="preserve"
24079+ filename="gobject-2.0.c"
24080+ line="5214">Mask indicating which of @signal_id, @detail, @closure, @func
24081+ and/or @data the handlers have to match.</doc>
24082+ <type name="SignalMatchType" c:type="GSignalMatchType"/>
24083+ </parameter>
24084+ <parameter name="signal_id" transfer-ownership="none">
24085+ <doc xml:space="preserve"
24086+ filename="gobject-2.0.c"
24087+ line="5216">Signal the handlers have to be connected to.</doc>
24088+ <type name="guint" c:type="guint"/>
24089+ </parameter>
24090+ <parameter name="detail" transfer-ownership="none">
24091+ <doc xml:space="preserve"
24092+ filename="gobject-2.0.c"
24093+ line="5217">Signal detail the handlers have to be connected to.</doc>
24094+ <type name="GLib.Quark" c:type="GQuark"/>
24095+ </parameter>
24096+ <parameter name="closure"
24097+ transfer-ownership="none"
24098+ nullable="1"
24099+ allow-none="1">
24100+ <doc xml:space="preserve"
24101+ filename="gobject-2.0.c"
24102+ line="5218">The closure the handlers will invoke.</doc>
24103+ <type name="Closure" c:type="GClosure*"/>
24104+ </parameter>
24105+ <parameter name="func"
24106+ transfer-ownership="none"
24107+ nullable="1"
24108+ allow-none="1">
24109+ <doc xml:space="preserve"
24110+ filename="gobject-2.0.c"
24111+ line="5219">The C closure callback of the handlers (useless for non-C closures).</doc>
24112+ <type name="gpointer" c:type="gpointer"/>
24113+ </parameter>
24114+ <parameter name="data"
24115+ transfer-ownership="none"
24116+ nullable="1"
24117+ allow-none="1"
24118+ closure="4">
24119+ <doc xml:space="preserve"
24120+ filename="gobject-2.0.c"
24121+ line="5220">The closure data of the handlers' closures.</doc>
24122+ <type name="gpointer" c:type="gpointer"/>
24123+ </parameter>
24124+ </parameters>
24125+ </function>
24126+ <function name="signal_handlers_destroy"
24127+ c:identifier="g_signal_handlers_destroy">
24128+ <doc xml:space="preserve"
24129+ filename="gobject-2.0.c"
24130+ line="5234">Destroy all signal handlers of a type instance. This function is
24131+an implementation detail of the #GObject dispose implementation,
24132+and should not be used outside of the type system.</doc>
24133+ <source-position filename="gsignal.h" line="635"/>
24134+ <return-value transfer-ownership="none">
24135+ <type name="none" c:type="void"/>
24136+ </return-value>
24137+ <parameters>
24138+ <parameter name="instance" transfer-ownership="none">
24139+ <doc xml:space="preserve"
24140+ filename="gobject-2.0.c"
24141+ line="5236">The instance whose signal handlers are destroyed</doc>
24142+ <type name="Object" c:type="gpointer"/>
24143+ </parameter>
24144+ </parameters>
24145+ </function>
24146+ <function-macro name="signal_handlers_disconnect_by_data"
24147+ c:identifier="g_signal_handlers_disconnect_by_data"
24148+ version="2.32"
24149+ introspectable="0">
24150+ <doc xml:space="preserve"
24151+ filename="gsignal.h"
24152+ line="577">Disconnects all handlers on an instance that match @data.</doc>
24153+ <source-position filename="gsignal.h" line="588"/>
24154+ <parameters>
24155+ <parameter name="instance">
24156+ <doc xml:space="preserve"
24157+ filename="gsignal.h"
24158+ line="579">The instance to remove handlers from</doc>
24159+ </parameter>
24160+ <parameter name="data">
24161+ <doc xml:space="preserve"
24162+ filename="gsignal.h"
24163+ line="580">the closure data of the handlers' closures</doc>
24164+ </parameter>
24165+ </parameters>
24166+ </function-macro>
24167+ <function-macro name="signal_handlers_disconnect_by_func"
24168+ c:identifier="g_signal_handlers_disconnect_by_func"
24169+ introspectable="0">
24170+ <doc xml:space="preserve"
24171+ filename="gsignal.h"
24172+ line="562">Disconnects all handlers on an instance that match @func and @data.</doc>
24173+ <source-position filename="gsignal.h" line="572"/>
24174+ <parameters>
24175+ <parameter name="instance">
24176+ <doc xml:space="preserve"
24177+ filename="gsignal.h"
24178+ line="564">The instance to remove handlers from.</doc>
24179+ </parameter>
24180+ <parameter name="func">
24181+ <doc xml:space="preserve"
24182+ filename="gsignal.h"
24183+ line="565">The C closure callback of the handlers (useless for non-C closures).</doc>
24184+ </parameter>
24185+ <parameter name="data">
24186+ <doc xml:space="preserve"
24187+ filename="gsignal.h"
24188+ line="566">The closure data of the handlers' closures.</doc>
24189+ </parameter>
24190+ </parameters>
24191+ </function-macro>
24192+ <function name="signal_handlers_disconnect_matched"
24193+ c:identifier="g_signal_handlers_disconnect_matched">
24194+ <doc xml:space="preserve"
24195+ filename="gobject-2.0.c"
24196+ line="5244">Disconnects all handlers on an instance that match a certain
24197+selection criteria. The criteria mask is passed as an OR-ed
24198+combination of #GSignalMatchType flags, and the criteria values are
24199+passed as arguments. Passing at least one of the
24200+%G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC or
24201+%G_SIGNAL_MATCH_DATA match flags is required for successful
24202+matches. If no handlers were found, 0 is returned, the number of
24203+disconnected handlers otherwise.</doc>
24204+ <source-position filename="gsignal.h" line="447"/>
24205+ <return-value transfer-ownership="none">
24206+ <doc xml:space="preserve"
24207+ filename="gobject-2.0.c"
24208+ line="5264">The number of handlers that matched.</doc>
24209+ <type name="guint" c:type="guint"/>
24210+ </return-value>
24211+ <parameters>
24212+ <parameter name="instance" transfer-ownership="none">
24213+ <doc xml:space="preserve"
24214+ filename="gobject-2.0.c"
24215+ line="5246">The instance to remove handlers from.</doc>
24216+ <type name="Object" c:type="gpointer"/>
24217+ </parameter>
24218+ <parameter name="mask" transfer-ownership="none">
24219+ <doc xml:space="preserve"
24220+ filename="gobject-2.0.c"
24221+ line="5247">Mask indicating which of @signal_id, @detail, @closure, @func
24222+ and/or @data the handlers have to match.</doc>
24223+ <type name="SignalMatchType" c:type="GSignalMatchType"/>
24224+ </parameter>
24225+ <parameter name="signal_id" transfer-ownership="none">
24226+ <doc xml:space="preserve"
24227+ filename="gobject-2.0.c"
24228+ line="5249">Signal the handlers have to be connected to.</doc>
24229+ <type name="guint" c:type="guint"/>
24230+ </parameter>
24231+ <parameter name="detail" transfer-ownership="none">
24232+ <doc xml:space="preserve"
24233+ filename="gobject-2.0.c"
24234+ line="5250">Signal detail the handlers have to be connected to.</doc>
24235+ <type name="GLib.Quark" c:type="GQuark"/>
24236+ </parameter>
24237+ <parameter name="closure"
24238+ transfer-ownership="none"
24239+ nullable="1"
24240+ allow-none="1">
24241+ <doc xml:space="preserve"
24242+ filename="gobject-2.0.c"
24243+ line="5251">The closure the handlers will invoke.</doc>
24244+ <type name="Closure" c:type="GClosure*"/>
24245+ </parameter>
24246+ <parameter name="func"
24247+ transfer-ownership="none"
24248+ nullable="1"
24249+ allow-none="1">
24250+ <doc xml:space="preserve"
24251+ filename="gobject-2.0.c"
24252+ line="5252">The C closure callback of the handlers (useless for non-C closures).</doc>
24253+ <type name="gpointer" c:type="gpointer"/>
24254+ </parameter>
24255+ <parameter name="data"
24256+ transfer-ownership="none"
24257+ nullable="1"
24258+ allow-none="1"
24259+ closure="4">
24260+ <doc xml:space="preserve"
24261+ filename="gobject-2.0.c"
24262+ line="5253">The closure data of the handlers' closures.</doc>
24263+ <type name="gpointer" c:type="gpointer"/>
24264+ </parameter>
24265+ </parameters>
24266+ </function>
24267+ <function-macro name="signal_handlers_unblock_by_func"
24268+ c:identifier="g_signal_handlers_unblock_by_func"
24269+ introspectable="0">
24270+ <doc xml:space="preserve"
24271+ filename="gsignal.h"
24272+ line="605">Unblocks all handlers on an instance that match @func and @data.</doc>
24273+ <source-position filename="gsignal.h" line="615"/>
24274+ <parameters>
24275+ <parameter name="instance">
24276+ <doc xml:space="preserve"
24277+ filename="gsignal.h"
24278+ line="607">The instance to unblock handlers from.</doc>
24279+ </parameter>
24280+ <parameter name="func">
24281+ <doc xml:space="preserve"
24282+ filename="gsignal.h"
24283+ line="608">The C closure callback of the handlers (useless for non-C closures).</doc>
24284+ </parameter>
24285+ <parameter name="data">
24286+ <doc xml:space="preserve"
24287+ filename="gsignal.h"
24288+ line="609">The closure data of the handlers' closures.</doc>
24289+ </parameter>
24290+ </parameters>
24291+ </function-macro>
24292+ <function name="signal_handlers_unblock_matched"
24293+ c:identifier="g_signal_handlers_unblock_matched">
24294+ <doc xml:space="preserve"
24295+ filename="gobject-2.0.c"
24296+ line="5268">Unblocks all handlers on an instance that match a certain selection
24297+criteria. The criteria mask is passed as an OR-ed combination of
24298+#GSignalMatchType flags, and the criteria values are passed as arguments.
24299+Passing at least one of the %G_SIGNAL_MATCH_CLOSURE, %G_SIGNAL_MATCH_FUNC
24300+or %G_SIGNAL_MATCH_DATA match flags is required for successful matches.
24301+If no handlers were found, 0 is returned, the number of unblocked handlers
24302+otherwise. The match criteria should not apply to any handlers that are
24303+not currently blocked.</doc>
24304+ <source-position filename="gsignal.h" line="439"/>
24305+ <return-value transfer-ownership="none">
24306+ <doc xml:space="preserve"
24307+ filename="gobject-2.0.c"
24308+ line="5288">The number of handlers that matched.</doc>
24309+ <type name="guint" c:type="guint"/>
24310+ </return-value>
24311+ <parameters>
24312+ <parameter name="instance" transfer-ownership="none">
24313+ <doc xml:space="preserve"
24314+ filename="gobject-2.0.c"
24315+ line="5270">The instance to unblock handlers from.</doc>
24316+ <type name="Object" c:type="gpointer"/>
24317+ </parameter>
24318+ <parameter name="mask" transfer-ownership="none">
24319+ <doc xml:space="preserve"
24320+ filename="gobject-2.0.c"
24321+ line="5271">Mask indicating which of @signal_id, @detail, @closure, @func
24322+ and/or @data the handlers have to match.</doc>
24323+ <type name="SignalMatchType" c:type="GSignalMatchType"/>
24324+ </parameter>
24325+ <parameter name="signal_id" transfer-ownership="none">
24326+ <doc xml:space="preserve"
24327+ filename="gobject-2.0.c"
24328+ line="5273">Signal the handlers have to be connected to.</doc>
24329+ <type name="guint" c:type="guint"/>
24330+ </parameter>
24331+ <parameter name="detail" transfer-ownership="none">
24332+ <doc xml:space="preserve"
24333+ filename="gobject-2.0.c"
24334+ line="5274">Signal detail the handlers have to be connected to.</doc>
24335+ <type name="GLib.Quark" c:type="GQuark"/>
24336+ </parameter>
24337+ <parameter name="closure"
24338+ transfer-ownership="none"
24339+ nullable="1"
24340+ allow-none="1">
24341+ <doc xml:space="preserve"
24342+ filename="gobject-2.0.c"
24343+ line="5275">The closure the handlers will invoke.</doc>
24344+ <type name="Closure" c:type="GClosure*"/>
24345+ </parameter>
24346+ <parameter name="func"
24347+ transfer-ownership="none"
24348+ nullable="1"
24349+ allow-none="1">
24350+ <doc xml:space="preserve"
24351+ filename="gobject-2.0.c"
24352+ line="5276">The C closure callback of the handlers (useless for non-C closures).</doc>
24353+ <type name="gpointer" c:type="gpointer"/>
24354+ </parameter>
24355+ <parameter name="data"
24356+ transfer-ownership="none"
24357+ nullable="1"
24358+ allow-none="1"
24359+ closure="4">
24360+ <doc xml:space="preserve"
24361+ filename="gobject-2.0.c"
24362+ line="5277">The closure data of the handlers' closures.</doc>
24363+ <type name="gpointer" c:type="gpointer"/>
24364+ </parameter>
24365+ </parameters>
24366+ </function>
24367+ <function name="signal_has_handler_pending"
24368+ c:identifier="g_signal_has_handler_pending">
24369+ <doc xml:space="preserve"
24370+ filename="gobject-2.0.c"
24371+ line="5292">Returns whether there are any handlers connected to @instance for the
24372+given signal id and detail.
24373+
24374+If @detail is 0 then it will only match handlers that were connected
24375+without detail. If @detail is non-zero then it will match handlers
24376+connected both without detail and with the given detail. This is
24377+consistent with how a signal emitted with @detail would be delivered
24378+to those handlers.
24379+
24380+Since 2.46 this also checks for a non-default class closure being
24381+installed, as this is basically always what you want.
24382+
24383+One example of when you might use this is when the arguments to the
24384+signal are difficult to compute. A class implementor may opt to not
24385+emit the signal if no one is attached anyway, thus saving the cost
24386+of building the arguments.</doc>
24387+ <source-position filename="gsignal.h" line="388"/>
24388+ <return-value transfer-ownership="none">
24389+ <doc xml:space="preserve"
24390+ filename="gobject-2.0.c"
24391+ line="5316">%TRUE if a handler is connected to the signal, %FALSE
24392+ otherwise.</doc>
24393+ <type name="gboolean" c:type="gboolean"/>
24394+ </return-value>
24395+ <parameters>
24396+ <parameter name="instance" transfer-ownership="none">
24397+ <doc xml:space="preserve"
24398+ filename="gobject-2.0.c"
24399+ line="5294">the object whose signal handlers are sought.</doc>
24400+ <type name="Object" c:type="gpointer"/>
24401+ </parameter>
24402+ <parameter name="signal_id" transfer-ownership="none">
24403+ <doc xml:space="preserve"
24404+ filename="gobject-2.0.c"
24405+ line="5295">the signal id.</doc>
24406+ <type name="guint" c:type="guint"/>
24407+ </parameter>
24408+ <parameter name="detail" transfer-ownership="none">
24409+ <doc xml:space="preserve"
24410+ filename="gobject-2.0.c"
24411+ line="5296">the detail.</doc>
24412+ <type name="GLib.Quark" c:type="GQuark"/>
24413+ </parameter>
24414+ <parameter name="may_be_blocked" transfer-ownership="none">
24415+ <doc xml:space="preserve"
24416+ filename="gobject-2.0.c"
24417+ line="5297">whether blocked handlers should count as match.</doc>
24418+ <type name="gboolean" c:type="gboolean"/>
24419+ </parameter>
24420+ </parameters>
24421+ </function>
24422+ <function name="signal_is_valid_name"
24423+ c:identifier="g_signal_is_valid_name"
24424+ version="2.66">
24425+ <doc xml:space="preserve"
24426+ filename="gobject-2.0.c"
24427+ line="5321">Validate a signal name. This can be useful for dynamically-generated signals
24428+which need to be validated at run-time before actually trying to create them.
24429+
24430+See [canonical parameter names][canonical-parameter-names] for details of
24431+the rules for valid names. The rules for signal names are the same as those
24432+for property names.</doc>
24433+ <source-position filename="gsignal.h" line="356"/>
24434+ <return-value transfer-ownership="none">
24435+ <doc xml:space="preserve"
24436+ filename="gobject-2.0.c"
24437+ line="5332">%TRUE if @name is a valid signal name, %FALSE otherwise.</doc>
24438+ <type name="gboolean" c:type="gboolean"/>
24439+ </return-value>
24440+ <parameters>
24441+ <parameter name="name" transfer-ownership="none">
24442+ <doc xml:space="preserve"
24443+ filename="gobject-2.0.c"
24444+ line="5323">the canonical name of the signal</doc>
24445+ <type name="utf8" c:type="const gchar*"/>
24446+ </parameter>
24447+ </parameters>
24448+ </function>
24449+ <function name="signal_list_ids" c:identifier="g_signal_list_ids">
24450+ <doc xml:space="preserve"
24451+ filename="gobject-2.0.c"
24452+ line="5337">Lists the signals by id that a certain instance or interface type
24453+created. Further information about the signals can be acquired through
24454+g_signal_query().</doc>
24455+ <source-position filename="gsignal.h" line="353"/>
24456+ <return-value transfer-ownership="full">
24457+ <doc xml:space="preserve"
24458+ filename="gobject-2.0.c"
24459+ line="5346">Newly allocated array of signal IDs.</doc>
24460+ <array length="1" zero-terminated="0" c:type="guint*">
24461+ <type name="guint" c:type="guint"/>
24462+ </array>
24463+ </return-value>
24464+ <parameters>
24465+ <parameter name="itype" transfer-ownership="none">
24466+ <doc xml:space="preserve"
24467+ filename="gobject-2.0.c"
24468+ line="5339">Instance or interface type.</doc>
24469+ <type name="GType" c:type="GType"/>
24470+ </parameter>
24471+ <parameter name="n_ids"
24472+ direction="out"
24473+ caller-allocates="0"
24474+ transfer-ownership="full">
24475+ <doc xml:space="preserve"
24476+ filename="gobject-2.0.c"
24477+ line="5340">Location to store the number of signal ids for @itype.</doc>
24478+ <type name="guint" c:type="guint*"/>
24479+ </parameter>
24480+ </parameters>
24481+ </function>
24482+ <function name="signal_lookup" c:identifier="g_signal_lookup">
24483+ <doc xml:space="preserve"
24484+ filename="gobject-2.0.c"
24485+ line="5350">Given the name of the signal and the type of object it connects to, gets
24486+the signal's identifying integer. Emitting the signal by number is
24487+somewhat faster than using the name each time.
24488+
24489+Also tries the ancestors of the given type.
24490+
24491+The type class passed as @itype must already have been instantiated (for
24492+example, using g_type_class_ref()) for this function to work, as signals are
24493+always installed during class initialization.
24494+
24495+See g_signal_new() for details on allowed signal names.</doc>
24496+ <source-position filename="gsignal.h" line="345"/>
24497+ <return-value transfer-ownership="none">
24498+ <doc xml:space="preserve"
24499+ filename="gobject-2.0.c"
24500+ line="5367">the signal's identifying number, or 0 if no signal was found.</doc>
24501+ <type name="guint" c:type="guint"/>
24502+ </return-value>
24503+ <parameters>
24504+ <parameter name="name" transfer-ownership="none">
24505+ <doc xml:space="preserve"
24506+ filename="gobject-2.0.c"
24507+ line="5352">the signal's name.</doc>
24508+ <type name="utf8" c:type="const gchar*"/>
24509+ </parameter>
24510+ <parameter name="itype" transfer-ownership="none">
24511+ <doc xml:space="preserve"
24512+ filename="gobject-2.0.c"
24513+ line="5353">the type that the signal operates on.</doc>
24514+ <type name="GType" c:type="GType"/>
24515+ </parameter>
24516+ </parameters>
24517+ </function>
24518+ <function name="signal_name" c:identifier="g_signal_name">
24519+ <doc xml:space="preserve"
24520+ filename="gobject-2.0.c"
24521+ line="5371">Given the signal's identifier, finds its name.
24522+
24523+Two different signals may have the same name, if they have differing types.</doc>
24524+ <source-position filename="gsignal.h" line="348"/>
24525+ <return-value transfer-ownership="none" nullable="1">
24526+ <doc xml:space="preserve"
24527+ filename="gobject-2.0.c"
24528+ line="5379">the signal name, or %NULL if the signal number was invalid.</doc>
24529+ <type name="utf8" c:type="const gchar*"/>
24530+ </return-value>
24531+ <parameters>
24532+ <parameter name="signal_id" transfer-ownership="none">
24533+ <doc xml:space="preserve"
24534+ filename="gobject-2.0.c"
24535+ line="5373">the signal's identifying number.</doc>
24536+ <type name="guint" c:type="guint"/>
24537+ </parameter>
24538+ </parameters>
24539+ </function>
24540+ <function name="signal_new" c:identifier="g_signal_new" introspectable="0">
24541+ <doc xml:space="preserve"
24542+ filename="gobject-2.0.c"
24543+ line="5383">Creates a new signal. (This is usually done in the class initializer.)
24544+
24545+A signal name consists of segments consisting of ASCII letters and
24546+digits, separated by either the `-` or `_` character. The first
24547+character of a signal name must be a letter. Names which violate these
24548+rules lead to undefined behaviour. These are the same rules as for property
24549+naming (see g_param_spec_internal()).
24550+
24551+When registering a signal and looking up a signal, either separator can
24552+be used, but they cannot be mixed. Using `-` is considerably more efficient.
24553+Using `_` is discouraged.
24554+
24555+If 0 is used for @class_offset subclasses cannot override the class handler
24556+in their class_init method by doing super_class-&gt;signal_handler = my_signal_handler.
24557+Instead they will have to use g_signal_override_class_handler().
24558+
24559+If @c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as
24560+the marshaller for this signal. In some simple cases, g_signal_new()
24561+will use a more optimized c_marshaller and va_marshaller for the signal
24562+instead of g_cclosure_marshal_generic().
24563+
24564+If @c_marshaller is non-%NULL, you need to also specify a va_marshaller
24565+using g_signal_set_va_marshaller() or the generic va_marshaller will
24566+be used.</doc>
24567+ <source-position filename="gsignal.h" line="299"/>
24568+ <return-value transfer-ownership="none">
24569+ <doc xml:space="preserve"
24570+ filename="gobject-2.0.c"
24571+ line="5428">the signal id</doc>
24572+ <type name="guint" c:type="guint"/>
24573+ </return-value>
24574+ <parameters>
24575+ <parameter name="signal_name" transfer-ownership="none">
24576+ <doc xml:space="preserve"
24577+ filename="gobject-2.0.c"
24578+ line="5385">the name for the signal</doc>
24579+ <type name="utf8" c:type="const gchar*"/>
24580+ </parameter>
24581+ <parameter name="itype" transfer-ownership="none">
24582+ <doc xml:space="preserve"
24583+ filename="gobject-2.0.c"
24584+ line="5386">the type this signal pertains to. It will also pertain to
24585+ types which are derived from this type.</doc>
24586+ <type name="GType" c:type="GType"/>
24587+ </parameter>
24588+ <parameter name="signal_flags" transfer-ownership="none">
24589+ <doc xml:space="preserve"
24590+ filename="gobject-2.0.c"
24591+ line="5388">a combination of #GSignalFlags specifying detail of when
24592+ the default handler is to be invoked. You should at least specify
24593+ %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
24594+ <type name="SignalFlags" c:type="GSignalFlags"/>
24595+ </parameter>
24596+ <parameter name="class_offset" transfer-ownership="none">
24597+ <doc xml:space="preserve"
24598+ filename="gobject-2.0.c"
24599+ line="5391">The offset of the function pointer in the class structure
24600+ for this type. Used to invoke a class method generically. Pass 0 to
24601+ not associate a class method slot with this signal.</doc>
24602+ <type name="guint" c:type="guint"/>
24603+ </parameter>
24604+ <parameter name="accumulator"
24605+ transfer-ownership="none"
24606+ nullable="1"
24607+ allow-none="1"
24608+ closure="5">
24609+ <doc xml:space="preserve"
24610+ filename="gobject-2.0.c"
24611+ line="5394">the accumulator for this signal; may be %NULL.</doc>
24612+ <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
24613+ </parameter>
24614+ <parameter name="accu_data"
24615+ transfer-ownership="none"
24616+ nullable="1"
24617+ allow-none="1"
24618+ closure="4">
24619+ <doc xml:space="preserve"
24620+ filename="gobject-2.0.c"
24621+ line="5395">user data for the @accumulator.</doc>
24622+ <type name="gpointer" c:type="gpointer"/>
24623+ </parameter>
24624+ <parameter name="c_marshaller"
24625+ transfer-ownership="none"
24626+ nullable="1"
24627+ allow-none="1">
24628+ <doc xml:space="preserve"
24629+ filename="gobject-2.0.c"
24630+ line="5396">the function to translate arrays of parameter
24631+ values to signal emissions into C language callback invocations or %NULL.</doc>
24632+ <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
24633+ </parameter>
24634+ <parameter name="return_type" transfer-ownership="none">
24635+ <doc xml:space="preserve"
24636+ filename="gobject-2.0.c"
24637+ line="5398">the type of return value, or %G_TYPE_NONE for a signal
24638+ without a return value.</doc>
24639+ <type name="GType" c:type="GType"/>
24640+ </parameter>
24641+ <parameter name="n_params" transfer-ownership="none">
24642+ <doc xml:space="preserve"
24643+ filename="gobject-2.0.c"
24644+ line="5400">the number of parameter types to follow.</doc>
24645+ <type name="guint" c:type="guint"/>
24646+ </parameter>
24647+ <parameter name="..." transfer-ownership="none">
24648+ <doc xml:space="preserve"
24649+ filename="gobject-2.0.c"
24650+ line="5401">a list of types, one for each parameter.</doc>
24651+ <varargs/>
24652+ </parameter>
24653+ </parameters>
24654+ </function>
24655+ <function name="signal_new_class_handler"
24656+ c:identifier="g_signal_new_class_handler"
24657+ version="2.18"
24658+ introspectable="0">
24659+ <doc xml:space="preserve"
24660+ filename="gobject-2.0.c"
24661+ line="5432">Creates a new signal. (This is usually done in the class initializer.)
24662+
24663+This is a variant of g_signal_new() that takes a C callback instead
24664+of a class offset for the signal's class handler. This function
24665+doesn't need a function pointer exposed in the class structure of
24666+an object definition, instead the function pointer is passed
24667+directly and can be overridden by derived classes with
24668+g_signal_override_class_closure() or
24669+g_signal_override_class_handler()and chained to with
24670+g_signal_chain_from_overridden() or
24671+g_signal_chain_from_overridden_handler().
24672+
24673+See g_signal_new() for information about signal names.
24674+
24675+If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as
24676+the marshaller for this signal.</doc>
24677+ <source-position filename="gsignal.h" line="310"/>
24678+ <return-value transfer-ownership="none">
24679+ <doc xml:space="preserve"
24680+ filename="gobject-2.0.c"
24681+ line="5469">the signal id</doc>
24682+ <type name="guint" c:type="guint"/>
24683+ </return-value>
24684+ <parameters>
24685+ <parameter name="signal_name" transfer-ownership="none">
24686+ <doc xml:space="preserve"
24687+ filename="gobject-2.0.c"
24688+ line="5434">the name for the signal</doc>
24689+ <type name="utf8" c:type="const gchar*"/>
24690+ </parameter>
24691+ <parameter name="itype" transfer-ownership="none">
24692+ <doc xml:space="preserve"
24693+ filename="gobject-2.0.c"
24694+ line="5435">the type this signal pertains to. It will also pertain to
24695+ types which are derived from this type.</doc>
24696+ <type name="GType" c:type="GType"/>
24697+ </parameter>
24698+ <parameter name="signal_flags" transfer-ownership="none">
24699+ <doc xml:space="preserve"
24700+ filename="gobject-2.0.c"
24701+ line="5437">a combination of #GSignalFlags specifying detail of when
24702+ the default handler is to be invoked. You should at least specify
24703+ %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
24704+ <type name="SignalFlags" c:type="GSignalFlags"/>
24705+ </parameter>
24706+ <parameter name="class_handler"
24707+ transfer-ownership="none"
24708+ nullable="1"
24709+ allow-none="1">
24710+ <doc xml:space="preserve"
24711+ filename="gobject-2.0.c"
24712+ line="5440">a #GCallback which acts as class implementation of
24713+ this signal. Used to invoke a class method generically. Pass %NULL to
24714+ not associate a class method with this signal.</doc>
24715+ <type name="Callback" c:type="GCallback"/>
24716+ </parameter>
24717+ <parameter name="accumulator"
24718+ transfer-ownership="none"
24719+ nullable="1"
24720+ allow-none="1"
24721+ closure="5">
24722+ <doc xml:space="preserve"
24723+ filename="gobject-2.0.c"
24724+ line="5443">the accumulator for this signal; may be %NULL.</doc>
24725+ <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
24726+ </parameter>
24727+ <parameter name="accu_data"
24728+ transfer-ownership="none"
24729+ nullable="1"
24730+ allow-none="1"
24731+ closure="4">
24732+ <doc xml:space="preserve"
24733+ filename="gobject-2.0.c"
24734+ line="5444">user data for the @accumulator.</doc>
24735+ <type name="gpointer" c:type="gpointer"/>
24736+ </parameter>
24737+ <parameter name="c_marshaller"
24738+ transfer-ownership="none"
24739+ nullable="1"
24740+ allow-none="1">
24741+ <doc xml:space="preserve"
24742+ filename="gobject-2.0.c"
24743+ line="5445">the function to translate arrays of parameter
24744+ values to signal emissions into C language callback invocations or %NULL.</doc>
24745+ <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
24746+ </parameter>
24747+ <parameter name="return_type" transfer-ownership="none">
24748+ <doc xml:space="preserve"
24749+ filename="gobject-2.0.c"
24750+ line="5447">the type of return value, or %G_TYPE_NONE for a signal
24751+ without a return value.</doc>
24752+ <type name="GType" c:type="GType"/>
24753+ </parameter>
24754+ <parameter name="n_params" transfer-ownership="none">
24755+ <doc xml:space="preserve"
24756+ filename="gobject-2.0.c"
24757+ line="5449">the number of parameter types to follow.</doc>
24758+ <type name="guint" c:type="guint"/>
24759+ </parameter>
24760+ <parameter name="..." transfer-ownership="none">
24761+ <doc xml:space="preserve"
24762+ filename="gobject-2.0.c"
24763+ line="5450">a list of types, one for each parameter.</doc>
24764+ <varargs/>
24765+ </parameter>
24766+ </parameters>
24767+ </function>
24768+ <function name="signal_new_valist"
24769+ c:identifier="g_signal_new_valist"
24770+ introspectable="0">
24771+ <doc xml:space="preserve"
24772+ filename="gobject-2.0.c"
24773+ line="5474">Creates a new signal. (This is usually done in the class initializer.)
24774+
24775+See g_signal_new() for details on allowed signal names.
24776+
24777+If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as
24778+the marshaller for this signal.</doc>
24779+ <source-position filename="gsignal.h" line="288"/>
24780+ <return-value transfer-ownership="none">
24781+ <doc xml:space="preserve"
24782+ filename="gobject-2.0.c"
24783+ line="5499">the signal id</doc>
24784+ <type name="guint" c:type="guint"/>
24785+ </return-value>
24786+ <parameters>
24787+ <parameter name="signal_name" transfer-ownership="none">
24788+ <doc xml:space="preserve"
24789+ filename="gobject-2.0.c"
24790+ line="5476">the name for the signal</doc>
24791+ <type name="utf8" c:type="const gchar*"/>
24792+ </parameter>
24793+ <parameter name="itype" transfer-ownership="none">
24794+ <doc xml:space="preserve"
24795+ filename="gobject-2.0.c"
24796+ line="5477">the type this signal pertains to. It will also pertain to
24797+ types which are derived from this type.</doc>
24798+ <type name="GType" c:type="GType"/>
24799+ </parameter>
24800+ <parameter name="signal_flags" transfer-ownership="none">
24801+ <doc xml:space="preserve"
24802+ filename="gobject-2.0.c"
24803+ line="5479">a combination of #GSignalFlags specifying detail of when
24804+ the default handler is to be invoked. You should at least specify
24805+ %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST.</doc>
24806+ <type name="SignalFlags" c:type="GSignalFlags"/>
24807+ </parameter>
24808+ <parameter name="class_closure"
24809+ transfer-ownership="none"
24810+ nullable="1"
24811+ allow-none="1">
24812+ <doc xml:space="preserve"
24813+ filename="gobject-2.0.c"
24814+ line="5482">The closure to invoke on signal emission; may be %NULL.</doc>
24815+ <type name="Closure" c:type="GClosure*"/>
24816+ </parameter>
24817+ <parameter name="accumulator"
24818+ transfer-ownership="none"
24819+ nullable="1"
24820+ allow-none="1"
24821+ closure="5">
24822+ <doc xml:space="preserve"
24823+ filename="gobject-2.0.c"
24824+ line="5483">the accumulator for this signal; may be %NULL.</doc>
24825+ <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
24826+ </parameter>
24827+ <parameter name="accu_data"
24828+ transfer-ownership="none"
24829+ nullable="1"
24830+ allow-none="1"
24831+ closure="4">
24832+ <doc xml:space="preserve"
24833+ filename="gobject-2.0.c"
24834+ line="5484">user data for the @accumulator.</doc>
24835+ <type name="gpointer" c:type="gpointer"/>
24836+ </parameter>
24837+ <parameter name="c_marshaller"
24838+ transfer-ownership="none"
24839+ nullable="1"
24840+ allow-none="1">
24841+ <doc xml:space="preserve"
24842+ filename="gobject-2.0.c"
24843+ line="5485">the function to translate arrays of parameter
24844+ values to signal emissions into C language callback invocations or %NULL.</doc>
24845+ <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
24846+ </parameter>
24847+ <parameter name="return_type" transfer-ownership="none">
24848+ <doc xml:space="preserve"
24849+ filename="gobject-2.0.c"
24850+ line="5487">the type of return value, or %G_TYPE_NONE for a signal
24851+ without a return value.</doc>
24852+ <type name="GType" c:type="GType"/>
24853+ </parameter>
24854+ <parameter name="n_params" transfer-ownership="none">
24855+ <doc xml:space="preserve"
24856+ filename="gobject-2.0.c"
24857+ line="5489">the number of parameter types in @args.</doc>
24858+ <type name="guint" c:type="guint"/>
24859+ </parameter>
24860+ <parameter name="args" transfer-ownership="none">
24861+ <doc xml:space="preserve"
24862+ filename="gobject-2.0.c"
24863+ line="5490">va_list of #GType, one for each parameter.</doc>
24864+ <type name="va_list" c:type="va_list"/>
24865+ </parameter>
24866+ </parameters>
24867+ </function>
24868+ <function name="signal_newv"
24869+ c:identifier="g_signal_newv"
24870+ introspectable="0">
24871+ <doc xml:space="preserve"
24872+ filename="gobject-2.0.c"
24873+ line="5503">Creates a new signal. (This is usually done in the class initializer.)
24874+
24875+See g_signal_new() for details on allowed signal names.
24876+
24877+If c_marshaller is %NULL, g_cclosure_marshal_generic() will be used as
24878+the marshaller for this signal.</doc>
24879+ <source-position filename="gsignal.h" line="277"/>
24880+ <return-value transfer-ownership="none">
24881+ <doc xml:space="preserve"
24882+ filename="gobject-2.0.c"
24883+ line="5531">the signal id</doc>
24884+ <type name="guint" c:type="guint"/>
24885+ </return-value>
24886+ <parameters>
24887+ <parameter name="signal_name" transfer-ownership="none">
24888+ <doc xml:space="preserve"
24889+ filename="gobject-2.0.c"
24890+ line="5505">the name for the signal</doc>
24891+ <type name="utf8" c:type="const gchar*"/>
24892+ </parameter>
24893+ <parameter name="itype" transfer-ownership="none">
24894+ <doc xml:space="preserve"
24895+ filename="gobject-2.0.c"
24896+ line="5506">the type this signal pertains to. It will also pertain to
24897+ types which are derived from this type</doc>
24898+ <type name="GType" c:type="GType"/>
24899+ </parameter>
24900+ <parameter name="signal_flags" transfer-ownership="none">
24901+ <doc xml:space="preserve"
24902+ filename="gobject-2.0.c"
24903+ line="5508">a combination of #GSignalFlags specifying detail of when
24904+ the default handler is to be invoked. You should at least specify
24905+ %G_SIGNAL_RUN_FIRST or %G_SIGNAL_RUN_LAST</doc>
24906+ <type name="SignalFlags" c:type="GSignalFlags"/>
24907+ </parameter>
24908+ <parameter name="class_closure"
24909+ transfer-ownership="none"
24910+ nullable="1"
24911+ allow-none="1">
24912+ <doc xml:space="preserve"
24913+ filename="gobject-2.0.c"
24914+ line="5511">The closure to invoke on signal emission;
24915+ may be %NULL</doc>
24916+ <type name="Closure" c:type="GClosure*"/>
24917+ </parameter>
24918+ <parameter name="accumulator"
24919+ transfer-ownership="none"
24920+ nullable="1"
24921+ allow-none="1"
24922+ closure="5">
24923+ <doc xml:space="preserve"
24924+ filename="gobject-2.0.c"
24925+ line="5513">the accumulator for this signal; may be %NULL</doc>
24926+ <type name="SignalAccumulator" c:type="GSignalAccumulator"/>
24927+ </parameter>
24928+ <parameter name="accu_data"
24929+ transfer-ownership="none"
24930+ nullable="1"
24931+ allow-none="1"
24932+ closure="4">
24933+ <doc xml:space="preserve"
24934+ filename="gobject-2.0.c"
24935+ line="5514">user data for the @accumulator</doc>
24936+ <type name="gpointer" c:type="gpointer"/>
24937+ </parameter>
24938+ <parameter name="c_marshaller"
24939+ transfer-ownership="none"
24940+ nullable="1"
24941+ allow-none="1">
24942+ <doc xml:space="preserve"
24943+ filename="gobject-2.0.c"
24944+ line="5515">the function to translate arrays of
24945+ parameter values to signal emissions into C language callback
24946+ invocations or %NULL</doc>
24947+ <type name="SignalCMarshaller" c:type="GSignalCMarshaller"/>
24948+ </parameter>
24949+ <parameter name="return_type" transfer-ownership="none">
24950+ <doc xml:space="preserve"
24951+ filename="gobject-2.0.c"
24952+ line="5518">the type of return value, or %G_TYPE_NONE for a signal
24953+ without a return value</doc>
24954+ <type name="GType" c:type="GType"/>
24955+ </parameter>
24956+ <parameter name="n_params" transfer-ownership="none">
24957+ <doc xml:space="preserve"
24958+ filename="gobject-2.0.c"
24959+ line="5520">the length of @param_types</doc>
24960+ <type name="guint" c:type="guint"/>
24961+ </parameter>
24962+ <parameter name="param_types"
24963+ transfer-ownership="none"
24964+ nullable="1"
24965+ allow-none="1">
24966+ <doc xml:space="preserve"
24967+ filename="gobject-2.0.c"
24968+ line="5521">an array of types, one for
24969+ each parameter (may be %NULL if @n_params is zero)</doc>
24970+ <array length="8" zero-terminated="0" c:type="GType*">
24971+ <type name="GType" c:type="GType"/>
24972+ </array>
24973+ </parameter>
24974+ </parameters>
24975+ </function>
24976+ <function name="signal_override_class_closure"
24977+ c:identifier="g_signal_override_class_closure">
24978+ <doc xml:space="preserve"
24979+ filename="gobject-2.0.c"
24980+ line="5535">Overrides the class closure (i.e. the default handler) for the given signal
24981+for emissions on instances of @instance_type. @instance_type must be derived
24982+from the type to which the signal belongs.
24983+
24984+See g_signal_chain_from_overridden() and
24985+g_signal_chain_from_overridden_handler() for how to chain up to the
24986+parent class closure from inside the overridden one.</doc>
24987+ <source-position filename="gsignal.h" line="475"/>
24988+ <return-value transfer-ownership="none">
24989+ <type name="none" c:type="void"/>
24990+ </return-value>
24991+ <parameters>
24992+ <parameter name="signal_id" transfer-ownership="none">
24993+ <doc xml:space="preserve"
24994+ filename="gobject-2.0.c"
24995+ line="5537">the signal id</doc>
24996+ <type name="guint" c:type="guint"/>
24997+ </parameter>
24998+ <parameter name="instance_type" transfer-ownership="none">
24999+ <doc xml:space="preserve"
25000+ filename="gobject-2.0.c"
25001+ line="5538">the instance type on which to override the class closure
25002+ for the signal.</doc>
25003+ <type name="GType" c:type="GType"/>
25004+ </parameter>
25005+ <parameter name="class_closure" transfer-ownership="none">
25006+ <doc xml:space="preserve"
25007+ filename="gobject-2.0.c"
25008+ line="5540">the closure.</doc>
25009+ <type name="Closure" c:type="GClosure*"/>
25010+ </parameter>
25011+ </parameters>
25012+ </function>
25013+ <function name="signal_override_class_handler"
25014+ c:identifier="g_signal_override_class_handler"
25015+ version="2.18"
25016+ introspectable="0">
25017+ <doc xml:space="preserve"
25018+ filename="gobject-2.0.c"
25019+ line="5552">Overrides the class closure (i.e. the default handler) for the
25020+given signal for emissions on instances of @instance_type with
25021+callback @class_handler. @instance_type must be derived from the
25022+type to which the signal belongs.
25023+
25024+See g_signal_chain_from_overridden() and
25025+g_signal_chain_from_overridden_handler() for how to chain up to the
25026+parent class closure from inside the overridden one.</doc>
25027+ <source-position filename="gsignal.h" line="479"/>
25028+ <return-value transfer-ownership="none">
25029+ <type name="none" c:type="void"/>
25030+ </return-value>
25031+ <parameters>
25032+ <parameter name="signal_name" transfer-ownership="none">
25033+ <doc xml:space="preserve"
25034+ filename="gobject-2.0.c"
25035+ line="5554">the name for the signal</doc>
25036+ <type name="utf8" c:type="const gchar*"/>
25037+ </parameter>
25038+ <parameter name="instance_type" transfer-ownership="none">
25039+ <doc xml:space="preserve"
25040+ filename="gobject-2.0.c"
25041+ line="5555">the instance type on which to override the class handler
25042+ for the signal.</doc>
25043+ <type name="GType" c:type="GType"/>
25044+ </parameter>
25045+ <parameter name="class_handler" transfer-ownership="none">
25046+ <doc xml:space="preserve"
25047+ filename="gobject-2.0.c"
25048+ line="5557">the handler.</doc>
25049+ <type name="Callback" c:type="GCallback"/>
25050+ </parameter>
25051+ </parameters>
25052+ </function>
25053+ <function name="signal_parse_name" c:identifier="g_signal_parse_name">
25054+ <doc xml:space="preserve"
25055+ filename="gobject-2.0.c"
25056+ line="5572">Internal function to parse a signal name into its @signal_id
25057+and @detail quark.</doc>
25058+ <source-position filename="gsignal.h" line="358"/>
25059+ <return-value transfer-ownership="none">
25060+ <doc xml:space="preserve"
25061+ filename="gobject-2.0.c"
25062+ line="5583">Whether the signal name could successfully be parsed and @signal_id_p and @detail_p contain valid return values.</doc>
25063+ <type name="gboolean" c:type="gboolean"/>
25064+ </return-value>
25065+ <parameters>
25066+ <parameter name="detailed_signal" transfer-ownership="none">
25067+ <doc xml:space="preserve"
25068+ filename="gobject-2.0.c"
25069+ line="5574">a string of the form "signal-name::detail".</doc>
25070+ <type name="utf8" c:type="const gchar*"/>
25071+ </parameter>
25072+ <parameter name="itype" transfer-ownership="none">
25073+ <doc xml:space="preserve"
25074+ filename="gobject-2.0.c"
25075+ line="5575">The interface/instance type that introduced "signal-name".</doc>
25076+ <type name="GType" c:type="GType"/>
25077+ </parameter>
25078+ <parameter name="signal_id_p"
25079+ direction="out"
25080+ caller-allocates="0"
25081+ transfer-ownership="full">
25082+ <doc xml:space="preserve"
25083+ filename="gobject-2.0.c"
25084+ line="5576">Location to store the signal id.</doc>
25085+ <type name="guint" c:type="guint*"/>
25086+ </parameter>
25087+ <parameter name="detail_p"
25088+ direction="out"
25089+ caller-allocates="0"
25090+ transfer-ownership="full">
25091+ <doc xml:space="preserve"
25092+ filename="gobject-2.0.c"
25093+ line="5577">Location to store the detail quark.</doc>
25094+ <type name="GLib.Quark" c:type="GQuark*"/>
25095+ </parameter>
25096+ <parameter name="force_detail_quark" transfer-ownership="none">
25097+ <doc xml:space="preserve"
25098+ filename="gobject-2.0.c"
25099+ line="5578">%TRUE forces creation of a #GQuark for the detail.</doc>
25100+ <type name="gboolean" c:type="gboolean"/>
25101+ </parameter>
25102+ </parameters>
25103+ </function>
25104+ <function name="signal_query" c:identifier="g_signal_query">
25105+ <doc xml:space="preserve"
25106+ filename="gobject-2.0.c"
25107+ line="5587">Queries the signal system for in-depth information about a
25108+specific signal. This function will fill in a user-provided
25109+structure to hold signal-specific information. If an invalid
25110+signal id is passed in, the @signal_id member of the #GSignalQuery
25111+is 0. All members filled into the #GSignalQuery structure should
25112+be considered constant and have to be left untouched.</doc>
25113+ <source-position filename="gsignal.h" line="350"/>
25114+ <return-value transfer-ownership="none">
25115+ <type name="none" c:type="void"/>
25116+ </return-value>
25117+ <parameters>
25118+ <parameter name="signal_id" transfer-ownership="none">
25119+ <doc xml:space="preserve"
25120+ filename="gobject-2.0.c"
25121+ line="5589">The signal id of the signal to query information for.</doc>
25122+ <type name="guint" c:type="guint"/>
25123+ </parameter>
25124+ <parameter name="query"
25125+ direction="out"
25126+ caller-allocates="1"
25127+ transfer-ownership="none">
25128+ <doc xml:space="preserve"
25129+ filename="gobject-2.0.c"
25130+ line="5590">A user provided structure that is
25131+ filled in with constant values upon success.</doc>
25132+ <type name="SignalQuery" c:type="GSignalQuery*"/>
25133+ </parameter>
25134+ </parameters>
25135+ </function>
25136+ <function name="signal_remove_emission_hook"
25137+ c:identifier="g_signal_remove_emission_hook">
25138+ <doc xml:space="preserve"
25139+ filename="gobject-2.0.c"
25140+ line="5602">Deletes an emission hook.</doc>
25141+ <source-position filename="gsignal.h" line="382"/>
25142+ <return-value transfer-ownership="none">
25143+ <type name="none" c:type="void"/>
25144+ </return-value>
25145+ <parameters>
25146+ <parameter name="signal_id" transfer-ownership="none">
25147+ <doc xml:space="preserve"
25148+ filename="gobject-2.0.c"
25149+ line="5604">the id of the signal</doc>
25150+ <type name="guint" c:type="guint"/>
25151+ </parameter>
25152+ <parameter name="hook_id" transfer-ownership="none">
25153+ <doc xml:space="preserve"
25154+ filename="gobject-2.0.c"
25155+ line="5605">the id of the emission hook, as returned by
25156+ g_signal_add_emission_hook()</doc>
25157+ <type name="gulong" c:type="gulong"/>
25158+ </parameter>
25159+ </parameters>
25160+ </function>
25161+ <function name="signal_set_va_marshaller"
25162+ c:identifier="g_signal_set_va_marshaller"
25163+ version="2.32">
25164+ <doc xml:space="preserve"
25165+ filename="gobject-2.0.c"
25166+ line="5612">Change the #GSignalCVaMarshaller used for a given signal. This is a
25167+specialised form of the marshaller that can often be used for the
25168+common case of a single connected signal handler and avoids the
25169+overhead of #GValue. Its use is optional.</doc>
25170+ <source-position filename="gsignal.h" line="321"/>
25171+ <return-value transfer-ownership="none">
25172+ <type name="none" c:type="void"/>
25173+ </return-value>
25174+ <parameters>
25175+ <parameter name="signal_id" transfer-ownership="none">
25176+ <doc xml:space="preserve"
25177+ filename="gobject-2.0.c"
25178+ line="5614">the signal id</doc>
25179+ <type name="guint" c:type="guint"/>
25180+ </parameter>
25181+ <parameter name="instance_type" transfer-ownership="none">
25182+ <doc xml:space="preserve"
25183+ filename="gobject-2.0.c"
25184+ line="5615">the instance type on which to set the marshaller.</doc>
25185+ <type name="GType" c:type="GType"/>
25186+ </parameter>
25187+ <parameter name="va_marshaller" transfer-ownership="none">
25188+ <doc xml:space="preserve"
25189+ filename="gobject-2.0.c"
25190+ line="5616">the marshaller to set.</doc>
25191+ <type name="SignalCVaMarshaller" c:type="GSignalCVaMarshaller"/>
25192+ </parameter>
25193+ </parameters>
25194+ </function>
25195+ <function name="signal_stop_emission"
25196+ c:identifier="g_signal_stop_emission">
25197+ <doc xml:space="preserve"
25198+ filename="gobject-2.0.c"
25199+ line="5627">Stops a signal's current emission.
25200+
25201+This will prevent the default method from running, if the signal was
25202+%G_SIGNAL_RUN_LAST and you connected normally (i.e. without the "after"
25203+flag).
25204+
25205+Prints a warning if used on a signal which isn't being emitted.</doc>
25206+ <source-position filename="gsignal.h" line="369"/>
25207+ <return-value transfer-ownership="none">
25208+ <type name="none" c:type="void"/>
25209+ </return-value>
25210+ <parameters>
25211+ <parameter name="instance" transfer-ownership="none">
25212+ <doc xml:space="preserve"
25213+ filename="gobject-2.0.c"
25214+ line="5629">the object whose signal handlers you wish to stop.</doc>
25215+ <type name="Object" c:type="gpointer"/>
25216+ </parameter>
25217+ <parameter name="signal_id" transfer-ownership="none">
25218+ <doc xml:space="preserve"
25219+ filename="gobject-2.0.c"
25220+ line="5630">the signal identifier, as returned by g_signal_lookup().</doc>
25221+ <type name="guint" c:type="guint"/>
25222+ </parameter>
25223+ <parameter name="detail" transfer-ownership="none">
25224+ <doc xml:space="preserve"
25225+ filename="gobject-2.0.c"
25226+ line="5631">the detail which the signal was emitted with.</doc>
25227+ <type name="GLib.Quark" c:type="GQuark"/>
25228+ </parameter>
25229+ </parameters>
25230+ </function>
25231+ <function name="signal_stop_emission_by_name"
25232+ c:identifier="g_signal_stop_emission_by_name">
25233+ <doc xml:space="preserve"
25234+ filename="gobject-2.0.c"
25235+ line="5643">Stops a signal's current emission.
25236+
25237+This is just like g_signal_stop_emission() except it will look up the
25238+signal id for you.</doc>
25239+ <source-position filename="gsignal.h" line="373"/>
25240+ <return-value transfer-ownership="none">
25241+ <type name="none" c:type="void"/>
25242+ </return-value>
25243+ <parameters>
25244+ <parameter name="instance" transfer-ownership="none">
25245+ <doc xml:space="preserve"
25246+ filename="gobject-2.0.c"
25247+ line="5645">the object whose signal handlers you wish to stop.</doc>
25248+ <type name="Object" c:type="gpointer"/>
25249+ </parameter>
25250+ <parameter name="detailed_signal" transfer-ownership="none">
25251+ <doc xml:space="preserve"
25252+ filename="gobject-2.0.c"
25253+ line="5646">a string of the form "signal-name::detail".</doc>
25254+ <type name="utf8" c:type="const gchar*"/>
25255+ </parameter>
25256+ </parameters>
25257+ </function>
25258+ <function name="signal_type_cclosure_new"
25259+ c:identifier="g_signal_type_cclosure_new">
25260+ <doc xml:space="preserve"
25261+ filename="gobject-2.0.c"
25262+ line="5655">Creates a new closure which invokes the function found at the offset
25263+@struct_offset in the class structure of the interface or classed type
25264+identified by @itype.</doc>
25265+ <source-position filename="gclosure.h" line="237"/>
25266+ <return-value transfer-ownership="none">
25267+ <doc xml:space="preserve"
25268+ filename="gobject-2.0.c"
25269+ line="5665">a floating reference to a new #GCClosure</doc>
25270+ <type name="Closure" c:type="GClosure*"/>
25271+ </return-value>
25272+ <parameters>
25273+ <parameter name="itype" transfer-ownership="none">
25274+ <doc xml:space="preserve"
25275+ filename="gobject-2.0.c"
25276+ line="5657">the #GType identifier of an interface or classed type</doc>
25277+ <type name="GType" c:type="GType"/>
25278+ </parameter>
25279+ <parameter name="struct_offset" transfer-ownership="none">
25280+ <doc xml:space="preserve"
25281+ filename="gobject-2.0.c"
25282+ line="5658">the offset of the member function of @itype's class
25283+ structure which is to be invoked by the new closure</doc>
25284+ <type name="guint" c:type="guint"/>
25285+ </parameter>
25286+ </parameters>
25287+ </function>
25288+ <docsection name="signals">
25289+ <doc xml:space="preserve"
25290+ filename="gobject-2.0.c"
25291+ line="841">The basic concept of the signal system is that of the emission
25292+of a signal. Signals are introduced per-type and are identified
25293+through strings. Signals introduced for a parent type are available
25294+in derived types as well, so basically they are a per-type facility
25295+that is inherited.
25296+
25297+A signal emission mainly involves invocation of a certain set of
25298+callbacks in precisely defined manner. There are two main categories
25299+of such callbacks, per-object ones and user provided ones.
25300+(Although signals can deal with any kind of instantiatable type, I'm
25301+referring to those types as "object types" in the following, simply
25302+because that is the context most users will encounter signals in.)
25303+The per-object callbacks are most often referred to as "object method
25304+handler" or "default (signal) handler", while user provided callbacks are
25305+usually just called "signal handler".
25306+
25307+The object method handler is provided at signal creation time (this most
25308+frequently happens at the end of an object class' creation), while user
25309+provided handlers are frequently connected and disconnected to/from a
25310+certain signal on certain object instances.
25311+
25312+A signal emission consists of five stages, unless prematurely stopped:
25313+
25314+1. Invocation of the object method handler for %G_SIGNAL_RUN_FIRST signals
25315+
25316+2. Invocation of normal user-provided signal handlers (where the @after
25317+ flag is not set)
25318+
25319+3. Invocation of the object method handler for %G_SIGNAL_RUN_LAST signals
25320+
25321+4. Invocation of user provided signal handlers (where the @after flag is set)
25322+
25323+5. Invocation of the object method handler for %G_SIGNAL_RUN_CLEANUP signals
25324+
25325+The user-provided signal handlers are called in the order they were
25326+connected in.
25327+
25328+All handlers may prematurely stop a signal emission, and any number of
25329+handlers may be connected, disconnected, blocked or unblocked during
25330+a signal emission.
25331+
25332+There are certain criteria for skipping user handlers in stages 2 and 4
25333+of a signal emission.
25334+
25335+First, user handlers may be blocked. Blocked handlers are omitted during
25336+callback invocation, to return from the blocked state, a handler has to
25337+get unblocked exactly the same amount of times it has been blocked before.
25338+
25339+Second, upon emission of a %G_SIGNAL_DETAILED signal, an additional
25340+@detail argument passed in to g_signal_emit() has to match the detail
25341+argument of the signal handler currently subject to invocation.
25342+Specification of no detail argument for signal handlers (omission of the
25343+detail part of the signal specification upon connection) serves as a
25344+wildcard and matches any detail argument passed in to emission.
25345+
25346+While the @detail argument is typically used to pass an object property name
25347+(as with #GObject::notify), no specific format is mandated for the detail
25348+string, other than that it must be non-empty.
25349+
25350+## Memory management of signal handlers # {#signal-memory-management}
25351+
25352+If you are connecting handlers to signals and using a #GObject instance as
25353+your signal handler user data, you should remember to pair calls to
25354+g_signal_connect() with calls to g_signal_handler_disconnect() or
25355+g_signal_handlers_disconnect_by_func(). While signal handlers are
25356+automatically disconnected when the object emitting the signal is finalised,
25357+they are not automatically disconnected when the signal handler user data is
25358+destroyed. If this user data is a #GObject instance, using it from a
25359+signal handler after it has been finalised is an error.
25360+
25361+There are two strategies for managing such user data. The first is to
25362+disconnect the signal handler (using g_signal_handler_disconnect() or
25363+g_signal_handlers_disconnect_by_func()) when the user data (object) is
25364+finalised; this has to be implemented manually. For non-threaded programs,
25365+g_signal_connect_object() can be used to implement this automatically.
25366+Currently, however, it is unsafe to use in threaded programs.
25367+
25368+The second is to hold a strong reference on the user data until after the
25369+signal is disconnected for other reasons. This can be implemented
25370+automatically using g_signal_connect_data().
25371+
25372+The first approach is recommended, as the second approach can result in
25373+effective memory leaks of the user data if the signal handler is never
25374+disconnected for some reason.</doc>
25375+ </docsection>
25376+ <function name="source_set_closure" c:identifier="g_source_set_closure">
25377+ <doc xml:space="preserve"
25378+ filename="gobject-2.0.c"
25379+ line="5669">Set the callback for a source as a #GClosure.
25380+
25381+If the source is not one of the standard GLib types, the @closure_callback
25382+and @closure_marshal fields of the #GSourceFuncs structure must have been
25383+filled in with pointers to appropriate functions.</doc>
25384+ <source-position filename="gsourceclosure.h" line="30"/>
25385+ <return-value transfer-ownership="none">
25386+ <type name="none" c:type="void"/>
25387+ </return-value>
25388+ <parameters>
25389+ <parameter name="source" transfer-ownership="none">
25390+ <doc xml:space="preserve"
25391+ filename="gobject-2.0.c"
25392+ line="5671">the source</doc>
25393+ <type name="GLib.Source" c:type="GSource*"/>
25394+ </parameter>
25395+ <parameter name="closure" transfer-ownership="none">
25396+ <doc xml:space="preserve"
25397+ filename="gobject-2.0.c"
25398+ line="5672">a #GClosure</doc>
25399+ <type name="Closure" c:type="GClosure*"/>
25400+ </parameter>
25401+ </parameters>
25402+ </function>
25403+ <function name="source_set_dummy_callback"
25404+ c:identifier="g_source_set_dummy_callback">
25405+ <doc xml:space="preserve"
25406+ filename="gobject-2.0.c"
25407+ line="5682">Sets a dummy callback for @source. The callback will do nothing, and
25408+if the source expects a #gboolean return value, it will return %TRUE.
25409+(If the source expects any other type of return value, it will return
25410+a 0/%NULL value; whatever g_value_init() initializes a #GValue to for
25411+that type.)
25412+
25413+If the source is not one of the standard GLib types, the
25414+@closure_callback and @closure_marshal fields of the #GSourceFuncs
25415+structure must have been filled in with pointers to appropriate
25416+functions.</doc>
25417+ <source-position filename="gsourceclosure.h" line="34"/>
25418+ <return-value transfer-ownership="none">
25419+ <type name="none" c:type="void"/>
25420+ </return-value>
25421+ <parameters>
25422+ <parameter name="source" transfer-ownership="none">
25423+ <doc xml:space="preserve"
25424+ filename="gobject-2.0.c"
25425+ line="5684">the source</doc>
25426+ <type name="GLib.Source" c:type="GSource*"/>
25427+ </parameter>
25428+ </parameters>
25429+ </function>
25430+ <function name="strdup_value_contents"
25431+ c:identifier="g_strdup_value_contents">
25432+ <doc xml:space="preserve"
25433+ filename="gobject-2.0.c"
25434+ line="5699">Return a newly allocated string, which describes the contents of a
25435+#GValue. The main purpose of this function is to describe #GValue
25436+contents for debugging output, the way in which the contents are
25437+described may change between different GLib versions.</doc>
25438+ <source-position filename="gvaluetypes.h" line="294"/>
25439+ <return-value transfer-ownership="full">
25440+ <doc xml:space="preserve"
25441+ filename="gobject-2.0.c"
25442+ line="5708">Newly allocated string.</doc>
25443+ <type name="utf8" c:type="gchar*"/>
25444+ </return-value>
25445+ <parameters>
25446+ <parameter name="value" transfer-ownership="none">
25447+ <doc xml:space="preserve"
25448+ filename="gobject-2.0.c"
25449+ line="5701">#GValue which contents are to be described.</doc>
25450+ <type name="Value" c:type="const GValue*"/>
25451+ </parameter>
25452+ </parameters>
25453+ </function>
25454+ <function name="type_add_class_cache_func"
25455+ c:identifier="g_type_add_class_cache_func"
25456+ introspectable="0">
25457+ <doc xml:space="preserve"
25458+ filename="gobject-2.0.c"
25459+ line="5712">Adds a #GTypeClassCacheFunc to be called before the reference count of a
25460+class goes from one to zero. This can be used to prevent premature class
25461+destruction. All installed #GTypeClassCacheFunc functions will be chained
25462+until one of them returns %TRUE. The functions have to check the class id
25463+passed in to figure whether they actually want to cache the class of this
25464+type, since all classes are routed through the same #GTypeClassCacheFunc
25465+chain.</doc>
25466+ <source-position filename="gtype.h" line="2399"/>
25467+ <return-value transfer-ownership="none">
25468+ <type name="none" c:type="void"/>
25469+ </return-value>
25470+ <parameters>
25471+ <parameter name="cache_data"
25472+ transfer-ownership="none"
25473+ nullable="1"
25474+ allow-none="1">
25475+ <doc xml:space="preserve"
25476+ filename="gobject-2.0.c"
25477+ line="5714">data to be passed to @cache_func</doc>
25478+ <type name="gpointer" c:type="gpointer"/>
25479+ </parameter>
25480+ <parameter name="cache_func" transfer-ownership="none">
25481+ <doc xml:space="preserve"
25482+ filename="gobject-2.0.c"
25483+ line="5715">a #GTypeClassCacheFunc</doc>
25484+ <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
25485+ </parameter>
25486+ </parameters>
25487+ </function>
25488+ <function name="type_add_class_private"
25489+ c:identifier="g_type_add_class_private"
25490+ version="2.24">
25491+ <doc xml:space="preserve"
25492+ filename="gobject-2.0.c"
25493+ line="5727">Registers a private class structure for a classed type;
25494+when the class is allocated, the private structures for
25495+the class and all of its parent types are allocated
25496+sequentially in the same memory block as the public
25497+structures, and are zero-filled.
25498+
25499+This function should be called in the
25500+type's get_type() function after the type is registered.
25501+The private structure can be retrieved using the
25502+G_TYPE_CLASS_GET_PRIVATE() macro.</doc>
25503+ <source-position filename="gtype.h" line="1359"/>
25504+ <return-value transfer-ownership="none">
25505+ <type name="none" c:type="void"/>
25506+ </return-value>
25507+ <parameters>
25508+ <parameter name="class_type" transfer-ownership="none">
25509+ <doc xml:space="preserve"
25510+ filename="gobject-2.0.c"
25511+ line="5729">GType of a classed type</doc>
25512+ <type name="GType" c:type="GType"/>
25513+ </parameter>
25514+ <parameter name="private_size" transfer-ownership="none">
25515+ <doc xml:space="preserve"
25516+ filename="gobject-2.0.c"
25517+ line="5730">size of private structure</doc>
25518+ <type name="gsize" c:type="gsize"/>
25519+ </parameter>
25520+ </parameters>
25521+ </function>
25522+ <function name="type_add_instance_private"
25523+ c:identifier="g_type_add_instance_private">
25524+ <source-position filename="gtype.h" line="1349"/>
25525+ <return-value transfer-ownership="none">
25526+ <type name="gint" c:type="gint"/>
25527+ </return-value>
25528+ <parameters>
25529+ <parameter name="class_type" transfer-ownership="none">
25530+ <type name="GType" c:type="GType"/>
25531+ </parameter>
25532+ <parameter name="private_size" transfer-ownership="none">
25533+ <type name="gsize" c:type="gsize"/>
25534+ </parameter>
25535+ </parameters>
25536+ </function>
25537+ <function name="type_add_interface_check"
25538+ c:identifier="g_type_add_interface_check"
25539+ version="2.4"
25540+ introspectable="0">
25541+ <doc xml:space="preserve"
25542+ filename="gobject-2.0.c"
25543+ line="5747">Adds a function to be called after an interface vtable is
25544+initialized for any class (i.e. after the @interface_init
25545+member of #GInterfaceInfo has been called).
25546+
25547+This function is useful when you want to check an invariant
25548+that depends on the interfaces of a class. For instance, the
25549+implementation of #GObject uses this facility to check that an
25550+object implements all of the properties that are defined on its
25551+interfaces.</doc>
25552+ <source-position filename="gtype.h" line="2408"/>
25553+ <return-value transfer-ownership="none">
25554+ <type name="none" c:type="void"/>
25555+ </return-value>
25556+ <parameters>
25557+ <parameter name="check_data"
25558+ transfer-ownership="none"
25559+ nullable="1"
25560+ allow-none="1">
25561+ <doc xml:space="preserve"
25562+ filename="gobject-2.0.c"
25563+ line="5749">data to pass to @check_func</doc>
25564+ <type name="gpointer" c:type="gpointer"/>
25565+ </parameter>
25566+ <parameter name="check_func" transfer-ownership="none">
25567+ <doc xml:space="preserve"
25568+ filename="gobject-2.0.c"
25569+ line="5750">function to be called after each interface
25570+ is initialized</doc>
25571+ <type name="TypeInterfaceCheckFunc"
25572+ c:type="GTypeInterfaceCheckFunc"/>
25573+ </parameter>
25574+ </parameters>
25575+ </function>
25576+ <function name="type_add_interface_dynamic"
25577+ c:identifier="g_type_add_interface_dynamic">
25578+ <doc xml:space="preserve"
25579+ filename="gobject-2.0.c"
25580+ line="5767">Adds @interface_type to the dynamic @instance_type. The information
25581+contained in the #GTypePlugin structure pointed to by @plugin
25582+is used to manage the relationship.</doc>
25583+ <source-position filename="gtype.h" line="1333"/>
25584+ <return-value transfer-ownership="none">
25585+ <type name="none" c:type="void"/>
25586+ </return-value>
25587+ <parameters>
25588+ <parameter name="instance_type" transfer-ownership="none">
25589+ <doc xml:space="preserve"
25590+ filename="gobject-2.0.c"
25591+ line="5769">#GType value of an instantiatable type</doc>
25592+ <type name="GType" c:type="GType"/>
25593+ </parameter>
25594+ <parameter name="interface_type" transfer-ownership="none">
25595+ <doc xml:space="preserve"
25596+ filename="gobject-2.0.c"
25597+ line="5770">#GType value of an interface type</doc>
25598+ <type name="GType" c:type="GType"/>
25599+ </parameter>
25600+ <parameter name="plugin" transfer-ownership="none">
25601+ <doc xml:space="preserve"
25602+ filename="gobject-2.0.c"
25603+ line="5771">#GTypePlugin structure to retrieve the #GInterfaceInfo from</doc>
25604+ <type name="TypePlugin" c:type="GTypePlugin*"/>
25605+ </parameter>
25606+ </parameters>
25607+ </function>
25608+ <function name="type_add_interface_static"
25609+ c:identifier="g_type_add_interface_static">
25610+ <doc xml:space="preserve"
25611+ filename="gobject-2.0.c"
25612+ line="5779">Adds @interface_type to the static @instance_type.
25613+The information contained in the #GInterfaceInfo structure
25614+pointed to by @info is used to manage the relationship.</doc>
25615+ <source-position filename="gtype.h" line="1329"/>
25616+ <return-value transfer-ownership="none">
25617+ <type name="none" c:type="void"/>
25618+ </return-value>
25619+ <parameters>
25620+ <parameter name="instance_type" transfer-ownership="none">
25621+ <doc xml:space="preserve"
25622+ filename="gobject-2.0.c"
25623+ line="5781">#GType value of an instantiatable type</doc>
25624+ <type name="GType" c:type="GType"/>
25625+ </parameter>
25626+ <parameter name="interface_type" transfer-ownership="none">
25627+ <doc xml:space="preserve"
25628+ filename="gobject-2.0.c"
25629+ line="5782">#GType value of an interface type</doc>
25630+ <type name="GType" c:type="GType"/>
25631+ </parameter>
25632+ <parameter name="info" transfer-ownership="none">
25633+ <doc xml:space="preserve"
25634+ filename="gobject-2.0.c"
25635+ line="5783">#GInterfaceInfo structure for this
25636+ (@instance_type, @interface_type) combination</doc>
25637+ <type name="InterfaceInfo" c:type="const GInterfaceInfo*"/>
25638+ </parameter>
25639+ </parameters>
25640+ </function>
25641+ <function name="type_check_class_cast"
25642+ c:identifier="g_type_check_class_cast"
25643+ introspectable="0">
25644+ <source-position filename="gtype.h" line="2431"/>
25645+ <return-value>
25646+ <type name="TypeClass" c:type="GTypeClass*"/>
25647+ </return-value>
25648+ <parameters>
25649+ <parameter name="g_class" transfer-ownership="none">
25650+ <type name="TypeClass" c:type="GTypeClass*"/>
25651+ </parameter>
25652+ <parameter name="is_a_type" transfer-ownership="none">
25653+ <type name="GType" c:type="GType"/>
25654+ </parameter>
25655+ </parameters>
25656+ </function>
25657+ <function name="type_check_class_is_a"
25658+ c:identifier="g_type_check_class_is_a">
25659+ <source-position filename="gtype.h" line="2434"/>
25660+ <return-value transfer-ownership="none">
25661+ <type name="gboolean" c:type="gboolean"/>
25662+ </return-value>
25663+ <parameters>
25664+ <parameter name="g_class" transfer-ownership="none">
25665+ <type name="TypeClass" c:type="GTypeClass*"/>
25666+ </parameter>
25667+ <parameter name="is_a_type" transfer-ownership="none">
25668+ <type name="GType" c:type="GType"/>
25669+ </parameter>
25670+ </parameters>
25671+ </function>
25672+ <function name="type_check_instance" c:identifier="g_type_check_instance">
25673+ <doc xml:space="preserve"
25674+ filename="gobject-2.0.c"
25675+ line="5792">Private helper function to aid implementation of the
25676+G_TYPE_CHECK_INSTANCE() macro.</doc>
25677+ <source-position filename="gtype.h" line="2420"/>
25678+ <return-value transfer-ownership="none">
25679+ <doc xml:space="preserve"
25680+ filename="gobject-2.0.c"
25681+ line="5799">%TRUE if @instance is valid, %FALSE otherwise</doc>
25682+ <type name="gboolean" c:type="gboolean"/>
25683+ </return-value>
25684+ <parameters>
25685+ <parameter name="instance" transfer-ownership="none">
25686+ <doc xml:space="preserve"
25687+ filename="gobject-2.0.c"
25688+ line="5794">a valid #GTypeInstance structure</doc>
25689+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25690+ </parameter>
25691+ </parameters>
25692+ </function>
25693+ <function name="type_check_instance_cast"
25694+ c:identifier="g_type_check_instance_cast"
25695+ introspectable="0">
25696+ <source-position filename="gtype.h" line="2422"/>
25697+ <return-value>
25698+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25699+ </return-value>
25700+ <parameters>
25701+ <parameter name="instance" transfer-ownership="none">
25702+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25703+ </parameter>
25704+ <parameter name="iface_type" transfer-ownership="none">
25705+ <type name="GType" c:type="GType"/>
25706+ </parameter>
25707+ </parameters>
25708+ </function>
25709+ <function name="type_check_instance_is_a"
25710+ c:identifier="g_type_check_instance_is_a">
25711+ <source-position filename="gtype.h" line="2425"/>
25712+ <return-value transfer-ownership="none">
25713+ <type name="gboolean" c:type="gboolean"/>
25714+ </return-value>
25715+ <parameters>
25716+ <parameter name="instance" transfer-ownership="none">
25717+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25718+ </parameter>
25719+ <parameter name="iface_type" transfer-ownership="none">
25720+ <type name="GType" c:type="GType"/>
25721+ </parameter>
25722+ </parameters>
25723+ </function>
25724+ <function name="type_check_instance_is_fundamentally_a"
25725+ c:identifier="g_type_check_instance_is_fundamentally_a">
25726+ <source-position filename="gtype.h" line="2428"/>
25727+ <return-value transfer-ownership="none">
25728+ <type name="gboolean" c:type="gboolean"/>
25729+ </return-value>
25730+ <parameters>
25731+ <parameter name="instance" transfer-ownership="none">
25732+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25733+ </parameter>
25734+ <parameter name="fundamental_type" transfer-ownership="none">
25735+ <type name="GType" c:type="GType"/>
25736+ </parameter>
25737+ </parameters>
25738+ </function>
25739+ <function name="type_check_is_value_type"
25740+ c:identifier="g_type_check_is_value_type">
25741+ <source-position filename="gtype.h" line="2437"/>
25742+ <return-value transfer-ownership="none">
25743+ <type name="gboolean" c:type="gboolean"/>
25744+ </return-value>
25745+ <parameters>
25746+ <parameter name="type" transfer-ownership="none">
25747+ <type name="GType" c:type="GType"/>
25748+ </parameter>
25749+ </parameters>
25750+ </function>
25751+ <function name="type_check_value" c:identifier="g_type_check_value">
25752+ <source-position filename="gtype.h" line="2439"/>
25753+ <return-value transfer-ownership="none">
25754+ <type name="gboolean" c:type="gboolean"/>
25755+ </return-value>
25756+ <parameters>
25757+ <parameter name="value" transfer-ownership="none">
25758+ <type name="Value" c:type="const GValue*"/>
25759+ </parameter>
25760+ </parameters>
25761+ </function>
25762+ <function name="type_check_value_holds"
25763+ c:identifier="g_type_check_value_holds">
25764+ <source-position filename="gtype.h" line="2441"/>
25765+ <return-value transfer-ownership="none">
25766+ <type name="gboolean" c:type="gboolean"/>
25767+ </return-value>
25768+ <parameters>
25769+ <parameter name="value" transfer-ownership="none">
25770+ <type name="Value" c:type="const GValue*"/>
25771+ </parameter>
25772+ <parameter name="type" transfer-ownership="none">
25773+ <type name="GType" c:type="GType"/>
25774+ </parameter>
25775+ </parameters>
25776+ </function>
25777+ <function name="type_children" c:identifier="g_type_children">
25778+ <doc xml:space="preserve"
25779+ filename="gobject-2.0.c"
25780+ line="5803">Return a newly allocated and 0-terminated array of type IDs, listing
25781+the child types of @type.</doc>
25782+ <source-position filename="gtype.h" line="756"/>
25783+ <return-value transfer-ownership="full">
25784+ <doc xml:space="preserve"
25785+ filename="gobject-2.0.c"
25786+ line="5812">Newly allocated
25787+ and 0-terminated array of child types, free with g_free()</doc>
25788+ <array length="1" zero-terminated="0" c:type="GType*">
25789+ <type name="GType" c:type="GType"/>
25790+ </array>
25791+ </return-value>
25792+ <parameters>
25793+ <parameter name="type" transfer-ownership="none">
25794+ <doc xml:space="preserve"
25795+ filename="gobject-2.0.c"
25796+ line="5805">the parent type</doc>
25797+ <type name="GType" c:type="GType"/>
25798+ </parameter>
25799+ <parameter name="n_children"
25800+ direction="out"
25801+ caller-allocates="0"
25802+ transfer-ownership="full"
25803+ optional="1"
25804+ allow-none="1">
25805+ <doc xml:space="preserve"
25806+ filename="gobject-2.0.c"
25807+ line="5806">location to store the length of
25808+ the returned array, or %NULL</doc>
25809+ <type name="guint" c:type="guint*"/>
25810+ </parameter>
25811+ </parameters>
25812+ </function>
25813+ <function name="type_class_adjust_private_offset"
25814+ c:identifier="g_type_class_adjust_private_offset"
25815+ moved-to="TypeClass.adjust_private_offset">
25816+ <source-position filename="gtype.h" line="1355"/>
25817+ <return-value transfer-ownership="none">
25818+ <type name="none" c:type="void"/>
25819+ </return-value>
25820+ <parameters>
25821+ <parameter name="g_class"
25822+ transfer-ownership="none"
25823+ nullable="1"
25824+ allow-none="1">
25825+ <type name="gpointer" c:type="gpointer"/>
25826+ </parameter>
25827+ <parameter name="private_size_or_offset" transfer-ownership="none">
25828+ <type name="gint" c:type="gint*"/>
25829+ </parameter>
25830+ </parameters>
25831+ </function>
25832+ <function name="type_class_peek"
25833+ c:identifier="g_type_class_peek"
25834+ moved-to="TypeClass.peek">
25835+ <doc xml:space="preserve"
25836+ filename="gobject-2.0.c"
25837+ line="5910">This function is essentially the same as g_type_class_ref(),
25838+except that the classes reference count isn't incremented.
25839+As a consequence, this function may return %NULL if the class
25840+of the type passed in does not currently exist (hasn't been
25841+referenced before).</doc>
25842+ <source-position filename="gtype.h" line="734"/>
25843+ <return-value transfer-ownership="none">
25844+ <doc xml:space="preserve"
25845+ filename="gobject-2.0.c"
25846+ line="5920">the #GTypeClass
25847+ structure for the given type ID or %NULL if the class does not
25848+ currently exist</doc>
25849+ <type name="TypeClass" c:type="gpointer"/>
25850+ </return-value>
25851+ <parameters>
25852+ <parameter name="type" transfer-ownership="none">
25853+ <doc xml:space="preserve"
25854+ filename="gobject-2.0.c"
25855+ line="5912">type ID of a classed type</doc>
25856+ <type name="GType" c:type="GType"/>
25857+ </parameter>
25858+ </parameters>
25859+ </function>
25860+ <function name="type_class_peek_static"
25861+ c:identifier="g_type_class_peek_static"
25862+ moved-to="TypeClass.peek_static"
25863+ version="2.4">
25864+ <doc xml:space="preserve"
25865+ filename="gobject-2.0.c"
25866+ line="5945">A more efficient version of g_type_class_peek() which works only for
25867+static types.</doc>
25868+ <source-position filename="gtype.h" line="736"/>
25869+ <return-value transfer-ownership="none">
25870+ <doc xml:space="preserve"
25871+ filename="gobject-2.0.c"
25872+ line="5952">the #GTypeClass
25873+ structure for the given type ID or %NULL if the class does not
25874+ currently exist or is dynamically loaded</doc>
25875+ <type name="TypeClass" c:type="gpointer"/>
25876+ </return-value>
25877+ <parameters>
25878+ <parameter name="type" transfer-ownership="none">
25879+ <doc xml:space="preserve"
25880+ filename="gobject-2.0.c"
25881+ line="5947">type ID of a classed type</doc>
25882+ <type name="GType" c:type="GType"/>
25883+ </parameter>
25884+ </parameters>
25885+ </function>
25886+ <function name="type_class_ref"
25887+ c:identifier="g_type_class_ref"
25888+ moved-to="TypeClass.ref">
25889+ <doc xml:space="preserve"
25890+ filename="gobject-2.0.c"
25891+ line="5959">Increments the reference count of the class structure belonging to
25892+@type. This function will demand-create the class if it doesn't
25893+exist already.</doc>
25894+ <source-position filename="gtype.h" line="732"/>
25895+ <return-value transfer-ownership="none">
25896+ <doc xml:space="preserve"
25897+ filename="gobject-2.0.c"
25898+ line="5967">the #GTypeClass
25899+ structure for the given type ID</doc>
25900+ <type name="TypeClass" c:type="gpointer"/>
25901+ </return-value>
25902+ <parameters>
25903+ <parameter name="type" transfer-ownership="none">
25904+ <doc xml:space="preserve"
25905+ filename="gobject-2.0.c"
25906+ line="5961">type ID of a classed type</doc>
25907+ <type name="GType" c:type="GType"/>
25908+ </parameter>
25909+ </parameters>
25910+ </function>
25911+ <function name="type_create_instance"
25912+ c:identifier="g_type_create_instance"
25913+ introspectable="0">
25914+ <doc xml:space="preserve"
25915+ filename="gobject-2.0.c"
25916+ line="5994">Creates and initializes an instance of @type if @type is valid and
25917+can be instantiated. The type system only performs basic allocation
25918+and structure setups for instances: actual instance creation should
25919+happen through functions supplied by the type's fundamental type
25920+implementation. So use of g_type_create_instance() is reserved for
25921+implementers of fundamental types only. E.g. instances of the
25922+#GObject hierarchy should be created via g_object_new() and never
25923+directly through g_type_create_instance() which doesn't handle things
25924+like singleton objects or object construction.
25925+
25926+The extended members of the returned instance are guaranteed to be filled
25927+with zeros.
25928+
25929+Note: Do not use this function, unless you're implementing a
25930+fundamental type. Also language bindings should not use this
25931+function, but g_object_new() instead.</doc>
25932+ <source-position filename="gtype.h" line="2394"/>
25933+ <return-value>
25934+ <doc xml:space="preserve"
25935+ filename="gobject-2.0.c"
25936+ line="6015">an allocated and initialized instance, subject to further
25937+ treatment by the fundamental type implementation</doc>
25938+ <type name="TypeInstance" c:type="GTypeInstance*"/>
25939+ </return-value>
25940+ <parameters>
25941+ <parameter name="type" transfer-ownership="none">
25942+ <doc xml:space="preserve"
25943+ filename="gobject-2.0.c"
25944+ line="5996">an instantiatable type to create an instance for</doc>
25945+ <type name="GType" c:type="GType"/>
25946+ </parameter>
25947+ </parameters>
25948+ </function>
25949+ <function name="type_default_interface_peek"
25950+ c:identifier="g_type_default_interface_peek"
25951+ version="2.4">
25952+ <doc xml:space="preserve"
25953+ filename="gobject-2.0.c"
25954+ line="6020">If the interface type @g_type is currently in use, returns its
25955+default interface vtable.</doc>
25956+ <source-position filename="gtype.h" line="750"/>
25957+ <return-value transfer-ownership="none">
25958+ <doc xml:space="preserve"
25959+ filename="gobject-2.0.c"
25960+ line="6028">the default
25961+ vtable for the interface, or %NULL if the type is not currently
25962+ in use</doc>
25963+ <type name="TypeInterface" c:type="gpointer"/>
25964+ </return-value>
25965+ <parameters>
25966+ <parameter name="g_type" transfer-ownership="none">
25967+ <doc xml:space="preserve"
25968+ filename="gobject-2.0.c"
25969+ line="6022">an interface type</doc>
25970+ <type name="GType" c:type="GType"/>
25971+ </parameter>
25972+ </parameters>
25973+ </function>
25974+ <function name="type_default_interface_ref"
25975+ c:identifier="g_type_default_interface_ref"
25976+ version="2.4">
25977+ <doc xml:space="preserve"
25978+ filename="gobject-2.0.c"
25979+ line="6034">Increments the reference count for the interface type @g_type,
25980+and returns the default interface vtable for the type.
25981+
25982+If the type is not currently in use, then the default vtable
25983+for the type will be created and initialized by calling
25984+the base interface init and default vtable init functions for
25985+the type (the @base_init and @class_init members of #GTypeInfo).
25986+Calling g_type_default_interface_ref() is useful when you
25987+want to make sure that signals and properties for an interface
25988+have been installed.</doc>
25989+ <source-position filename="gtype.h" line="748"/>
25990+ <return-value transfer-ownership="none">
25991+ <doc xml:space="preserve"
25992+ filename="gobject-2.0.c"
25993+ line="6050">the default
25994+ vtable for the interface; call g_type_default_interface_unref()
25995+ when you are done using the interface.</doc>
25996+ <type name="TypeInterface" c:type="gpointer"/>
25997+ </return-value>
25998+ <parameters>
25999+ <parameter name="g_type" transfer-ownership="none">
26000+ <doc xml:space="preserve"
26001+ filename="gobject-2.0.c"
26002+ line="6036">an interface type</doc>
26003+ <type name="GType" c:type="GType"/>
26004+ </parameter>
26005+ </parameters>
26006+ </function>
26007+ <function name="type_default_interface_unref"
26008+ c:identifier="g_type_default_interface_unref"
26009+ version="2.4">
26010+ <doc xml:space="preserve"
26011+ filename="gobject-2.0.c"
26012+ line="6056">Decrements the reference count for the type corresponding to the
26013+interface default vtable @g_iface. If the type is dynamic, then
26014+when no one is using the interface and all references have
26015+been released, the finalize function for the interface's default
26016+vtable (the @class_finalize member of #GTypeInfo) will be called.</doc>
26017+ <source-position filename="gtype.h" line="752"/>
26018+ <return-value transfer-ownership="none">
26019+ <type name="none" c:type="void"/>
26020+ </return-value>
26021+ <parameters>
26022+ <parameter name="g_iface" transfer-ownership="none">
26023+ <doc xml:space="preserve"
26024+ filename="gobject-2.0.c"
26025+ line="6058">the default vtable
26026+ structure for an interface, as returned by g_type_default_interface_ref()</doc>
26027+ <type name="TypeInterface" c:type="gpointer"/>
26028+ </parameter>
26029+ </parameters>
26030+ </function>
26031+ <function name="type_depth" c:identifier="g_type_depth">
26032+ <doc xml:space="preserve"
26033+ filename="gobject-2.0.c"
26034+ line="6071">Returns the length of the ancestry of the passed in type. This
26035+includes the type itself, so that e.g. a fundamental type has depth 1.</doc>
26036+ <source-position filename="gtype.h" line="724"/>
26037+ <return-value transfer-ownership="none">
26038+ <doc xml:space="preserve"
26039+ filename="gobject-2.0.c"
26040+ line="6078">the depth of @type</doc>
26041+ <type name="guint" c:type="guint"/>
26042+ </return-value>
26043+ <parameters>
26044+ <parameter name="type" transfer-ownership="none">
26045+ <doc xml:space="preserve"
26046+ filename="gobject-2.0.c"
26047+ line="6073">a #GType</doc>
26048+ <type name="GType" c:type="GType"/>
26049+ </parameter>
26050+ </parameters>
26051+ </function>
26052+ <function name="type_ensure" c:identifier="g_type_ensure" version="2.34">
26053+ <doc xml:space="preserve"
26054+ filename="gobject-2.0.c"
26055+ line="6082">Ensures that the indicated @type has been registered with the
26056+type system, and its _class_init() method has been run.
26057+
26058+In theory, simply calling the type's _get_type() method (or using
26059+the corresponding macro) is supposed take care of this. However,
26060+_get_type() methods are often marked %G_GNUC_CONST for performance
26061+reasons, even though this is technically incorrect (since
26062+%G_GNUC_CONST requires that the function not have side effects,
26063+which _get_type() methods do on the first call). As a result, if
26064+you write a bare call to a _get_type() macro, it may get optimized
26065+out by the compiler. Using g_type_ensure() guarantees that the
26066+type's _get_type() method is called.</doc>
26067+ <source-position filename="gtype.h" line="1368"/>
26068+ <return-value transfer-ownership="none">
26069+ <type name="none" c:type="void"/>
26070+ </return-value>
26071+ <parameters>
26072+ <parameter name="type" transfer-ownership="none">
26073+ <doc xml:space="preserve"
26074+ filename="gobject-2.0.c"
26075+ line="6084">a #GType</doc>
26076+ <type name="GType" c:type="GType"/>
26077+ </parameter>
26078+ </parameters>
26079+ </function>
26080+ <function name="type_free_instance" c:identifier="g_type_free_instance">
26081+ <doc xml:space="preserve"
26082+ filename="gobject-2.0.c"
26083+ line="6103">Frees an instance of a type, returning it to the instance pool for
26084+the type, if there is one.
26085+
26086+Like g_type_create_instance(), this function is reserved for
26087+implementors of fundamental types.</doc>
26088+ <source-position filename="gtype.h" line="2396"/>
26089+ <return-value transfer-ownership="none">
26090+ <type name="none" c:type="void"/>
26091+ </return-value>
26092+ <parameters>
26093+ <parameter name="instance" transfer-ownership="none">
26094+ <doc xml:space="preserve"
26095+ filename="gobject-2.0.c"
26096+ line="6105">an instance of a type</doc>
26097+ <type name="TypeInstance" c:type="GTypeInstance*"/>
26098+ </parameter>
26099+ </parameters>
26100+ </function>
26101+ <function name="type_from_name" c:identifier="g_type_from_name">
26102+ <doc xml:space="preserve"
26103+ filename="gobject-2.0.c"
26104+ line="6115">Look up the type ID from a given type name, returning 0 if no type
26105+has been registered under this name (this is the preferred method
26106+to find out by name whether a specific type has been registered
26107+yet).</doc>
26108+ <source-position filename="gtype.h" line="720"/>
26109+ <return-value transfer-ownership="none">
26110+ <doc xml:space="preserve"
26111+ filename="gobject-2.0.c"
26112+ line="6124">corresponding type ID or 0</doc>
26113+ <type name="GType" c:type="GType"/>
26114+ </return-value>
26115+ <parameters>
26116+ <parameter name="name" transfer-ownership="none">
26117+ <doc xml:space="preserve"
26118+ filename="gobject-2.0.c"
26119+ line="6117">type name to look up</doc>
26120+ <type name="utf8" c:type="const gchar*"/>
26121+ </parameter>
26122+ </parameters>
26123+ </function>
26124+ <function name="type_fundamental" c:identifier="g_type_fundamental">
26125+ <doc xml:space="preserve"
26126+ filename="gobject-2.0.c"
26127+ line="6128">Internal function, used to extract the fundamental type ID portion.
26128+Use G_TYPE_FUNDAMENTAL() instead.</doc>
26129+ <source-position filename="gtype.h" line="2392"/>
26130+ <return-value transfer-ownership="none">
26131+ <doc xml:space="preserve"
26132+ filename="gobject-2.0.c"
26133+ line="6135">fundamental type ID</doc>
26134+ <type name="GType" c:type="GType"/>
26135+ </return-value>
26136+ <parameters>
26137+ <parameter name="type_id" transfer-ownership="none">
26138+ <doc xml:space="preserve"
26139+ filename="gobject-2.0.c"
26140+ line="6130">valid type ID</doc>
26141+ <type name="GType" c:type="GType"/>
26142+ </parameter>
26143+ </parameters>
26144+ </function>
26145+ <function name="type_fundamental_next"
26146+ c:identifier="g_type_fundamental_next">
26147+ <doc xml:space="preserve"
26148+ filename="gobject-2.0.c"
26149+ line="6139">Returns the next free fundamental type id which can be used to
26150+register a new fundamental type with g_type_register_fundamental().
26151+The returned type ID represents the highest currently registered
26152+fundamental type identifier.</doc>
26153+ <source-position filename="gtype.h" line="2390"/>
26154+ <return-value transfer-ownership="none">
26155+ <doc xml:space="preserve"
26156+ filename="gobject-2.0.c"
26157+ line="6147">the next available fundamental type ID to be registered,
26158+ or 0 if the type system ran out of fundamental type IDs</doc>
26159+ <type name="GType" c:type="GType"/>
26160+ </return-value>
26161+ </function>
26162+ <function name="type_get_instance_count"
26163+ c:identifier="g_type_get_instance_count"
26164+ version="2.44">
26165+ <doc xml:space="preserve"
26166+ filename="gobject-2.0.c"
26167+ line="6152">Returns the number of instances allocated of the particular type;
26168+this is only available if GLib is built with debugging support and
26169+the instance_count debug flag is set (by setting the GOBJECT_DEBUG
26170+variable to include instance-count).</doc>
26171+ <source-position filename="gtype.h" line="775"/>
26172+ <return-value transfer-ownership="none">
26173+ <doc xml:space="preserve"
26174+ filename="gobject-2.0.c"
26175+ line="6161">the number of instances allocated of the given type;
26176+ if instance counts are not available, returns 0.</doc>
26177+ <type name="gint" c:type="int"/>
26178+ </return-value>
26179+ <parameters>
26180+ <parameter name="type" transfer-ownership="none">
26181+ <doc xml:space="preserve"
26182+ filename="gobject-2.0.c"
26183+ line="6154">a #GType</doc>
26184+ <type name="GType" c:type="GType"/>
26185+ </parameter>
26186+ </parameters>
26187+ </function>
26188+ <function name="type_get_plugin" c:identifier="g_type_get_plugin">
26189+ <doc xml:space="preserve"
26190+ filename="gobject-2.0.c"
26191+ line="6167">Returns the #GTypePlugin structure for @type.</doc>
26192+ <source-position filename="gtype.h" line="2385"/>
26193+ <return-value transfer-ownership="none">
26194+ <doc xml:space="preserve"
26195+ filename="gobject-2.0.c"
26196+ line="6173">the corresponding plugin
26197+ if @type is a dynamic type, %NULL otherwise</doc>
26198+ <type name="TypePlugin" c:type="GTypePlugin*"/>
26199+ </return-value>
26200+ <parameters>
26201+ <parameter name="type" transfer-ownership="none">
26202+ <doc xml:space="preserve"
26203+ filename="gobject-2.0.c"
26204+ line="6169">#GType to retrieve the plugin for</doc>
26205+ <type name="GType" c:type="GType"/>
26206+ </parameter>
26207+ </parameters>
26208+ </function>
26209+ <function name="type_get_qdata" c:identifier="g_type_get_qdata">
26210+ <doc xml:space="preserve"
26211+ filename="gobject-2.0.c"
26212+ line="6178">Obtains data which has previously been attached to @type
26213+with g_type_set_qdata().
26214+
26215+Note that this does not take subtyping into account; data
26216+attached to one type with g_type_set_qdata() cannot
26217+be retrieved from a subtype using g_type_get_qdata().</doc>
26218+ <source-position filename="gtype.h" line="768"/>
26219+ <return-value transfer-ownership="none" nullable="1">
26220+ <doc xml:space="preserve"
26221+ filename="gobject-2.0.c"
26222+ line="6190">the data, or %NULL if no data was found</doc>
26223+ <type name="gpointer" c:type="gpointer"/>
26224+ </return-value>
26225+ <parameters>
26226+ <parameter name="type" transfer-ownership="none">
26227+ <doc xml:space="preserve"
26228+ filename="gobject-2.0.c"
26229+ line="6180">a #GType</doc>
26230+ <type name="GType" c:type="GType"/>
26231+ </parameter>
26232+ <parameter name="quark" transfer-ownership="none">
26233+ <doc xml:space="preserve"
26234+ filename="gobject-2.0.c"
26235+ line="6181">a #GQuark id to identify the data</doc>
26236+ <type name="GLib.Quark" c:type="GQuark"/>
26237+ </parameter>
26238+ </parameters>
26239+ </function>
26240+ <function name="type_get_type_registration_serial"
26241+ c:identifier="g_type_get_type_registration_serial"
26242+ version="2.36">
26243+ <doc xml:space="preserve"
26244+ filename="gobject-2.0.c"
26245+ line="6194">Returns an opaque serial number that represents the state of the set
26246+of registered types. Any time a type is registered this serial changes,
26247+which means you can cache information based on type lookups (such as
26248+g_type_from_name()) and know if the cache is still valid at a later
26249+time by comparing the current serial with the one at the type lookup.</doc>
26250+ <source-position filename="gtype.h" line="1370"/>
26251+ <return-value transfer-ownership="none">
26252+ <doc xml:space="preserve"
26253+ filename="gobject-2.0.c"
26254+ line="6204">An unsigned int, representing the state of type registrations</doc>
26255+ <type name="guint" c:type="guint"/>
26256+ </return-value>
26257+ </function>
26258+ <function name="type_init"
26259+ c:identifier="g_type_init"
26260+ deprecated="1"
26261+ deprecated-version="2.36">
26262+ <doc xml:space="preserve"
26263+ filename="gobject-2.0.c"
26264+ line="6208">This function used to initialise the type system. Since GLib 2.36,
26265+the type system is initialised automatically and this function does
26266+nothing.</doc>
26267+ <doc-deprecated xml:space="preserve">the type system is now initialised automatically</doc-deprecated>
26268+ <source-position filename="gtype.h" line="710"/>
26269+ <return-value transfer-ownership="none">
26270+ <type name="none" c:type="void"/>
26271+ </return-value>
26272+ </function>
26273+ <function name="type_init_with_debug_flags"
26274+ c:identifier="g_type_init_with_debug_flags"
26275+ deprecated="1"
26276+ deprecated-version="2.36">
26277+ <doc xml:space="preserve"
26278+ filename="gobject-2.0.c"
26279+ line="6219">This function used to initialise the type system with debugging
26280+flags. Since GLib 2.36, the type system is initialised automatically
26281+and this function does nothing.
26282+
26283+If you need to enable debugging features, use the GOBJECT_DEBUG
26284+environment variable.</doc>
26285+ <doc-deprecated xml:space="preserve">the type system is now initialised automatically</doc-deprecated>
26286+ <source-position filename="gtype.h" line="712"/>
26287+ <return-value transfer-ownership="none">
26288+ <type name="none" c:type="void"/>
26289+ </return-value>
26290+ <parameters>
26291+ <parameter name="debug_flags" transfer-ownership="none">
26292+ <doc xml:space="preserve"
26293+ filename="gobject-2.0.c"
26294+ line="6221">bitwise combination of #GTypeDebugFlags values for
26295+ debugging purposes</doc>
26296+ <type name="TypeDebugFlags" c:type="GTypeDebugFlags"/>
26297+ </parameter>
26298+ </parameters>
26299+ </function>
26300+ <function name="type_interface_add_prerequisite"
26301+ c:identifier="g_type_interface_add_prerequisite"
26302+ moved-to="TypeInterface.add_prerequisite">
26303+ <doc xml:space="preserve"
26304+ filename="gobject-2.0.c"
26305+ line="6235">Adds @prerequisite_type to the list of prerequisites of @interface_type.
26306+This means that any type implementing @interface_type must also implement
26307+@prerequisite_type. Prerequisites can be thought of as an alternative to
26308+interface derivation (which GType doesn't support). An interface can have
26309+at most one instantiatable prerequisite type.</doc>
26310+ <source-position filename="gtype.h" line="1337"/>
26311+ <return-value transfer-ownership="none">
26312+ <type name="none" c:type="void"/>
26313+ </return-value>
26314+ <parameters>
26315+ <parameter name="interface_type" transfer-ownership="none">
26316+ <doc xml:space="preserve"
26317+ filename="gobject-2.0.c"
26318+ line="6237">#GType value of an interface type</doc>
26319+ <type name="GType" c:type="GType"/>
26320+ </parameter>
26321+ <parameter name="prerequisite_type" transfer-ownership="none">
26322+ <doc xml:space="preserve"
26323+ filename="gobject-2.0.c"
26324+ line="6238">#GType value of an interface or instantiatable type</doc>
26325+ <type name="GType" c:type="GType"/>
26326+ </parameter>
26327+ </parameters>
26328+ </function>
26329+ <function name="type_interface_get_plugin"
26330+ c:identifier="g_type_interface_get_plugin"
26331+ moved-to="TypeInterface.get_plugin">
26332+ <doc xml:space="preserve"
26333+ filename="gobject-2.0.c"
26334+ line="6248">Returns the #GTypePlugin structure for the dynamic interface
26335+@interface_type which has been added to @instance_type, or %NULL
26336+if @interface_type has not been added to @instance_type or does
26337+not have a #GTypePlugin structure. See g_type_add_interface_dynamic().</doc>
26338+ <source-position filename="gtype.h" line="2387"/>
26339+ <return-value transfer-ownership="none">
26340+ <doc xml:space="preserve"
26341+ filename="gobject-2.0.c"
26342+ line="6258">the #GTypePlugin for the dynamic
26343+ interface @interface_type of @instance_type</doc>
26344+ <type name="TypePlugin" c:type="GTypePlugin*"/>
26345+ </return-value>
26346+ <parameters>
26347+ <parameter name="instance_type" transfer-ownership="none">
26348+ <doc xml:space="preserve"
26349+ filename="gobject-2.0.c"
26350+ line="6250">#GType of an instantiatable type</doc>
26351+ <type name="GType" c:type="GType"/>
26352+ </parameter>
26353+ <parameter name="interface_type" transfer-ownership="none">
26354+ <doc xml:space="preserve"
26355+ filename="gobject-2.0.c"
26356+ line="6251">#GType of an interface type</doc>
26357+ <type name="GType" c:type="GType"/>
26358+ </parameter>
26359+ </parameters>
26360+ </function>
26361+ <function name="type_interface_instantiatable_prerequisite"
26362+ c:identifier="g_type_interface_instantiatable_prerequisite"
26363+ moved-to="TypeInterface.instantiatable_prerequisite"
26364+ version="2.68">
26365+ <doc xml:space="preserve"
26366+ filename="gobject-2.0.c"
26367+ line="6263">Returns the most specific instantiatable prerequisite of an
26368+interface type. If the interface type has no instantiatable
26369+prerequisite, %G_TYPE_INVALID is returned.
26370+
26371+See g_type_interface_add_prerequisite() for more information
26372+about prerequisites.</doc>
26373+ <source-position filename="gtype.h" line="1343"/>
26374+ <return-value transfer-ownership="none">
26375+ <doc xml:space="preserve"
26376+ filename="gobject-2.0.c"
26377+ line="6274">the instantiatable prerequisite type or %G_TYPE_INVALID if none</doc>
26378+ <type name="GType" c:type="GType"/>
26379+ </return-value>
26380+ <parameters>
26381+ <parameter name="interface_type" transfer-ownership="none">
26382+ <doc xml:space="preserve"
26383+ filename="gobject-2.0.c"
26384+ line="6265">an interface type</doc>
26385+ <type name="GType" c:type="GType"/>
26386+ </parameter>
26387+ </parameters>
26388+ </function>
26389+ <function name="type_interface_peek"
26390+ c:identifier="g_type_interface_peek"
26391+ moved-to="TypeInterface.peek">
26392+ <doc xml:space="preserve"
26393+ filename="gobject-2.0.c"
26394+ line="6279">Returns the #GTypeInterface structure of an interface to which the
26395+passed in class conforms.</doc>
26396+ <source-position filename="gtype.h" line="742"/>
26397+ <return-value transfer-ownership="none">
26398+ <doc xml:space="preserve"
26399+ filename="gobject-2.0.c"
26400+ line="6287">the #GTypeInterface
26401+ structure of @iface_type if implemented by @instance_class, %NULL
26402+ otherwise</doc>
26403+ <type name="TypeInterface" c:type="gpointer"/>
26404+ </return-value>
26405+ <parameters>
26406+ <parameter name="instance_class" transfer-ownership="none">
26407+ <doc xml:space="preserve"
26408+ filename="gobject-2.0.c"
26409+ line="6281">a #GTypeClass structure</doc>
26410+ <type name="TypeClass" c:type="gpointer"/>
26411+ </parameter>
26412+ <parameter name="iface_type" transfer-ownership="none">
26413+ <doc xml:space="preserve"
26414+ filename="gobject-2.0.c"
26415+ line="6282">an interface ID which this class conforms to</doc>
26416+ <type name="GType" c:type="GType"/>
26417+ </parameter>
26418+ </parameters>
26419+ </function>
26420+ <function name="type_interface_prerequisites"
26421+ c:identifier="g_type_interface_prerequisites"
26422+ moved-to="TypeInterface.prerequisites"
26423+ version="2.2">
26424+ <doc xml:space="preserve"
26425+ filename="gobject-2.0.c"
26426+ line="6309">Returns the prerequisites of an interfaces type.</doc>
26427+ <source-position filename="gtype.h" line="1340"/>
26428+ <return-value transfer-ownership="full">
26429+ <doc xml:space="preserve"
26430+ filename="gobject-2.0.c"
26431+ line="6318">a
26432+ newly-allocated zero-terminated array of #GType containing
26433+ the prerequisites of @interface_type</doc>
26434+ <array length="1" zero-terminated="0" c:type="GType*">
26435+ <type name="GType" c:type="GType"/>
26436+ </array>
26437+ </return-value>
26438+ <parameters>
26439+ <parameter name="interface_type" transfer-ownership="none">
26440+ <doc xml:space="preserve"
26441+ filename="gobject-2.0.c"
26442+ line="6311">an interface type</doc>
26443+ <type name="GType" c:type="GType"/>
26444+ </parameter>
26445+ <parameter name="n_prerequisites"
26446+ direction="out"
26447+ caller-allocates="0"
26448+ transfer-ownership="full"
26449+ optional="1"
26450+ allow-none="1">
26451+ <doc xml:space="preserve"
26452+ filename="gobject-2.0.c"
26453+ line="6312">location to return the number
26454+ of prerequisites, or %NULL</doc>
26455+ <type name="guint" c:type="guint*"/>
26456+ </parameter>
26457+ </parameters>
26458+ </function>
26459+ <function name="type_interfaces" c:identifier="g_type_interfaces">
26460+ <doc xml:space="preserve"
26461+ filename="gobject-2.0.c"
26462+ line="6324">Return a newly allocated and 0-terminated array of type IDs, listing
26463+the interface types that @type conforms to.</doc>
26464+ <source-position filename="gtype.h" line="759"/>
26465+ <return-value transfer-ownership="full">
26466+ <doc xml:space="preserve"
26467+ filename="gobject-2.0.c"
26468+ line="6333">Newly allocated
26469+ and 0-terminated array of interface types, free with g_free()</doc>
26470+ <array length="1" zero-terminated="0" c:type="GType*">
26471+ <type name="GType" c:type="GType"/>
26472+ </array>
26473+ </return-value>
26474+ <parameters>
26475+ <parameter name="type" transfer-ownership="none">
26476+ <doc xml:space="preserve"
26477+ filename="gobject-2.0.c"
26478+ line="6326">the type to list interface types for</doc>
26479+ <type name="GType" c:type="GType"/>
26480+ </parameter>
26481+ <parameter name="n_interfaces"
26482+ direction="out"
26483+ caller-allocates="0"
26484+ transfer-ownership="full"
26485+ optional="1"
26486+ allow-none="1">
26487+ <doc xml:space="preserve"
26488+ filename="gobject-2.0.c"
26489+ line="6327">location to store the length of
26490+ the returned array, or %NULL</doc>
26491+ <type name="guint" c:type="guint*"/>
26492+ </parameter>
26493+ </parameters>
26494+ </function>
26495+ <function name="type_is_a" c:identifier="g_type_is_a">
26496+ <doc xml:space="preserve"
26497+ filename="gobject-2.0.c"
26498+ line="6338">If @is_a_type is a derivable type, check whether @type is a
26499+descendant of @is_a_type. If @is_a_type is an interface, check
26500+whether @type conforms to it.</doc>
26501+ <source-position filename="gtype.h" line="729"/>
26502+ <return-value transfer-ownership="none">
26503+ <doc xml:space="preserve"
26504+ filename="gobject-2.0.c"
26505+ line="6348">%TRUE if @type is a @is_a_type</doc>
26506+ <type name="gboolean" c:type="gboolean"/>
26507+ </return-value>
26508+ <parameters>
26509+ <parameter name="type" transfer-ownership="none">
26510+ <doc xml:space="preserve"
26511+ filename="gobject-2.0.c"
26512+ line="6340">type to check ancestry for</doc>
26513+ <type name="GType" c:type="GType"/>
26514+ </parameter>
26515+ <parameter name="is_a_type" transfer-ownership="none">
26516+ <doc xml:space="preserve"
26517+ filename="gobject-2.0.c"
26518+ line="6341">possible ancestor of @type or interface that @type
26519+ could conform to</doc>
26520+ <type name="GType" c:type="GType"/>
26521+ </parameter>
26522+ </parameters>
26523+ </function>
26524+ <function name="type_name" c:identifier="g_type_name">
26525+ <doc xml:space="preserve"
26526+ filename="gobject-2.0.c"
26527+ line="6483">Get the unique name that is assigned to a type ID. Note that this
26528+function (like all other GType API) cannot cope with invalid type
26529+IDs. %G_TYPE_INVALID may be passed to this function, as may be any
26530+other validly registered type ID, but randomized type IDs should
26531+not be passed in and will most likely lead to a crash.</doc>
26532+ <source-position filename="gtype.h" line="716"/>
26533+ <return-value transfer-ownership="none">
26534+ <doc xml:space="preserve"
26535+ filename="gobject-2.0.c"
26536+ line="6493">static type name or %NULL</doc>
26537+ <type name="utf8" c:type="const gchar*"/>
26538+ </return-value>
26539+ <parameters>
26540+ <parameter name="type" transfer-ownership="none">
26541+ <doc xml:space="preserve"
26542+ filename="gobject-2.0.c"
26543+ line="6485">type to return name for</doc>
26544+ <type name="GType" c:type="GType"/>
26545+ </parameter>
26546+ </parameters>
26547+ </function>
26548+ <function name="type_name_from_class"
26549+ c:identifier="g_type_name_from_class">
26550+ <source-position filename="gtype.h" line="2452"/>
26551+ <return-value transfer-ownership="none">
26552+ <type name="utf8" c:type="const gchar*"/>
26553+ </return-value>
26554+ <parameters>
26555+ <parameter name="g_class" transfer-ownership="none">
26556+ <type name="TypeClass" c:type="GTypeClass*"/>
26557+ </parameter>
26558+ </parameters>
26559+ </function>
26560+ <function name="type_name_from_instance"
26561+ c:identifier="g_type_name_from_instance">
26562+ <source-position filename="gtype.h" line="2450"/>
26563+ <return-value transfer-ownership="none">
26564+ <type name="utf8" c:type="const gchar*"/>
26565+ </return-value>
26566+ <parameters>
26567+ <parameter name="instance" transfer-ownership="none">
26568+ <type name="TypeInstance" c:type="GTypeInstance*"/>
26569+ </parameter>
26570+ </parameters>
26571+ </function>
26572+ <function name="type_next_base" c:identifier="g_type_next_base">
26573+ <doc xml:space="preserve"
26574+ filename="gobject-2.0.c"
26575+ line="6497">Given a @leaf_type and a @root_type which is contained in its
26576+ancestry, return the type that @root_type is the immediate parent
26577+of. In other words, this function determines the type that is
26578+derived directly from @root_type which is also a base class of
26579+@leaf_type. Given a root type and a leaf type, this function can
26580+be used to determine the types and order in which the leaf type is
26581+descended from the root type.</doc>
26582+ <source-position filename="gtype.h" line="726"/>
26583+ <return-value transfer-ownership="none">
26584+ <doc xml:space="preserve"
26585+ filename="gobject-2.0.c"
26586+ line="6510">immediate child of @root_type and ancestor of @leaf_type</doc>
26587+ <type name="GType" c:type="GType"/>
26588+ </return-value>
26589+ <parameters>
26590+ <parameter name="leaf_type" transfer-ownership="none">
26591+ <doc xml:space="preserve"
26592+ filename="gobject-2.0.c"
26593+ line="6499">descendant of @root_type and the type to be returned</doc>
26594+ <type name="GType" c:type="GType"/>
26595+ </parameter>
26596+ <parameter name="root_type" transfer-ownership="none">
26597+ <doc xml:space="preserve"
26598+ filename="gobject-2.0.c"
26599+ line="6500">immediate parent of the returned type</doc>
26600+ <type name="GType" c:type="GType"/>
26601+ </parameter>
26602+ </parameters>
26603+ </function>
26604+ <function name="type_parent" c:identifier="g_type_parent">
26605+ <doc xml:space="preserve"
26606+ filename="gobject-2.0.c"
26607+ line="6514">Return the direct parent type of the passed in type. If the passed
26608+in type has no parent, i.e. is a fundamental type, 0 is returned.</doc>
26609+ <source-position filename="gtype.h" line="722"/>
26610+ <return-value transfer-ownership="none">
26611+ <doc xml:space="preserve"
26612+ filename="gobject-2.0.c"
26613+ line="6521">the parent type</doc>
26614+ <type name="GType" c:type="GType"/>
26615+ </return-value>
26616+ <parameters>
26617+ <parameter name="type" transfer-ownership="none">
26618+ <doc xml:space="preserve"
26619+ filename="gobject-2.0.c"
26620+ line="6516">the derived type</doc>
26621+ <type name="GType" c:type="GType"/>
26622+ </parameter>
26623+ </parameters>
26624+ </function>
26625+ <function name="type_qname" c:identifier="g_type_qname">
26626+ <doc xml:space="preserve"
26627+ filename="gobject-2.0.c"
26628+ line="6572">Get the corresponding quark of the type IDs name.</doc>
26629+ <source-position filename="gtype.h" line="718"/>
26630+ <return-value transfer-ownership="none">
26631+ <doc xml:space="preserve"
26632+ filename="gobject-2.0.c"
26633+ line="6578">the type names quark or 0</doc>
26634+ <type name="GLib.Quark" c:type="GQuark"/>
26635+ </return-value>
26636+ <parameters>
26637+ <parameter name="type" transfer-ownership="none">
26638+ <doc xml:space="preserve"
26639+ filename="gobject-2.0.c"
26640+ line="6574">type to return quark of type name for</doc>
26641+ <type name="GType" c:type="GType"/>
26642+ </parameter>
26643+ </parameters>
26644+ </function>
26645+ <function name="type_query" c:identifier="g_type_query">
26646+ <doc xml:space="preserve"
26647+ filename="gobject-2.0.c"
26648+ line="6582">Queries the type system for information about a specific type.
26649+This function will fill in a user-provided structure to hold
26650+type-specific information. If an invalid #GType is passed in, the
26651+@type member of the #GTypeQuery is 0. All members filled into the
26652+#GTypeQuery structure should be considered constant and have to be
26653+left untouched.</doc>
26654+ <source-position filename="gtype.h" line="771"/>
26655+ <return-value transfer-ownership="none">
26656+ <type name="none" c:type="void"/>
26657+ </return-value>
26658+ <parameters>
26659+ <parameter name="type" transfer-ownership="none">
26660+ <doc xml:space="preserve"
26661+ filename="gobject-2.0.c"
26662+ line="6584">#GType of a static, classed type</doc>
26663+ <type name="GType" c:type="GType"/>
26664+ </parameter>
26665+ <parameter name="query"
26666+ direction="out"
26667+ caller-allocates="1"
26668+ transfer-ownership="none">
26669+ <doc xml:space="preserve"
26670+ filename="gobject-2.0.c"
26671+ line="6585">a user provided structure that is
26672+ filled in with constant values upon success</doc>
26673+ <type name="TypeQuery" c:type="GTypeQuery*"/>
26674+ </parameter>
26675+ </parameters>
26676+ </function>
26677+ <function name="type_register_dynamic"
26678+ c:identifier="g_type_register_dynamic">
26679+ <doc xml:space="preserve"
26680+ filename="gobject-2.0.c"
26681+ line="6597">Registers @type_name as the name of a new dynamic type derived from
26682+@parent_type. The type system uses the information contained in the
26683+#GTypePlugin structure pointed to by @plugin to manage the type and its
26684+instances (if not abstract). The value of @flags determines the nature
26685+(e.g. abstract or not) of the type.</doc>
26686+ <source-position filename="gtype.h" line="1318"/>
26687+ <return-value transfer-ownership="none">
26688+ <doc xml:space="preserve"
26689+ filename="gobject-2.0.c"
26690+ line="6610">the new type identifier or %G_TYPE_INVALID if registration failed</doc>
26691+ <type name="GType" c:type="GType"/>
26692+ </return-value>
26693+ <parameters>
26694+ <parameter name="parent_type" transfer-ownership="none">
26695+ <doc xml:space="preserve"
26696+ filename="gobject-2.0.c"
26697+ line="6599">type from which this type will be derived</doc>
26698+ <type name="GType" c:type="GType"/>
26699+ </parameter>
26700+ <parameter name="type_name" transfer-ownership="none">
26701+ <doc xml:space="preserve"
26702+ filename="gobject-2.0.c"
26703+ line="6600">0-terminated string used as the name of the new type</doc>
26704+ <type name="utf8" c:type="const gchar*"/>
26705+ </parameter>
26706+ <parameter name="plugin" transfer-ownership="none">
26707+ <doc xml:space="preserve"
26708+ filename="gobject-2.0.c"
26709+ line="6601">#GTypePlugin structure to retrieve the #GTypeInfo from</doc>
26710+ <type name="TypePlugin" c:type="GTypePlugin*"/>
26711+ </parameter>
26712+ <parameter name="flags" transfer-ownership="none">
26713+ <doc xml:space="preserve"
26714+ filename="gobject-2.0.c"
26715+ line="6602">bitwise combination of #GTypeFlags values</doc>
26716+ <type name="TypeFlags" c:type="GTypeFlags"/>
26717+ </parameter>
26718+ </parameters>
26719+ </function>
26720+ <function name="type_register_fundamental"
26721+ c:identifier="g_type_register_fundamental">
26722+ <doc xml:space="preserve"
26723+ filename="gobject-2.0.c"
26724+ line="6614">Registers @type_id as the predefined identifier and @type_name as the
26725+name of a fundamental type. If @type_id is already registered, or a
26726+type named @type_name is already registered, the behaviour is undefined.
26727+The type system uses the information contained in the #GTypeInfo structure
26728+pointed to by @info and the #GTypeFundamentalInfo structure pointed to by
26729+@finfo to manage the type and its instances. The value of @flags determines
26730+additional characteristics of the fundamental type.</doc>
26731+ <source-position filename="gtype.h" line="1323"/>
26732+ <return-value transfer-ownership="none">
26733+ <doc xml:space="preserve"
26734+ filename="gobject-2.0.c"
26735+ line="6630">the predefined type identifier</doc>
26736+ <type name="GType" c:type="GType"/>
26737+ </return-value>
26738+ <parameters>
26739+ <parameter name="type_id" transfer-ownership="none">
26740+ <doc xml:space="preserve"
26741+ filename="gobject-2.0.c"
26742+ line="6616">a predefined type identifier</doc>
26743+ <type name="GType" c:type="GType"/>
26744+ </parameter>
26745+ <parameter name="type_name" transfer-ownership="none">
26746+ <doc xml:space="preserve"
26747+ filename="gobject-2.0.c"
26748+ line="6617">0-terminated string used as the name of the new type</doc>
26749+ <type name="utf8" c:type="const gchar*"/>
26750+ </parameter>
26751+ <parameter name="info" transfer-ownership="none">
26752+ <doc xml:space="preserve"
26753+ filename="gobject-2.0.c"
26754+ line="6618">#GTypeInfo structure for this type</doc>
26755+ <type name="TypeInfo" c:type="const GTypeInfo*"/>
26756+ </parameter>
26757+ <parameter name="finfo" transfer-ownership="none">
26758+ <doc xml:space="preserve"
26759+ filename="gobject-2.0.c"
26760+ line="6619">#GTypeFundamentalInfo structure for this type</doc>
26761+ <type name="TypeFundamentalInfo"
26762+ c:type="const GTypeFundamentalInfo*"/>
26763+ </parameter>
26764+ <parameter name="flags" transfer-ownership="none">
26765+ <doc xml:space="preserve"
26766+ filename="gobject-2.0.c"
26767+ line="6620">bitwise combination of #GTypeFlags values</doc>
26768+ <type name="TypeFlags" c:type="GTypeFlags"/>
26769+ </parameter>
26770+ </parameters>
26771+ </function>
26772+ <function name="type_register_static"
26773+ c:identifier="g_type_register_static">
26774+ <doc xml:space="preserve"
26775+ filename="gobject-2.0.c"
26776+ line="6634">Registers @type_name as the name of a new static type derived from
26777+@parent_type. The type system uses the information contained in the
26778+#GTypeInfo structure pointed to by @info to manage the type and its
26779+instances (if not abstract). The value of @flags determines the nature
26780+(e.g. abstract or not) of the type.</doc>
26781+ <source-position filename="gtype.h" line="1304"/>
26782+ <return-value transfer-ownership="none">
26783+ <doc xml:space="preserve"
26784+ filename="gobject-2.0.c"
26785+ line="6647">the new type identifier</doc>
26786+ <type name="GType" c:type="GType"/>
26787+ </return-value>
26788+ <parameters>
26789+ <parameter name="parent_type" transfer-ownership="none">
26790+ <doc xml:space="preserve"
26791+ filename="gobject-2.0.c"
26792+ line="6636">type from which this type will be derived</doc>
26793+ <type name="GType" c:type="GType"/>
26794+ </parameter>
26795+ <parameter name="type_name" transfer-ownership="none">
26796+ <doc xml:space="preserve"
26797+ filename="gobject-2.0.c"
26798+ line="6637">0-terminated string used as the name of the new type</doc>
26799+ <type name="utf8" c:type="const gchar*"/>
26800+ </parameter>
26801+ <parameter name="info" transfer-ownership="none">
26802+ <doc xml:space="preserve"
26803+ filename="gobject-2.0.c"
26804+ line="6638">#GTypeInfo structure for this type</doc>
26805+ <type name="TypeInfo" c:type="const GTypeInfo*"/>
26806+ </parameter>
26807+ <parameter name="flags" transfer-ownership="none">
26808+ <doc xml:space="preserve"
26809+ filename="gobject-2.0.c"
26810+ line="6639">bitwise combination of #GTypeFlags values</doc>
26811+ <type name="TypeFlags" c:type="GTypeFlags"/>
26812+ </parameter>
26813+ </parameters>
26814+ </function>
26815+ <function name="type_register_static_simple"
26816+ c:identifier="g_type_register_static_simple"
26817+ version="2.12"
26818+ introspectable="0">
26819+ <doc xml:space="preserve"
26820+ filename="gobject-2.0.c"
26821+ line="6651">Registers @type_name as the name of a new static type derived from
26822+@parent_type. The value of @flags determines the nature (e.g.
26823+abstract or not) of the type. It works by filling a #GTypeInfo
26824+struct and calling g_type_register_static().</doc>
26825+ <source-position filename="gtype.h" line="1309"/>
26826+ <return-value transfer-ownership="none">
26827+ <doc xml:space="preserve"
26828+ filename="gobject-2.0.c"
26829+ line="6667">the new type identifier</doc>
26830+ <type name="GType" c:type="GType"/>
26831+ </return-value>
26832+ <parameters>
26833+ <parameter name="parent_type" transfer-ownership="none">
26834+ <doc xml:space="preserve"
26835+ filename="gobject-2.0.c"
26836+ line="6653">type from which this type will be derived</doc>
26837+ <type name="GType" c:type="GType"/>
26838+ </parameter>
26839+ <parameter name="type_name" transfer-ownership="none">
26840+ <doc xml:space="preserve"
26841+ filename="gobject-2.0.c"
26842+ line="6654">0-terminated string used as the name of the new type</doc>
26843+ <type name="utf8" c:type="const gchar*"/>
26844+ </parameter>
26845+ <parameter name="class_size" transfer-ownership="none">
26846+ <doc xml:space="preserve"
26847+ filename="gobject-2.0.c"
26848+ line="6655">size of the class structure (see #GTypeInfo)</doc>
26849+ <type name="guint" c:type="guint"/>
26850+ </parameter>
26851+ <parameter name="class_init" transfer-ownership="none">
26852+ <doc xml:space="preserve"
26853+ filename="gobject-2.0.c"
26854+ line="6656">location of the class initialization function (see #GTypeInfo)</doc>
26855+ <type name="ClassInitFunc" c:type="GClassInitFunc"/>
26856+ </parameter>
26857+ <parameter name="instance_size" transfer-ownership="none">
26858+ <doc xml:space="preserve"
26859+ filename="gobject-2.0.c"
26860+ line="6657">size of the instance structure (see #GTypeInfo)</doc>
26861+ <type name="guint" c:type="guint"/>
26862+ </parameter>
26863+ <parameter name="instance_init" transfer-ownership="none">
26864+ <doc xml:space="preserve"
26865+ filename="gobject-2.0.c"
26866+ line="6658">location of the instance initialization function (see #GTypeInfo)</doc>
26867+ <type name="InstanceInitFunc" c:type="GInstanceInitFunc"/>
26868+ </parameter>
26869+ <parameter name="flags" transfer-ownership="none">
26870+ <doc xml:space="preserve"
26871+ filename="gobject-2.0.c"
26872+ line="6659">bitwise combination of #GTypeFlags values</doc>
26873+ <type name="TypeFlags" c:type="GTypeFlags"/>
26874+ </parameter>
26875+ </parameters>
26876+ </function>
26877+ <function name="type_remove_class_cache_func"
26878+ c:identifier="g_type_remove_class_cache_func"
26879+ introspectable="0">
26880+ <doc xml:space="preserve"
26881+ filename="gobject-2.0.c"
26882+ line="6671">Removes a previously installed #GTypeClassCacheFunc. The cache
26883+maintained by @cache_func has to be empty when calling
26884+g_type_remove_class_cache_func() to avoid leaks.</doc>
26885+ <source-position filename="gtype.h" line="2402"/>
26886+ <return-value transfer-ownership="none">
26887+ <type name="none" c:type="void"/>
26888+ </return-value>
26889+ <parameters>
26890+ <parameter name="cache_data"
26891+ transfer-ownership="none"
26892+ nullable="1"
26893+ allow-none="1">
26894+ <doc xml:space="preserve"
26895+ filename="gobject-2.0.c"
26896+ line="6673">data that was given when adding @cache_func</doc>
26897+ <type name="gpointer" c:type="gpointer"/>
26898+ </parameter>
26899+ <parameter name="cache_func" transfer-ownership="none">
26900+ <doc xml:space="preserve"
26901+ filename="gobject-2.0.c"
26902+ line="6674">a #GTypeClassCacheFunc</doc>
26903+ <type name="TypeClassCacheFunc" c:type="GTypeClassCacheFunc"/>
26904+ </parameter>
26905+ </parameters>
26906+ </function>
26907+ <function name="type_remove_interface_check"
26908+ c:identifier="g_type_remove_interface_check"
26909+ version="2.4"
26910+ introspectable="0">
26911+ <doc xml:space="preserve"
26912+ filename="gobject-2.0.c"
26913+ line="6682">Removes an interface check function added with
26914+g_type_add_interface_check().</doc>
26915+ <source-position filename="gtype.h" line="2411"/>
26916+ <return-value transfer-ownership="none">
26917+ <type name="none" c:type="void"/>
26918+ </return-value>
26919+ <parameters>
26920+ <parameter name="check_data"
26921+ transfer-ownership="none"
26922+ nullable="1"
26923+ allow-none="1">
26924+ <doc xml:space="preserve"
26925+ filename="gobject-2.0.c"
26926+ line="6684">callback data passed to g_type_add_interface_check()</doc>
26927+ <type name="gpointer" c:type="gpointer"/>
26928+ </parameter>
26929+ <parameter name="check_func" transfer-ownership="none">
26930+ <doc xml:space="preserve"
26931+ filename="gobject-2.0.c"
26932+ line="6685">callback function passed to g_type_add_interface_check()</doc>
26933+ <type name="TypeInterfaceCheckFunc"
26934+ c:type="GTypeInterfaceCheckFunc"/>
26935+ </parameter>
26936+ </parameters>
26937+ </function>
26938+ <function name="type_set_qdata" c:identifier="g_type_set_qdata">
26939+ <doc xml:space="preserve"
26940+ filename="gobject-2.0.c"
26941+ line="6694">Attaches arbitrary data to a type.</doc>
26942+ <source-position filename="gtype.h" line="764"/>
26943+ <return-value transfer-ownership="none">
26944+ <type name="none" c:type="void"/>
26945+ </return-value>
26946+ <parameters>
26947+ <parameter name="type" transfer-ownership="none">
26948+ <doc xml:space="preserve"
26949+ filename="gobject-2.0.c"
26950+ line="6696">a #GType</doc>
26951+ <type name="GType" c:type="GType"/>
26952+ </parameter>
26953+ <parameter name="quark" transfer-ownership="none">
26954+ <doc xml:space="preserve"
26955+ filename="gobject-2.0.c"
26956+ line="6697">a #GQuark id to identify the data</doc>
26957+ <type name="GLib.Quark" c:type="GQuark"/>
26958+ </parameter>
26959+ <parameter name="data"
26960+ transfer-ownership="none"
26961+ nullable="1"
26962+ allow-none="1">
26963+ <doc xml:space="preserve"
26964+ filename="gobject-2.0.c"
26965+ line="6698">the data</doc>
26966+ <type name="gpointer" c:type="gpointer"/>
26967+ </parameter>
26968+ </parameters>
26969+ </function>
26970+ <function name="type_test_flags" c:identifier="g_type_test_flags">
26971+ <source-position filename="gtype.h" line="2444"/>
26972+ <return-value transfer-ownership="none">
26973+ <type name="gboolean" c:type="gboolean"/>
26974+ </return-value>
26975+ <parameters>
26976+ <parameter name="type" transfer-ownership="none">
26977+ <type name="GType" c:type="GType"/>
26978+ </parameter>
26979+ <parameter name="flags" transfer-ownership="none">
26980+ <type name="guint" c:type="guint"/>
26981+ </parameter>
26982+ </parameters>
26983+ </function>
26984+ <function name="type_value_table_peek"
26985+ c:identifier="g_type_value_table_peek"
26986+ moved-to="TypeValueTable.peek"
26987+ introspectable="0">
26988+ <doc xml:space="preserve"
26989+ filename="gobject-2.0.c"
26990+ line="6704">Returns the location of the #GTypeValueTable associated with @type.
26991+
26992+Note that this function should only be used from source code
26993+that implements or has internal knowledge of the implementation of
26994+@type.</doc>
26995+ <source-position filename="gtype.h" line="2415"/>
26996+ <return-value>
26997+ <doc xml:space="preserve"
26998+ filename="gobject-2.0.c"
26999+ line="6714">location of the #GTypeValueTable associated with @type or
27000+ %NULL if there is no #GTypeValueTable associated with @type</doc>
27001+ <type name="TypeValueTable" c:type="GTypeValueTable*"/>
27002+ </return-value>
27003+ <parameters>
27004+ <parameter name="type" transfer-ownership="none">
27005+ <doc xml:space="preserve"
27006+ filename="gobject-2.0.c"
27007+ line="6706">a #GType</doc>
27008+ <type name="GType" c:type="GType"/>
27009+ </parameter>
27010+ </parameters>
27011+ </function>
27012+ <docsection name="value_arrays">
27013+ <doc xml:space="preserve"
27014+ filename="gobject-2.0.c"
27015+ line="934">The prime purpose of a #GValueArray is for it to be used as an
27016+object property that holds an array of values. A #GValueArray wraps
27017+an array of #GValue elements in order for it to be used as a boxed
27018+type through %G_TYPE_VALUE_ARRAY.
27019+
27020+#GValueArray is deprecated in favour of #GArray since GLib 2.32. It
27021+is possible to create a #GArray that behaves like a #GValueArray by
27022+using the size of #GValue as the element size, and by setting
27023+g_value_unset() as the clear function using g_array_set_clear_func(),
27024+for instance, the following code:
27025+
27026+|[&lt;!-- language="C" --&gt;
27027+ GValueArray *array = g_value_array_new (10);
27028+]|
27029+
27030+can be replaced by:
27031+
27032+|[&lt;!-- language="C" --&gt;
27033+ GArray *array = g_array_sized_new (FALSE, TRUE, sizeof (GValue), 10);
27034+ g_array_set_clear_func (array, (GDestroyNotify) g_value_unset);
27035+]|</doc>
27036+ </docsection>
27037+ <function name="value_register_transform_func"
27038+ c:identifier="g_value_register_transform_func"
27039+ moved-to="Value.register_transform_func"
27040+ introspectable="0">
27041+ <doc xml:space="preserve"
27042+ filename="gobject-2.0.c"
27043+ line="7190">Registers a value transformation function for use in g_value_transform().
27044+A previously registered transformation function for @src_type and @dest_type
27045+will be replaced.</doc>
27046+ <source-position filename="gvalue.h" line="168"/>
27047+ <return-value transfer-ownership="none">
27048+ <type name="none" c:type="void"/>
27049+ </return-value>
27050+ <parameters>
27051+ <parameter name="src_type" transfer-ownership="none">
27052+ <doc xml:space="preserve"
27053+ filename="gobject-2.0.c"
27054+ line="7192">Source type.</doc>
27055+ <type name="GType" c:type="GType"/>
27056+ </parameter>
27057+ <parameter name="dest_type" transfer-ownership="none">
27058+ <doc xml:space="preserve"
27059+ filename="gobject-2.0.c"
27060+ line="7193">Target type.</doc>
27061+ <type name="GType" c:type="GType"/>
27062+ </parameter>
27063+ <parameter name="transform_func" transfer-ownership="none">
27064+ <doc xml:space="preserve"
27065+ filename="gobject-2.0.c"
27066+ line="7194">a function which transforms values of type @src_type
27067+ into value of type @dest_type</doc>
27068+ <type name="ValueTransform" c:type="GValueTransform"/>
27069+ </parameter>
27070+ </parameters>
27071+ </function>
27072+ <function name="value_type_compatible"
27073+ c:identifier="g_value_type_compatible"
27074+ moved-to="Value.type_compatible">
27075+ <doc xml:space="preserve"
27076+ filename="gobject-2.0.c"
27077+ line="7609">Returns whether a #GValue of type @src_type can be copied into
27078+a #GValue of type @dest_type.</doc>
27079+ <source-position filename="gvalue.h" line="159"/>
27080+ <return-value transfer-ownership="none">
27081+ <doc xml:space="preserve"
27082+ filename="gobject-2.0.c"
27083+ line="7617">%TRUE if g_value_copy() is possible with @src_type and @dest_type.</doc>
27084+ <type name="gboolean" c:type="gboolean"/>
27085+ </return-value>
27086+ <parameters>
27087+ <parameter name="src_type" transfer-ownership="none">
27088+ <doc xml:space="preserve"
27089+ filename="gobject-2.0.c"
27090+ line="7611">source type to be copied.</doc>
27091+ <type name="GType" c:type="GType"/>
27092+ </parameter>
27093+ <parameter name="dest_type" transfer-ownership="none">
27094+ <doc xml:space="preserve"
27095+ filename="gobject-2.0.c"
27096+ line="7612">destination type for copying.</doc>
27097+ <type name="GType" c:type="GType"/>
27098+ </parameter>
27099+ </parameters>
27100+ </function>
27101+ <function name="value_type_transformable"
27102+ c:identifier="g_value_type_transformable"
27103+ moved-to="Value.type_transformable">
27104+ <doc xml:space="preserve"
27105+ filename="gobject-2.0.c"
27106+ line="7621">Check whether g_value_transform() is able to transform values
27107+of type @src_type into values of type @dest_type. Note that for
27108+the types to be transformable, they must be compatible or a
27109+transformation function must be registered.</doc>
27110+ <source-position filename="gvalue.h" line="162"/>
27111+ <return-value transfer-ownership="none">
27112+ <doc xml:space="preserve"
27113+ filename="gobject-2.0.c"
27114+ line="7631">%TRUE if the transformation is possible, %FALSE otherwise.</doc>
27115+ <type name="gboolean" c:type="gboolean"/>
27116+ </return-value>
27117+ <parameters>
27118+ <parameter name="src_type" transfer-ownership="none">
27119+ <doc xml:space="preserve"
27120+ filename="gobject-2.0.c"
27121+ line="7623">Source type.</doc>
27122+ <type name="GType" c:type="GType"/>
27123+ </parameter>
27124+ <parameter name="dest_type" transfer-ownership="none">
27125+ <doc xml:space="preserve"
27126+ filename="gobject-2.0.c"
27127+ line="7624">Target type.</doc>
27128+ <type name="GType" c:type="GType"/>
27129+ </parameter>
27130+ </parameters>
27131+ </function>
27132+ </namespace>
27133+</repository>
A internal/gir/spec/Gdk-4.0.gir +31079 -0 large diff (31079 lines changed): collapsed
A internal/gir/spec/GdkPixbuf-2.0.gir +7353 -0 large diff (7353 lines changed): collapsed
A internal/gir/spec/Gio-2.0.gir +134893 -0 large diff (134893 lines changed): collapsed
A internal/gir/spec/Graphene-1.0.gir +13375 -0 large diff (13375 lines changed): collapsed
A internal/gir/spec/Gsk-4.0.gir +7181 -0 large diff (7181 lines changed): collapsed
A internal/gir/spec/Gtk-4.0.gir +167916 -0 large diff (167916 lines changed): collapsed
A internal/gir/spec/Pango-1.0.gir +22709 -0 large diff (22709 lines changed): collapsed
A internal/gir/spec/PangoCairo-1.0.gir +1136 -0
@@ -0,0 +1,1136 @@
1+<?xml version="1.0"?>
2+<!-- This file was automatically generated from C sources - DO NOT EDIT!
3+To affect the contents of this file, edit the original C definitions,
4+and/or use gtk-doc annotations. -->
5+<repository version="1.2"
6+ xmlns="http://www.gtk.org/introspection/core/1.0"
7+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
8+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
9+ <include name="GObject" version="2.0"/>
10+ <include name="Pango" version="1.0"/>
11+ <include name="cairo" version="1.0"/>
12+ <package name="pangocairo"/>
13+ <c:include name="pango/pangocairo.h"/>
14+ <namespace name="PangoCairo"
15+ version="1.0"
16+ shared-library="libpangocairo-1.0.so.0"
17+ c:identifier-prefixes="PangoCairo"
18+ c:symbol-prefixes="pango_cairo">
19+ <function-macro name="FONT"
20+ c:identifier="PANGO_CAIRO_FONT"
21+ introspectable="0">
22+ <source-position filename="../pango/pangocairo.h" line="49"/>
23+ <parameters>
24+ <parameter name="obj">
25+ </parameter>
26+ </parameters>
27+ </function-macro>
28+ <function-macro name="FONT_MAP"
29+ c:identifier="PANGO_CAIRO_FONT_MAP"
30+ introspectable="0">
31+ <source-position filename="../pango/pangocairo.h" line="72"/>
32+ <parameters>
33+ <parameter name="obj">
34+ </parameter>
35+ </parameters>
36+ </function-macro>
37+ <interface name="Font"
38+ c:symbol-prefix="font"
39+ c:type="PangoCairoFont"
40+ version="1.18"
41+ glib:type-name="PangoCairoFont"
42+ glib:get-type="pango_cairo_font_get_type">
43+ <doc xml:space="preserve"
44+ filename="../pango/pangocairo.h"
45+ line="30">`PangoCairoFont` is an interface exported by fonts for
46+use with Cairo.
47+
48+The actual type of the font will depend on the particular
49+font technology Cairo was compiled to use.</doc>
50+ <prerequisite name="Pango.Font"/>
51+ <method name="get_scaled_font"
52+ c:identifier="pango_cairo_font_get_scaled_font"
53+ version="1.18">
54+ <doc xml:space="preserve"
55+ filename="../pango/pangocairo-font.c"
56+ line="138">Gets the `cairo_scaled_font_t` used by @font.
57+The scaled font can be referenced and kept using
58+cairo_scaled_font_reference().</doc>
59+ <source-position filename="../pango/pangocairo.h" line="133"/>
60+ <return-value transfer-ownership="none" nullable="1">
61+ <doc xml:space="preserve"
62+ filename="../pango/pangocairo-font.c"
63+ line="146">the `cairo_scaled_font_t`
64+ used by @font</doc>
65+ <type name="cairo.ScaledFont" c:type="cairo_scaled_font_t*"/>
66+ </return-value>
67+ <parameters>
68+ <instance-parameter name="font"
69+ transfer-ownership="none"
70+ nullable="1"
71+ allow-none="1">
72+ <doc xml:space="preserve"
73+ filename="../pango/pangocairo-font.c"
74+ line="140">a `PangoFont` from a `PangoCairoFontMap`</doc>
75+ <type name="Font" c:type="PangoCairoFont*"/>
76+ </instance-parameter>
77+ </parameters>
78+ </method>
79+ </interface>
80+ <interface name="FontMap"
81+ c:symbol-prefix="font_map"
82+ c:type="PangoCairoFontMap"
83+ version="1.10"
84+ glib:type-name="PangoCairoFontMap"
85+ glib:get-type="pango_cairo_font_map_get_type">
86+ <doc xml:space="preserve"
87+ filename="../pango/pangocairo.h"
88+ line="57">`PangoCairoFontMap` is an interface exported by font maps for
89+use with Cairo.
90+
91+The actual type of the font map will depend on the particular
92+font technology Cairo was compiled to use.</doc>
93+ <prerequisite name="Pango.FontMap"/>
94+ <function name="get_default"
95+ c:identifier="pango_cairo_font_map_get_default"
96+ version="1.10">
97+ <doc xml:space="preserve"
98+ filename="../pango/pangocairo-fontmap.c"
99+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
100+
101+Note that the type of the returned object will depend on the
102+particular font backend Cairo was compiled to use; you generally
103+should only use the `PangoFontMap` and `PangoCairoFontMap`
104+interfaces on the returned object.
105+
106+The default Cairo fontmap can be changed by using
107+[method@PangoCairo.FontMap.set_default]. This can be used to
108+change the Cairo font backend that the default fontmap uses
109+for example.
110+
111+Note that since Pango 1.32.6, the default fontmap is per-thread.
112+Each thread gets its own default fontmap. In this way, PangoCairo
113+can be used safely from multiple threads.</doc>
114+ <source-position filename="../pango/pangocairo.h" line="110"/>
115+ <return-value transfer-ownership="none">
116+ <doc xml:space="preserve"
117+ filename="../pango/pangocairo-fontmap.c"
118+ line="170">the default PangoCairo fontmap
119+ for the current thread. This object is owned by Pango and must
120+ not be freed.</doc>
121+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
122+ </return-value>
123+ </function>
124+ <function name="new"
125+ c:identifier="pango_cairo_font_map_new"
126+ version="1.10">
127+ <doc xml:space="preserve"
128+ filename="../pango/pangocairo-fontmap.c"
129+ line="47">Creates a new `PangoCairoFontMap` object.
130+
131+A fontmap is used to cache information about available fonts,
132+and holds certain global parameters such as the resolution.
133+In most cases, you can use `func@PangoCairo.font_map_get_default]
134+instead.
135+
136+Note that the type of the returned object will depend
137+on the particular font backend Cairo was compiled to use;
138+You generally should only use the `PangoFontMap` and
139+`PangoCairoFontMap` interfaces on the returned object.
140+
141+You can override the type of backend returned by using an
142+environment variable %PANGOCAIRO_BACKEND. Supported types,
143+based on your build, are fc (fontconfig), win32, and coretext.
144+If requested type is not available, NULL is returned. Ie.
145+this is only useful for testing, when at least two backends
146+are compiled in.</doc>
147+ <source-position filename="../pango/pangocairo.h" line="106"/>
148+ <return-value transfer-ownership="full">
149+ <doc xml:space="preserve"
150+ filename="../pango/pangocairo-fontmap.c"
151+ line="69">the newly allocated `PangoFontMap`,
152+ which should be freed with g_object_unref().</doc>
153+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
154+ </return-value>
155+ </function>
156+ <function name="new_for_font_type"
157+ c:identifier="pango_cairo_font_map_new_for_font_type"
158+ version="1.18">
159+ <doc xml:space="preserve"
160+ filename="../pango/pangocairo-fontmap.c"
161+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
162+to be used with cairo font backend of type @fonttype.
163+
164+In most cases one should simply use [func@PangoCairo.FontMap.new], or
165+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
166+ <source-position filename="../pango/pangocairo.h" line="108"/>
167+ <return-value transfer-ownership="full" nullable="1">
168+ <doc xml:space="preserve"
169+ filename="../pango/pangocairo-fontmap.c"
170+ line="120">the newly allocated
171+ `PangoFontMap` of suitable type which should be freed with
172+ g_object_unref(), or %NULL if the requested cairo font backend
173+ is not supported / compiled in.</doc>
174+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
175+ </return-value>
176+ <parameters>
177+ <parameter name="fonttype" transfer-ownership="none">
178+ <doc xml:space="preserve"
179+ filename="../pango/pangocairo-fontmap.c"
180+ line="112">desired #cairo_font_type_t</doc>
181+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
182+ </parameter>
183+ </parameters>
184+ </function>
185+ <method name="create_context"
186+ c:identifier="pango_cairo_font_map_create_context"
187+ version="1.10"
188+ introspectable="0"
189+ deprecated="1"
190+ deprecated-version="1.22">
191+ <doc xml:space="preserve"
192+ filename="../pango/pangocairo-fontmap.c"
193+ line="267">Create a `PangoContext` for the given fontmap.</doc>
194+ <doc-deprecated xml:space="preserve">Use pango_font_map_create_context() instead.</doc-deprecated>
195+ <source-position filename="../pango/pangocairo.h" line="123"/>
196+ <return-value>
197+ <doc xml:space="preserve"
198+ filename="../pango/pangocairo-fontmap.c"
199+ line="273">the newly created context; free with g_object_unref().</doc>
200+ <type name="Pango.Context" c:type="PangoContext*"/>
201+ </return-value>
202+ <parameters>
203+ <instance-parameter name="fontmap" transfer-ownership="none">
204+ <doc xml:space="preserve"
205+ filename="../pango/pangocairo-fontmap.c"
206+ line="269">a `PangoCairoFontMap`</doc>
207+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
208+ </instance-parameter>
209+ </parameters>
210+ </method>
211+ <method name="get_font_type"
212+ c:identifier="pango_cairo_font_map_get_font_type"
213+ version="1.18">
214+ <doc xml:space="preserve"
215+ filename="../pango/pangocairo-fontmap.c"
216+ line="287">Gets the type of Cairo font backend that @fontmap uses.</doc>
217+ <source-position filename="../pango/pangocairo.h" line="114"/>
218+ <return-value transfer-ownership="none">
219+ <doc xml:space="preserve"
220+ filename="../pango/pangocairo-fontmap.c"
221+ line="293">the `cairo_font_type_t` cairo font backend type</doc>
222+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
223+ </return-value>
224+ <parameters>
225+ <instance-parameter name="fontmap" transfer-ownership="none">
226+ <doc xml:space="preserve"
227+ filename="../pango/pangocairo-fontmap.c"
228+ line="289">a `PangoCairoFontMap`</doc>
229+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
230+ </instance-parameter>
231+ </parameters>
232+ </method>
233+ <method name="get_resolution"
234+ c:identifier="pango_cairo_font_map_get_resolution"
235+ version="1.10">
236+ <doc xml:space="preserve"
237+ filename="../pango/pangocairo-fontmap.c"
238+ line="247">Gets the resolution for the fontmap.
239+
240+See [method@PangoCairo.FontMap.set_resolution].</doc>
241+ <source-position filename="../pango/pangocairo.h" line="120"/>
242+ <return-value transfer-ownership="none">
243+ <doc xml:space="preserve"
244+ filename="../pango/pangocairo-fontmap.c"
245+ line="255">the resolution in "dots per inch"</doc>
246+ <type name="gdouble" c:type="double"/>
247+ </return-value>
248+ <parameters>
249+ <instance-parameter name="fontmap" transfer-ownership="none">
250+ <doc xml:space="preserve"
251+ filename="../pango/pangocairo-fontmap.c"
252+ line="249">a `PangoCairoFontMap`</doc>
253+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
254+ </instance-parameter>
255+ </parameters>
256+ </method>
257+ <method name="set_default"
258+ c:identifier="pango_cairo_font_map_set_default"
259+ version="1.22">
260+ <doc xml:space="preserve"
261+ filename="../pango/pangocairo-fontmap.c"
262+ line="190">Sets a default `PangoCairoFontMap` to use with Cairo.
263+
264+This can be used to change the Cairo font backend that the
265+default fontmap uses for example. The old default font map
266+is unreffed and the new font map referenced.
267+
268+Note that since Pango 1.32.6, the default fontmap is per-thread.
269+This function only changes the default fontmap for
270+the current thread. Default fontmaps of existing threads
271+are not changed. Default fontmaps of any new threads will
272+still be created using [func@PangoCairo.FontMap.new].
273+
274+A value of %NULL for @fontmap will cause the current default
275+font map to be released and a new default font map to be created
276+on demand, using [func@PangoCairo.FontMap.new].</doc>
277+ <source-position filename="../pango/pangocairo.h" line="112"/>
278+ <return-value transfer-ownership="none">
279+ <type name="none" c:type="void"/>
280+ </return-value>
281+ <parameters>
282+ <instance-parameter name="fontmap"
283+ transfer-ownership="none"
284+ nullable="1"
285+ allow-none="1">
286+ <doc xml:space="preserve"
287+ filename="../pango/pangocairo-fontmap.c"
288+ line="192">The new default font map</doc>
289+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
290+ </instance-parameter>
291+ </parameters>
292+ </method>
293+ <method name="set_resolution"
294+ c:identifier="pango_cairo_font_map_set_resolution"
295+ version="1.10">
296+ <doc xml:space="preserve"
297+ filename="../pango/pangocairo-fontmap.c"
298+ line="223">Sets the resolution for the fontmap.
299+
300+This is a scale factor between
301+points specified in a `PangoFontDescription` and Cairo units. The
302+default value is 96, meaning that a 10 point font will be 13
303+units high. (10 * 96. / 72. = 13.3).</doc>
304+ <source-position filename="../pango/pangocairo.h" line="117"/>
305+ <return-value transfer-ownership="none">
306+ <type name="none" c:type="void"/>
307+ </return-value>
308+ <parameters>
309+ <instance-parameter name="fontmap" transfer-ownership="none">
310+ <doc xml:space="preserve"
311+ filename="../pango/pangocairo-fontmap.c"
312+ line="225">a `PangoCairoFontMap`</doc>
313+ <type name="FontMap" c:type="PangoCairoFontMap*"/>
314+ </instance-parameter>
315+ <parameter name="dpi" transfer-ownership="none">
316+ <doc xml:space="preserve"
317+ filename="../pango/pangocairo-fontmap.c"
318+ line="226">the resolution in "dots per inch". (Physical inches aren't actually
319+ involved; the terminology is conventional.)</doc>
320+ <type name="gdouble" c:type="double"/>
321+ </parameter>
322+ </parameters>
323+ </method>
324+ </interface>
325+ <function-macro name="IS_FONT"
326+ c:identifier="PANGO_CAIRO_IS_FONT"
327+ introspectable="0">
328+ <source-position filename="../pango/pangocairo.h" line="50"/>
329+ <parameters>
330+ <parameter name="obj">
331+ </parameter>
332+ </parameters>
333+ </function-macro>
334+ <function-macro name="IS_FONT_MAP"
335+ c:identifier="PANGO_CAIRO_IS_FONT_MAP"
336+ introspectable="0">
337+ <source-position filename="../pango/pangocairo.h" line="73"/>
338+ <parameters>
339+ <parameter name="obj">
340+ </parameter>
341+ </parameters>
342+ </function-macro>
343+ <callback name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc">
344+ <doc xml:space="preserve"
345+ filename="../pango/pangocairo.h"
346+ line="80">Function type for rendering attributes of type %PANGO_ATTR_SHAPE
347+with Pango's Cairo renderer.</doc>
348+ <source-position filename="../pango/pangocairo.h" line="94"/>
349+ <return-value transfer-ownership="none">
350+ <type name="none" c:type="void"/>
351+ </return-value>
352+ <parameters>
353+ <parameter name="cr" transfer-ownership="none">
354+ <doc xml:space="preserve"
355+ filename="../pango/pangocairo.h"
356+ line="82">a Cairo context with current point set to where the shape should
357+be rendered</doc>
358+ <type name="cairo.Context" c:type="cairo_t*"/>
359+ </parameter>
360+ <parameter name="attr" transfer-ownership="none">
361+ <doc xml:space="preserve"
362+ filename="../pango/pangocairo.h"
363+ line="84">the %PANGO_ATTR_SHAPE to render</doc>
364+ <type name="Pango.AttrShape" c:type="PangoAttrShape*"/>
365+ </parameter>
366+ <parameter name="do_path" transfer-ownership="none">
367+ <doc xml:space="preserve"
368+ filename="../pango/pangocairo.h"
369+ line="85">whether only the shape path should be appended to current
370+path of @cr and no filling/stroking done. This will be set
371+to %TRUE when called from pango_cairo_layout_path() and
372+pango_cairo_layout_line_path() rendering functions.</doc>
373+ <type name="gboolean" c:type="gboolean"/>
374+ </parameter>
375+ <parameter name="data"
376+ transfer-ownership="none"
377+ nullable="1"
378+ allow-none="1"
379+ closure="3">
380+ <doc xml:space="preserve"
381+ filename="../pango/pangocairo.h"
382+ line="89">user data passed to pango_cairo_context_set_shape_renderer()</doc>
383+ <type name="gpointer" c:type="gpointer"/>
384+ </parameter>
385+ </parameters>
386+ </callback>
387+ <function name="context_get_font_options"
388+ c:identifier="pango_cairo_context_get_font_options"
389+ version="1.10">
390+ <doc xml:space="preserve"
391+ filename="../pango/pangocairo-context.c"
392+ line="284">Retrieves any font rendering options previously set with
393+[func@PangoCairo.context_set_font_options].
394+
395+This function does not report options that are derived from
396+the target surface by [func@update_context].</doc>
397+ <source-position filename="../pango/pangocairo.h" line="145"/>
398+ <return-value transfer-ownership="none" nullable="1">
399+ <doc xml:space="preserve"
400+ filename="../pango/pangocairo-context.c"
401+ line="294">the font options previously set on the
402+ context, or %NULL if no options have been set. This value is
403+ owned by the context and must not be modified or freed.</doc>
404+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
405+ </return-value>
406+ <parameters>
407+ <parameter name="context" transfer-ownership="none">
408+ <doc xml:space="preserve"
409+ filename="../pango/pangocairo-context.c"
410+ line="286">a `PangoContext`, from a pangocairo font map</doc>
411+ <type name="Pango.Context" c:type="PangoContext*"/>
412+ </parameter>
413+ </parameters>
414+ </function>
415+ <function name="context_get_resolution"
416+ c:identifier="pango_cairo_context_get_resolution"
417+ version="1.10">
418+ <doc xml:space="preserve"
419+ filename="../pango/pangocairo-context.c"
420+ line="205">Gets the resolution for the context.
421+
422+See [func@PangoCairo.context_set_resolution]</doc>
423+ <source-position filename="../pango/pangocairo.h" line="151"/>
424+ <return-value transfer-ownership="none">
425+ <doc xml:space="preserve"
426+ filename="../pango/pangocairo-context.c"
427+ line="213">the resolution in "dots per inch". A negative value will
428+ be returned if no resolution has previously been set.</doc>
429+ <type name="gdouble" c:type="double"/>
430+ </return-value>
431+ <parameters>
432+ <parameter name="context" transfer-ownership="none">
433+ <doc xml:space="preserve"
434+ filename="../pango/pangocairo-context.c"
435+ line="207">a `PangoContext`, from a pangocairo font map</doc>
436+ <type name="Pango.Context" c:type="PangoContext*"/>
437+ </parameter>
438+ </parameters>
439+ </function>
440+ <function name="context_get_shape_renderer"
441+ c:identifier="pango_cairo_context_get_shape_renderer"
442+ version="1.18"
443+ introspectable="0">
444+ <doc xml:space="preserve"
445+ filename="../pango/pangocairo-context.c"
446+ line="380">Sets callback function for context to use for rendering attributes
447+of type %PANGO_ATTR_SHAPE.
448+
449+See `PangoCairoShapeRendererFunc` for details.
450+
451+Retrieves callback function and associated user data for rendering
452+attributes of type %PANGO_ATTR_SHAPE as set by
453+[func@PangoCairo.context_set_shape_renderer], if any.</doc>
454+ <source-position filename="../pango/pangocairo.h" line="159"/>
455+ <return-value transfer-ownership="none" nullable="1">
456+ <doc xml:space="preserve"
457+ filename="../pango/pangocairo-context.c"
458+ line="394">the shape rendering callback
459+ previously set on the context, or %NULL if no shape rendering callback
460+ have been set.</doc>
461+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
462+ </return-value>
463+ <parameters>
464+ <parameter name="context" transfer-ownership="none">
465+ <doc xml:space="preserve"
466+ filename="../pango/pangocairo-context.c"
467+ line="382">a `PangoContext`, from a pangocairo font map</doc>
468+ <type name="Pango.Context" c:type="PangoContext*"/>
469+ </parameter>
470+ <parameter name="data"
471+ transfer-ownership="none"
472+ nullable="1"
473+ allow-none="1">
474+ <doc xml:space="preserve"
475+ filename="../pango/pangocairo-context.c"
476+ line="383">Pointer to `gpointer` to return user data</doc>
477+ <type name="gpointer" c:type="gpointer*"/>
478+ </parameter>
479+ </parameters>
480+ </function>
481+ <function name="context_set_font_options"
482+ c:identifier="pango_cairo_context_set_font_options"
483+ version="1.10">
484+ <doc xml:space="preserve"
485+ filename="../pango/pangocairo-context.c"
486+ line="229">Sets the font options used when rendering text with this context.
487+
488+These options override any options that [func@update_context]
489+derives from the target surface.</doc>
490+ <source-position filename="../pango/pangocairo.h" line="142"/>
491+ <return-value transfer-ownership="none">
492+ <type name="none" c:type="void"/>
493+ </return-value>
494+ <parameters>
495+ <parameter name="context" transfer-ownership="none">
496+ <doc xml:space="preserve"
497+ filename="../pango/pangocairo-context.c"
498+ line="231">a `PangoContext`, from a pangocairo font map</doc>
499+ <type name="Pango.Context" c:type="PangoContext*"/>
500+ </parameter>
501+ <parameter name="options"
502+ transfer-ownership="none"
503+ nullable="1"
504+ allow-none="1">
505+ <doc xml:space="preserve"
506+ filename="../pango/pangocairo-context.c"
507+ line="232">a `cairo_font_options_t`, or %NULL to unset
508+ any previously set options. A copy is made.</doc>
509+ <type name="cairo.FontOptions" c:type="const cairo_font_options_t*"/>
510+ </parameter>
511+ </parameters>
512+ </function>
513+ <function name="context_set_resolution"
514+ c:identifier="pango_cairo_context_set_resolution"
515+ version="1.10">
516+ <doc xml:space="preserve"
517+ filename="../pango/pangocairo-context.c"
518+ line="182">Sets the resolution for the context.
519+
520+This is a scale factor between points specified in a `PangoFontDescription`
521+and Cairo units. The default value is 96, meaning that a 10 point font will
522+be 13 units high. (10 * 96. / 72. = 13.3).</doc>
523+ <source-position filename="../pango/pangocairo.h" line="148"/>
524+ <return-value transfer-ownership="none">
525+ <type name="none" c:type="void"/>
526+ </return-value>
527+ <parameters>
528+ <parameter name="context" transfer-ownership="none">
529+ <doc xml:space="preserve"
530+ filename="../pango/pangocairo-context.c"
531+ line="184">a `PangoContext`, from a pangocairo font map</doc>
532+ <type name="Pango.Context" c:type="PangoContext*"/>
533+ </parameter>
534+ <parameter name="dpi" transfer-ownership="none">
535+ <doc xml:space="preserve"
536+ filename="../pango/pangocairo-context.c"
537+ line="185">the resolution in "dots per inch". (Physical inches aren't actually
538+ involved; the terminology is conventional.) A 0 or negative value
539+ means to use the resolution from the font map.</doc>
540+ <type name="gdouble" c:type="double"/>
541+ </parameter>
542+ </parameters>
543+ </function>
544+ <function name="context_set_shape_renderer"
545+ c:identifier="pango_cairo_context_set_shape_renderer"
546+ version="1.18">
547+ <doc xml:space="preserve"
548+ filename="../pango/pangocairo-context.c"
549+ line="344">Sets callback function for context to use for rendering attributes
550+of type %PANGO_ATTR_SHAPE.
551+
552+See `PangoCairoShapeRendererFunc` for details.</doc>
553+ <source-position filename="../pango/pangocairo.h" line="154"/>
554+ <return-value transfer-ownership="none">
555+ <type name="none" c:type="void"/>
556+ </return-value>
557+ <parameters>
558+ <parameter name="context" transfer-ownership="none">
559+ <doc xml:space="preserve"
560+ filename="../pango/pangocairo-context.c"
561+ line="346">a `PangoContext`, from a pangocairo font map</doc>
562+ <type name="Pango.Context" c:type="PangoContext*"/>
563+ </parameter>
564+ <parameter name="func"
565+ transfer-ownership="none"
566+ nullable="1"
567+ allow-none="1"
568+ scope="notified"
569+ closure="2"
570+ destroy="3">
571+ <doc xml:space="preserve"
572+ filename="../pango/pangocairo-context.c"
573+ line="347">Callback function for rendering attributes of
574+ type %PANGO_ATTR_SHAPE, or %NULL to disable shape rendering.</doc>
575+ <type name="ShapeRendererFunc" c:type="PangoCairoShapeRendererFunc"/>
576+ </parameter>
577+ <parameter name="data"
578+ transfer-ownership="none"
579+ nullable="1"
580+ allow-none="1">
581+ <doc xml:space="preserve"
582+ filename="../pango/pangocairo-context.c"
583+ line="349">User data that will be passed to @func.</doc>
584+ <type name="gpointer" c:type="gpointer"/>
585+ </parameter>
586+ <parameter name="dnotify"
587+ transfer-ownership="none"
588+ nullable="1"
589+ allow-none="1"
590+ scope="async">
591+ <doc xml:space="preserve"
592+ filename="../pango/pangocairo-context.c"
593+ line="350">Callback that will be called when the
594+ context is freed to release @data</doc>
595+ <type name="GLib.DestroyNotify" c:type="GDestroyNotify"/>
596+ </parameter>
597+ </parameters>
598+ </function>
599+ <function name="create_context"
600+ c:identifier="pango_cairo_create_context"
601+ version="1.22">
602+ <doc xml:space="preserve"
603+ filename="../pango/pangocairo-context.c"
604+ line="424">Creates a context object set up to match the current transformation
605+and target surface of the Cairo context.
606+
607+This context can then be
608+used to create a layout using [ctor@Pango.Layout.new].
609+
610+This function is a convenience function that creates a context using
611+the default font map, then updates it to @cr. If you just need to
612+create a layout for use with @cr and do not need to access `PangoContext`
613+directly, you can use [func@create_layout] instead.</doc>
614+ <source-position filename="../pango/pangocairo.h" line="165"/>
615+ <return-value transfer-ownership="full">
616+ <doc xml:space="preserve"
617+ filename="../pango/pangocairo-context.c"
618+ line="439">the newly created `PangoContext`</doc>
619+ <type name="Pango.Context" c:type="PangoContext*"/>
620+ </return-value>
621+ <parameters>
622+ <parameter name="cr" transfer-ownership="none">
623+ <doc xml:space="preserve"
624+ filename="../pango/pangocairo-context.c"
625+ line="426">a Cairo context</doc>
626+ <type name="cairo.Context" c:type="cairo_t*"/>
627+ </parameter>
628+ </parameters>
629+ </function>
630+ <function name="create_layout"
631+ c:identifier="pango_cairo_create_layout"
632+ version="1.10">
633+ <doc xml:space="preserve"
634+ filename="../pango/pangocairo-context.c"
635+ line="458">Creates a layout object set up to match the current transformation
636+and target surface of the Cairo context.
637+
638+This layout can then be used for text measurement with functions
639+like [method@Pango.Layout.get_size] or drawing with functions like
640+[func@show_layout]. If you change the transformation or target
641+surface for @cr, you need to call [func@update_layout].
642+
643+This function is the most convenient way to use Cairo with Pango,
644+however it is slightly inefficient since it creates a separate
645+`PangoContext` object for each layout. This might matter in an
646+application that was laying out large amounts of text.</doc>
647+ <source-position filename="../pango/pangocairo.h" line="167"/>
648+ <return-value transfer-ownership="full">
649+ <doc xml:space="preserve"
650+ filename="../pango/pangocairo-context.c"
651+ line="475">the newly created `PangoLayout`</doc>
652+ <type name="Pango.Layout" c:type="PangoLayout*"/>
653+ </return-value>
654+ <parameters>
655+ <parameter name="cr" transfer-ownership="none">
656+ <doc xml:space="preserve"
657+ filename="../pango/pangocairo-context.c"
658+ line="460">a Cairo context</doc>
659+ <type name="cairo.Context" c:type="cairo_t*"/>
660+ </parameter>
661+ </parameters>
662+ </function>
663+ <function name="error_underline_path"
664+ c:identifier="pango_cairo_error_underline_path"
665+ version="1.14">
666+ <doc xml:space="preserve"
667+ filename="../pango/pangocairo-render.c"
668+ line="1244">Add a squiggly line to the current path in the specified cairo context that
669+approximately covers the given rectangle in the style of an underline used
670+to indicate a spelling error.
671+
672+The width of the underline is rounded to an integer number of up/down
673+segments and the resulting rectangle is centered in the original rectangle.</doc>
674+ <source-position filename="../pango/pangocairo.h" line="212"/>
675+ <return-value transfer-ownership="none">
676+ <type name="none" c:type="void"/>
677+ </return-value>
678+ <parameters>
679+ <parameter name="cr" transfer-ownership="none">
680+ <doc xml:space="preserve"
681+ filename="../pango/pangocairo-render.c"
682+ line="1246">a Cairo context</doc>
683+ <type name="cairo.Context" c:type="cairo_t*"/>
684+ </parameter>
685+ <parameter name="x" transfer-ownership="none">
686+ <doc xml:space="preserve"
687+ filename="../pango/pangocairo-render.c"
688+ line="1247">The X coordinate of one corner of the rectangle</doc>
689+ <type name="gdouble" c:type="double"/>
690+ </parameter>
691+ <parameter name="y" transfer-ownership="none">
692+ <doc xml:space="preserve"
693+ filename="../pango/pangocairo-render.c"
694+ line="1248">The Y coordinate of one corner of the rectangle</doc>
695+ <type name="gdouble" c:type="double"/>
696+ </parameter>
697+ <parameter name="width" transfer-ownership="none">
698+ <doc xml:space="preserve"
699+ filename="../pango/pangocairo-render.c"
700+ line="1249">Non-negative width of the rectangle</doc>
701+ <type name="gdouble" c:type="double"/>
702+ </parameter>
703+ <parameter name="height" transfer-ownership="none">
704+ <doc xml:space="preserve"
705+ filename="../pango/pangocairo-render.c"
706+ line="1250">Non-negative height of the rectangle</doc>
707+ <type name="gdouble" c:type="double"/>
708+ </parameter>
709+ </parameters>
710+ </function>
711+ <function name="font_map_get_default"
712+ c:identifier="pango_cairo_font_map_get_default"
713+ moved-to="FontMap.get_default"
714+ version="1.10">
715+ <doc xml:space="preserve"
716+ filename="../pango/pangocairo-fontmap.c"
717+ line="151">Gets a default `PangoCairoFontMap` to use with Cairo.
718+
719+Note that the type of the returned object will depend on the
720+particular font backend Cairo was compiled to use; you generally
721+should only use the `PangoFontMap` and `PangoCairoFontMap`
722+interfaces on the returned object.
723+
724+The default Cairo fontmap can be changed by using
725+[method@PangoCairo.FontMap.set_default]. This can be used to
726+change the Cairo font backend that the default fontmap uses
727+for example.
728+
729+Note that since Pango 1.32.6, the default fontmap is per-thread.
730+Each thread gets its own default fontmap. In this way, PangoCairo
731+can be used safely from multiple threads.</doc>
732+ <source-position filename="../pango/pangocairo.h" line="110"/>
733+ <return-value transfer-ownership="none">
734+ <doc xml:space="preserve"
735+ filename="../pango/pangocairo-fontmap.c"
736+ line="170">the default PangoCairo fontmap
737+ for the current thread. This object is owned by Pango and must
738+ not be freed.</doc>
739+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
740+ </return-value>
741+ </function>
742+ <function name="font_map_new"
743+ c:identifier="pango_cairo_font_map_new"
744+ moved-to="FontMap.new"
745+ version="1.10">
746+ <doc xml:space="preserve"
747+ filename="../pango/pangocairo-fontmap.c"
748+ line="47">Creates a new `PangoCairoFontMap` object.
749+
750+A fontmap is used to cache information about available fonts,
751+and holds certain global parameters such as the resolution.
752+In most cases, you can use `func@PangoCairo.font_map_get_default]
753+instead.
754+
755+Note that the type of the returned object will depend
756+on the particular font backend Cairo was compiled to use;
757+You generally should only use the `PangoFontMap` and
758+`PangoCairoFontMap` interfaces on the returned object.
759+
760+You can override the type of backend returned by using an
761+environment variable %PANGOCAIRO_BACKEND. Supported types,
762+based on your build, are fc (fontconfig), win32, and coretext.
763+If requested type is not available, NULL is returned. Ie.
764+this is only useful for testing, when at least two backends
765+are compiled in.</doc>
766+ <source-position filename="../pango/pangocairo.h" line="106"/>
767+ <return-value transfer-ownership="full">
768+ <doc xml:space="preserve"
769+ filename="../pango/pangocairo-fontmap.c"
770+ line="69">the newly allocated `PangoFontMap`,
771+ which should be freed with g_object_unref().</doc>
772+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
773+ </return-value>
774+ </function>
775+ <function name="font_map_new_for_font_type"
776+ c:identifier="pango_cairo_font_map_new_for_font_type"
777+ moved-to="FontMap.new_for_font_type"
778+ version="1.18">
779+ <doc xml:space="preserve"
780+ filename="../pango/pangocairo-fontmap.c"
781+ line="110">Creates a new `PangoCairoFontMap` object of the type suitable
782+to be used with cairo font backend of type @fonttype.
783+
784+In most cases one should simply use [func@PangoCairo.FontMap.new], or
785+in fact in most of those cases, just use [func@PangoCairo.FontMap.get_default].</doc>
786+ <source-position filename="../pango/pangocairo.h" line="108"/>
787+ <return-value transfer-ownership="full" nullable="1">
788+ <doc xml:space="preserve"
789+ filename="../pango/pangocairo-fontmap.c"
790+ line="120">the newly allocated
791+ `PangoFontMap` of suitable type which should be freed with
792+ g_object_unref(), or %NULL if the requested cairo font backend
793+ is not supported / compiled in.</doc>
794+ <type name="Pango.FontMap" c:type="PangoFontMap*"/>
795+ </return-value>
796+ <parameters>
797+ <parameter name="fonttype" transfer-ownership="none">
798+ <doc xml:space="preserve"
799+ filename="../pango/pangocairo-fontmap.c"
800+ line="112">desired #cairo_font_type_t</doc>
801+ <type name="cairo.FontType" c:type="cairo_font_type_t"/>
802+ </parameter>
803+ </parameters>
804+ </function>
805+ <function name="glyph_string_path"
806+ c:identifier="pango_cairo_glyph_string_path"
807+ version="1.10">
808+ <doc xml:space="preserve"
809+ filename="../pango/pangocairo-render.c"
810+ line="1173">Adds the glyphs in @glyphs to the current path in the specified
811+cairo context.
812+
813+The origin of the glyphs (the left edge of the baseline)
814+will be at the current point of the cairo context.</doc>
815+ <source-position filename="../pango/pangocairo.h" line="201"/>
816+ <return-value transfer-ownership="none">
817+ <type name="none" c:type="void"/>
818+ </return-value>
819+ <parameters>
820+ <parameter name="cr" transfer-ownership="none">
821+ <doc xml:space="preserve"
822+ filename="../pango/pangocairo-render.c"
823+ line="1175">a Cairo context</doc>
824+ <type name="cairo.Context" c:type="cairo_t*"/>
825+ </parameter>
826+ <parameter name="font" transfer-ownership="none">
827+ <doc xml:space="preserve"
828+ filename="../pango/pangocairo-render.c"
829+ line="1176">a `PangoFont` from a `PangoCairoFontMap`</doc>
830+ <type name="Pango.Font" c:type="PangoFont*"/>
831+ </parameter>
832+ <parameter name="glyphs" transfer-ownership="none">
833+ <doc xml:space="preserve"
834+ filename="../pango/pangocairo-render.c"
835+ line="1177">a `PangoGlyphString`</doc>
836+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
837+ </parameter>
838+ </parameters>
839+ </function>
840+ <function name="layout_line_path"
841+ c:identifier="pango_cairo_layout_line_path"
842+ version="1.10">
843+ <doc xml:space="preserve"
844+ filename="../pango/pangocairo-render.c"
845+ line="1198">Adds the text in `PangoLayoutLine` to the current path in the
846+specified cairo context.
847+
848+The origin of the glyphs (the left edge of the line) will be
849+at the current point of the cairo context.</doc>
850+ <source-position filename="../pango/pangocairo.h" line="205"/>
851+ <return-value transfer-ownership="none">
852+ <type name="none" c:type="void"/>
853+ </return-value>
854+ <parameters>
855+ <parameter name="cr" transfer-ownership="none">
856+ <doc xml:space="preserve"
857+ filename="../pango/pangocairo-render.c"
858+ line="1200">a Cairo context</doc>
859+ <type name="cairo.Context" c:type="cairo_t*"/>
860+ </parameter>
861+ <parameter name="line" transfer-ownership="none">
862+ <doc xml:space="preserve"
863+ filename="../pango/pangocairo-render.c"
864+ line="1201">a `PangoLayoutLine`</doc>
865+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
866+ </parameter>
867+ </parameters>
868+ </function>
869+ <function name="layout_path"
870+ c:identifier="pango_cairo_layout_path"
871+ version="1.10">
872+ <doc xml:space="preserve"
873+ filename="../pango/pangocairo-render.c"
874+ line="1221">Adds the text in a `PangoLayout` to the current path in the
875+specified cairo context.
876+
877+The top-left corner of the `PangoLayout` will be at the
878+current point of the cairo context.</doc>
879+ <source-position filename="../pango/pangocairo.h" line="208"/>
880+ <return-value transfer-ownership="none">
881+ <type name="none" c:type="void"/>
882+ </return-value>
883+ <parameters>
884+ <parameter name="cr" transfer-ownership="none">
885+ <doc xml:space="preserve"
886+ filename="../pango/pangocairo-render.c"
887+ line="1223">a Cairo context</doc>
888+ <type name="cairo.Context" c:type="cairo_t*"/>
889+ </parameter>
890+ <parameter name="layout" transfer-ownership="none">
891+ <doc xml:space="preserve"
892+ filename="../pango/pangocairo-render.c"
893+ line="1224">a Pango layout</doc>
894+ <type name="Pango.Layout" c:type="PangoLayout*"/>
895+ </parameter>
896+ </parameters>
897+ </function>
898+ <function name="show_error_underline"
899+ c:identifier="pango_cairo_show_error_underline"
900+ version="1.14">
901+ <doc xml:space="preserve"
902+ filename="../pango/pangocairo-render.c"
903+ line="1142">Draw a squiggly line in the specified cairo context that approximately
904+covers the given rectangle in the style of an underline used to indicate a
905+spelling error.
906+
907+The width of the underline is rounded to an integer
908+number of up/down segments and the resulting rectangle is centered in the
909+original rectangle.</doc>
910+ <source-position filename="../pango/pangocairo.h" line="191"/>
911+ <return-value transfer-ownership="none">
912+ <type name="none" c:type="void"/>
913+ </return-value>
914+ <parameters>
915+ <parameter name="cr" transfer-ownership="none">
916+ <doc xml:space="preserve"
917+ filename="../pango/pangocairo-render.c"
918+ line="1144">a Cairo context</doc>
919+ <type name="cairo.Context" c:type="cairo_t*"/>
920+ </parameter>
921+ <parameter name="x" transfer-ownership="none">
922+ <doc xml:space="preserve"
923+ filename="../pango/pangocairo-render.c"
924+ line="1145">The X coordinate of one corner of the rectangle</doc>
925+ <type name="gdouble" c:type="double"/>
926+ </parameter>
927+ <parameter name="y" transfer-ownership="none">
928+ <doc xml:space="preserve"
929+ filename="../pango/pangocairo-render.c"
930+ line="1146">The Y coordinate of one corner of the rectangle</doc>
931+ <type name="gdouble" c:type="double"/>
932+ </parameter>
933+ <parameter name="width" transfer-ownership="none">
934+ <doc xml:space="preserve"
935+ filename="../pango/pangocairo-render.c"
936+ line="1147">Non-negative width of the rectangle</doc>
937+ <type name="gdouble" c:type="double"/>
938+ </parameter>
939+ <parameter name="height" transfer-ownership="none">
940+ <doc xml:space="preserve"
941+ filename="../pango/pangocairo-render.c"
942+ line="1148">Non-negative height of the rectangle</doc>
943+ <type name="gdouble" c:type="double"/>
944+ </parameter>
945+ </parameters>
946+ </function>
947+ <function name="show_glyph_item"
948+ c:identifier="pango_cairo_show_glyph_item"
949+ version="1.22">
950+ <doc xml:space="preserve"
951+ filename="../pango/pangocairo-render.c"
952+ line="1066">Draws the glyphs in @glyph_item in the specified cairo context,
953+
954+embedding the text associated with the glyphs in the output if the
955+output format supports it (PDF for example), otherwise it acts
956+similar to [func@show_glyph_string].
957+
958+The origin of the glyphs (the left edge of the baseline) will
959+be drawn at the current point of the cairo context.
960+
961+Note that @text is the start of the text for layout, which is then
962+indexed by `glyph_item-&gt;item-&gt;offset`.</doc>
963+ <source-position filename="../pango/pangocairo.h" line="180"/>
964+ <return-value transfer-ownership="none">
965+ <type name="none" c:type="void"/>
966+ </return-value>
967+ <parameters>
968+ <parameter name="cr" transfer-ownership="none">
969+ <doc xml:space="preserve"
970+ filename="../pango/pangocairo-render.c"
971+ line="1068">a Cairo context</doc>
972+ <type name="cairo.Context" c:type="cairo_t*"/>
973+ </parameter>
974+ <parameter name="text" transfer-ownership="none">
975+ <doc xml:space="preserve"
976+ filename="../pango/pangocairo-render.c"
977+ line="1069">the UTF-8 text that @glyph_item refers to</doc>
978+ <type name="utf8" c:type="const char*"/>
979+ </parameter>
980+ <parameter name="glyph_item" transfer-ownership="none">
981+ <doc xml:space="preserve"
982+ filename="../pango/pangocairo-render.c"
983+ line="1070">a `PangoGlyphItem`</doc>
984+ <type name="Pango.GlyphItem" c:type="PangoGlyphItem*"/>
985+ </parameter>
986+ </parameters>
987+ </function>
988+ <function name="show_glyph_string"
989+ c:identifier="pango_cairo_show_glyph_string"
990+ version="1.10">
991+ <doc xml:space="preserve"
992+ filename="../pango/pangocairo-render.c"
993+ line="1041">Draws the glyphs in @glyphs in the specified cairo context.
994+
995+The origin of the glyphs (the left edge of the baseline) will
996+be drawn at the current point of the cairo context.</doc>
997+ <source-position filename="../pango/pangocairo.h" line="176"/>
998+ <return-value transfer-ownership="none">
999+ <type name="none" c:type="void"/>
1000+ </return-value>
1001+ <parameters>
1002+ <parameter name="cr" transfer-ownership="none">
1003+ <doc xml:space="preserve"
1004+ filename="../pango/pangocairo-render.c"
1005+ line="1043">a Cairo context</doc>
1006+ <type name="cairo.Context" c:type="cairo_t*"/>
1007+ </parameter>
1008+ <parameter name="font" transfer-ownership="none">
1009+ <doc xml:space="preserve"
1010+ filename="../pango/pangocairo-render.c"
1011+ line="1044">a `PangoFont` from a `PangoCairoFontMap`</doc>
1012+ <type name="Pango.Font" c:type="PangoFont*"/>
1013+ </parameter>
1014+ <parameter name="glyphs" transfer-ownership="none">
1015+ <doc xml:space="preserve"
1016+ filename="../pango/pangocairo-render.c"
1017+ line="1045">a `PangoGlyphString`</doc>
1018+ <type name="Pango.GlyphString" c:type="PangoGlyphString*"/>
1019+ </parameter>
1020+ </parameters>
1021+ </function>
1022+ <function name="show_layout"
1023+ c:identifier="pango_cairo_show_layout"
1024+ version="1.10">
1025+ <doc xml:space="preserve"
1026+ filename="../pango/pangocairo-render.c"
1027+ line="1120">Draws a `PangoLayout` in the specified cairo context.
1028+
1029+The top-left corner of the `PangoLayout` will be drawn
1030+at the current point of the cairo context.</doc>
1031+ <source-position filename="../pango/pangocairo.h" line="187"/>
1032+ <return-value transfer-ownership="none">
1033+ <type name="none" c:type="void"/>
1034+ </return-value>
1035+ <parameters>
1036+ <parameter name="cr" transfer-ownership="none">
1037+ <doc xml:space="preserve"
1038+ filename="../pango/pangocairo-render.c"
1039+ line="1122">a Cairo context</doc>
1040+ <type name="cairo.Context" c:type="cairo_t*"/>
1041+ </parameter>
1042+ <parameter name="layout" transfer-ownership="none">
1043+ <doc xml:space="preserve"
1044+ filename="../pango/pangocairo-render.c"
1045+ line="1123">a Pango layout</doc>
1046+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1047+ </parameter>
1048+ </parameters>
1049+ </function>
1050+ <function name="show_layout_line"
1051+ c:identifier="pango_cairo_show_layout_line"
1052+ version="1.10">
1053+ <doc xml:space="preserve"
1054+ filename="../pango/pangocairo-render.c"
1055+ line="1098">Draws a `PangoLayoutLine` in the specified cairo context.
1056+
1057+The origin of the glyphs (the left edge of the line) will
1058+be drawn at the current point of the cairo context.</doc>
1059+ <source-position filename="../pango/pangocairo.h" line="184"/>
1060+ <return-value transfer-ownership="none">
1061+ <type name="none" c:type="void"/>
1062+ </return-value>
1063+ <parameters>
1064+ <parameter name="cr" transfer-ownership="none">
1065+ <doc xml:space="preserve"
1066+ filename="../pango/pangocairo-render.c"
1067+ line="1100">a Cairo context</doc>
1068+ <type name="cairo.Context" c:type="cairo_t*"/>
1069+ </parameter>
1070+ <parameter name="line" transfer-ownership="none">
1071+ <doc xml:space="preserve"
1072+ filename="../pango/pangocairo-render.c"
1073+ line="1101">a `PangoLayoutLine`</doc>
1074+ <type name="Pango.LayoutLine" c:type="PangoLayoutLine*"/>
1075+ </parameter>
1076+ </parameters>
1077+ </function>
1078+ <function name="update_context"
1079+ c:identifier="pango_cairo_update_context"
1080+ version="1.10">
1081+ <doc xml:space="preserve"
1082+ filename="../pango/pangocairo-context.c"
1083+ line="158">Updates a `PangoContext` previously created for use with Cairo to
1084+match the current transformation and target surface of a Cairo
1085+context.
1086+
1087+If any layouts have been created for the context, it's necessary
1088+to call [method@Pango.Layout.context_changed] on those layouts.</doc>
1089+ <source-position filename="../pango/pangocairo.h" line="138"/>
1090+ <return-value transfer-ownership="none">
1091+ <type name="none" c:type="void"/>
1092+ </return-value>
1093+ <parameters>
1094+ <parameter name="cr" transfer-ownership="none">
1095+ <doc xml:space="preserve"
1096+ filename="../pango/pangocairo-context.c"
1097+ line="160">a Cairo context</doc>
1098+ <type name="cairo.Context" c:type="cairo_t*"/>
1099+ </parameter>
1100+ <parameter name="context" transfer-ownership="none">
1101+ <doc xml:space="preserve"
1102+ filename="../pango/pangocairo-context.c"
1103+ line="161">a `PangoContext`, from a pangocairo font map</doc>
1104+ <type name="Pango.Context" c:type="PangoContext*"/>
1105+ </parameter>
1106+ </parameters>
1107+ </function>
1108+ <function name="update_layout"
1109+ c:identifier="pango_cairo_update_layout"
1110+ version="1.10">
1111+ <doc xml:space="preserve"
1112+ filename="../pango/pangocairo-context.c"
1113+ line="494">Updates the private `PangoContext` of a `PangoLayout` created with
1114+[func@create_layout] to match the current transformation and target
1115+surface of a Cairo context.</doc>
1116+ <source-position filename="../pango/pangocairo.h" line="169"/>
1117+ <return-value transfer-ownership="none">
1118+ <type name="none" c:type="void"/>
1119+ </return-value>
1120+ <parameters>
1121+ <parameter name="cr" transfer-ownership="none">
1122+ <doc xml:space="preserve"
1123+ filename="../pango/pangocairo-context.c"
1124+ line="496">a Cairo context</doc>
1125+ <type name="cairo.Context" c:type="cairo_t*"/>
1126+ </parameter>
1127+ <parameter name="layout" transfer-ownership="none">
1128+ <doc xml:space="preserve"
1129+ filename="../pango/pangocairo-context.c"
1130+ line="497">a `PangoLayout`, from [func@create_layout]</doc>
1131+ <type name="Pango.Layout" c:type="PangoLayout*"/>
1132+ </parameter>
1133+ </parameters>
1134+ </function>
1135+ </namespace>
1136+</repository>
A internal/gir/spec/cairo-1.0.gir +688 -0
@@ -0,0 +1,688 @@
1+<?xml version="1.0"?>
2+<repository version="1.2"
3+ xmlns="http://www.gtk.org/introspection/core/1.0"
4+ xmlns:c="http://www.gtk.org/introspection/c/1.0"
5+ xmlns:glib="http://www.gtk.org/introspection/glib/1.0">
6+ <package name="cairo-gobject"/>
7+ <c:include name="cairo-gobject.h"/>
8+ <namespace name="cairo" version="1.0"
9+ shared-library="libcairo-gobject.so.2"
10+ c:identifier-prefixes="cairo"
11+ c:symbol-prefixes="cairo">
12+ <record name="Context" c:type="cairo_t" foreign="1"
13+ glib:type-name="CairoContext"
14+ glib:get-type="cairo_gobject_context_get_type"/>
15+ <record name="Device" c:type="cairo_device_t" foreign="1"
16+ glib:type-name="CairoDevice"
17+ glib:get-type="cairo_gobject_device_get_type"/>
18+ <record name="Surface" c:type="cairo_surface_t" foreign="1"
19+ glib:type-name="CairoSurface"
20+ glib:get-type="cairo_gobject_surface_get_type"/>
21+ <record name="Matrix" c:type="cairo_matrix_t" foreign="1"/>
22+ <record name="Pattern" c:type="cairo_pattern_t" foreign="1"
23+ glib:type-name="CairoPattern"
24+ glib:get-type="cairo_gobject_pattern_get_type"/>
25+ <record name="Region" c:type="cairo_region_t" foreign="1"
26+ glib:type-name="CairoRegion"
27+ glib:get-type="cairo_gobject_region_get_type"/>
28+ <enumeration name="Status" c:type="cairo_status_t"
29+ glib:type-name="cairo_status_t"
30+ glib:get-type="cairo_gobject_status_get_type">
31+ <member name="success"
32+ value="0"
33+ c:identifier="CAIRO_STATUS_SUCCESS"/>
34+ <member name="no_memory"
35+ value="1"
36+ c:identifier="CAIRO_STATUS_NO_MEMORY"/>
37+ <member name="invalid_restore"
38+ value="2"
39+ c:identifier="CAIRO_STATUS_INVALID_RESTORE"/>
40+ <member name="invalid_pop_group"
41+ value="3"
42+ c:identifier="CAIRO_STATUS_INVALID_POP_GROUP"/>
43+ <member name="no_current_point"
44+ value="4"
45+ c:identifier="CAIRO_STATUS_NO_CURRENT_POINT"/>
46+ <member name="invalid_matrix"
47+ value="5"
48+ c:identifier="CAIRO_STATUS_INVALID_MATRIX"/>
49+ <member name="invalid_status"
50+ value="6"
51+ c:identifier="CAIRO_STATUS_INVALID_STATUS"/>
52+ <member name="null_pointer"
53+ value="7"
54+ c:identifier="CAIRO_STATUS_NULL_POINTER"/>
55+ <member name="invalid_string"
56+ value="8"
57+ c:identifier="CAIRO_STATUS_INVALID_STRING"/>
58+ <member name="invalid_path_data"
59+ value="9"
60+ c:identifier="CAIRO_STATUS_INVALID_PATH_DATA"/>
61+ <member name="read_error"
62+ value="10"
63+ c:identifier="CAIRO_STATUS_READ_ERROR"/>
64+ <member name="write_error"
65+ value="11"
66+ c:identifier="CAIRO_STATUS_WRITE_ERROR"/>
67+ <member name="surface_finished"
68+ value="12"
69+ c:identifier="CAIRO_STATUS_SURFACE_FINISHED"/>
70+ <member name="surface_type_mismatch"
71+ value="13"
72+ c:identifier="CAIRO_STATUS_SURFACE_TYPE_MISMATCH"/>
73+ <member name="pattern_type_mismatch"
74+ value="14"
75+ c:identifier="CAIRO_STATUS_PATTERN_TYPE_MISMATCH"/>
76+ <member name="invalid_content"
77+ value="15"
78+ c:identifier="CAIRO_STATUS_INVALID_CONTENT"/>
79+ <member name="invalid_format"
80+ value="16"
81+ c:identifier="CAIRO_STATUS_INVALID_FORMAT"/>
82+ <member name="invalid_visual"
83+ value="17"
84+ c:identifier="CAIRO_STATUS_INVALID_VISUAL"/>
85+ <member name="file_not_found"
86+ value="18"
87+ c:identifier="CAIRO_STATUS_FILE_NOT_FOUND"/>
88+ <member name="invalid_dash"
89+ value="19"
90+ c:identifier="CAIRO_STATUS_INVALID_DASH"/>
91+ <member name="invalid_dsc_comment"
92+ value="20"
93+ c:identifier="CAIRO_STATUS_INVALID_DSC_COMMENT"/>
94+ <member name="invalid_index"
95+ value="21"
96+ c:identifier="CAIRO_STATUS_INVALID_INDEX"/>
97+ <member name="clip_not_representable"
98+ value="22"
99+ c:identifier="CAIRO_STATUS_CLIP_NOT_REPRESENTABLE"/>
100+ <member name="temp_file_error"
101+ value="23"
102+ c:identifier="CAIRO_STATUS_TEMP_FILE_ERROR"/>
103+ <member name="invalid_stride"
104+ value="24"
105+ c:identifier="CAIRO_STATUS_INVALID_STRIDE"/>
106+ <member name="font_type_mismatch"
107+ value="25"
108+ c:identifier="CAIRO_STATUS_FONT_TYPE_MISMATCH"/>
109+ <member name="user_font_immutable"
110+ value="26"
111+ c:identifier="CAIRO_STATUS_USER_FONT_IMMUTABLE"/>
112+ <member name="user_font_error"
113+ value="27"
114+ c:identifier="CAIRO_STATUS_USER_FONT_ERROR"/>
115+ <member name="negative_count"
116+ value="28"
117+ c:identifier="CAIRO_STATUS_NEGATIVE_COUNT"/>
118+ <member name="invalid_clusters"
119+ value="29"
120+ c:identifier="CAIRO_STATUS_INVALID_CLUSTERS"/>
121+ <member name="invalid_slant"
122+ value="30"
123+ c:identifier="CAIRO_STATUS_INVALID_SLANT"/>
124+ <member name="invalid_weight"
125+ value="31"
126+ c:identifier="CAIRO_STATUS_INVALID_WEIGHT"/>
127+ <member name="invalid_size"
128+ value="32"
129+ c:identifier="CAIRO_STATUS_INVALID_SIZE"/>
130+ <member name="user_font_not_implemented"
131+ value="33"
132+ c:identifier="CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED"/>
133+ <member name="device_type_mismatch"
134+ value="34"
135+ c:identifier="CAIRO_STATUS_DEVICE_TYPE_MISMATCH"/>
136+ <member name="device_error"
137+ value="35"
138+ c:identifier="CAIRO_STATUS_DEVICE_ERROR"/>
139+ <member name="invalid_mesh_construction"
140+ value="36"
141+ c:identifier="CAIRO_STATUS_INVALID_MESH_CONSTRUCTION"/>
142+ <member name="device_finished"
143+ value="37"
144+ c:identifier="CAIRO_STATUS_DEVICE_FINISHED"/>
145+ <member name="jbig2_global_missing"
146+ value="38"
147+ c:identifier="CAIRO_STATUS_JBIG2_GLOBAL_MISSING"/>
148+ </enumeration>
149+ <enumeration name="Content" c:type="cairo_content_t"
150+ glib:type-name="cairo_content_t"
151+ glib:get-type="cairo_gobject_content_get_type">
152+ <member name="color"
153+ value="4096"
154+ c:identifier="CAIRO_CONTENT_COLOR"/>
155+ <member name="alpha"
156+ value="8192"
157+ c:identifier="CAIRO_CONTENT_ALPHA"/>
158+ <member name="color_alpha"
159+ value="12288"
160+ c:identifier="CAIRO_CONTENT_COLOR_ALPHA"/>
161+ </enumeration>
162+ <enumeration name="Operator" c:type="cairo_operator_t"
163+ glib:type-name="cairo_operator_t"
164+ glib:get-type="cairo_gobject_operator_get_type">
165+ <member name="clear"
166+ value="0"
167+ c:identifier="CAIRO_OPERATOR_CLEAR"/>
168+ <member name="source"
169+ value="1"
170+ c:identifier="CAIRO_OPERATOR_SOURCE"/>
171+ <member name="over"
172+ value="2"
173+ c:identifier="CAIRO_OPERATOR_OVER"/>
174+ <member name="in"
175+ value="3"
176+ c:identifier="CAIRO_OPERATOR_IN"/>
177+ <member name="out"
178+ value="4"
179+ c:identifier="CAIRO_OPERATOR_OUT"/>
180+ <member name="atop"
181+ value="5"
182+ c:identifier="CAIRO_OPERATOR_ATOP"/>
183+ <member name="dest"
184+ value="6"
185+ c:identifier="CAIRO_OPERATOR_DEST"/>
186+ <member name="dest_over"
187+ value="7"
188+ c:identifier="CAIRO_OPERATOR_DEST_OVER"/>
189+ <member name="dest_in"
190+ value="8"
191+ c:identifier="CAIRO_OPERATOR_DEST_IN"/>
192+ <member name="dest_out"
193+ value="9"
194+ c:identifier="CAIRO_OPERATOR_DEST_OUT"/>
195+ <member name="dest_atop"
196+ value="10"
197+ c:identifier="CAIRO_OPERATOR_DEST_ATOP"/>
198+ <member name="xor"
199+ value="11"
200+ c:identifier="CAIRO_OPERATOR_XOR"/>
201+ <member name="add"
202+ value="12"
203+ c:identifier="CAIRO_OPERATOR_ADD"/>
204+ <member name="saturate"
205+ value="13"
206+ c:identifier="CAIRO_OPERATOR_SATURATE"/>
207+ <member name="multiply"
208+ value="14"
209+ c:identifier="CAIRO_OPERATOR_MULTIPLY"/>
210+ <member name="screen"
211+ value="15"
212+ c:identifier="CAIRO_OPERATOR_SCREEN"/>
213+ <member name="overlay"
214+ value="16"
215+ c:identifier="CAIRO_OPERATOR_OVERLAY"/>
216+ <member name="darken"
217+ value="17"
218+ c:identifier="CAIRO_OPERATOR_DARKEN"/>
219+ <member name="lighten"
220+ value="18"
221+ c:identifier="CAIRO_OPERATOR_LIGHTEN"/>
222+ <member name="color_dodge"
223+ value="19"
224+ c:identifier="CAIRO_OPERATOR_COLOR_DODGE"/>
225+ <member name="color_burn"
226+ value="20"
227+ c:identifier="CAIRO_OPERATOR_COLOR_BURN"/>
228+ <member name="hard_light"
229+ value="21"
230+ c:identifier="CAIRO_OPERATOR_HARD_LIGHT"/>
231+ <member name="soft_light"
232+ value="22"
233+ c:identifier="CAIRO_OPERATOR_SOFT_LIGHT"/>
234+ <member name="difference"
235+ value="23"
236+ c:identifier="CAIRO_OPERATOR_DIFFERENCE"/>
237+ <member name="exclusion"
238+ value="24"
239+ c:identifier="CAIRO_OPERATOR_EXCLUSION"/>
240+ <member name="hsl_hue"
241+ value="25"
242+ c:identifier="CAIRO_OPERATOR_HSL_HUE"/>
243+ <member name="hsl_saturation"
244+ value="26"
245+ c:identifier="CAIRO_OPERATOR_HSL_SATURATION"/>
246+ <member name="hsl_color"
247+ value="27"
248+ c:identifier="CAIRO_OPERATOR_HSL_COLOR"/>
249+ <member name="hsl_luminosity"
250+ value="28"
251+ c:identifier="CAIRO_OPERATOR_HSL_LUMINOSITY"/>
252+ </enumeration>
253+ <enumeration name="Antialias" c:type="cairo_antialias_t"
254+ glib:type-name="cairo_antialias_t"
255+ glib:get-type="cairo_gobject_antialias_get_type">
256+ <member name="default"
257+ value="0"
258+ c:identifier="CAIRO_ANTIALIAS_DEFAULT"/>
259+ <member name="none"
260+ value="1"
261+ c:identifier="CAIRO_ANTIALIAS_NONE"/>
262+ <member name="gray"
263+ value="2"
264+ c:identifier="CAIRO_ANTIALIAS_GRAY"/>
265+ <member name="subpixel"
266+ value="3"
267+ c:identifier="CAIRO_ANTIALIAS_SUBPIXEL"/>
268+ <member name="fast"
269+ value="4"
270+ c:identifier="CAIRO_ANTIALIAS_FAST"/>
271+ <member name="good"
272+ value="5"
273+ c:identifier="CAIRO_ANTIALIAS_GOOD"/>
274+ <member name="best"
275+ value="6"
276+ c:identifier="CAIRO_ANTIALIAS_BEST"/>
277+ </enumeration>
278+ <enumeration name="FillRule" c:type="cairo_fill_rule_t"
279+ glib:type-name="cairo_fill_rule_t"
280+ glib:get-type="cairo_gobject_fill_rule_get_type">
281+ <member name="winding"
282+ value="0"
283+ c:identifier="CAIRO_FILL_RULE_WINDING"/>
284+ <member name="even_odd"
285+ value="1"
286+ c:identifier="CAIRO_FILL_RULE_EVEN_ODD"/>
287+ </enumeration>
288+ <enumeration name="LineCap" c:type="cairo_line_cap_t"
289+ glib:type-name="cairo_line_cap_t"
290+ glib:get-type="cairo_gobject_line_cap_get_type">
291+ <member name="butt"
292+ value="0"
293+ c:identifier="CAIRO_LINE_CAP_BUTT"/>
294+ <member name="round"
295+ value="1"
296+ c:identifier="CAIRO_LINE_CAP_ROUND"/>
297+ <member name="square"
298+ value="2"
299+ c:identifier="CAIRO_LINE_CAP_SQUARE"/>
300+ </enumeration>
301+ <enumeration name="LineJoin" c:type="cairo_line_join_t"
302+ glib:type-name="cairo_line_join_t"
303+ glib:get-type="cairo_gobject_line_join_get_type">
304+ <member name="miter"
305+ value="0"
306+ c:identifier="CAIRO_LINE_JOIN_MITER"/>
307+ <member name="round"
308+ value="1"
309+ c:identifier="CAIRO_LINE_JOIN_ROUND"/>
310+ <member name="bevel"
311+ value="2"
312+ c:identifier="CAIRO_LINE_JOIN_BEVEL"/>
313+ </enumeration>
314+ <enumeration name="TextClusterFlags" c:type="cairo_text_cluster_flags_t"
315+ glib:type-name="cairo_text_cluster_flags_t"
316+ glib:get-type="cairo_gobject_text_cluster_flags_get_type">
317+ <member name="backward"
318+ value="1"
319+ c:identifier="CAIRO_TEXT_CLUSTER_FLAG_BACKWARD"/>
320+ </enumeration>
321+ <enumeration name="FontSlant" c:type="cairo_font_slant_t"
322+ glib:type-name="cairo_font_slant_t"
323+ glib:get-type="cairo_gobject_font_slant_get_type">
324+ <member name="normal"
325+ value="0"
326+ c:identifier="CAIRO_FONT_SLANT_NORMAL"/>
327+ <member name="italic"
328+ value="1"
329+ c:identifier="CAIRO_FONT_SLANT_ITALIC"/>
330+ <member name="oblique"
331+ value="2"
332+ c:identifier="CAIRO_FONT_SLANT_OBLIQUE"/>
333+ </enumeration>
334+ <enumeration name="FontWeight" c:type="cairo_font_weight_t"
335+ glib:type-name="cairo_font_weight_t"
336+ glib:get-type="cairo_gobject_font_weight_get_type">
337+ <member name="normal"
338+ value="0"
339+ c:identifier="CAIRO_FONT_WEIGHT_NORMAL"/>
340+ <member name="bold"
341+ value="1"
342+ c:identifier="CAIRO_FONT_WEIGHT_BOLD"/>
343+ </enumeration>
344+ <enumeration name="SubpixelOrder" c:type="cairo_subpixel_order_t"
345+ glib:type-name="cairo_subpixel_order_t"
346+ glib:get-type="cairo_gobject_subpixel_order_get_type">
347+ <member name="default"
348+ value="0"
349+ c:identifier="CAIRO_SUBPIXEL_ORDER_DEFAULT"/>
350+ <member name="rgb"
351+ value="1"
352+ c:identifier="CAIRO_SUBPIXEL_ORDER_RGB"/>
353+ <member name="bgr"
354+ value="2"
355+ c:identifier="CAIRO_SUBPIXEL_ORDER_BGR"/>
356+ <member name="vrgb"
357+ value="3"
358+ c:identifier="CAIRO_SUBPIXEL_ORDER_VRGB"/>
359+ <member name="vbgr"
360+ value="4"
361+ c:identifier="CAIRO_SUBPIXEL_ORDER_VBGR"/>
362+ </enumeration>
363+ <enumeration name="HintStyle" c:type="cairo_hint_style_t"
364+ glib:type-name="cairo_hint_style_t"
365+ glib:get-type="cairo_gobject_hint_style_get_type">
366+ <member name="default"
367+ value="0"
368+ c:identifier="CAIRO_HINT_STYLE_DEFAULT"/>
369+ <member name="none"
370+ value="1"
371+ c:identifier="CAIRO_HINT_STYLE_NONE"/>
372+ <member name="slight"
373+ value="2"
374+ c:identifier="CAIRO_HINT_STYLE_SLIGHT"/>
375+ <member name="medium"
376+ value="3"
377+ c:identifier="CAIRO_HINT_STYLE_MEDIUM"/>
378+ <member name="full"
379+ value="4"
380+ c:identifier="CAIRO_HINT_STYLE_FULL"/>
381+ </enumeration>
382+ <enumeration name="HintMetrics" c:type="cairo_hint_metrics_t"
383+ glib:type-name="cairo_hint_metrics_t"
384+ glib:get-type="cairo_gobject_hint_metrics_get_type">
385+ <member name="default"
386+ value="0"
387+ c:identifier="CAIRO_HINT_METRICS_DEFAULT"/>
388+ <member name="off"
389+ value="1"
390+ c:identifier="CAIRO_HINT_METRICS_OFF"/>
391+ <member name="on"
392+ value="2"
393+ c:identifier="CAIRO_HINT_METRICS_ON"/>
394+ </enumeration>
395+ <record name="FontOptions" c:type="cairo_font_options_t" foreign="1"
396+ glib:type-name="CairoFontOptions"
397+ glib:get-type="cairo_gobject_font_options_get_type"/>
398+ <enumeration name="FontType" c:type="cairo_font_type_t"
399+ glib:type-name="cairo_font_type_t"
400+ glib:get-type="cairo_gobject_font_type_get_type">
401+ <member name="toy"
402+ value="0"
403+ c:identifier="CAIRO_FONT_TYPE_TOY"/>
404+ <member name="ft"
405+ value="1"
406+ c:identifier="CAIRO_FONT_TYPE_FT"/>
407+ <member name="win32"
408+ value="2"
409+ c:identifier="CAIRO_FONT_TYPE_WIN32"/>
410+ <member name="quartz"
411+ value="3"
412+ c:identifier="CAIRO_FONT_TYPE_QUARTZ"/>
413+ <member name="user"
414+ value="4"
415+ c:identifier="CAIRO_FONT_TYPE_USER"/>
416+ </enumeration>
417+ <enumeration name="PathDataType" c:type="cairo_path_data_type_t"
418+ glib:type-name="cairo_path_data_type_t"
419+ glib:get-type="cairo_gobject_path_data_type_get_type">
420+ <member name="move_to"
421+ value="0"
422+ c:identifier="CAIRO_PATH_MOVE_TO"/>
423+ <member name="line_to"
424+ value="1"
425+ c:identifier="CAIRO_PATH_LINE_TO"/>
426+ <member name="curve_to"
427+ value="2"
428+ c:identifier="CAIRO_PATH_CURVE_TO"/>
429+ <member name="close_path"
430+ value="3"
431+ c:identifier="CAIRO_PATH_CLOSE_PATH"/>
432+ </enumeration>
433+ <enumeration name="DeviceType" c:type="cairo_device_type_t"
434+ glib:type-name="cairo_device_type_t"
435+ glib:get-type="cairo_gobject_device_type_get_type">
436+ <member name="drm"
437+ value="0"
438+ c:identifier="CAIRO_DEVICE_TYPE_DRM"/>
439+ <member name="gl"
440+ value="1"
441+ c:identifier="CAIRO_DEVICE_TYPE_GL"/>
442+ <member name="script"
443+ value="2"
444+ c:identifier="CAIRO_DEVICE_TYPE_SCRIPT"/>
445+ <member name="xcb"
446+ value="3"
447+ c:identifier="CAIRO_DEVICE_TYPE_XCB"/>
448+ <member name="xlib"
449+ value="4"
450+ c:identifier="CAIRO_DEVICE_TYPE_XLIB"/>
451+ <member name="xml"
452+ value="5"
453+ c:identifier="CAIRO_DEVICE_TYPE_XML"/>
454+ <member name="cogl"
455+ value="6"
456+ c:identifier="CAIRO_DEVICE_TYPE_COGL"/>
457+ <member name="win32"
458+ value="7"
459+ c:identifier="CAIRO_DEVICE_TYPE_WIN32"/>
460+ <member name="invalid"
461+ value="-1"
462+ c:identifier="CAIRO_DEVICE_TYPE_INVALID"/>
463+ </enumeration>
464+ <enumeration name="SurfaceType" c:type="cairo_surface_type_t"
465+ glib:type-name="cairo_surface_type_t"
466+ glib:get-type="cairo_gobject_surface_type_get_type">
467+ <member name="image"
468+ value="0"
469+ c:identifier="CAIRO_SURFACE_TYPE_IMAGE"/>
470+ <member name="pdf"
471+ value="1"
472+ c:identifier="CAIRO_SURFACE_TYPE_PDF"/>
473+ <member name="ps"
474+ value="2"
475+ c:identifier="CAIRO_SURFACE_TYPE_PS"/>
476+ <member name="xlib"
477+ value="3"
478+ c:identifier="CAIRO_SURFACE_TYPE_XLIB"/>
479+ <member name="xcb"
480+ value="4"
481+ c:identifier="CAIRO_SURFACE_TYPE_XCB"/>
482+ <member name="glitz"
483+ value="5"
484+ c:identifier="CAIRO_SURFACE_TYPE_GLITZ"/>
485+ <member name="quartz"
486+ value="6"
487+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ"/>
488+ <member name="win32"
489+ value="7"
490+ c:identifier="CAIRO_SURFACE_TYPE_WIN32"/>
491+ <member name="beos"
492+ value="8"
493+ c:identifier="CAIRO_SURFACE_TYPE_BEOS"/>
494+ <member name="directfb"
495+ value="9"
496+ c:identifier="CAIRO_SURFACE_TYPE_DIRECTFB"/>
497+ <member name="svg"
498+ value="10"
499+ c:identifier="CAIRO_SURFACE_TYPE_SVG"/>
500+ <member name="os2"
501+ value="11"
502+ c:identifier="CAIRO_SURFACE_TYPE_OS2"/>
503+ <member name="win32_printing"
504+ value="12"
505+ c:identifier="CAIRO_SURFACE_TYPE_WIN32_PRINTING"/>
506+ <member name="quartz_image"
507+ value="13"
508+ c:identifier="CAIRO_SURFACE_TYPE_QUARTZ_IMAGE"/>
509+ <member name="script"
510+ value="14"
511+ c:identifier="CAIRO_SURFACE_TYPE_SCRIPT"/>
512+ <member name="qt"
513+ value="15"
514+ c:identifier="CAIRO_SURFACE_TYPE_QT"/>
515+ <member name="recording"
516+ value="16"
517+ c:identifier="CAIRO_SURFACE_TYPE_RECORDING"/>
518+ <member name="vg"
519+ value="17"
520+ c:identifier="CAIRO_SURFACE_TYPE_VG"/>
521+ <member name="gl"
522+ value="18"
523+ c:identifier="CAIRO_SURFACE_TYPE_GL"/>
524+ <member name="drm"
525+ value="19"
526+ c:identifier="CAIRO_SURFACE_TYPE_DRM"/>
527+ <member name="tee"
528+ value="20"
529+ c:identifier="CAIRO_SURFACE_TYPE_TEE"/>
530+ <member name="xml"
531+ value="21"
532+ c:identifier="CAIRO_SURFACE_TYPE_XML"/>
533+ <member name="skia"
534+ value="22"
535+ c:identifier="CAIRO_SURFACE_TYPE_SKIA"/>
536+ <member name="subsurface"
537+ value="23"
538+ c:identifier="CAIRO_SURFACE_TYPE_SUBSURFACE"/>
539+ <member name="cogl"
540+ value="24"
541+ c:identifier="CAIRO_SURFACE_TYPE_COGL"/>
542+ </enumeration>
543+ <enumeration name="Format" c:type="cairo_format_t"
544+ glib:type-name="cairo_format_t"
545+ glib:get-type="cairo_gobject_format_get_type">
546+ <member name="invalid"
547+ value="-1"
548+ c:identifier="CAIRO_FORMAT_INVALID"/>
549+ <member name="argb32"
550+ value="0"
551+ c:identifier="CAIRO_FORMAT_ARGB32"/>
552+ <member name="rgb24"
553+ value="1"
554+ c:identifier="CAIRO_FORMAT_RGB24"/>
555+ <member name="a8"
556+ value="2"
557+ c:identifier="CAIRO_FORMAT_A8"/>
558+ <member name="a1"
559+ value="3"
560+ c:identifier="CAIRO_FORMAT_A1"/>
561+ <member name="rgb16_565"
562+ value="4"
563+ c:identifier="CAIRO_FORMAT_RGB16_565"/>
564+ <member name="rgb30"
565+ value="5"
566+ c:identifier="CAIRO_FORMAT_RGB30"/>
567+ </enumeration>
568+ <enumeration name="PatternType" c:type="cairo_pattern_type_t"
569+ glib:type-name="cairo_pattern_type_t"
570+ glib:get-type="cairo_gobject_pattern_type_get_type">
571+ <member name="solid"
572+ value="0"
573+ c:identifier="CAIRO_PATTERN_TYPE_SOLID"/>
574+ <member name="surface"
575+ value="1"
576+ c:identifier="CAIRO_PATTERN_TYPE_SURFACE"/>
577+ <member name="linear"
578+ value="2"
579+ c:identifier="CAIRO_PATTERN_TYPE_LINEAR"/>
580+ <member name="radial"
581+ value="3"
582+ c:identifier="CAIRO_PATTERN_TYPE_RADIAL"/>
583+ <member name="mesh"
584+ value="4"
585+ c:identifier="CAIRO_PATTERN_TYPE_MESH"/>
586+ <member name="raster_source"
587+ value="5"
588+ c:identifier="CAIRO_PATTERN_TYPE_RASTER_SOURCE"/>
589+ </enumeration>
590+ <enumeration name="Extend" c:type="cairo_extend_t"
591+ glib:type-name="cairo_extend_t"
592+ glib:get-type="cairo_gobject_extend_get_type">
593+ <member name="none"
594+ value="0"
595+ c:identifier="CAIRO_EXTEND_NONE"/>
596+ <member name="repeat"
597+ value="1"
598+ c:identifier="CAIRO_EXTEND_REPEAT"/>
599+ <member name="reflect"
600+ value="2"
601+ c:identifier="CAIRO_EXTEND_REFLECT"/>
602+ <member name="pad"
603+ value="3"
604+ c:identifier="CAIRO_EXTEND_PAD"/>
605+ </enumeration>
606+ <enumeration name="Filter" c:type="cairo_filter_t"
607+ glib:type-name="cairo_filter_t"
608+ glib:get-type="cairo_gobject_filter_get_type">
609+ <member name="fast"
610+ value="0"
611+ c:identifier="CAIRO_FILTER_FAST"/>
612+ <member name="good"
613+ value="1"
614+ c:identifier="CAIRO_FILTER_GOOD"/>
615+ <member name="best"
616+ value="2"
617+ c:identifier="CAIRO_FILTER_BEST"/>
618+ <member name="nearest"
619+ value="3"
620+ c:identifier="CAIRO_FILTER_NEAREST"/>
621+ <member name="bilinear"
622+ value="4"
623+ c:identifier="CAIRO_FILTER_BILINEAR"/>
624+ <member name="gaussian"
625+ value="5"
626+ c:identifier="CAIRO_FILTER_GAUSSIAN"/>
627+ </enumeration>
628+ <enumeration name="RegionOverlap" c:type="cairo_region_overlap_t"
629+ glib:type-name="cairo_region_overlap_t"
630+ glib:get-type="cairo_gobject_region_overlap_get_type">
631+ <member name="in"
632+ value="0"
633+ c:identifier="CAIRO_REGION_OVERLAP_IN"/>
634+ <member name="out"
635+ value="1"
636+ c:identifier="CAIRO_REGION_OVERLAP_OUT"/>
637+ <member name="part"
638+ value="2"
639+ c:identifier="CAIRO_REGION_OVERLAP_PART"/>
640+ </enumeration>
641+ <record name="FontFace" c:type="cairo_font_face_t" foreign="1"
642+ glib:type-name="CairoFontFace"
643+ glib:get-type="cairo_gobject_font_face_get_type"/>
644+ <record name="ScaledFont" c:type="cairo_scaled_font_t" foreign="1"
645+ glib:type-name="CairoScaledFont"
646+ glib:get-type="cairo_gobject_scaled_font_get_type"/>
647+ <record name="Path" c:type="cairo_path_t" foreign="1"/>
648+ <record name="Rectangle" c:type="cairo_rectangle_t"
649+ glib:type-name="CairoRectangle"
650+ glib:get-type="cairo_gobject_rectangle_get_type">
651+ <field name="x" writable="1">
652+ <type name="gdouble" c:type="gdouble"/>
653+ </field>
654+ <field name="y" writable="1">
655+ <type name="gdouble" c:type="gdouble"/>
656+ </field>
657+ <field name="width" writable="1">
658+ <type name="gdouble" c:type="gdouble"/>
659+ </field>
660+ <field name="height" writable="1">
661+ <type name="gdouble" c:type="gdouble"/>
662+ </field>
663+ </record>
664+ <record name="RectangleInt" c:type="cairo_rectangle_int_t"
665+ glib:type-name="CairoRectangleInt"
666+ glib:get-type="cairo_gobject_rectangle_int_get_type">
667+ <field name="x" writable="1">
668+ <type name="gint" c:type="gint"/>
669+ </field>
670+ <field name="y" writable="1">
671+ <type name="gint" c:type="gint"/>
672+ </field>
673+ <field name="width" writable="1">
674+ <type name="gint" c:type="gint"/>
675+ </field>
676+ <field name="height" writable="1">
677+ <type name="gint" c:type="gint"/>
678+ </field>
679+ </record>
680+ <function name="image_surface_create" c:identifier="cairo_image_surface_create">
681+ <return-value transfer-ownership="none">
682+ <type name="none" c:type="void"/>
683+ </return-value>
684+ <parameters>
685+ </parameters>
686+ </function>
687+ </namespace>
688+</repository>
A internal/gir/types/interface.go +52 -0
@@ -0,0 +1,52 @@
1+package types
2+
3+import (
4+ "strings"
5+
6+ "github.com/jwijenbergh/puregotk/internal/gir/util"
7+)
8+
9+func ConvertInterface(currns string, ins string, inter Interface, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
10+ var methods []InterfaceFuncTemplate
11+
12+ for _, m := range inter.Methods {
13+ name := util.SnakeToCamel(m.Name)
14+ if implemented != nil {
15+ v, ok := implemented[name]
16+ if v && ok {
17+ continue
18+ }
19+ }
20+ var newns string
21+ if ins != "" {
22+ newns = ins + "."
23+ }
24+ methods = append(methods, InterfaceFuncTemplate{
25+ Namespace: newns,
26+ FullName: util.SnakeToCamel(m.CIdentifier),
27+ FuncTemplate: FuncTemplate{
28+ Doc: m.Doc.StringSafe(),
29+ CName: m.CIdentifier,
30+ Name: name,
31+ Args: m.Parameters.Template(currns, ins, kinds),
32+ Ret: m.ReturnValue.Template(currns, ins, kinds),
33+ },
34+ })
35+ }
36+ name := util.SnakeToCamel(inter.Name)
37+ return InterfaceTemplate{
38+ Name: name,
39+ Doc: inter.Doc.StringSafe(),
40+ Methods: methods,
41+ }
42+}
43+
44+func GetInterfaceFuncs(ns string, name string, implemented map[string]bool, kinds KindMap) InterfaceTemplate {
45+ inter := kinds.MustInterface(ns, name)
46+ parts := strings.Split(name, ".")
47+ var ins string
48+ if len(parts) > 1 {
49+ ins = strings.ToLower(parts[0])
50+ }
51+ return ConvertInterface(ns, ins, inter, implemented, kinds)
52+}
A internal/gir/types/kind.go +51 -0
@@ -0,0 +1,51 @@
1+package types
2+
3+import "github.com/jwijenbergh/puregotk/internal/gir/util"
4+
5+type Kind int8
6+
7+const (
8+ UnknownType Kind = iota
9+ AliasType
10+ CallbackType
11+ ClassesType
12+ InterfacesType
13+ RecordsType
14+ OtherType
15+)
16+
17+type KindMap map[string]KindPair
18+
19+func (km KindMap) key(ns string, name string) string {
20+ return util.NormalizeNamespace(ns, name, false)
21+}
22+
23+func (km KindMap) Add(ns string, name string, t Kind, v interface{}) {
24+ k := km.key(ns, name)
25+ km[k] = KindPair{
26+ K: t,
27+ Value: v,
28+ }
29+}
30+
31+func (km KindMap) pair(ns string, name string) KindPair {
32+ f := util.NormalizeNamespace(ns, name, false)
33+ return km[f]
34+}
35+
36+func (km KindMap) Kind(ns string, name string) Kind {
37+ return km.pair(ns, name).K
38+}
39+
40+func (km KindMap) MustInterface(ns string, name string) Interface {
41+ p := km.pair(ns, name)
42+ if p.K != InterfacesType {
43+ panic("value is not an interface")
44+ }
45+ return p.Value.(Interface)
46+}
47+
48+type KindPair struct {
49+ K Kind
50+ Value interface{}
51+}
A internal/gir/types/template.go +284 -0
@@ -0,0 +1,284 @@
1+package types
2+
3+import (
4+ "fmt"
5+ "strings"
6+
7+ "github.com/jwijenbergh/puregotk/internal/gir/util"
8+)
9+
10+type argsTemplate struct {
11+ // Names are the variables but just the names
12+ Names []string
13+
14+ // Types are the variables but just the types
15+ Types []string
16+
17+ // Call are the variables as given in a function call
18+ Call []string
19+
20+ Full []string
21+}
22+
23+type funcArgsTemplate struct {
24+ // Pure are the arguments as passed directly to PureGo
25+ // The pure Call is a special case that contains the arguments for a callback call
26+ Pure argsTemplate
27+
28+ // API are the arguments as suitable for a Go API
29+ API argsTemplate
30+}
31+
32+func (f *funcArgsTemplate) AddAPI(t string, n string, k Kind, ns string) {
33+ c := n
34+ stars := strings.Count(t, "*")
35+ gobjectNs := "gobject."
36+ if strings.ToLower(ns) == "gobject" {
37+ gobjectNs = ""
38+ }
39+ switch k {
40+ case CallbackType:
41+ c = fmt.Sprintf("purego.NewCallback(%s)", n)
42+ case ClassesType:
43+ if stars == 0 {
44+ c = n
45+ t = "uintptr"
46+ } else if stars > 1 {
47+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
48+ } else if stars == 1 {
49+ c = n + ".GoPointer()"
50+ }
51+ case InterfacesType:
52+ t = strings.TrimPrefix(t, "*")
53+ if stars == 0 {
54+ c = n
55+ t = "uintptr"
56+ } else if stars > 1 {
57+ c = fmt.Sprintf("%sConvertPtr(%s)", gobjectNs, n)
58+ } else if stars == 1 {
59+ c = n + ".GoPointer()"
60+ }
61+ }
62+
63+ // special case for varargs
64+ if n == "varArgs" {
65+ c = n + "..."
66+ }
67+ f.API.Names = append(f.API.Names, n)
68+ f.API.Types = append(f.API.Types, t)
69+ f.API.Call = append(f.API.Call, c)
70+ f.API.Full = append(f.API.Full, n+" "+t)
71+}
72+
73+func (f *funcArgsTemplate) AddPure(t string, n string, k Kind) {
74+ n += "p"
75+ c := n
76+ stars := strings.Count(t, "*")
77+ switch k {
78+ case RecordsType:
79+ if stars == 0 {
80+ t = "uintptr"
81+ }
82+ case CallbackType:
83+ t = "uintptr"
84+ case ClassesType:
85+ if stars == 0 {
86+ c = n
87+ t = "uintptr"
88+ } else {
89+ c = fmt.Sprintf("%sNewFromInternalPtr(%s)", strings.TrimPrefix(t, "*"), n)
90+ t = strings.Repeat("*", stars-1) + "uintptr"
91+ }
92+ case InterfacesType:
93+ if stars == 0 {
94+ c = n
95+ t = "uintptr"
96+ } else {
97+ c = fmt.Sprintf("%s{Ptr: %s}", t+"Base", n)
98+ t = strings.Repeat("*", stars-1) + "uintptr"
99+ }
100+ }
101+ f.Pure.Names = append(f.Pure.Names, n)
102+ f.Pure.Types = append(f.Pure.Types, t)
103+ f.Pure.Call = append(f.Pure.Call, c)
104+ f.Pure.Full = append(f.Pure.Full, n+" "+t)
105+}
106+
107+func (f *funcArgsTemplate) Add(p Parameter, ins string, ns string, kinds KindMap) {
108+ // get the lookup namespace
109+ // as if the interface namespace is non-empty
110+ // means we can also lookup in the namespace of the interface
111+ lns := ns
112+ if ins != "" {
113+ lns = ins
114+ }
115+ goType := p.Translate(lns, kinds)
116+ kind := kinds.Kind(lns, goType)
117+ stars := strings.Count(goType, "*")
118+ goType = util.NormalizeNamespace(ns, goType, true)
119+ if kind != OtherType && kind != UnknownType {
120+ if ins != "" && strings.Count(goType, ".") < 1 {
121+ goType = ins + "." + goType
122+ }
123+ }
124+ if stars > 0 {
125+ goType = strings.Repeat("*", stars) + strings.ReplaceAll(goType, "*", "")
126+ }
127+
128+ // Get a suitable variable name
129+ varName := p.VarName()
130+
131+ f.AddAPI(goType, varName, kind, ns)
132+ f.AddPure(goType, varName, kind)
133+}
134+
135+type CallbackTemplate struct {
136+ Doc string
137+ Name string
138+ Args funcArgsTemplate
139+ Ret funcRetTemplate
140+}
141+
142+type AliasTemplate struct {
143+ // Name is the name of the alias given to the Go type declaration
144+ Name string
145+
146+ // Doc is the documentation of the alias
147+ Doc string
148+
149+ // Value is the value for the alias as a Go type
150+ Value string
151+}
152+
153+type RecordField struct {
154+ // Name is the Go name of the field
155+ Name string
156+
157+ // Type is the Go type of the field
158+ Type string
159+}
160+
161+type RecordTemplate struct {
162+ // Name is the name of the record given to the Go type declaration
163+ Name string
164+
165+ // Doc is the documentation of the alias
166+ Doc string
167+
168+ // Fields is the list of record fields
169+ Fields []RecordField
170+}
171+
172+type enumValues struct {
173+ // Doc is the documentation for the value
174+ Doc string
175+ // Name is the name of the enumeration value
176+ Name string
177+ // Value is the actual underlying value
178+ Value int
179+}
180+
181+type EnumTemplate struct {
182+ // Name is the name of the enumeration declared as the Go type for the int
183+ Name string
184+ // Doc is the documentation for the enumeration
185+ Doc string
186+ // Values are the list of values for the enumeration
187+ Values []enumValues
188+}
189+
190+type funcRetTemplate struct {
191+ // Raw is the raw value for the underlying purego function
192+ Raw string
193+ // Value is the underlying return value as a Go type
194+ Value string
195+ // Class indicates whether or not the return value is a class
196+ Class bool
197+ // RefSink indicates whether or not we should increase the reference count using obj.RefSink()
198+ RefSink bool
199+}
200+
201+func (fr *funcRetTemplate) Instance() string {
202+ if strings.HasPrefix(fr.Value, "*") {
203+ return "&"+fr.Value[1:]
204+ }
205+ return fr.Value
206+}
207+
208+type FuncTemplate struct {
209+ // Name is the name of the function declared as the Go function variable and public exposed API
210+ Name string
211+ // CName is the raw c name to be passed to purego register
212+ CName string
213+ // Doc is the documentation for the function
214+ Doc string
215+ // Args are the arguments
216+ Args funcArgsTemplate
217+ // Ret is the return argument
218+ Ret funcRetTemplate
219+}
220+
221+type InterfaceFuncTemplate struct {
222+ Namespace string
223+ FullName string
224+ FuncTemplate
225+}
226+
227+type SignalsTemplate struct {
228+ Doc string
229+ Name string
230+ CName string
231+ Args funcArgsTemplate
232+ Ret funcRetTemplate
233+}
234+
235+type ClassTemplate struct {
236+ // Doc is the documentation for the class
237+ Doc string
238+ // Name is the name of the class that is given to the Go struct
239+ Name string
240+ // Parent is a non-empty string of the embedded parent struct
241+ Parent string
242+ // Constructors is the slice of functions that create the class struct
243+ Constructors []FuncTemplate
244+ // Receivers is the slice of functions that have value receivers to the struct
245+ Receivers []FuncTemplate
246+ // Interfaces are receiver methods that are implemented because it needs to satisfy a certain interface
247+ Interfaces []InterfaceTemplate
248+ // Signals are helpers for ConnectX receivers
249+ Signals []SignalsTemplate
250+}
251+
252+type InterfaceTemplate struct {
253+ Doc string
254+ Name string
255+ // Methods is the methods that this interface defines
256+ Methods []InterfaceFuncTemplate
257+}
258+
259+type TemplateArg struct {
260+ // PkgName is the name of the package, declared at the top-level
261+ PkgName string
262+ // PkgEnv is the name of the package in the load environment variable
263+ PkgEnv string
264+ // NeedsInit declares whether or not this file needs an init code to register functions with purego
265+ NeedsInit bool
266+ // Imports defines the package imports that we need
267+ // This does not include purego
268+ // As the template already includes that if `NeedsInit` is set to true
269+ Imports []string
270+ // Aliases are type aliases declared as type ... = ...
271+ Aliases []AliasTemplate
272+ // Aliases are structs that are not classes
273+ Records []RecordTemplate
274+ // Callbacks are functions that will be converted with purego to uintptr
275+ Callbacks []CallbackTemplate
276+ // Enums are enumerations declared as const ... .... = ....
277+ Enums []EnumTemplate
278+ // Functions are the Go function declarations
279+ Functions []FuncTemplate
280+ // Interfaces is the list of interfaces that this package implements
281+ Interfaces []InterfaceTemplate
282+ // Classes are the Go struct with receiver declarations
283+ Classes []ClassTemplate
284+}
A internal/gir/types/types.go +698 -0
@@ -0,0 +1,698 @@
1+// package types implements types as found in gir XML files
2+// NOTE: This was copied largely from (the type definitions) from
3+package types
4+
5+import (
6+ "encoding/xml"
7+ "strconv"
8+ "strings"
9+
10+ "github.com/jwijenbergh/puregotk/internal/gir/util"
11+)
12+
13+// convList maps the given GIR primitive type to a Go builtin type.
14+// See https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#LL483C1-L512C2
15+var convList = map[string]string{
16+ "none": "",
17+ "gboolean": "bool",
18+ "gfloat": "float32",
19+ "gdouble": "float64",
20+ // This was changed because e.g. the error code in a GError struct is a gint and it has to be an int32
21+ // gint is a typedef to an int and on 32 and 64 bit systems a c int is 32 bits commonly, whereas in go an int is 32 bits on 32 bits systems and 64 bits on 64 bits systems
22+ // gotk4 seems to not cast these, see e.g. https://github.com/diamondburned/gotk4/blob/fd960d20b525a07580938d10a214336bafb47d12/gir/girgen/types/types.go#L473-L481
23+ "gint": "int32",
24+ "gssize": "int",
25+ "gint8": "int8",
26+ "gint16": "int16",
27+ "gshort": "int16",
28+ "gint32": "int32",
29+ "glong": "int32",
30+ "int32": "int32",
31+ "gint64": "int64",
32+ "guint": "uint",
33+ "gsize": "uint",
34+ "guchar": "byte",
35+ "gchar": "byte",
36+ "guint8": "byte", // some weird cases
37+ "guint16": "uint16",
38+ "gushort": "uint16",
39+ "guint32": "uint32",
40+ "gulong": "uint32",
41+ "gunichar": "uint32",
42+ "guint64": "uint64",
43+ "guintptr": "uintptr",
44+ "utf8": "string",
45+ "filename": "string",
46+
47+ // these are probably not correct but needed to compile
48+ "long double": "float64",
49+ "va_list": "[]interface{}",
50+ "gpointer": "uintptr",
51+ "GType": "[]interface{}",
52+ "const char*": "string",
53+ "char**": "[]string",
54+ // not exported
55+ "HarfBuzz.font_t": "uintptr",
56+ //"GLib.Quark": "byte",
57+ //"Allocation": "uintptr",
58+}
59+
60+// Repository represents a GObject Introspection Repository, which contains the
61+// includes, C includes and namespaces of a single gir file.
62+type Repository struct {
63+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 repository"`
64+
65+ Version string `xml:"version,attr"`
66+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
67+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
68+
69+ Includes []Include `xml:"http://www.gtk.org/introspection/core/1.0 include"`
70+ CIncludes []CInclude `xml:"http://www.gtk.org/introspection/c/1.0 include"`
71+ Packages []Package `xml:"http://www.gtk.org/introspection/core/1.0 package"`
72+ Namespaces []Namespace `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
73+}
74+
75+// https://gitlab.gnome.org/GNOME/gobject-introspection/-/blob/master/docs/gir-1.2.rnc
76+
77+type Alias struct {
78+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
79+
80+ Name string `xml:"name,attr"`
81+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
82+
83+ InfoAttrs
84+ InfoElements
85+
86+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
87+}
88+
89+type AnyType struct {
90+ // Possible variants.
91+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
92+ Array *Array `xml:"http://www.gtk.org/introspection/core/1.0 array"`
93+}
94+
95+func (a *AnyType) Translate(ns string, kinds KindMap) string {
96+ if a == nil {
97+ panic("unknown type found")
98+ }
99+ t := a.Type
100+ if t == nil {
101+ if a.Array == nil {
102+ return ""
103+ }
104+ if v, ok := convList[a.Array.CType]; ok {
105+ return v
106+ }
107+ return "uintptr"
108+ }
109+ return a.Type.Template(ns, kinds)
110+}
111+
112+type Annotation struct {
113+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
114+ Name string `xml:"name,attr"`
115+ Value string `xml:"value,attr"`
116+}
117+
118+type Array struct {
119+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 array"`
120+ Name string `xml:"name,attr"`
121+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
122+ Length *int `xml:"length,attr"` // ix of .Parameters
123+ ZeroTerminated *bool `xml:"zero-terminated,attr"`
124+ FixedSize int `xml:"fixed-size,attr"`
125+ Introspectable bool `xml:"introspectable,attr"`
126+ // Type is the array's inner type.
127+ Type *Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
128+}
129+
130+// IsZeroTerminated returns true if the Array is zero-terminated. It accounts
131+// for edge cases of the structure.
132+func (a Array) IsZeroTerminated() bool {
133+ return a.Name == "" && (a.ZeroTerminated == nil || *a.ZeroTerminated)
134+}
135+
136+type Bitfield struct {
137+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
138+
139+ Name string `xml:"name,attr"` // Go case
140+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
141+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
142+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
143+
144+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
145+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
146+
147+ InfoAttrs
148+ InfoElements
149+}
150+
151+func (b *Bitfield) Template(ns string) EnumTemplate {
152+ els := make([]enumValues, len(b.Members))
153+ for i, m := range b.Members {
154+ v, err := strconv.Atoi(m.Value)
155+ if err != nil {
156+ panic(err)
157+ }
158+ // + Value needed to get rid of duplicates
159+ els[i] = enumValues{
160+ Doc: m.Doc.StringSafe(),
161+ Name: util.SnakeToCamel(util.RemoveSnakePrefix(strings.ToLower(m.CIdentifier), ns)) + "Value",
162+ Value: v,
163+ }
164+ }
165+ return EnumTemplate{
166+ Name: util.SnakeToCamel(b.Name),
167+ Doc: b.Doc.StringSafe(),
168+ Values: els,
169+ }
170+}
171+
172+type Signal struct {
173+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
174+ Name string `xml:"name,attr"`
175+ Detailed bool `xml:"detailed,attr"`
176+ When SignalWhen `xml:"when,attr"`
177+ Action bool `xml:"action,attr"`
178+ NoHooks bool `xml:"no-hooks,attr"`
179+ NoRecurse bool `xml:"no-recurse,attr"`
180+ InfoElements
181+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
182+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
183+}
184+
185+type SignalWhen string
186+
187+const (
188+ SignalWhenFirst = "first"
189+ SignalWhenLast = "last"
190+ SignalWhenCleanup = "cleanup"
191+)
192+
193+type SourcePosition struct {
194+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 source-position"`
195+ Filename string `xml:"filename,attr"`
196+ Line int `xml:"line,attr"`
197+ Column int `xml:"column,attr"`
198+}
199+
200+type TransferOwnership struct {
201+ TransferOwnership string `xml:"transfer-ownership,attr"`
202+}
203+
204+type Type struct {
205+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 type"`
206+
207+ Name string `xml:"name,attr"`
208+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
209+ Introspectable *bool `xml:"introspectable,attr"`
210+
211+ DocElements
212+ // Types is the type's inner types.
213+ Types []Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
214+}
215+
216+func (typ *Type) IsIntrospectable() bool {
217+ return typ.Introspectable == nil || *typ.Introspectable
218+}
219+
220+func (t *Type) Template(ns string, kinds KindMap) string {
221+ if v, ok := convList[t.Name]; ok {
222+ return v
223+ }
224+
225+ _type := util.NormalizeNamespace(ns, t.Name, true)
226+
227+ kind := kinds.Kind(ns, _type)
228+ // find the total pointer count
229+ count := strings.Count(t.CType, "*")
230+ w := strings.Trim(t.CType, "*")
231+ if w == "gpointer" {
232+ count += 1
233+ }
234+ // set the same pointer types on the name
235+ if count > 0 && kind != CallbackType {
236+ _type = strings.Repeat("*", count) + _type
237+ } else if kind == RecordsType {
238+ // if it's not a pointer
239+ // then purego doesn't support it (struct by value is not supported
240+ // so return uintptr
241+ _type = "uintptr"
242+ }
243+ return _type
244+}
245+
246+type Union struct {
247+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 union"`
248+
249+ Name string `xml:"name,attr"` // Go case
250+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
251+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
252+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
253+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
254+
255+ InfoAttrs
256+ InfoElements
257+
258+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
259+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
260+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
261+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
262+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
263+}
264+
265+type VarArgs struct {
266+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 varargs"`
267+}
268+
269+type VirtualMethod struct {
270+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
271+
272+ Invoker string `xml:"invoker,attr"`
273+ CallableAttrs
274+}
275+
276+type Boxed struct{}
277+
278+type CInclude struct {
279+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/c/1.0 include"`
280+ Name string `xml:"name,attr"`
281+}
282+
283+type CallableAttrs struct {
284+ Name string `xml:"name,attr"`
285+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
286+ ShadowedBy string `xml:"shadowed-by,attr"`
287+ Shadows string `xml:"shadows,attr"`
288+ Throws bool `xml:"throws,attr"`
289+ MovedTo string `xml:"moved-to,attr"`
290+ Parameters *Parameters `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
291+ ReturnValue *ReturnValue `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
292+ InfoAttrs
293+ InfoElements
294+}
295+
296+type Callback struct {
297+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
298+ CallableAttrs
299+}
300+
301+type Class struct {
302+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 class"`
303+ Name string `xml:"name,attr"`
304+ Parent string `xml:"parent,attr"`
305+ Abstract bool `xml:"abstract,attr"`
306+
307+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
308+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
309+
310+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
311+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
312+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
313+
314+ InfoAttrs
315+ InfoElements
316+
317+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
318+ Implements []Implements `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
319+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
320+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
321+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
322+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
323+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
324+}
325+
326+type Constant struct {
327+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
328+ Name string `xml:"name,attr"`
329+ Value string `xml:"value,attr"`
330+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
331+
332+ Type Type `xml:"http://www.gtk.org/introspection/core/1.0 type"`
333+
334+ InfoAttrs
335+ InfoElements
336+}
337+
338+type Constructor struct {
339+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
340+ CallableAttrs
341+}
342+
343+type Doc struct {
344+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc"`
345+ Filename string `xml:"filename,attr"`
346+ String string `xml:",innerxml"`
347+ Line int `xml:"line,attr"`
348+}
349+
350+func (d *Doc) StringSafe() string {
351+ if d == nil {
352+ return ""
353+ }
354+ lines := strings.Split(d.String, "\n")
355+ for i, l := range lines {
356+ lines[i] = "// " + l
357+ }
358+ return strings.Join(lines, "\n")
359+}
360+
361+type DocDeprecated struct {
362+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 doc-deprecated"`
363+ String string `xml:",innerxml"`
364+}
365+
366+type DocElements struct {
367+ Doc *Doc
368+ DocDeprecated *DocDeprecated
369+ SourcePosition *SourcePosition
370+}
371+
372+func (d *DocElements) FilenameSafe() string {
373+ if d == nil || (d.SourcePosition == nil && d.Doc == nil) {
374+ return "main.go"
375+ }
376+ if d.SourcePosition != nil {
377+ return util.TranslateFilename(d.SourcePosition.Filename)
378+ }
379+ return util.TranslateFilename(d.Doc.Filename)
380+}
381+
382+type Enum struct {
383+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
384+
385+ Name string `xml:"name,attr"` // Go case
386+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
387+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
388+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
389+ GLibErrorDomain string `xml:"http://www.gtk.org/introspection/glib/1.0 error-domain,attr"`
390+
391+ Members []Member `xml:"http://www.gtk.org/introspection/core/1.0 member"`
392+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
393+
394+ InfoAttrs
395+ InfoElements
396+}
397+
398+func (e *Enum) Template(ns string) EnumTemplate {
399+ els := make([]enumValues, len(e.Members))
400+
401+ for i, m := range e.Members {
402+ v, err := strconv.Atoi(m.Value)
403+ if err != nil {
404+ panic(err)
405+ }
406+ id := strings.ToLower(m.CIdentifier)
407+ sID := util.RemoveSnakePrefix(id, ns)
408+ els[i] = enumValues{
409+ Doc: m.Doc.StringSafe(),
410+ // + Value needed to get rid of duplicates
411+ Name: util.SnakeToCamel(sID) + "Value",
412+ Value: v,
413+ }
414+ }
415+ return EnumTemplate{
416+ Name: util.SnakeToCamel(e.Name),
417+ Doc: e.Doc.StringSafe(),
418+ Values: els,
419+ }
420+}
421+
422+type Field struct {
423+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 field"`
424+ Name string `xml:"name,attr"`
425+ Bits int `xml:"bits,attr"`
426+ Private bool `xml:"private,attr"`
427+ Writable bool `xml:"writable,attr"` // default false
428+ Readable *bool `xml:"readable,attr"` // default true
429+ AnyType
430+ Callback *Callback
431+ Doc *Doc
432+}
433+
434+// IsReadable returns true if the field is readable.
435+func (f Field) IsReadable() bool {
436+ return f.Readable == nil || *f.Readable
437+}
438+
439+type Function struct {
440+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 function"`
441+ CallableAttrs
442+}
443+
444+type Implements struct {
445+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 implements"`
446+ Name string `xml:"name,attr"`
447+}
448+
449+type Include struct {
450+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 include"`
451+ Name string `xml:"name,attr"`
452+ Version string `xml:"version,attr"`
453+}
454+
455+type InfoAttrs struct {
456+ Introspectable *bool `xml:"introspectable,attr"` // default true
457+ Deprecated bool `xml:"deprecated,attr"`
458+ DeprecatedVersion string `xml:"deprecated-version,attr"`
459+ Version string `xml:"version,attr"`
460+ Stability string `xml:"stability,attr"`
461+}
462+
463+// IsIntrospectable returns true if the InfoAttrs indicates that the type is
464+// introspectable.
465+func (inf InfoAttrs) IsIntrospectable() bool {
466+ return inf.Introspectable == nil || *inf.Introspectable
467+}
468+
469+type InfoElements struct {
470+ DocElements
471+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
472+}
473+
474+type InstanceParameter struct {
475+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
476+ ParameterAttrs
477+}
478+
479+type Interface struct {
480+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
481+ Name string `xml:"name,attr"`
482+
483+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
484+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
485+
486+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
487+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
488+ GLibTypeStruct string `xml:"http://www.gtk.org/introspection/glib/1.0 type-struct,attr"`
489+
490+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
491+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
492+ VirtualMethods []VirtualMethod `xml:"http://www.gtk.org/introspection/core/1.0 virtual-method"`
493+ Prerequisites []Prerequisite `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
494+ Signals []Signal `xml:"http://www.gtk.org/introspection/glib/1.0 signal"`
495+
496+ InfoAttrs
497+ InfoElements
498+}
499+
500+type Member struct {
501+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 member"`
502+
503+ Names []xml.Attr `xml:"name,attr"`
504+ Value string `xml:"value,attr"`
505+ CIdentifier string `xml:"http://www.gtk.org/introspection/c/1.0 identifier,attr"`
506+ GLibNick string `xml:"http://www.gtk.org/introspection/glib/1.0 nick,attr"`
507+
508+ InfoAttrs
509+ InfoElements
510+}
511+
512+func (m Member) Name() string {
513+ return m.nameAttr(xml.Name{Local: "name"})
514+}
515+
516+func (m Member) GLibName() string {
517+ return m.nameAttr(xml.Name{Space: "http://www.gtk.org/introspection/glib/1.0", Local: "name"})
518+}
519+
520+func (m Member) nameAttr(name xml.Name) string {
521+ for _, attr := range m.Names {
522+ if attr.Name == name {
523+ return attr.Value
524+ }
525+ }
526+ return ""
527+}
528+
529+type Method struct {
530+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 method"`
531+ CallableAttrs
532+}
533+
534+type Namespace struct {
535+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 namespace"`
536+
537+ Name string `xml:"name,attr"`
538+ Version string `xml:"version,attr"`
539+ CIdentifierPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 identifier-prefixes,attr"`
540+ CSymbolPrefixes string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefixes,attr"`
541+ Prefix string `xml:"http://www.gtk.org/introspection/c/1.0 prefix,attr"`
542+ SharedLibrary string `xml:"shared-library,attr"`
543+
544+ Aliases []Alias `xml:"http://www.gtk.org/introspection/core/1.0 alias"`
545+ Classes []Class `xml:"http://www.gtk.org/introspection/core/1.0 class"`
546+ Interfaces []Interface `xml:"http://www.gtk.org/introspection/core/1.0 interface"`
547+ Records []Record `xml:"http://www.gtk.org/introspection/core/1.0 record"`
548+ Enums []Enum `xml:"http://www.gtk.org/introspection/core/1.0 enumeration"`
549+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
550+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
551+ Bitfields []Bitfield `xml:"http://www.gtk.org/introspection/core/1.0 bitfield"`
552+ Callbacks []Callback `xml:"http://www.gtk.org/introspection/core/1.0 callback"`
553+ Constants []Constant `xml:"http://www.gtk.org/introspection/core/1.0 constant"`
554+ Annotations []Annotation `xml:"http://www.gtk.org/introspection/core/1.0 attribute"`
555+ Boxeds []Boxed `xml:"http://www.gtk.org/introspection/core/1.0 boxed"`
556+}
557+
558+type Package struct {
559+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 package"`
560+ Name string `xml:"name,attr"`
561+}
562+
563+type Parameter struct {
564+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
565+ ParameterAttrs
566+}
567+
568+func (p *Parameter) Translate(ns string, kinds KindMap) string {
569+ if p.Name == "..." {
570+ return "...interface{}"
571+ }
572+ return p.AnyType.Translate(ns, kinds)
573+}
574+
575+func (p *Parameter) VarName() string {
576+ snaked := util.SnakeToCamel(p.Name)
577+ if snaked == "..." {
578+ return "varArgs"
579+ }
580+ // avoid clash between same name of type and var
581+ // could also do first letter to lower?
582+ return snaked + "Var"
583+}
584+
585+func (p *Parameters) Template(ns string, ifacens string, kinds KindMap) funcArgsTemplate {
586+ if p == nil {
587+ return funcArgsTemplate{}
588+ }
589+ params := p.Parameters
590+ if len(params) == 0 {
591+ return funcArgsTemplate{}
592+ }
593+ args := funcArgsTemplate{}
594+ for _, par := range params {
595+ args.Add(par, ifacens, ns, kinds)
596+ }
597+ return args
598+}
599+
600+type ParameterAttrs struct {
601+ Name string `xml:"name,attr"`
602+ Direction string `xml:"direction,attr"`
603+ Scope string `xml:"scope,attr"`
604+ Closure *int `xml:"closure,attr"`
605+ Destroy *int `xml:"destroy,attr"`
606+ CallerAllocates bool `xml:"caller-allocates,attr"`
607+ Skip bool `xml:"skip,attr"`
608+ Optional bool `xml:"optional,attr"`
609+ Nullable bool `xml:"nullable,attr"`
610+
611+ TransferOwnership
612+ AnyType
613+ Doc *Doc
614+}
615+
616+type Parameters struct {
617+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 parameters"`
618+ InstanceParameter *InstanceParameter `xml:"http://www.gtk.org/introspection/core/1.0 instance-parameter"`
619+ Parameters []Parameter `xml:"http://www.gtk.org/introspection/core/1.0 parameter"`
620+}
621+
622+type Prerequisite struct {
623+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 prerequisite"`
624+ Name string `xml:"name,attr"`
625+}
626+
627+type Property struct{}
628+
629+type Record struct {
630+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 record"`
631+ Name string `xml:"name,attr"`
632+ CType string `xml:"http://www.gtk.org/introspection/c/1.0 type,attr"`
633+ GLibTypeName string `xml:"http://www.gtk.org/introspection/glib/1.0 type-name,attr"`
634+ GLibGetType string `xml:"http://www.gtk.org/introspection/glib/1.0 get-type,attr"`
635+ CSymbolPrefix string `xml:"http://www.gtk.org/introspection/c/1.0 symbol-prefix,attr"`
636+ GLibIsGTypeStructFor string `xml:"http://www.gtk.org/introspection/glib/1.0 is-gtype-struct-for,attr"`
637+ Disguised bool `xml:"disguised,attr"`
638+ Foreign bool `xml:"foreign,attr"`
639+
640+ Fields []Field `xml:"http://www.gtk.org/introspection/core/1.0 field"`
641+ Functions []Function `xml:"http://www.gtk.org/introspection/core/1.0 function"`
642+ Unions []Union `xml:"http://www.gtk.org/introspection/core/1.0 union"`
643+ Methods []Method `xml:"http://www.gtk.org/introspection/core/1.0 method"`
644+ Constructors []Constructor `xml:"http://www.gtk.org/introspection/core/1.0 constructor"`
645+ Properties []Property `xml:"http://www.gtk.org/introspection/core/1.0 property"`
646+
647+ InfoAttrs
648+ InfoElements
649+}
650+
651+type ReturnValue struct {
652+ XMLName xml.Name `xml:"http://www.gtk.org/introspection/core/1.0 return-value"`
653+ Scope string `xml:"scope,attr"`
654+ Closure *int `xml:"closure,attr"`
655+ Destroy *int `xml:"destroy,attr"`
656+ Introspectable bool `xml:"introspectable,attr"`
657+ Nullable bool `xml:"nullable,attr"`
658+ Skip bool `xml:"skip,attr"`
659+ AllowNone bool `xml:"allow-none,attr"`
660+ TransferOwnership
661+ DocElements
662+ AnyType
663+}
664+
665+func (r *ReturnValue) Template(ns string, ins string, kinds KindMap) funcRetTemplate {
666+ val := r.AnyType.Translate(ns, kinds)
667+ raw := val
668+ class := false
669+ lns := ns
670+ if ins != "" {
671+ lns = ins
672+ }
673+ kind := kinds.Kind(lns, raw)
674+ stars := strings.Count(val, "*")
675+ if kind != OtherType && kind != UnknownType {
676+ if ins != "" && strings.Count(val, ".") < 1 {
677+ val = ins + "." + val
678+ }
679+ }
680+ if stars > 0 {
681+ val = strings.Repeat("*", stars) + strings.ReplaceAll(val, "*", "")
682+ }
683+ switch kind {
684+ case ClassesType:
685+ raw = "uintptr"
686+ class = true
687+ case InterfacesType:
688+ raw = "uintptr"
689+ val += "Base"
690+ class = true
691+ }
692+ return funcRetTemplate{
693+ Raw: raw,
694+ Value: val,
695+ Class: class,
696+ RefSink: r.TransferOwnership.TransferOwnership == "none",
697+ }
698+}
A internal/gir/util/util.go +93 -0
@@ -0,0 +1,93 @@
1+// package util implements some utility functions for parsing/converting gir files
2+// TODO: Maybe some of this can more easily be done with regexes?
3+//
4+// But using regexes introduces 2 problems :^)
5+package util
6+
7+import (
8+ "path/filepath"
9+ "strings"
10+)
11+
12+// delimToCamel to camel converts a string with parts separated by `delim` to CamelCase
13+func delimToCamel(s string, delim string) string {
14+ var sb strings.Builder
15+ words := strings.Split(s, delim)
16+ for _, w := range words {
17+ sb.WriteString(strings.Title(w))
18+ }
19+ return sb.String()
20+}
21+
22+// SnakeToCamel converts hello_world to HelloWorld
23+func SnakeToCamel(s string) string {
24+ return delimToCamel(s, "_")
25+}
26+
27+// DashToCamel converts hello-world to HelloWorld
28+func DashToCamel(s string) string {
29+ return delimToCamel(s, "-")
30+}
31+
32+// RemoveSnakePrefix removes `prefix` from string `s` if that prefix ise separated with a _
33+// it removes lowercase or all u
34+func RemoveSnakePrefix(s string, prefix string) string {
35+ parts := strings.Split(s, "_")
36+ if len(parts) <= 1 {
37+ return s
38+ }
39+ if strings.EqualFold(parts[0], prefix) {
40+ parts = parts[1:]
41+ }
42+ return strings.Join(parts, "_")
43+}
44+
45+// ReplaceExtension replaces an extension from filename with ext
46+// the extension is found by splitting on "." and taking the last part
47+func ReplaceExtension(filename string, ext string) string {
48+ splt := strings.Split(filename, ".")
49+ if len(splt) == 1 {
50+ return filename
51+ }
52+ splt[len(splt)-1] = ext
53+ return strings.Join(splt, ".")
54+}
55+
56+// NormalizeNamespace converts a type to one that always includes a lowercase namespace
57+// if no namespace is found, it adds `ns`, unless if strip is True then namespaces always equaling `ns` will be removed
58+func NormalizeNamespace(ns string, gotype string, strip bool) string {
59+ if ns == "" {
60+ return ""
61+ }
62+ gotype = strings.Trim(gotype, "*")
63+ splt := strings.Split(gotype, ".")
64+ if len(splt) <= 1 {
65+ splt = append([]string{ns}, splt...)
66+ }
67+ splt[0] = strings.ToLower(splt[0])
68+ if strip && splt[0] == strings.ToLower(ns) {
69+ splt = splt[1:]
70+ }
71+ return strings.Join(splt, ".")
72+}
73+
74+// TranslateFilename translates a file path by renaming the file to a go suitable file
75+func TranslateFilename(filename string) string {
76+ if filename == "" {
77+ return "main.go"
78+ }
79+
80+ b := filepath.Base(filename)
81+ return ReplaceExtension(b, "go")
82+}
83+
84+func ConvertArgs(a []string) string {
85+ return strings.Join(a, ", ")
86+}
87+
88+func ConvertArgsComma(a []string) string {
89+ if len(a) == 0 {
90+ return ""
91+ }
92+ return ", " + strings.Join(a, ", ")
93+}
A shell.nix +26 -0
@@ -0,0 +1,26 @@
1+{ pkgs ? import <nixpkgs> {} }:
2+ pkgs.mkShell {
3+ # nativeBuildInputs is usually what you want -- tools you need to run
4+ buildInputs = [
5+ pkgs.go
6+ pkgs.godef
7+ pkgs.go-tools
8+ pkgs.vim
9+ pkgs.gofumpt
10+ pkgs.gopls
11+ pkgs.python3
12+ pkgs.libadwaita.dev
13+ pkgs.python3.pkgs.pip
14+ pkgs.gotools
15+ ];
16+ shellHook = ''
17+ # Tells pip to put packages into $PIP_PREFIX instead of the usual locations.
18+ # See https://pip.pypa.io/en/stable/user_guide/#environment-variables.
19+ export PIP_PREFIX=$(pwd)/_build/pip_packages
20+ export PYTHONPATH="$PIP_PREFIX/${pkgs.python3.sitePackages}:$PYTHONPATH"
21+ export PATH="$PIP_PREFIX/bin:$PATH"
22+ export GOPATH="$HOME/go"
23+ unset SOURCE_DATE_EPOCH
24+ '';
25+}
26+
A templates/go +264 -0
@@ -0,0 +1,264 @@
1+// Package {{.PkgName}} was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package {{.PkgName}}
3+
4+{{ $NotGObject := ne .PkgName "gobject" }}
5+
6+{{if or .Imports .NeedsInit}}
7+import (
8+ {{if .NeedsInit}}
9+ "github.com/jwijenbergh/purego"
10+ "github.com/jwijenbergh/puregotk/internal/core"
11+ {{end}}
12+ {{range .Imports -}}
13+ "github.com/jwijenbergh/puregotk/v4/{{.}}"
14+ {{end}}
15+)
16+{{end}}
17+
18+{{$outer := .}}
19+
20+{{range .Callbacks -}}
21+{{.Doc}}
22+type {{.Name}} func({{ conv .Args.Pure.Types }}) {{.Ret.Raw}}
23+{{end}}
24+
25+{{range .Records -}}
26+{{.Doc}}
27+type {{.Name}} struct {
28+ {{range .Fields}}
29+ {{.Name}} {{.Type}}
30+ {{end}}
31+}
32+{{end}}
33+
34+{{range .Interfaces -}}
35+{{.Doc}}
36+type {{.Name}} interface {
37+ GoPointer() uintptr
38+ SetGoPointer(uintptr)
39+ {{range .Methods -}}
40+ {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}}
41+ {{end}}
42+}
43+type {{.Name}}Base struct {
44+ Ptr uintptr
45+}
46+
47+func (x *{{.Name}}Base) GoPointer() uintptr {
48+ return x.Ptr
49+}
50+
51+func (x *{{.Name}}Base) SetGoPointer(ptr uintptr) {
52+ x.Ptr = ptr
53+}
54+
55+{{$outer := .}}
56+{{range .Methods -}}
57+{{.Doc}}
58+func (x *{{$outer.Name}}Base) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
59+ {{if .Ret.Class}}
60+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
61+ if {{.Name}}Ptr == 0 {
62+ return nil
63+ }
64+ {{if .Ret.RefSink}}
65+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
66+ {{end}}
67+ {{.Name}}Cls := {{.Ret.Instance}}{}
68+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
69+ return {{.Name}}Cls
70+ {{else if .Ret.Value}}
71+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
72+ {{else}}
73+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
74+ {{end}}
75+}
76+{{end}}
77+
78+{{range .Methods -}}
79+var {{.Namespace}}X{{.FullName}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
80+{{end}}
81+{{end}}
82+
83+{{range .Aliases -}}
84+{{.Doc}}
85+type {{.Name}} = {{.Value}}
86+{{end}}
87+
88+{{range .Enums -}}
89+{{.Doc}}
90+type {{.Name}} int
91+const (
92+{{$outer := .}}
93+{{range .Values -}}
94+ {{.Doc}}
95+ {{.Name}} {{$outer.Name}} = {{.Value}}
96+{{end}}
97+)
98+{{end}}
99+
100+{{range .Functions -}}
101+var x{{.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
102+
103+{{.Doc}}
104+func {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
105+ {{if .Ret.Class}}
106+ {{.Name}}Ptr := x{{.Name}}({{conv .Args.API.Call}})
107+ if {{.Name}}Ptr == 0 {
108+ return nil
109+ }
110+ {{if .Ret.RefSink}}
111+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
112+ {{end}}
113+ {{.Name}}Cls := {{.Ret.Instance}}{}
114+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
115+ return {{.Name}}Cls
116+ {{else if .Ret.Value}}
117+ return x{{.Name}}({{conv .Args.API.Call}})
118+ {{else}}
119+ x{{.Name}}({{conv .Args.API.Call}})
120+ {{end}}
121+}
122+{{end}}
123+
124+{{range .Classes -}}
125+{{.Doc}}
126+type {{.Name}} struct {
127+ {{.Parent}}
128+ {{if not .Parent}}
129+ Ptr uintptr
130+ {{end}}
131+}
132+
133+{{$outer := .}}
134+func {{.Name}}NewFromInternalPtr(ptr uintptr) *{{.Name}} {
135+ cls := &{{.Name}}{}
136+ cls.Ptr = ptr
137+ return cls
138+}
139+
140+{{range .Constructors -}}
141+var x{{.Name}}{{$outer.Name}} func({{conv .Args.Pure.Types}}) {{.Ret.Raw}}
142+
143+
144+{{.Doc}}
145+func {{.Name}}{{$outer.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
146+ {{.Name}}{{$outer.Name}}Ptr := x{{.Name}}{{$outer.Name}}({{conv .Args.API.Call}})
147+ if {{.Name}}{{$outer.Name}}Ptr == 0 {
148+ return nil
149+ }
150+ {{if .Ret.RefSink}}
151+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}{{$outer.Name}}Ptr)
152+ {{end}}
153+ {{.Name}}{{$outer.Name}}Cls := {{.Ret.Instance}}{}
154+ {{.Name}}{{$outer.Name}}Cls.Ptr = {{.Name}}{{$outer.Name}}Ptr
155+ return {{.Name}}{{$outer.Name}}Cls
156+}
157+{{end}}
158+
159+{{$outer := .}}
160+{{range .Receivers -}}
161+var x{{$outer.Name}}{{.Name}} func(uintptr {{convc .Args.Pure.Types}}) {{.Ret.Raw}}
162+
163+{{.Doc}}
164+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
165+ {{if .Ret.Class}}
166+ {{.Name}}Ptr := x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
167+ if {{.Name}}Ptr == 0 {
168+ return nil
169+ }
170+ {{if .Ret.RefSink}}
171+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
172+ {{end}}
173+ {{.Name}}Cls := {{.Ret.Instance}}{}
174+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
175+ return {{.Name}}Cls
176+ {{else if .Ret.Value}}
177+ return x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
178+ {{else}}
179+ x{{$outer.Name}}{{.Name}}(x.GoPointer() {{convc .Args.API.Call}})
180+ {{end}}
181+}
182+{{end}}
183+
184+func (c *{{.Name}}) GoPointer() uintptr {
185+ return c.Ptr
186+}
187+
188+func (c *{{.Name}}) SetGoPointer(ptr uintptr) {
189+ c.Ptr = ptr
190+}
191+
192+{{range .Signals -}}
193+
194+{{.Doc}}
195+func (x *{{$outer.Name}}) Connect{{.Name}}(cb func({{$outer.Name}} {{convc .Args.API.Types}}) {{.Ret.Value}}) {
196+ fcb := func(clsPtr uintptr {{convc .Args.Pure.Full}}) {{.Ret.Raw}} {
197+ fa := {{$outer.Name}}{}
198+ fa.Ptr = clsPtr
199+ {{if .Ret.Class}}
200+ {{.Name}}Cls := cb(fa {{convc .Args.Pure.Call}})
201+ return {{.Name}}Cls.Ptr
202+ {{else if .Ret.Value}}
203+ return cb(fa {{convc .Args.Pure.Call}})
204+ {{else}}
205+ cb(fa {{convc .Args.Pure.Call}})
206+ {{end}}
207+ }
208+ {{if $NotGObject}}gobject.{{end}}ObjectConnect(x.GoPointer(), "signal::{{.CName}}", purego.NewCallback(fcb))
209+}
210+{{end}}
211+
212+{{range .Interfaces -}}
213+{{range .Methods -}}
214+{{.Doc}}
215+func (x *{{$outer.Name}}) {{.Name}}({{conv .Args.API.Full}}) {{.Ret.Value}} {
216+ {{if .Ret.Class}}
217+ {{.Name}}Ptr := {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
218+ if {{.Name}}Ptr == 0 {
219+ return nil
220+ }
221+ {{if .Ret.RefSink}}
222+ {{if $NotGObject}}gobject.{{end}}IncreaseRef({{.Name}}Ptr)
223+ {{end}}
224+ {{.Name}}Cls := {{.Ret.Instance}}{}
225+ {{.Name}}Cls.Ptr = {{.Name}}Ptr
226+ return {{.Name}}Cls
227+ {{else if .Ret.Value}}
228+ return {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
229+ {{else}}
230+ {{.Namespace}}X{{.FullName}}(x.GoPointer() {{convc .Args.API.Call}})
231+ {{end}}
232+}
233+{{end}}
234+{{end}}
235+
236+{{end}}
237+
238+
239+{{if .NeedsInit}}
240+
241+func init() {
242+ lib, err := purego.Dlopen(core.GetPath("{{.PkgEnv}}"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
243+ if err != nil {
244+ panic(err)
245+ }
246+ {{range .Functions -}}
247+ core.PuregoSafeRegister(&x{{.Name}}, lib, "{{.CName}}")
248+ {{end}}
249+ {{range .Classes -}}
250+ {{$cls := .}}
251+ {{range .Constructors -}}
252+ core.PuregoSafeRegister(&x{{.Name}}{{$cls.Name}}, lib, "{{.CName}}")
253+ {{end}}
254+ {{range .Receivers -}}
255+ core.PuregoSafeRegister(&x{{$cls.Name}}{{.Name}}, lib, "{{.CName}}")
256+ {{end}}
257+ {{end}}
258+ {{range .Interfaces -}}
259+ {{range .Methods -}}
260+ core.PuregoSafeRegister(&{{.Namespace}}X{{.FullName}}, lib, "{{.CName}}")
261+ {{end}}
262+ {{end}}
263+}
264+{{end}}
A templates/gobject +94 -0
@@ -0,0 +1,94 @@
1+package gobject
2+
3+import (
4+ "os"
5+ "reflect"
6+
7+ "github.com/jwijenbergh/purego"
8+ "github.com/jwijenbergh/puregotk/internal/core"
9+)
10+
11+type Ptr interface {
12+ GoPointer() uintptr
13+ SetGoPointer(uintptr)
14+}
15+
16+func ConvertPtr(a interface{}) *uintptr {
17+ if a == nil || (reflect.ValueOf(a).Kind() == reflect.Ptr && reflect.ValueOf(a).IsNil()) {
18+ return nil
19+ }
20+ ptr := reflect.ValueOf(a).Elem()
21+ v, ok := ptr.Interface().(Ptr);
22+ if !ok {
23+ panic("not valid")
24+ }
25+ g := v.GoPointer()
26+ return &g
27+}
28+
29+func IncreaseRef(a uintptr) {
30+ xObjectRefSink(a)
31+}
32+
33+func ObjectConnect(a uintptr, b string, c ...interface{}) uintptr {
34+ return xObjectConnect(a, b, c...)
35+}
36+
37+func (o Object) Cast(v Ptr) {
38+ v.SetGoPointer(o.GoPointer())
39+}
40+
41+// NewCallback is an alias to purego.NewCallback
42+func NewCallback(fn interface{}) uintptr {
43+ return purego.NewCallback(fn)
44+}
45+
46+// types
47+const (
48+ TypeInvalidVal Type = 0
49+ TypeNoneVal = 1 << 2
50+ TypeInterfaceVal = 2 << 2
51+ TypeCharVal = 3 << 2
52+ TypeUcharVal = 4 << 2
53+ TypeBooleanVal = 5 << 2
54+ TypeIntVal = 6 << 2
55+ TypeUintVal = 7 << 2
56+ TypeLongVal = 8 << 2
57+ TypeUlongVal = 9 << 2
58+ TypeInt64Val = 10 << 2
59+ TypeUint64Val = 11 << 2
60+ TypeEnumVal = 12 << 2
61+ TypeFlagsVal = 13 << 2
62+ TypeFloatVal = 14 << 2
63+ TypeDoubleVal = 15 << 2
64+ TypeStringVal = 16 << 2
65+ TypePointerVal = 17 << 2
66+ TypeBoxedVal = 18 << 2
67+ TypeParamVal = 19 << 2
68+ TypeObjectVal = 20 << 2
69+ TypeReservedGLibLastVal = 31 << 2
70+ TypeReservedBseFirstVal = 32 << 2
71+ TypeReservedBseLastVal = 48 << 2
72+ TypeReservedUserFirstVal = 49 << 2
73+)
74+
75+var xValueDupString func(*Value) string
76+
77+func (v *Value) String() string {
78+ return xValueDupString(v)
79+}
80+
81+var xValueGetInt func(*Value) int
82+
83+func (v *Value) Int() int {
84+ return xValueGetInt(v)
85+}
86+
87+func init() {
88+ lib, err := purego.Dlopen(os.Getenv("PUREGOTK_GTK_PATH"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
89+ if err != nil {
90+ panic(err)
91+ }
92+ core.PuregoSafeRegister(&xValueDupString, lib, "g_value_dup_string")
93+ core.PuregoSafeRegister(&xValueGetInt, lib, "g_value_get_int")
94+}
A v4/adw/adw-about-window.go +1220 -0
@@ -0,0 +1,1220 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type AboutWindowClass struct {
14+ ParentClass uintptr
15+}
16+
17+var xShowAboutWindow func(uintptr, string, ...interface{})
18+
19+// A convenience function for showing an application’s about window.
20+func ShowAboutWindow(ParentVar *gtk.Window, FirstPropertyNameVar string, varArgs ...interface{}) {
21+
22+ xShowAboutWindow(ParentVar.GoPointer(), FirstPropertyNameVar, varArgs...)
23+
24+}
25+
26+// A window showing information about the application.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="about-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="about-window.png" alt="about-window"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// An about window is typically opened when the user activates the `About …`
36+// item in the application's primary menu. All parts of the window are optional.
37+//
38+// ## Main page
39+//
40+// `AdwAboutWindow` prominently displays the application's icon, name, developer
41+// name and version. They can be set with the [property@AboutWindow:application-icon],
42+// [property@AboutWindow:application-name],
43+// [property@AboutWindow:developer-name] and [property@AboutWindow:version]
44+// respectively.
45+//
46+// ## What's New
47+//
48+// `AdwAboutWindow` provides a way for applications to display their release
49+// notes, set with the [property@AboutWindow:release-notes] property.
50+//
51+// Release notes are formatted the same way as
52+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
53+//
54+// The supported formatting options are:
55+//
56+// * Paragraph (`&lt;p&gt;`)
57+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
58+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
59+//
60+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
61+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
62+// while inline code is shown in a monospaced font.
63+//
64+// Any text outside paragraphs or list items is ignored.
65+//
66+// Nested lists are not supported.
67+//
68+// Only one version can be shown at a time. By default, the displayed version
69+// number matches [property@AboutWindow:version]. Use
70+// [property@AboutWindow:release-notes-version] to override it.
71+//
72+// ## Details
73+//
74+// The Details page displays the application comments and links.
75+//
76+// The comments can be set with the [property@AboutWindow:comments] property.
77+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
78+// detailed. It can also contain links and Pango markup.
79+//
80+// To set the application website, use [property@AboutWindow:website].
81+// To add extra links below the website, use [method@AboutWindow.add_link].
82+//
83+// If the Details page doesn't have any other content besides website, the
84+// website will be displayed on the main page instead.
85+//
86+// ## Troubleshooting
87+//
88+// `AdwAboutWindow` displays the following two links on the main page:
89+//
90+// * Support Questions, set with the [property@AboutWindow:support-url] property,
91+// * Report an Issue, set with the [property@AboutWindow:issue-url] property.
92+//
93+// Additionally, applications can provide debugging information. It will be
94+// shown separately on the Troubleshooting page. Use the
95+// [property@AboutWindow:debug-info] property to specify it.
96+//
97+// It's intended to be attached to issue reports when reporting issues against
98+// the application. As such, it cannot contain markup or links.
99+//
100+// `AdwAboutWindow` provides a quick way to save debug information to a file.
101+// When saving, [property@AboutWindow:debug-info-filename] would be used as
102+// the suggested filename.
103+//
104+// ## Credits and Acknowledgements
105+//
106+// The Credits page has the following default sections:
107+//
108+// * Developers, set with the [property@AboutWindow:developers] property,
109+// * Designers, set with the [property@AboutWindow:designers] property,
110+// * Artists, set with the [property@AboutWindow:artists] property,
111+// * Documenters, set with the [property@AboutWindow:documenters] property,
112+// * Translators, set with the [property@AboutWindow:translator-credits] property.
113+//
114+// When setting translator credits, use the strings `"translator-credits"` or
115+// `"translator_credits"` and mark them as translatable.
116+//
117+// The default sections that don't contain any names won't be displayed.
118+//
119+// The Credits page can also contain an arbitrary number of extra sections below
120+// the default ones. Use [method@AboutWindow.add_credit_section] to add them.
121+//
122+// The Acknowledgements page can be used to acknowledge additional people and
123+// organizations for their non-development contributions. Use
124+// [method@AboutWindow.add_acknowledgement_section] to add sections to it. For
125+// example, it can be used to list backers in a crowdfunded project or to give
126+// special thanks.
127+//
128+// Each of the people or organizations can have an email address or a website
129+// specified. To add a email address, use a string like
130+// `Edgar Allan Poe &lt;edgar@poe.com&gt;`. To specify a website with a title, use a
131+// string like `The GNOME Project https://www.gnome.org`:
132+//
133+// &lt;picture&gt;
134+//
135+// &lt;source srcset="about-window-credits-dark.png" media="(prefers-color-scheme: dark)"&gt;
136+// &lt;img src="about-window-credits.png" alt="about-window-credits"&gt;
137+//
138+// &lt;/picture&gt;
139+//
140+// ## Legal
141+//
142+// The Legal page displays the copyright and licensing information for the
143+// application and other modules.
144+//
145+// The copyright string is set with the [property@AboutWindow:copyright]
146+// property and should be a short string of one or two lines, for example:
147+// `© 2022 Example`.
148+//
149+// Licensing information can be quickly set from a list of known licenses with
150+// the [property@AboutWindow:license-type] property. If the application's
151+// license is not in the list, [property@AboutWindow:license] can be used
152+// instead.
153+//
154+// To add information about other modules, such as application dependencies or
155+// data, use [method@AboutWindow.add_legal_section].
156+//
157+// ## Constructing
158+//
159+// To make constructing an `AdwAboutWindow` as convenient as possible, you can
160+// use the function [func@show_about_window] which constructs and shows a
161+// window.
162+//
163+// ```c
164+// static void
165+// show_about (GtkApplication *app)
166+//
167+// {
168+// const char *developers[] = {
169+// "Angela Avery",
170+// NULL
171+// };
172+//
173+// const char *designers[] = {
174+// "GNOME Design Team",
175+// NULL
176+// };
177+//
178+// adw_show_about_window (gtk_application_get_active_window (app),
179+// "application-name", _("Example"),
180+// "application-icon", "org.example.App",
181+// "version", "1.2.3",
182+// "copyright", "© 2022 Angela Avery",
183+// "issue-url", "https://gitlab.gnome.org/example/example/-/issues/new",
184+// "license-type", GTK_LICENSE_GPL_3_0,
185+// "developers", developers,
186+// "designers", designers,
187+// "translator-credits", _("translator-credits"),
188+// NULL);
189+// }
190+//
191+// ```
192+//
193+// ## CSS nodes
194+//
195+// `AdwAboutWindow` has a main CSS node with the name `window` and the
196+// style class `.about`.
197+type AboutWindow struct {
198+ Window
199+}
200+
201+func AboutWindowNewFromInternalPtr(ptr uintptr) *AboutWindow {
202+ cls := &AboutWindow{}
203+ cls.Ptr = ptr
204+ return cls
205+}
206+
207+var xNewAboutWindow func() uintptr
208+
209+// Creates a new `AdwAboutWindow`.
210+func NewAboutWindow() *gtk.Widget {
211+ NewAboutWindowPtr := xNewAboutWindow()
212+ if NewAboutWindowPtr == 0 {
213+ return nil
214+ }
215+
216+ gobject.IncreaseRef(NewAboutWindowPtr)
217+
218+ NewAboutWindowCls := &gtk.Widget{}
219+ NewAboutWindowCls.Ptr = NewAboutWindowPtr
220+ return NewAboutWindowCls
221+}
222+
223+var xAboutWindowAddAcknowledgementSection func(uintptr, string, uintptr)
224+
225+// Adds a section to the Acknowledgements page.
226+//
227+// This can be used to acknowledge additional people and organizations for their
228+// non-development contributions - for example, backers in a crowdfunded
229+// project.
230+//
231+// Each name may contain email addresses and URLs, see the introduction for more
232+// details.
233+//
234+// See also:
235+//
236+// * [property@AboutWindow:developers]
237+// * [property@AboutWindow:designers]
238+// * [property@AboutWindow:artists]
239+// * [property@AboutWindow:documenters]
240+// * [property@AboutWindow:translator-credits]
241+// * [method@AboutWindow.add_credit_section]
242+func (x *AboutWindow) AddAcknowledgementSection(NameVar string, PeopleVar uintptr) {
243+
244+ xAboutWindowAddAcknowledgementSection(x.GoPointer(), NameVar, PeopleVar)
245+
246+}
247+
248+var xAboutWindowAddCreditSection func(uintptr, string, uintptr)
249+
250+// Adds an extra section to the Credits page.
251+//
252+// Extra sections are displayed below the standard categories.
253+//
254+// Each name may contain email addresses and URLs, see the introduction for more
255+// details.
256+//
257+// See also:
258+//
259+// * [property@AboutWindow:developers]
260+// * [property@AboutWindow:designers]
261+// * [property@AboutWindow:artists]
262+// * [property@AboutWindow:documenters]
263+// * [property@AboutWindow:translator-credits]
264+// * [method@AboutWindow.add_acknowledgement_section]
265+func (x *AboutWindow) AddCreditSection(NameVar string, PeopleVar uintptr) {
266+
267+ xAboutWindowAddCreditSection(x.GoPointer(), NameVar, PeopleVar)
268+
269+}
270+
271+var xAboutWindowAddLegalSection func(uintptr, string, string, gtk.License, string)
272+
273+// Adds an extra section to the Legal page.
274+//
275+// Extra sections will be displayed below the application's own information.
276+//
277+// The parameters @copyright, @license_type and @license will be used to present
278+// the it the same way as [property@AboutWindow:copyright],
279+// [property@AboutWindow:license-type] and [property@AboutWindow:license] are
280+// for the application's own information.
281+//
282+// See those properties for more details.
283+//
284+// This can be useful to attribute the application dependencies or data.
285+//
286+// Examples:
287+//
288+// ```c
289+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
290+//
291+// _("Copyright and a known license"),
292+// "© 2022 Example",
293+// GTK_LICENSE_LGPL_2_1,
294+// NULL);
295+//
296+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
297+//
298+// _("Copyright and custom license"),
299+// "© 2022 Example",
300+// GTK_LICENSE_CUSTOM,
301+// "Custom license text");
302+//
303+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
304+//
305+// _("Copyright only"),
306+// "© 2022 Example",
307+// GTK_LICENSE_UNKNOWN,
308+// NULL);
309+//
310+// adw_about_window_add_legal_section (ADW_ABOUT_WINDOW (about),
311+//
312+// _("Custom license only"),
313+// NULL,
314+// GTK_LICENSE_CUSTOM,
315+// "Something completely custom here.");
316+//
317+// ```
318+func (x *AboutWindow) AddLegalSection(TitleVar string, CopyrightVar string, LicenseTypeVar gtk.License, LicenseVar string) {
319+
320+ xAboutWindowAddLegalSection(x.GoPointer(), TitleVar, CopyrightVar, LicenseTypeVar, LicenseVar)
321+
322+}
323+
324+var xAboutWindowAddLink func(uintptr, string, string)
325+
326+// Adds an extra link to the Details page.
327+//
328+// Extra links are displayed under the comment and website.
329+//
330+// Underlines in @title will be interpreted as indicating a mnemonic.
331+//
332+// See [property@AboutWindow:website].
333+func (x *AboutWindow) AddLink(TitleVar string, UrlVar string) {
334+
335+ xAboutWindowAddLink(x.GoPointer(), TitleVar, UrlVar)
336+
337+}
338+
339+var xAboutWindowGetApplicationIcon func(uintptr) string
340+
341+// Gets the name of the application icon for @self.
342+func (x *AboutWindow) GetApplicationIcon() string {
343+
344+ return xAboutWindowGetApplicationIcon(x.GoPointer())
345+
346+}
347+
348+var xAboutWindowGetApplicationName func(uintptr) string
349+
350+// Gets the application name for @self.
351+func (x *AboutWindow) GetApplicationName() string {
352+
353+ return xAboutWindowGetApplicationName(x.GoPointer())
354+
355+}
356+
357+var xAboutWindowGetArtists func(uintptr) uintptr
358+
359+// Gets the list of artists of the application.
360+func (x *AboutWindow) GetArtists() uintptr {
361+
362+ return xAboutWindowGetArtists(x.GoPointer())
363+
364+}
365+
366+var xAboutWindowGetComments func(uintptr) string
367+
368+// Gets the comments about the application.
369+func (x *AboutWindow) GetComments() string {
370+
371+ return xAboutWindowGetComments(x.GoPointer())
372+
373+}
374+
375+var xAboutWindowGetCopyright func(uintptr) string
376+
377+// Gets the copyright information for @self.
378+func (x *AboutWindow) GetCopyright() string {
379+
380+ return xAboutWindowGetCopyright(x.GoPointer())
381+
382+}
383+
384+var xAboutWindowGetDebugInfo func(uintptr) string
385+
386+// Gets the debug information for @self.
387+func (x *AboutWindow) GetDebugInfo() string {
388+
389+ return xAboutWindowGetDebugInfo(x.GoPointer())
390+
391+}
392+
393+var xAboutWindowGetDebugInfoFilename func(uintptr) string
394+
395+// Gets the debug information filename for @self.
396+func (x *AboutWindow) GetDebugInfoFilename() string {
397+
398+ return xAboutWindowGetDebugInfoFilename(x.GoPointer())
399+
400+}
401+
402+var xAboutWindowGetDesigners func(uintptr) uintptr
403+
404+// Gets the list of designers of the application.
405+func (x *AboutWindow) GetDesigners() uintptr {
406+
407+ return xAboutWindowGetDesigners(x.GoPointer())
408+
409+}
410+
411+var xAboutWindowGetDeveloperName func(uintptr) string
412+
413+// Gets the developer name for @self.
414+func (x *AboutWindow) GetDeveloperName() string {
415+
416+ return xAboutWindowGetDeveloperName(x.GoPointer())
417+
418+}
419+
420+var xAboutWindowGetDevelopers func(uintptr) uintptr
421+
422+// Gets the list of developers of the application.
423+func (x *AboutWindow) GetDevelopers() uintptr {
424+
425+ return xAboutWindowGetDevelopers(x.GoPointer())
426+
427+}
428+
429+var xAboutWindowGetDocumenters func(uintptr) uintptr
430+
431+// Gets the list of documenters of the application.
432+func (x *AboutWindow) GetDocumenters() uintptr {
433+
434+ return xAboutWindowGetDocumenters(x.GoPointer())
435+
436+}
437+
438+var xAboutWindowGetIssueUrl func(uintptr) string
439+
440+// Gets the issue tracker URL for @self.
441+func (x *AboutWindow) GetIssueUrl() string {
442+
443+ return xAboutWindowGetIssueUrl(x.GoPointer())
444+
445+}
446+
447+var xAboutWindowGetLicense func(uintptr) string
448+
449+// Gets the license for @self.
450+func (x *AboutWindow) GetLicense() string {
451+
452+ return xAboutWindowGetLicense(x.GoPointer())
453+
454+}
455+
456+var xAboutWindowGetLicenseType func(uintptr) gtk.License
457+
458+// Gets the license type for @self.
459+func (x *AboutWindow) GetLicenseType() gtk.License {
460+
461+ return xAboutWindowGetLicenseType(x.GoPointer())
462+
463+}
464+
465+var xAboutWindowGetReleaseNotes func(uintptr) string
466+
467+// Gets the release notes for @self.
468+func (x *AboutWindow) GetReleaseNotes() string {
469+
470+ return xAboutWindowGetReleaseNotes(x.GoPointer())
471+
472+}
473+
474+var xAboutWindowGetReleaseNotesVersion func(uintptr) string
475+
476+// Gets the version described by the application's release notes.
477+func (x *AboutWindow) GetReleaseNotesVersion() string {
478+
479+ return xAboutWindowGetReleaseNotesVersion(x.GoPointer())
480+
481+}
482+
483+var xAboutWindowGetSupportUrl func(uintptr) string
484+
485+// Gets the URL of the support page for @self.
486+func (x *AboutWindow) GetSupportUrl() string {
487+
488+ return xAboutWindowGetSupportUrl(x.GoPointer())
489+
490+}
491+
492+var xAboutWindowGetTranslatorCredits func(uintptr) string
493+
494+// Gets the translator credits string.
495+func (x *AboutWindow) GetTranslatorCredits() string {
496+
497+ return xAboutWindowGetTranslatorCredits(x.GoPointer())
498+
499+}
500+
501+var xAboutWindowGetVersion func(uintptr) string
502+
503+// Gets the version for @self.
504+func (x *AboutWindow) GetVersion() string {
505+
506+ return xAboutWindowGetVersion(x.GoPointer())
507+
508+}
509+
510+var xAboutWindowGetWebsite func(uintptr) string
511+
512+// Gets the application website URL for @self.
513+func (x *AboutWindow) GetWebsite() string {
514+
515+ return xAboutWindowGetWebsite(x.GoPointer())
516+
517+}
518+
519+var xAboutWindowSetApplicationIcon func(uintptr, string)
520+
521+// Sets the name of the application icon for @self.
522+//
523+// The icon is displayed at the top of the main page.
524+func (x *AboutWindow) SetApplicationIcon(ApplicationIconVar string) {
525+
526+ xAboutWindowSetApplicationIcon(x.GoPointer(), ApplicationIconVar)
527+
528+}
529+
530+var xAboutWindowSetApplicationName func(uintptr, string)
531+
532+// Sets the application name for @self.
533+//
534+// The name is displayed at the top of the main page.
535+func (x *AboutWindow) SetApplicationName(ApplicationNameVar string) {
536+
537+ xAboutWindowSetApplicationName(x.GoPointer(), ApplicationNameVar)
538+
539+}
540+
541+var xAboutWindowSetArtists func(uintptr, uintptr)
542+
543+// Sets the list of artists of the application.
544+//
545+// It will be displayed on the Credits page.
546+//
547+// Each name may contain email addresses and URLs, see the introduction for more
548+// details.
549+//
550+// See also:
551+//
552+// * [property@AboutWindow:developers]
553+// * [property@AboutWindow:designers]
554+// * [property@AboutWindow:documenters]
555+// * [property@AboutWindow:translator-credits]
556+// * [method@AboutWindow.add_credit_section]
557+// * [method@AboutWindow.add_acknowledgement_section]
558+func (x *AboutWindow) SetArtists(ArtistsVar uintptr) {
559+
560+ xAboutWindowSetArtists(x.GoPointer(), ArtistsVar)
561+
562+}
563+
564+var xAboutWindowSetComments func(uintptr, string)
565+
566+// Sets the comments about the application.
567+//
568+// Comments will be shown on the Details page, above links.
569+//
570+// Unlike [property@Gtk.AboutDialog:comments], this string can be long and
571+// detailed. It can also contain links and Pango markup.
572+func (x *AboutWindow) SetComments(CommentsVar string) {
573+
574+ xAboutWindowSetComments(x.GoPointer(), CommentsVar)
575+
576+}
577+
578+var xAboutWindowSetCopyright func(uintptr, string)
579+
580+// Sets the copyright information for @self.
581+//
582+// This should be a short string of one or two lines, for example:
583+// `© 2022 Example`.
584+//
585+// The copyright information will be displayed on the Legal page, before the
586+// application license.
587+//
588+// [method@AboutWindow.add_legal_section] can be used to add copyright
589+// information for the application dependencies or other components.
590+func (x *AboutWindow) SetCopyright(CopyrightVar string) {
591+
592+ xAboutWindowSetCopyright(x.GoPointer(), CopyrightVar)
593+
594+}
595+
596+var xAboutWindowSetDebugInfo func(uintptr, string)
597+
598+// Sets the debug information for @self.
599+//
600+// Debug information will be shown on the Troubleshooting page. It's intended
601+// to be attached to issue reports when reporting issues against the
602+// application.
603+//
604+// `AdwAboutWindow` provides a quick way to save debug information to a file.
605+// When saving, [property@AboutWindow:debug-info-filename] would be used as
606+// the suggested filename.
607+//
608+// Debug information cannot contain markup or links.
609+func (x *AboutWindow) SetDebugInfo(DebugInfoVar string) {
610+
611+ xAboutWindowSetDebugInfo(x.GoPointer(), DebugInfoVar)
612+
613+}
614+
615+var xAboutWindowSetDebugInfoFilename func(uintptr, string)
616+
617+// Sets the debug information filename for @self.
618+//
619+// It will be used as the suggested filename when saving debug information to a
620+// file.
621+//
622+// See [property@AboutWindow:debug-info].
623+func (x *AboutWindow) SetDebugInfoFilename(FilenameVar string) {
624+
625+ xAboutWindowSetDebugInfoFilename(x.GoPointer(), FilenameVar)
626+
627+}
628+
629+var xAboutWindowSetDesigners func(uintptr, uintptr)
630+
631+// Sets the list of designers of the application.
632+//
633+// It will be displayed on the Credits page.
634+//
635+// Each name may contain email addresses and URLs, see the introduction for more
636+// details.
637+//
638+// See also:
639+//
640+// * [property@AboutWindow:developers]
641+// * [property@AboutWindow:artists]
642+// * [property@AboutWindow:documenters]
643+// * [property@AboutWindow:translator-credits]
644+// * [method@AboutWindow.add_credit_section]
645+// * [method@AboutWindow.add_acknowledgement_section]
646+func (x *AboutWindow) SetDesigners(DesignersVar uintptr) {
647+
648+ xAboutWindowSetDesigners(x.GoPointer(), DesignersVar)
649+
650+}
651+
652+var xAboutWindowSetDeveloperName func(uintptr, string)
653+
654+// Sets the developer name for @self.
655+//
656+// The developer name is displayed on the main page, under the application name.
657+//
658+// If the application is developed by multiple people, the developer name can be
659+// set to values like "AppName team", "AppName developers" or
660+// "The AppName project", and the individual contributors can be listed on the
661+// Credits page, with [property@AboutWindow:developers] and related properties.
662+func (x *AboutWindow) SetDeveloperName(DeveloperNameVar string) {
663+
664+ xAboutWindowSetDeveloperName(x.GoPointer(), DeveloperNameVar)
665+
666+}
667+
668+var xAboutWindowSetDevelopers func(uintptr, uintptr)
669+
670+// Sets the list of developers of the application.
671+//
672+// It will be displayed on the Credits page.
673+//
674+// Each name may contain email addresses and URLs, see the introduction for more
675+// details.
676+//
677+// See also:
678+//
679+// * [property@AboutWindow:designers]
680+// * [property@AboutWindow:artists]
681+// * [property@AboutWindow:documenters]
682+// * [property@AboutWindow:translator-credits]
683+// * [method@AboutWindow.add_credit_section]
684+// * [method@AboutWindow.add_acknowledgement_section]
685+func (x *AboutWindow) SetDevelopers(DevelopersVar uintptr) {
686+
687+ xAboutWindowSetDevelopers(x.GoPointer(), DevelopersVar)
688+
689+}
690+
691+var xAboutWindowSetDocumenters func(uintptr, uintptr)
692+
693+// Sets the list of documenters of the application.
694+//
695+// It will be displayed on the Credits page.
696+//
697+// Each name may contain email addresses and URLs, see the introduction for more
698+// details.
699+//
700+// See also:
701+//
702+// * [property@AboutWindow:developers]
703+// * [property@AboutWindow:designers]
704+// * [property@AboutWindow:artists]
705+// * [property@AboutWindow:translator-credits]
706+// * [method@AboutWindow.add_credit_section]
707+// * [method@AboutWindow.add_acknowledgement_section]
708+func (x *AboutWindow) SetDocumenters(DocumentersVar uintptr) {
709+
710+ xAboutWindowSetDocumenters(x.GoPointer(), DocumentersVar)
711+
712+}
713+
714+var xAboutWindowSetIssueUrl func(uintptr, string)
715+
716+// Sets the issue tracker URL for @self.
717+//
718+// The issue tracker link is displayed on the main page.
719+func (x *AboutWindow) SetIssueUrl(IssueUrlVar string) {
720+
721+ xAboutWindowSetIssueUrl(x.GoPointer(), IssueUrlVar)
722+
723+}
724+
725+var xAboutWindowSetLicense func(uintptr, string)
726+
727+// Sets the license for @self.
728+//
729+// This can be used to set a custom text for the license if it can't be set via
730+// [property@AboutWindow:license-type].
731+//
732+// When set, [property@AboutWindow:license-type] will be set to
733+// `GTK_LICENSE_CUSTOM`.
734+//
735+// The license text will be displayed on the Legal page, below the copyright
736+// information.
737+//
738+// License text can contain Pango markup and links.
739+//
740+// [method@AboutWindow.add_legal_section] can be used to add license information
741+// for the application dependencies or other components.
742+func (x *AboutWindow) SetLicense(LicenseVar string) {
743+
744+ xAboutWindowSetLicense(x.GoPointer(), LicenseVar)
745+
746+}
747+
748+var xAboutWindowSetLicenseType func(uintptr, gtk.License)
749+
750+// Sets the license for @self from a list of known licenses.
751+//
752+// If the application's license is not in the list,
753+// [property@AboutWindow:license] can be used instead. The license type will be
754+// automatically set to `GTK_LICENSE_CUSTOM` in that case.
755+//
756+// If @license_type is `GTK_LICENSE_UNKNOWN`, no information will be displayed.
757+//
758+// If @license_type is different from `GTK_LICENSE_CUSTOM`.
759+// [property@AboutWindow:license] will be cleared out.
760+//
761+// The license description will be displayed on the Legal page, below the
762+// copyright information.
763+//
764+// [method@AboutWindow.add_legal_section] can be used to add license information
765+// for the application dependencies or other components.
766+func (x *AboutWindow) SetLicenseType(LicenseTypeVar gtk.License) {
767+
768+ xAboutWindowSetLicenseType(x.GoPointer(), LicenseTypeVar)
769+
770+}
771+
772+var xAboutWindowSetReleaseNotes func(uintptr, string)
773+
774+// Sets the release notes for @self.
775+//
776+// Release notes are displayed on the the What's New page.
777+//
778+// Release notes are formatted the same way as
779+// [AppStream descriptions](https://freedesktop.org/software/appstream/docs/chap-Metadata.html#tag-description).
780+//
781+// The supported formatting options are:
782+//
783+// * Paragraph (`&lt;p&gt;`)
784+// * Ordered list (`&lt;ol&gt;`), with list items (`&lt;li&gt;`)
785+// * Unordered list (`&lt;ul&gt;`), with list items (`&lt;li&gt;`)
786+//
787+// Within paragraphs and list items, emphasis (`&lt;em&gt;`) and inline code
788+// (`&lt;code&gt;`) text styles are supported. The emphasis is rendered in italic,
789+// while inline code is shown in a monospaced font.
790+//
791+// Any text outside paragraphs or list items is ignored.
792+//
793+// Nested lists are not supported.
794+//
795+// `AdwAboutWindow` displays the version above the release notes. If set, the
796+// [property@AboutWindow:release-notes-version] of the property will be used
797+// as the version; otherwise, [property@AboutWindow:version] is used.
798+func (x *AboutWindow) SetReleaseNotes(ReleaseNotesVar string) {
799+
800+ xAboutWindowSetReleaseNotes(x.GoPointer(), ReleaseNotesVar)
801+
802+}
803+
804+var xAboutWindowSetReleaseNotesVersion func(uintptr, string)
805+
806+// Sets the version described by the application's release notes.
807+//
808+// The release notes version is displayed on the What's New page, above the
809+// release notes.
810+//
811+// If not set, [property@AboutWindow:version] will be used instead.
812+//
813+// For example, an application with the current version 2.0.2 might want to
814+// keep the release notes from 2.0.0, and set the release notes version
815+// accordingly.
816+//
817+// See [property@AboutWindow:release-notes].
818+func (x *AboutWindow) SetReleaseNotesVersion(VersionVar string) {
819+
820+ xAboutWindowSetReleaseNotesVersion(x.GoPointer(), VersionVar)
821+
822+}
823+
824+var xAboutWindowSetSupportUrl func(uintptr, string)
825+
826+// Sets the URL of the support page for @self.
827+//
828+// The support page link is displayed on the main page.
829+func (x *AboutWindow) SetSupportUrl(SupportUrlVar string) {
830+
831+ xAboutWindowSetSupportUrl(x.GoPointer(), SupportUrlVar)
832+
833+}
834+
835+var xAboutWindowSetTranslatorCredits func(uintptr, string)
836+
837+// Sets the translator credits string.
838+//
839+// It will be displayed on the Credits page.
840+//
841+// This string should be `"translator-credits"` or `"translator_credits"` and
842+// should be marked as translatable.
843+//
844+// The string may contain email addresses and URLs, see the introduction for
845+// more details.
846+//
847+// See also:
848+//
849+// * [property@AboutWindow:developers]
850+// * [property@AboutWindow:designers]
851+// * [property@AboutWindow:artists]
852+// * [property@AboutWindow:documenters]
853+// * [method@AboutWindow.add_credit_section]
854+// * [method@AboutWindow.add_acknowledgement_section]
855+func (x *AboutWindow) SetTranslatorCredits(TranslatorCreditsVar string) {
856+
857+ xAboutWindowSetTranslatorCredits(x.GoPointer(), TranslatorCreditsVar)
858+
859+}
860+
861+var xAboutWindowSetVersion func(uintptr, string)
862+
863+// Sets the version for @self.
864+//
865+// The version is displayed on the main page.
866+//
867+// If [property@AboutWindow:release-notes-version] is not set, the version will
868+// also be displayed above the release notes on the What's New page.
869+func (x *AboutWindow) SetVersion(VersionVar string) {
870+
871+ xAboutWindowSetVersion(x.GoPointer(), VersionVar)
872+
873+}
874+
875+var xAboutWindowSetWebsite func(uintptr, string)
876+
877+// Sets the application website URL for @self.
878+//
879+// Website is displayed on the Details page, below comments, or on the main page
880+// if the Details page doesn't have any other content.
881+//
882+// Applications can add other links below, see [method@AboutWindow.add_link].
883+func (x *AboutWindow) SetWebsite(WebsiteVar string) {
884+
885+ xAboutWindowSetWebsite(x.GoPointer(), WebsiteVar)
886+
887+}
888+
889+func (c *AboutWindow) GoPointer() uintptr {
890+ return c.Ptr
891+}
892+
893+func (c *AboutWindow) SetGoPointer(ptr uintptr) {
894+ c.Ptr = ptr
895+}
896+
897+// Emitted when a URL is activated.
898+//
899+// Applications may connect to it to override the default behavior, which is
900+// to call [func@Gtk.show_uri].
901+func (x *AboutWindow) ConnectActivateLink(cb func(AboutWindow, string) bool) {
902+ fcb := func(clsPtr uintptr, UriVarp string) bool {
903+ fa := AboutWindow{}
904+ fa.Ptr = clsPtr
905+
906+ return cb(fa, UriVarp)
907+
908+ }
909+ gobject.ObjectConnect(x.GoPointer(), "signal::activate-link", purego.NewCallback(fcb))
910+}
911+
912+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
913+func (x *AboutWindow) GetAccessibleRole() gtk.AccessibleRole {
914+
915+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
916+
917+}
918+
919+// Resets the accessible @property to its default value.
920+func (x *AboutWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
921+
922+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
923+
924+}
925+
926+// Resets the accessible @relation to its default value.
927+func (x *AboutWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
928+
929+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
930+
931+}
932+
933+// Resets the accessible @state to its default value.
934+func (x *AboutWindow) ResetState(StateVar gtk.AccessibleState) {
935+
936+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
937+
938+}
939+
940+// Updates a list of accessible properties.
941+//
942+// See the [enum@Gtk.AccessibleProperty] documentation for the
943+// value types of accessible properties.
944+//
945+// This function should be called by `GtkWidget` types whenever
946+// an accessible property change must be communicated to assistive
947+// technologies.
948+//
949+// Example:
950+// ```c
951+// value = gtk_adjustment_get_value (adjustment);
952+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
953+//
954+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
955+// -1);
956+//
957+// ```
958+func (x *AboutWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
959+
960+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
961+
962+}
963+
964+// Updates an array of accessible properties.
965+//
966+// This function should be called by `GtkWidget` types whenever an accessible
967+// property change must be communicated to assistive technologies.
968+//
969+// This function is meant to be used by language bindings.
970+func (x *AboutWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
971+
972+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
973+
974+}
975+
976+// Updates a list of accessible relations.
977+//
978+// This function should be called by `GtkWidget` types whenever an accessible
979+// relation change must be communicated to assistive technologies.
980+//
981+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
982+// you should pass each reference individually, followed by %NULL, e.g.
983+//
984+// ```c
985+// gtk_accessible_update_relation (accessible,
986+//
987+// GTK_ACCESSIBLE_RELATION_CONTROLS,
988+// ref1, NULL,
989+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
990+// ref1, ref2, ref3, NULL,
991+// -1);
992+//
993+// ```
994+func (x *AboutWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
995+
996+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
997+
998+}
999+
1000+// Updates an array of accessible relations.
1001+//
1002+// This function should be called by `GtkWidget` types whenever an accessible
1003+// relation change must be communicated to assistive technologies.
1004+//
1005+// This function is meant to be used by language bindings.
1006+func (x *AboutWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
1007+
1008+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
1009+
1010+}
1011+
1012+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
1013+// documentation for the value types of accessible states.
1014+//
1015+// This function should be called by `GtkWidget` types whenever an accessible
1016+// state change must be communicated to assistive technologies.
1017+//
1018+// Example:
1019+// ```c
1020+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
1021+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
1022+//
1023+// GTK_ACCESSIBLE_STATE_CHECKED, value,
1024+// -1);
1025+//
1026+// ```
1027+func (x *AboutWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
1028+
1029+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
1030+
1031+}
1032+
1033+// Updates an array of accessible states.
1034+//
1035+// This function should be called by `GtkWidget` types whenever an accessible
1036+// state change must be communicated to assistive technologies.
1037+//
1038+// This function is meant to be used by language bindings.
1039+func (x *AboutWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
1040+
1041+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
1042+
1043+}
1044+
1045+// Gets the ID of the @buildable object.
1046+//
1047+// `GtkBuilder` sets the name based on the ID attribute
1048+// of the &lt;object&gt; tag used to construct the @buildable.
1049+func (x *AboutWindow) GetBuildableId() string {
1050+
1051+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
1052+
1053+}
1054+
1055+// Returns the renderer that is used for this `GtkNative`.
1056+func (x *AboutWindow) GetRenderer() *gsk.Renderer {
1057+
1058+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
1059+ if GetRendererPtr == 0 {
1060+ return nil
1061+ }
1062+
1063+ gobject.IncreaseRef(GetRendererPtr)
1064+
1065+ GetRendererCls := &gsk.Renderer{}
1066+ GetRendererCls.Ptr = GetRendererPtr
1067+ return GetRendererCls
1068+
1069+}
1070+
1071+// Returns the surface of this `GtkNative`.
1072+func (x *AboutWindow) GetSurface() *gdk.Surface {
1073+
1074+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
1075+ if GetSurfacePtr == 0 {
1076+ return nil
1077+ }
1078+
1079+ gobject.IncreaseRef(GetSurfacePtr)
1080+
1081+ GetSurfaceCls := &gdk.Surface{}
1082+ GetSurfaceCls.Ptr = GetSurfacePtr
1083+ return GetSurfaceCls
1084+
1085+}
1086+
1087+// Retrieves the surface transform of @self.
1088+//
1089+// This is the translation from @self's surface coordinates into
1090+// @self's widget coordinates.
1091+func (x *AboutWindow) GetSurfaceTransform(XVar float64, YVar float64) {
1092+
1093+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
1094+
1095+}
1096+
1097+// Realizes a `GtkNative`.
1098+//
1099+// This should only be used by subclasses.
1100+func (x *AboutWindow) Realize() {
1101+
1102+ gtk.XGtkNativeRealize(x.GoPointer())
1103+
1104+}
1105+
1106+// Unrealizes a `GtkNative`.
1107+//
1108+// This should only be used by subclasses.
1109+func (x *AboutWindow) Unrealize() {
1110+
1111+ gtk.XGtkNativeUnrealize(x.GoPointer())
1112+
1113+}
1114+
1115+// Returns the display that this `GtkRoot` is on.
1116+func (x *AboutWindow) GetDisplay() *gdk.Display {
1117+
1118+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
1119+ if GetDisplayPtr == 0 {
1120+ return nil
1121+ }
1122+
1123+ gobject.IncreaseRef(GetDisplayPtr)
1124+
1125+ GetDisplayCls := &gdk.Display{}
1126+ GetDisplayCls.Ptr = GetDisplayPtr
1127+ return GetDisplayCls
1128+
1129+}
1130+
1131+// Retrieves the current focused widget within the root.
1132+//
1133+// Note that this is the widget that would have the focus
1134+// if the root is active; if the root is not focused then
1135+// `gtk_widget_has_focus (widget)` will be %FALSE for the
1136+// widget.
1137+func (x *AboutWindow) GetFocus() *gtk.Widget {
1138+
1139+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
1140+ if GetFocusPtr == 0 {
1141+ return nil
1142+ }
1143+
1144+ gobject.IncreaseRef(GetFocusPtr)
1145+
1146+ GetFocusCls := &gtk.Widget{}
1147+ GetFocusCls.Ptr = GetFocusPtr
1148+ return GetFocusCls
1149+
1150+}
1151+
1152+// If @focus is not the current focus widget, and is focusable, sets
1153+// it as the focus widget for the root.
1154+//
1155+// If @focus is %NULL, unsets the focus widget for the root.
1156+//
1157+// To set the focus to a particular widget in the root, it is usually
1158+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
1159+// this function.
1160+func (x *AboutWindow) SetFocus(FocusVar *gtk.Widget) {
1161+
1162+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
1163+
1164+}
1165+
1166+func init() {
1167+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
1168+ if err != nil {
1169+ panic(err)
1170+ }
1171+ core.PuregoSafeRegister(&xShowAboutWindow, lib, "adw_show_about_window")
1172+
1173+ core.PuregoSafeRegister(&xNewAboutWindow, lib, "adw_about_window_new")
1174+
1175+ core.PuregoSafeRegister(&xAboutWindowAddAcknowledgementSection, lib, "adw_about_window_add_acknowledgement_section")
1176+ core.PuregoSafeRegister(&xAboutWindowAddCreditSection, lib, "adw_about_window_add_credit_section")
1177+ core.PuregoSafeRegister(&xAboutWindowAddLegalSection, lib, "adw_about_window_add_legal_section")
1178+ core.PuregoSafeRegister(&xAboutWindowAddLink, lib, "adw_about_window_add_link")
1179+ core.PuregoSafeRegister(&xAboutWindowGetApplicationIcon, lib, "adw_about_window_get_application_icon")
1180+ core.PuregoSafeRegister(&xAboutWindowGetApplicationName, lib, "adw_about_window_get_application_name")
1181+ core.PuregoSafeRegister(&xAboutWindowGetArtists, lib, "adw_about_window_get_artists")
1182+ core.PuregoSafeRegister(&xAboutWindowGetComments, lib, "adw_about_window_get_comments")
1183+ core.PuregoSafeRegister(&xAboutWindowGetCopyright, lib, "adw_about_window_get_copyright")
1184+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfo, lib, "adw_about_window_get_debug_info")
1185+ core.PuregoSafeRegister(&xAboutWindowGetDebugInfoFilename, lib, "adw_about_window_get_debug_info_filename")
1186+ core.PuregoSafeRegister(&xAboutWindowGetDesigners, lib, "adw_about_window_get_designers")
1187+ core.PuregoSafeRegister(&xAboutWindowGetDeveloperName, lib, "adw_about_window_get_developer_name")
1188+ core.PuregoSafeRegister(&xAboutWindowGetDevelopers, lib, "adw_about_window_get_developers")
1189+ core.PuregoSafeRegister(&xAboutWindowGetDocumenters, lib, "adw_about_window_get_documenters")
1190+ core.PuregoSafeRegister(&xAboutWindowGetIssueUrl, lib, "adw_about_window_get_issue_url")
1191+ core.PuregoSafeRegister(&xAboutWindowGetLicense, lib, "adw_about_window_get_license")
1192+ core.PuregoSafeRegister(&xAboutWindowGetLicenseType, lib, "adw_about_window_get_license_type")
1193+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotes, lib, "adw_about_window_get_release_notes")
1194+ core.PuregoSafeRegister(&xAboutWindowGetReleaseNotesVersion, lib, "adw_about_window_get_release_notes_version")
1195+ core.PuregoSafeRegister(&xAboutWindowGetSupportUrl, lib, "adw_about_window_get_support_url")
1196+ core.PuregoSafeRegister(&xAboutWindowGetTranslatorCredits, lib, "adw_about_window_get_translator_credits")
1197+ core.PuregoSafeRegister(&xAboutWindowGetVersion, lib, "adw_about_window_get_version")
1198+ core.PuregoSafeRegister(&xAboutWindowGetWebsite, lib, "adw_about_window_get_website")
1199+ core.PuregoSafeRegister(&xAboutWindowSetApplicationIcon, lib, "adw_about_window_set_application_icon")
1200+ core.PuregoSafeRegister(&xAboutWindowSetApplicationName, lib, "adw_about_window_set_application_name")
1201+ core.PuregoSafeRegister(&xAboutWindowSetArtists, lib, "adw_about_window_set_artists")
1202+ core.PuregoSafeRegister(&xAboutWindowSetComments, lib, "adw_about_window_set_comments")
1203+ core.PuregoSafeRegister(&xAboutWindowSetCopyright, lib, "adw_about_window_set_copyright")
1204+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfo, lib, "adw_about_window_set_debug_info")
1205+ core.PuregoSafeRegister(&xAboutWindowSetDebugInfoFilename, lib, "adw_about_window_set_debug_info_filename")
1206+ core.PuregoSafeRegister(&xAboutWindowSetDesigners, lib, "adw_about_window_set_designers")
1207+ core.PuregoSafeRegister(&xAboutWindowSetDeveloperName, lib, "adw_about_window_set_developer_name")
1208+ core.PuregoSafeRegister(&xAboutWindowSetDevelopers, lib, "adw_about_window_set_developers")
1209+ core.PuregoSafeRegister(&xAboutWindowSetDocumenters, lib, "adw_about_window_set_documenters")
1210+ core.PuregoSafeRegister(&xAboutWindowSetIssueUrl, lib, "adw_about_window_set_issue_url")
1211+ core.PuregoSafeRegister(&xAboutWindowSetLicense, lib, "adw_about_window_set_license")
1212+ core.PuregoSafeRegister(&xAboutWindowSetLicenseType, lib, "adw_about_window_set_license_type")
1213+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotes, lib, "adw_about_window_set_release_notes")
1214+ core.PuregoSafeRegister(&xAboutWindowSetReleaseNotesVersion, lib, "adw_about_window_set_release_notes_version")
1215+ core.PuregoSafeRegister(&xAboutWindowSetSupportUrl, lib, "adw_about_window_set_support_url")
1216+ core.PuregoSafeRegister(&xAboutWindowSetTranslatorCredits, lib, "adw_about_window_set_translator_credits")
1217+ core.PuregoSafeRegister(&xAboutWindowSetVersion, lib, "adw_about_window_set_version")
1218+ core.PuregoSafeRegister(&xAboutWindowSetWebsite, lib, "adw_about_window_set_website")
1219+
1220+}
A v4/adw/adw-action-row.go +524 -0
@@ -0,0 +1,524 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ActionRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present actions.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="action-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="action-row.png" alt="action-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwActionRow` widget can have a title, a subtitle and an icon. The row
28+// can receive additional widgets at its end, or prefix widgets at its start.
29+//
30+// It is convenient to present a preference and its related actions.
31+//
32+// `AdwActionRow` is unactivatable by default, giving it an activatable widget
33+// will automatically make it activatable, but unsetting it won't change the
34+// row's activatability.
35+//
36+// ## AdwActionRow as GtkBuildable
37+//
38+// The `AdwActionRow` implementation of the [iface@Gtk.Buildable] interface
39+// supports adding a child at its end by specifying “suffix” or omitting the
40+// “type” attribute of a &lt;child&gt; element.
41+//
42+// It also supports adding a child as a prefix widget by specifying “prefix” as
43+// the “type” attribute of a &lt;child&gt; element.
44+//
45+// ## CSS nodes
46+//
47+// `AdwActionRow` has a main CSS node with name `row`.
48+//
49+// It contains the subnode `box.header` for its main horizontal box, and
50+// `box.title` for the vertical box containing the title and subtitle labels.
51+//
52+// It contains subnodes `label.title` and `label.subtitle` representing
53+// respectively the title label and subtitle label.
54+type ActionRow struct {
55+ PreferencesRow
56+}
57+
58+func ActionRowNewFromInternalPtr(ptr uintptr) *ActionRow {
59+ cls := &ActionRow{}
60+ cls.Ptr = ptr
61+ return cls
62+}
63+
64+var xNewActionRow func() uintptr
65+
66+// Creates a new `AdwActionRow`.
67+func NewActionRow() *gtk.Widget {
68+ NewActionRowPtr := xNewActionRow()
69+ if NewActionRowPtr == 0 {
70+ return nil
71+ }
72+
73+ gobject.IncreaseRef(NewActionRowPtr)
74+
75+ NewActionRowCls := &gtk.Widget{}
76+ NewActionRowCls.Ptr = NewActionRowPtr
77+ return NewActionRowCls
78+}
79+
80+var xActionRowActivate func(uintptr)
81+
82+// Activates @self.
83+func (x *ActionRow) Activate() {
84+
85+ xActionRowActivate(x.GoPointer())
86+
87+}
88+
89+var xActionRowAddPrefix func(uintptr, uintptr)
90+
91+// Adds a prefix widget to @self.
92+func (x *ActionRow) AddPrefix(WidgetVar *gtk.Widget) {
93+
94+ xActionRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
95+
96+}
97+
98+var xActionRowAddSuffix func(uintptr, uintptr)
99+
100+// Adds a suffix widget to @self.
101+func (x *ActionRow) AddSuffix(WidgetVar *gtk.Widget) {
102+
103+ xActionRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
104+
105+}
106+
107+var xActionRowGetActivatableWidget func(uintptr) uintptr
108+
109+// Gets the widget activated when @self is activated.
110+func (x *ActionRow) GetActivatableWidget() *gtk.Widget {
111+
112+ GetActivatableWidgetPtr := xActionRowGetActivatableWidget(x.GoPointer())
113+ if GetActivatableWidgetPtr == 0 {
114+ return nil
115+ }
116+
117+ gobject.IncreaseRef(GetActivatableWidgetPtr)
118+
119+ GetActivatableWidgetCls := &gtk.Widget{}
120+ GetActivatableWidgetCls.Ptr = GetActivatableWidgetPtr
121+ return GetActivatableWidgetCls
122+
123+}
124+
125+var xActionRowGetIconName func(uintptr) string
126+
127+// Gets the icon name for @self.
128+func (x *ActionRow) GetIconName() string {
129+
130+ return xActionRowGetIconName(x.GoPointer())
131+
132+}
133+
134+var xActionRowGetSubtitle func(uintptr) string
135+
136+// Gets the subtitle for @self.
137+func (x *ActionRow) GetSubtitle() string {
138+
139+ return xActionRowGetSubtitle(x.GoPointer())
140+
141+}
142+
143+var xActionRowGetSubtitleLines func(uintptr) int32
144+
145+// Gets the number of lines at the end of which the subtitle label will be
146+// ellipsized.
147+func (x *ActionRow) GetSubtitleLines() int32 {
148+
149+ return xActionRowGetSubtitleLines(x.GoPointer())
150+
151+}
152+
153+var xActionRowGetSubtitleSelectable func(uintptr) bool
154+
155+// Gets whether the user can copy the subtitle from the label
156+func (x *ActionRow) GetSubtitleSelectable() bool {
157+
158+ return xActionRowGetSubtitleSelectable(x.GoPointer())
159+
160+}
161+
162+var xActionRowGetTitleLines func(uintptr) int32
163+
164+// Gets the number of lines at the end of which the title label will be
165+// ellipsized.
166+func (x *ActionRow) GetTitleLines() int32 {
167+
168+ return xActionRowGetTitleLines(x.GoPointer())
169+
170+}
171+
172+var xActionRowRemove func(uintptr, uintptr)
173+
174+// Removes a child from @self.
175+func (x *ActionRow) Remove(WidgetVar *gtk.Widget) {
176+
177+ xActionRowRemove(x.GoPointer(), WidgetVar.GoPointer())
178+
179+}
180+
181+var xActionRowSetActivatableWidget func(uintptr, uintptr)
182+
183+// Sets the widget to activate when @self is activated.
184+//
185+// The row can be activated either by clicking on it, calling
186+// [method@ActionRow.activate], or via mnemonics in the title.
187+// See the [property@PreferencesRow:use-underline] property to enable mnemonics.
188+//
189+// The target widget will be activated by emitting the
190+// [signal@Gtk.Widget::mnemonic-activate] signal on it.
191+func (x *ActionRow) SetActivatableWidget(WidgetVar *gtk.Widget) {
192+
193+ xActionRowSetActivatableWidget(x.GoPointer(), WidgetVar.GoPointer())
194+
195+}
196+
197+var xActionRowSetIconName func(uintptr, string)
198+
199+// Sets the icon name for @self.
200+func (x *ActionRow) SetIconName(IconNameVar string) {
201+
202+ xActionRowSetIconName(x.GoPointer(), IconNameVar)
203+
204+}
205+
206+var xActionRowSetSubtitle func(uintptr, string)
207+
208+// Sets the subtitle for @self.
209+//
210+// The subtitle is interpreted as Pango markup unless
211+// [property@PreferencesRow:use-markup] is set to `FALSE`.
212+func (x *ActionRow) SetSubtitle(SubtitleVar string) {
213+
214+ xActionRowSetSubtitle(x.GoPointer(), SubtitleVar)
215+
216+}
217+
218+var xActionRowSetSubtitleLines func(uintptr, int32)
219+
220+// Sets the number of lines at the end of which the subtitle label will be
221+// ellipsized.
222+//
223+// If the value is 0, the number of lines won't be limited.
224+func (x *ActionRow) SetSubtitleLines(SubtitleLinesVar int32) {
225+
226+ xActionRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
227+
228+}
229+
230+var xActionRowSetSubtitleSelectable func(uintptr, bool)
231+
232+// Sets whether the user can copy the subtitle from the label
233+//
234+// See also [property@Gtk.Label:selectable].
235+func (x *ActionRow) SetSubtitleSelectable(SubtitleSelectableVar bool) {
236+
237+ xActionRowSetSubtitleSelectable(x.GoPointer(), SubtitleSelectableVar)
238+
239+}
240+
241+var xActionRowSetTitleLines func(uintptr, int32)
242+
243+// Sets the number of lines at the end of which the title label will be
244+// ellipsized.
245+//
246+// If the value is 0, the number of lines won't be limited.
247+func (x *ActionRow) SetTitleLines(TitleLinesVar int32) {
248+
249+ xActionRowSetTitleLines(x.GoPointer(), TitleLinesVar)
250+
251+}
252+
253+func (c *ActionRow) GoPointer() uintptr {
254+ return c.Ptr
255+}
256+
257+func (c *ActionRow) SetGoPointer(ptr uintptr) {
258+ c.Ptr = ptr
259+}
260+
261+// This signal is emitted after the row has been activated.
262+func (x *ActionRow) ConnectActivated(cb func(ActionRow)) {
263+ fcb := func(clsPtr uintptr) {
264+ fa := ActionRow{}
265+ fa.Ptr = clsPtr
266+
267+ cb(fa)
268+
269+ }
270+ gobject.ObjectConnect(x.GoPointer(), "signal::activated", purego.NewCallback(fcb))
271+}
272+
273+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
274+func (x *ActionRow) GetAccessibleRole() gtk.AccessibleRole {
275+
276+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
277+
278+}
279+
280+// Resets the accessible @property to its default value.
281+func (x *ActionRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
282+
283+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
284+
285+}
286+
287+// Resets the accessible @relation to its default value.
288+func (x *ActionRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
289+
290+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
291+
292+}
293+
294+// Resets the accessible @state to its default value.
295+func (x *ActionRow) ResetState(StateVar gtk.AccessibleState) {
296+
297+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
298+
299+}
300+
301+// Updates a list of accessible properties.
302+//
303+// See the [enum@Gtk.AccessibleProperty] documentation for the
304+// value types of accessible properties.
305+//
306+// This function should be called by `GtkWidget` types whenever
307+// an accessible property change must be communicated to assistive
308+// technologies.
309+//
310+// Example:
311+// ```c
312+// value = gtk_adjustment_get_value (adjustment);
313+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
314+//
315+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
316+// -1);
317+//
318+// ```
319+func (x *ActionRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
320+
321+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
322+
323+}
324+
325+// Updates an array of accessible properties.
326+//
327+// This function should be called by `GtkWidget` types whenever an accessible
328+// property change must be communicated to assistive technologies.
329+//
330+// This function is meant to be used by language bindings.
331+func (x *ActionRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
332+
333+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
334+
335+}
336+
337+// Updates a list of accessible relations.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// relation change must be communicated to assistive technologies.
341+//
342+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
343+// you should pass each reference individually, followed by %NULL, e.g.
344+//
345+// ```c
346+// gtk_accessible_update_relation (accessible,
347+//
348+// GTK_ACCESSIBLE_RELATION_CONTROLS,
349+// ref1, NULL,
350+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
351+// ref1, ref2, ref3, NULL,
352+// -1);
353+//
354+// ```
355+func (x *ActionRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
356+
357+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
358+
359+}
360+
361+// Updates an array of accessible relations.
362+//
363+// This function should be called by `GtkWidget` types whenever an accessible
364+// relation change must be communicated to assistive technologies.
365+//
366+// This function is meant to be used by language bindings.
367+func (x *ActionRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
368+
369+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
370+
371+}
372+
373+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
374+// documentation for the value types of accessible states.
375+//
376+// This function should be called by `GtkWidget` types whenever an accessible
377+// state change must be communicated to assistive technologies.
378+//
379+// Example:
380+// ```c
381+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
382+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
383+//
384+// GTK_ACCESSIBLE_STATE_CHECKED, value,
385+// -1);
386+//
387+// ```
388+func (x *ActionRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
389+
390+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
391+
392+}
393+
394+// Updates an array of accessible states.
395+//
396+// This function should be called by `GtkWidget` types whenever an accessible
397+// state change must be communicated to assistive technologies.
398+//
399+// This function is meant to be used by language bindings.
400+func (x *ActionRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
401+
402+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
403+
404+}
405+
406+// Gets the action name for @actionable.
407+func (x *ActionRow) GetActionName() string {
408+
409+ return gtk.XGtkActionableGetActionName(x.GoPointer())
410+
411+}
412+
413+// Gets the current target value of @actionable.
414+func (x *ActionRow) GetActionTargetValue() *glib.Variant {
415+
416+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
417+
418+}
419+
420+// Specifies the name of the action with which this widget should be
421+// associated.
422+//
423+// If @action_name is %NULL then the widget will be unassociated from
424+// any previous action.
425+//
426+// Usually this function is used when the widget is located (or will be
427+// located) within the hierarchy of a `GtkApplicationWindow`.
428+//
429+// Names are of the form “win.save” or “app.quit” for actions on the
430+// containing [class@ApplicationWindow] or its associated [class@Application],
431+// respectively. This is the same form used for actions in the [class@Gio.Menu]
432+// associated with the window.
433+func (x *ActionRow) SetActionName(ActionNameVar string) {
434+
435+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
436+
437+}
438+
439+// Sets the target of an actionable widget.
440+//
441+// This is a convenience function that calls [ctor@GLib.Variant.new] for
442+// @format_string and uses the result to call
443+// [method@Gtk.Actionable.set_action_target_value].
444+//
445+// If you are setting a string-valued target and want to set
446+// the action name at the same time, you can use
447+// [method@Gtk.Actionable.set_detailed_action_name].
448+func (x *ActionRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
449+
450+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
451+
452+}
453+
454+// Sets the target value of an actionable widget.
455+//
456+// If @target_value is %NULL then the target value is unset.
457+//
458+// The target value has two purposes. First, it is used as the parameter
459+// to activation of the action associated with the `GtkActionable` widget.
460+// Second, it is used to determine if the widget should be rendered as
461+// “active” — the widget is active if the state is equal to the given target.
462+//
463+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
464+// with string state in a typical “radio button” situation. Each button
465+// will be associated with the same action, but with a different target
466+// value for that action. Clicking on a particular button will activate
467+// the action with the target of that button, which will typically cause
468+// the action’s state to change to that value. Since the action’s state
469+// is now equal to the target value of the button, the button will now
470+// be rendered as active (and the other buttons, with different targets,
471+// rendered inactive).
472+func (x *ActionRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
473+
474+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
475+
476+}
477+
478+// Sets the action-name and associated string target value of an
479+// actionable widget.
480+//
481+// @detailed_action_name is a string in the format accepted by
482+// [func@Gio.Action.parse_detailed_name].
483+func (x *ActionRow) SetDetailedActionName(DetailedActionNameVar string) {
484+
485+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
486+
487+}
488+
489+// Gets the ID of the @buildable object.
490+//
491+// `GtkBuilder` sets the name based on the ID attribute
492+// of the &lt;object&gt; tag used to construct the @buildable.
493+func (x *ActionRow) GetBuildableId() string {
494+
495+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
496+
497+}
498+
499+func init() {
500+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
501+ if err != nil {
502+ panic(err)
503+ }
504+
505+ core.PuregoSafeRegister(&xNewActionRow, lib, "adw_action_row_new")
506+
507+ core.PuregoSafeRegister(&xActionRowActivate, lib, "adw_action_row_activate")
508+ core.PuregoSafeRegister(&xActionRowAddPrefix, lib, "adw_action_row_add_prefix")
509+ core.PuregoSafeRegister(&xActionRowAddSuffix, lib, "adw_action_row_add_suffix")
510+ core.PuregoSafeRegister(&xActionRowGetActivatableWidget, lib, "adw_action_row_get_activatable_widget")
511+ core.PuregoSafeRegister(&xActionRowGetIconName, lib, "adw_action_row_get_icon_name")
512+ core.PuregoSafeRegister(&xActionRowGetSubtitle, lib, "adw_action_row_get_subtitle")
513+ core.PuregoSafeRegister(&xActionRowGetSubtitleLines, lib, "adw_action_row_get_subtitle_lines")
514+ core.PuregoSafeRegister(&xActionRowGetSubtitleSelectable, lib, "adw_action_row_get_subtitle_selectable")
515+ core.PuregoSafeRegister(&xActionRowGetTitleLines, lib, "adw_action_row_get_title_lines")
516+ core.PuregoSafeRegister(&xActionRowRemove, lib, "adw_action_row_remove")
517+ core.PuregoSafeRegister(&xActionRowSetActivatableWidget, lib, "adw_action_row_set_activatable_widget")
518+ core.PuregoSafeRegister(&xActionRowSetIconName, lib, "adw_action_row_set_icon_name")
519+ core.PuregoSafeRegister(&xActionRowSetSubtitle, lib, "adw_action_row_set_subtitle")
520+ core.PuregoSafeRegister(&xActionRowSetSubtitleLines, lib, "adw_action_row_set_subtitle_lines")
521+ core.PuregoSafeRegister(&xActionRowSetSubtitleSelectable, lib, "adw_action_row_set_subtitle_selectable")
522+ core.PuregoSafeRegister(&xActionRowSetTitleLines, lib, "adw_action_row_set_title_lines")
523+
524+}
A v4/adw/adw-animation-target.go +181 -0
@@ -0,0 +1,181 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+// Prototype for animation targets based on user callbacks.
12+type AnimationTargetFunc func(float64, uintptr)
13+
14+type AnimationTargetClass struct {
15+}
16+
17+type CallbackAnimationTargetClass struct {
18+}
19+
20+type PropertyAnimationTargetClass struct {
21+}
22+
23+// Represents a value [class@Animation] can animate.
24+type AnimationTarget struct {
25+ gobject.Object
26+}
27+
28+func AnimationTargetNewFromInternalPtr(ptr uintptr) *AnimationTarget {
29+ cls := &AnimationTarget{}
30+ cls.Ptr = ptr
31+ return cls
32+}
33+
34+func (c *AnimationTarget) GoPointer() uintptr {
35+ return c.Ptr
36+}
37+
38+func (c *AnimationTarget) SetGoPointer(ptr uintptr) {
39+ c.Ptr = ptr
40+}
41+
42+// An [class@AnimationTarget] that calls a given callback during the
43+// animation.
44+type CallbackAnimationTarget struct {
45+ AnimationTarget
46+}
47+
48+func CallbackAnimationTargetNewFromInternalPtr(ptr uintptr) *CallbackAnimationTarget {
49+ cls := &CallbackAnimationTarget{}
50+ cls.Ptr = ptr
51+ return cls
52+}
53+
54+var xNewCallbackAnimationTarget func(uintptr, uintptr, uintptr) uintptr
55+
56+// Creates a new `AdwAnimationTarget` that calls the given @callback during
57+// the animation.
58+func NewCallbackAnimationTarget(CallbackVar AnimationTargetFunc, UserDataVar uintptr, DestroyVar glib.DestroyNotify) *AnimationTarget {
59+ NewCallbackAnimationTargetPtr := xNewCallbackAnimationTarget(purego.NewCallback(CallbackVar), UserDataVar, purego.NewCallback(DestroyVar))
60+ if NewCallbackAnimationTargetPtr == 0 {
61+ return nil
62+ }
63+
64+ NewCallbackAnimationTargetCls := &AnimationTarget{}
65+ NewCallbackAnimationTargetCls.Ptr = NewCallbackAnimationTargetPtr
66+ return NewCallbackAnimationTargetCls
67+}
68+
69+func (c *CallbackAnimationTarget) GoPointer() uintptr {
70+ return c.Ptr
71+}
72+
73+func (c *CallbackAnimationTarget) SetGoPointer(ptr uintptr) {
74+ c.Ptr = ptr
75+}
76+
77+// An [class@AnimationTarget] changing the value of a property of a
78+// [class@GObject.Object] instance.
79+type PropertyAnimationTarget struct {
80+ AnimationTarget
81+}
82+
83+func PropertyAnimationTargetNewFromInternalPtr(ptr uintptr) *PropertyAnimationTarget {
84+ cls := &PropertyAnimationTarget{}
85+ cls.Ptr = ptr
86+ return cls
87+}
88+
89+var xNewPropertyAnimationTarget func(uintptr, string) uintptr
90+
91+// Creates a new `AdwPropertyAnimationTarget` for the @property_name property on
92+// @object.
93+func NewPropertyAnimationTarget(ObjectVar *gobject.Object, PropertyNameVar string) *AnimationTarget {
94+ NewPropertyAnimationTargetPtr := xNewPropertyAnimationTarget(ObjectVar.GoPointer(), PropertyNameVar)
95+ if NewPropertyAnimationTargetPtr == 0 {
96+ return nil
97+ }
98+
99+ NewPropertyAnimationTargetCls := &AnimationTarget{}
100+ NewPropertyAnimationTargetCls.Ptr = NewPropertyAnimationTargetPtr
101+ return NewPropertyAnimationTargetCls
102+}
103+
104+var xNewForPspecPropertyAnimationTarget func(uintptr, uintptr) uintptr
105+
106+// Creates a new `AdwPropertyAnimationTarget` for the @pspec property on
107+// @object.
108+func NewForPspecPropertyAnimationTarget(ObjectVar *gobject.Object, PspecVar *gobject.ParamSpec) *AnimationTarget {
109+ NewForPspecPropertyAnimationTargetPtr := xNewForPspecPropertyAnimationTarget(ObjectVar.GoPointer(), PspecVar.GoPointer())
110+ if NewForPspecPropertyAnimationTargetPtr == 0 {
111+ return nil
112+ }
113+
114+ NewForPspecPropertyAnimationTargetCls := &AnimationTarget{}
115+ NewForPspecPropertyAnimationTargetCls.Ptr = NewForPspecPropertyAnimationTargetPtr
116+ return NewForPspecPropertyAnimationTargetCls
117+}
118+
119+var xPropertyAnimationTargetGetObject func(uintptr) uintptr
120+
121+// Gets the object animated by @self.
122+//
123+// The `AdwPropertyAnimationTarget` instance does not hold a strong reference on
124+// the object; make sure the object is kept alive throughout the target's
125+// lifetime.
126+func (x *PropertyAnimationTarget) GetObject() *gobject.Object {
127+
128+ GetObjectPtr := xPropertyAnimationTargetGetObject(x.GoPointer())
129+ if GetObjectPtr == 0 {
130+ return nil
131+ }
132+
133+ gobject.IncreaseRef(GetObjectPtr)
134+
135+ GetObjectCls := &gobject.Object{}
136+ GetObjectCls.Ptr = GetObjectPtr
137+ return GetObjectCls
138+
139+}
140+
141+var xPropertyAnimationTargetGetPspec func(uintptr) uintptr
142+
143+// Gets the `GParamSpec` of the property animated by @self.
144+func (x *PropertyAnimationTarget) GetPspec() *gobject.ParamSpec {
145+
146+ GetPspecPtr := xPropertyAnimationTargetGetPspec(x.GoPointer())
147+ if GetPspecPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetPspecPtr)
152+
153+ GetPspecCls := &gobject.ParamSpec{}
154+ GetPspecCls.Ptr = GetPspecPtr
155+ return GetPspecCls
156+
157+}
158+
159+func (c *PropertyAnimationTarget) GoPointer() uintptr {
160+ return c.Ptr
161+}
162+
163+func (c *PropertyAnimationTarget) SetGoPointer(ptr uintptr) {
164+ c.Ptr = ptr
165+}
166+
167+func init() {
168+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
169+ if err != nil {
170+ panic(err)
171+ }
172+
173+ core.PuregoSafeRegister(&xNewCallbackAnimationTarget, lib, "adw_callback_animation_target_new")
174+
175+ core.PuregoSafeRegister(&xNewPropertyAnimationTarget, lib, "adw_property_animation_target_new")
176+ core.PuregoSafeRegister(&xNewForPspecPropertyAnimationTarget, lib, "adw_property_animation_target_new_for_pspec")
177+
178+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetObject, lib, "adw_property_animation_target_get_object")
179+ core.PuregoSafeRegister(&xPropertyAnimationTargetGetPspec, lib, "adw_property_animation_target_get_pspec")
180+
181+}
A v4/adw/adw-animation-util.go +39 -0
@@ -0,0 +1,39 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+var xGetEnableAnimations func(uintptr) bool
11+
12+// Checks whether animations are enabled for @widget.
13+//
14+// This should be used when implementing an animated widget to know whether to
15+// animate it or not.
16+func GetEnableAnimations(WidgetVar *gtk.Widget) bool {
17+
18+ return xGetEnableAnimations(WidgetVar.GoPointer())
19+
20+}
21+
22+var xLerp func(float64, float64, float64) float64
23+
24+// Computes the linear interpolation between @a and @b for @t.
25+func Lerp(AVar float64, BVar float64, TVar float64) float64 {
26+
27+ return xLerp(AVar, BVar, TVar)
28+
29+}
30+
31+func init() {
32+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
33+ if err != nil {
34+ panic(err)
35+ }
36+ core.PuregoSafeRegister(&xGetEnableAnimations, lib, "adw_get_enable_animations")
37+ core.PuregoSafeRegister(&xLerp, lib, "adw_lerp")
38+
39+}
A v4/adw/adw-animation.go +307 -0
@@ -0,0 +1,307 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type AnimationClass struct {
12+}
13+
14+// Describes the possible states of an [class@Animation].
15+//
16+// The state can be controlled with [method@Animation.play],
17+// [method@Animation.pause], [method@Animation.resume],
18+// [method@Animation.reset] and [method@Animation.skip].
19+type AnimationState int
20+
21+const (
22+
23+ // The animation hasn't started yet.
24+ AnimationIdleValue AnimationState = 0
25+ // The animation has been paused.
26+ AnimationPausedValue AnimationState = 1
27+ // The animation is currently playing.
28+ AnimationPlayingValue AnimationState = 2
29+ // The animation has finished.
30+ AnimationFinishedValue AnimationState = 3
31+)
32+
33+// A base class for animations.
34+//
35+// `AdwAnimation` represents an animation on a widget. It has a target that
36+// provides a value to animate, and a state indicating whether the
37+// animation hasn't been started yet, is playing, paused or finished.
38+//
39+// Currently there are two concrete animation types:
40+// [class@TimedAnimation] and [class@SpringAnimation].
41+//
42+// `AdwAnimation` will automatically skip the animation if
43+// [property@Animation:widget] is unmapped, or if
44+// [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
45+//
46+// The [signal@Animation::done] signal can be used to perform an action after
47+// the animation ends, for example hiding a widget after animating its
48+// [property@Gtk.Widget:opacity] to 0.
49+//
50+// `AdwAnimation` will be kept alive while the animation is playing. As such,
51+// it's safe to create an animation, start it and immediately unref it:
52+// A fire-and-forget animation:
53+//
54+// ```c
55+// static void
56+// animation_cb (double value,
57+//
58+// MyObject *self)
59+//
60+// {
61+// // Do something with @value
62+// }
63+//
64+// static void
65+// my_object_animate (MyObject *self)
66+//
67+// {
68+// AdwAnimationTarget *target =
69+// adw_callback_animation_target_new ((AdwAnimationTargetFunc) animation_cb,
70+// self, NULL);
71+// g_autoptr (AdwAnimation) animation =
72+// adw_timed_animation_new (widget, 0, 1, 250, target);
73+//
74+// adw_animation_play (animation);
75+// }
76+//
77+// ```
78+//
79+// If there's a chance the previous animation for the same target hasn't yet
80+// finished, the previous animation should be stopped first, or the existing
81+// `AdwAnimation` object can be reused.
82+type Animation struct {
83+ gobject.Object
84+}
85+
86+func AnimationNewFromInternalPtr(ptr uintptr) *Animation {
87+ cls := &Animation{}
88+ cls.Ptr = ptr
89+ return cls
90+}
91+
92+var xAnimationGetFollowEnableAnimationsSetting func(uintptr) bool
93+
94+// Gets whether @self should be skipped when animations are globally disabled.
95+func (x *Animation) GetFollowEnableAnimationsSetting() bool {
96+
97+ return xAnimationGetFollowEnableAnimationsSetting(x.GoPointer())
98+
99+}
100+
101+var xAnimationGetState func(uintptr) AnimationState
102+
103+// Gets the current value of @self.
104+//
105+// The state indicates whether @self is currently playing, paused, finished or
106+// hasn't been started yet.
107+func (x *Animation) GetState() AnimationState {
108+
109+ return xAnimationGetState(x.GoPointer())
110+
111+}
112+
113+var xAnimationGetTarget func(uintptr) uintptr
114+
115+// Gets the target @self animates.
116+func (x *Animation) GetTarget() *AnimationTarget {
117+
118+ GetTargetPtr := xAnimationGetTarget(x.GoPointer())
119+ if GetTargetPtr == 0 {
120+ return nil
121+ }
122+
123+ gobject.IncreaseRef(GetTargetPtr)
124+
125+ GetTargetCls := &AnimationTarget{}
126+ GetTargetCls.Ptr = GetTargetPtr
127+ return GetTargetCls
128+
129+}
130+
131+var xAnimationGetValue func(uintptr) float64
132+
133+// Gets the current value of @self.
134+func (x *Animation) GetValue() float64 {
135+
136+ return xAnimationGetValue(x.GoPointer())
137+
138+}
139+
140+var xAnimationGetWidget func(uintptr) uintptr
141+
142+// Gets the widget @self was created for.
143+//
144+// It provides the frame clock for the animation. It's not strictly necessary
145+// for this widget to be same as the one being animated.
146+//
147+// The widget must be mapped in order for the animation to work. If it's not
148+// mapped, or if it gets unmapped during an ongoing animation, the animation
149+// will be automatically skipped.
150+func (x *Animation) GetWidget() *gtk.Widget {
151+
152+ GetWidgetPtr := xAnimationGetWidget(x.GoPointer())
153+ if GetWidgetPtr == 0 {
154+ return nil
155+ }
156+
157+ gobject.IncreaseRef(GetWidgetPtr)
158+
159+ GetWidgetCls := &gtk.Widget{}
160+ GetWidgetCls.Ptr = GetWidgetPtr
161+ return GetWidgetCls
162+
163+}
164+
165+var xAnimationPause func(uintptr)
166+
167+// Pauses a playing animation for @self.
168+//
169+// Does nothing if the current state of @self isn't `ADW_ANIMATION_PLAYING`.
170+//
171+// Sets [property@Animation:state] to `ADW_ANIMATION_PAUSED`.
172+func (x *Animation) Pause() {
173+
174+ xAnimationPause(x.GoPointer())
175+
176+}
177+
178+var xAnimationPlay func(uintptr)
179+
180+// Starts the animation for @self.
181+//
182+// If the animation is playing, paused or has been completed, restarts it from
183+// the beginning. This allows to easily play an animation regardless of whether
184+// it's already playing or not.
185+//
186+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
187+//
188+// The animation will be automatically skipped if [property@Animation:widget] is
189+// unmapped, or if [property@Gtk.Settings:gtk-enable-animations] is `FALSE`.
190+//
191+// As such, it's not guaranteed that the animation will actually run. For
192+// example, when using [func@GLib.idle_add] and starting an animation
193+// immediately afterwards, it's entirely possible that the idle callback will
194+// run after the animation has already finished, and not while it's playing.
195+func (x *Animation) Play() {
196+
197+ xAnimationPlay(x.GoPointer())
198+
199+}
200+
201+var xAnimationReset func(uintptr)
202+
203+// Resets the animation for @self.
204+//
205+// Sets [property@Animation:state] to `ADW_ANIMATION_IDLE`.
206+func (x *Animation) Reset() {
207+
208+ xAnimationReset(x.GoPointer())
209+
210+}
211+
212+var xAnimationResume func(uintptr)
213+
214+// Resumes a paused animation for @self.
215+//
216+// This function must only be used if the animation has been paused with
217+// [method@Animation.pause].
218+//
219+// Sets [property@Animation:state] to `ADW_ANIMATION_PLAYING`.
220+func (x *Animation) Resume() {
221+
222+ xAnimationResume(x.GoPointer())
223+
224+}
225+
226+var xAnimationSetFollowEnableAnimationsSetting func(uintptr, bool)
227+
228+// Sets whether to skip @self when animations are globally disabled.
229+//
230+// The default behavior is to skip the animation. Set to `FALSE` to disable this
231+// behavior.
232+//
233+// This can be useful for cases where animation is essential, like spinners, or
234+// in demo applications. Most other animations should keep it enabled.
235+//
236+// See [property@Gtk.Settings:gtk-enable-animations].
237+func (x *Animation) SetFollowEnableAnimationsSetting(SettingVar bool) {
238+
239+ xAnimationSetFollowEnableAnimationsSetting(x.GoPointer(), SettingVar)
240+
241+}
242+
243+var xAnimationSetTarget func(uintptr, uintptr)
244+
245+// Sets the target @self animates to @target.
246+func (x *Animation) SetTarget(TargetVar *AnimationTarget) {
247+
248+ xAnimationSetTarget(x.GoPointer(), TargetVar.GoPointer())
249+
250+}
251+
252+var xAnimationSkip func(uintptr)
253+
254+// Skips the animation for @self.
255+//
256+// If the animation hasn't been started yet, is playing, or is paused, instantly
257+// skips the animation to the end and causes [signal@Animation::done] to be
258+// emitted.
259+//
260+// Sets [property@Animation:state] to `ADW_ANIMATION_FINISHED`.
261+func (x *Animation) Skip() {
262+
263+ xAnimationSkip(x.GoPointer())
264+
265+}
266+
267+func (c *Animation) GoPointer() uintptr {
268+ return c.Ptr
269+}
270+
271+func (c *Animation) SetGoPointer(ptr uintptr) {
272+ c.Ptr = ptr
273+}
274+
275+// This signal is emitted when the animation has been completed, either on its
276+// own or via calling [method@Animation.skip].
277+func (x *Animation) ConnectDone(cb func(Animation)) {
278+ fcb := func(clsPtr uintptr) {
279+ fa := Animation{}
280+ fa.Ptr = clsPtr
281+
282+ cb(fa)
283+
284+ }
285+ gobject.ObjectConnect(x.GoPointer(), "signal::done", purego.NewCallback(fcb))
286+}
287+
288+func init() {
289+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
290+ if err != nil {
291+ panic(err)
292+ }
293+
294+ core.PuregoSafeRegister(&xAnimationGetFollowEnableAnimationsSetting, lib, "adw_animation_get_follow_enable_animations_setting")
295+ core.PuregoSafeRegister(&xAnimationGetState, lib, "adw_animation_get_state")
296+ core.PuregoSafeRegister(&xAnimationGetTarget, lib, "adw_animation_get_target")
297+ core.PuregoSafeRegister(&xAnimationGetValue, lib, "adw_animation_get_value")
298+ core.PuregoSafeRegister(&xAnimationGetWidget, lib, "adw_animation_get_widget")
299+ core.PuregoSafeRegister(&xAnimationPause, lib, "adw_animation_pause")
300+ core.PuregoSafeRegister(&xAnimationPlay, lib, "adw_animation_play")
301+ core.PuregoSafeRegister(&xAnimationReset, lib, "adw_animation_reset")
302+ core.PuregoSafeRegister(&xAnimationResume, lib, "adw_animation_resume")
303+ core.PuregoSafeRegister(&xAnimationSetFollowEnableAnimationsSetting, lib, "adw_animation_set_follow_enable_animations_setting")
304+ core.PuregoSafeRegister(&xAnimationSetTarget, lib, "adw_animation_set_target")
305+ core.PuregoSafeRegister(&xAnimationSkip, lib, "adw_animation_skip")
306+
307+}
A v4/adw/adw-application-window.go +686 -0
@@ -0,0 +1,686 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/glib"
10+ "github.com/jwijenbergh/puregotk/v4/gobject"
11+ "github.com/jwijenbergh/puregotk/v4/gsk"
12+ "github.com/jwijenbergh/puregotk/v4/gtk"
13+)
14+
15+type ApplicationWindowClass struct {
16+ ParentClass uintptr
17+
18+ Padding uintptr
19+}
20+
21+// A freeform application window.
22+//
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="application-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="application-window.png" alt="application-window"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// `AdwApplicationWindow` is a [class@Gtk.ApplicationWindow] subclass providing
31+// the same features as [class@Window].
32+//
33+// See [class@Window] for details.
34+//
35+// Using [property@Gtk.Application:menubar] is not supported and may result in
36+// visual glitches.
37+type ApplicationWindow struct {
38+ gtk.ApplicationWindow
39+}
40+
41+func ApplicationWindowNewFromInternalPtr(ptr uintptr) *ApplicationWindow {
42+ cls := &ApplicationWindow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewApplicationWindow func(uintptr) uintptr
48+
49+// Creates a new `AdwApplicationWindow` for @app.
50+func NewApplicationWindow(AppVar *gtk.Application) *gtk.Widget {
51+ NewApplicationWindowPtr := xNewApplicationWindow(AppVar.GoPointer())
52+ if NewApplicationWindowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewApplicationWindowPtr)
57+
58+ NewApplicationWindowCls := &gtk.Widget{}
59+ NewApplicationWindowCls.Ptr = NewApplicationWindowPtr
60+ return NewApplicationWindowCls
61+}
62+
63+var xApplicationWindowGetContent func(uintptr) uintptr
64+
65+// Gets the content widget of @self.
66+//
67+// This method should always be used instead of [method@Gtk.Window.get_child].
68+func (x *ApplicationWindow) GetContent() *gtk.Widget {
69+
70+ GetContentPtr := xApplicationWindowGetContent(x.GoPointer())
71+ if GetContentPtr == 0 {
72+ return nil
73+ }
74+
75+ gobject.IncreaseRef(GetContentPtr)
76+
77+ GetContentCls := &gtk.Widget{}
78+ GetContentCls.Ptr = GetContentPtr
79+ return GetContentCls
80+
81+}
82+
83+var xApplicationWindowSetContent func(uintptr, uintptr)
84+
85+// Sets the content widget of @self.
86+//
87+// This method should always be used instead of [method@Gtk.Window.set_child].
88+func (x *ApplicationWindow) SetContent(ContentVar *gtk.Widget) {
89+
90+ xApplicationWindowSetContent(x.GoPointer(), ContentVar.GoPointer())
91+
92+}
93+
94+func (c *ApplicationWindow) GoPointer() uintptr {
95+ return c.Ptr
96+}
97+
98+func (c *ApplicationWindow) SetGoPointer(ptr uintptr) {
99+ c.Ptr = ptr
100+}
101+
102+// Emits the #GActionGroup::action-added signal on @action_group.
103+//
104+// This function should only be called by #GActionGroup implementations.
105+func (x *ApplicationWindow) ActionAdded(ActionNameVar string) {
106+
107+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
108+
109+}
110+
111+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
112+//
113+// This function should only be called by #GActionGroup implementations.
114+func (x *ApplicationWindow) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
115+
116+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
117+
118+}
119+
120+// Emits the #GActionGroup::action-removed signal on @action_group.
121+//
122+// This function should only be called by #GActionGroup implementations.
123+func (x *ApplicationWindow) ActionRemoved(ActionNameVar string) {
124+
125+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
126+
127+}
128+
129+// Emits the #GActionGroup::action-state-changed signal on @action_group.
130+//
131+// This function should only be called by #GActionGroup implementations.
132+func (x *ApplicationWindow) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
133+
134+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
135+
136+}
137+
138+// Activate the named action within @action_group.
139+//
140+// If the action is expecting a parameter, then the correct type of
141+// parameter must be given as @parameter. If the action is expecting no
142+// parameters then @parameter must be %NULL. See
143+// g_action_group_get_action_parameter_type().
144+//
145+// If the #GActionGroup implementation supports asynchronous remote
146+// activation over D-Bus, this call may return before the relevant
147+// D-Bus traffic has been sent, or any replies have been received. In
148+// order to block on such asynchronous activation calls,
149+// g_dbus_connection_flush() should be called prior to the code, which
150+// depends on the result of the action activation. Without flushing
151+// the D-Bus connection, there is no guarantee that the action would
152+// have been activated.
153+//
154+// The following code which runs in a remote app instance, shows an
155+// example of a "quit" action being activated on the primary app
156+// instance over D-Bus. Here g_dbus_connection_flush() is called
157+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
158+// may fail to be activated on the primary instance.
159+//
160+// |[&lt;!-- language="C" --&gt;
161+// // call "quit" action on primary instance
162+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
163+//
164+// // make sure the action is activated now
165+// g_dbus_connection_flush (...);
166+//
167+// g_debug ("application has been terminated. exiting.");
168+//
169+// exit (0);
170+// ]|
171+func (x *ApplicationWindow) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
172+
173+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
174+
175+}
176+
177+// Request for the state of the named action within @action_group to be
178+// changed to @value.
179+//
180+// The action must be stateful and @value must be of the correct type.
181+// See g_action_group_get_action_state_type().
182+//
183+// This call merely requests a change. The action may refuse to change
184+// its state or may change its state to something other than @value.
185+// See g_action_group_get_action_state_hint().
186+//
187+// If the @value GVariant is floating, it is consumed.
188+func (x *ApplicationWindow) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
189+
190+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
191+
192+}
193+
194+// Checks if the named action within @action_group is currently enabled.
195+//
196+// An action must be enabled in order to be activated or in order to
197+// have its state changed from outside callers.
198+func (x *ApplicationWindow) GetActionEnabled(ActionNameVar string) bool {
199+
200+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
201+
202+}
203+
204+// Queries the type of the parameter that must be given when activating
205+// the named action within @action_group.
206+//
207+// When activating the action using g_action_group_activate_action(),
208+// the #GVariant given to that function must be of the type returned
209+// by this function.
210+//
211+// In the case that this function returns %NULL, you must not give any
212+// #GVariant, but %NULL instead.
213+//
214+// The parameter type of a particular action will never change but it is
215+// possible for an action to be removed and for a new action to be added
216+// with the same name but a different parameter type.
217+func (x *ApplicationWindow) GetActionParameterType(ActionNameVar string) *glib.VariantType {
218+
219+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
220+
221+}
222+
223+// Queries the current state of the named action within @action_group.
224+//
225+// If the action is not stateful then %NULL will be returned. If the
226+// action is stateful then the type of the return value is the type
227+// given by g_action_group_get_action_state_type().
228+//
229+// The return value (if non-%NULL) should be freed with
230+// g_variant_unref() when it is no longer required.
231+func (x *ApplicationWindow) GetActionState(ActionNameVar string) *glib.Variant {
232+
233+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Requests a hint about the valid range of values for the state of the
238+// named action within @action_group.
239+//
240+// If %NULL is returned it either means that the action is not stateful
241+// or that there is no hint about the valid range of values for the
242+// state of the action.
243+//
244+// If a #GVariant array is returned then each item in the array is a
245+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
246+// returned then the tuple specifies the inclusive lower and upper bound
247+// of valid values for the state.
248+//
249+// In any case, the information is merely a hint. It may be possible to
250+// have a state value outside of the hinted range and setting a value
251+// within the range may fail.
252+//
253+// The return value (if non-%NULL) should be freed with
254+// g_variant_unref() when it is no longer required.
255+func (x *ApplicationWindow) GetActionStateHint(ActionNameVar string) *glib.Variant {
256+
257+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
258+
259+}
260+
261+// Queries the type of the state of the named action within
262+// @action_group.
263+//
264+// If the action is stateful then this function returns the
265+// #GVariantType of the state. All calls to
266+// g_action_group_change_action_state() must give a #GVariant of this
267+// type and g_action_group_get_action_state() will return a #GVariant
268+// of the same type.
269+//
270+// If the action is not stateful then this function will return %NULL.
271+// In that case, g_action_group_get_action_state() will return %NULL
272+// and you must not call g_action_group_change_action_state().
273+//
274+// The state type of a particular action will never change but it is
275+// possible for an action to be removed and for a new action to be added
276+// with the same name but a different state type.
277+func (x *ApplicationWindow) GetActionStateType(ActionNameVar string) *glib.VariantType {
278+
279+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
280+
281+}
282+
283+// Checks if the named action exists within @action_group.
284+func (x *ApplicationWindow) HasAction(ActionNameVar string) bool {
285+
286+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
287+
288+}
289+
290+// Lists the actions contained within @action_group.
291+//
292+// The caller is responsible for freeing the list with g_strfreev() when
293+// it is no longer required.
294+func (x *ApplicationWindow) ListActions() uintptr {
295+
296+ return gio.XGActionGroupListActions(x.GoPointer())
297+
298+}
299+
300+// Queries all aspects of the named action within an @action_group.
301+//
302+// This function acquires the information available from
303+// g_action_group_has_action(), g_action_group_get_action_enabled(),
304+// g_action_group_get_action_parameter_type(),
305+// g_action_group_get_action_state_type(),
306+// g_action_group_get_action_state_hint() and
307+// g_action_group_get_action_state() with a single function call.
308+//
309+// This provides two main benefits.
310+//
311+// The first is the improvement in efficiency that comes with not having
312+// to perform repeated lookups of the action in order to discover
313+// different things about it. The second is that implementing
314+// #GActionGroup can now be done by only overriding this one virtual
315+// function.
316+//
317+// The interface provides a default implementation of this function that
318+// calls the individual functions, as required, to fetch the
319+// information. The interface also provides default implementations of
320+// those functions that call this function. All implementations,
321+// therefore, must override either this function or all of the others.
322+//
323+// If the action exists, %TRUE is returned and any of the requested
324+// fields (as indicated by having a non-%NULL reference passed in) are
325+// filled. If the action doesn't exist, %FALSE is returned and the
326+// fields may or may not have been modified.
327+func (x *ApplicationWindow) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
328+
329+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
330+
331+}
332+
333+// Adds an action to the @action_map.
334+//
335+// If the action map already contains an action with the same name
336+// as @action then the old action is dropped from the action map.
337+//
338+// The action map takes its own reference on @action.
339+func (x *ApplicationWindow) AddAction(ActionVar gio.Action) {
340+
341+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
342+
343+}
344+
345+// A convenience function for creating multiple #GSimpleAction instances
346+// and adding them to a #GActionMap.
347+//
348+// Each action is constructed as per one #GActionEntry.
349+//
350+// |[&lt;!-- language="C" --&gt;
351+// static void
352+// activate_quit (GSimpleAction *simple,
353+//
354+// GVariant *parameter,
355+// gpointer user_data)
356+//
357+// {
358+// exit (0);
359+// }
360+//
361+// static void
362+// activate_print_string (GSimpleAction *simple,
363+//
364+// GVariant *parameter,
365+// gpointer user_data)
366+//
367+// {
368+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
369+// }
370+//
371+// static GActionGroup *
372+// create_action_group (void)
373+//
374+// {
375+// const GActionEntry entries[] = {
376+// { "quit", activate_quit },
377+// { "print-string", activate_print_string, "s" }
378+// };
379+// GSimpleActionGroup *group;
380+//
381+// group = g_simple_action_group_new ();
382+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
383+//
384+// return G_ACTION_GROUP (group);
385+// }
386+//
387+// ]|
388+func (x *ApplicationWindow) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
389+
390+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
391+
392+}
393+
394+// Looks up the action with the name @action_name in @action_map.
395+//
396+// If no such action exists, returns %NULL.
397+func (x *ApplicationWindow) LookupAction(ActionNameVar string) *gio.ActionBase {
398+
399+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
400+ if LookupActionPtr == 0 {
401+ return nil
402+ }
403+
404+ gobject.IncreaseRef(LookupActionPtr)
405+
406+ LookupActionCls := &gio.ActionBase{}
407+ LookupActionCls.Ptr = LookupActionPtr
408+ return LookupActionCls
409+
410+}
411+
412+// Removes the named action from the action map.
413+//
414+// If no action of this name is in the map then nothing happens.
415+func (x *ApplicationWindow) RemoveAction(ActionNameVar string) {
416+
417+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
418+
419+}
420+
421+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
422+func (x *ApplicationWindow) GetAccessibleRole() gtk.AccessibleRole {
423+
424+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
425+
426+}
427+
428+// Resets the accessible @property to its default value.
429+func (x *ApplicationWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
430+
431+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
432+
433+}
434+
435+// Resets the accessible @relation to its default value.
436+func (x *ApplicationWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
437+
438+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
439+
440+}
441+
442+// Resets the accessible @state to its default value.
443+func (x *ApplicationWindow) ResetState(StateVar gtk.AccessibleState) {
444+
445+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
446+
447+}
448+
449+// Updates a list of accessible properties.
450+//
451+// See the [enum@Gtk.AccessibleProperty] documentation for the
452+// value types of accessible properties.
453+//
454+// This function should be called by `GtkWidget` types whenever
455+// an accessible property change must be communicated to assistive
456+// technologies.
457+//
458+// Example:
459+// ```c
460+// value = gtk_adjustment_get_value (adjustment);
461+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
462+//
463+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
464+// -1);
465+//
466+// ```
467+func (x *ApplicationWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
468+
469+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
470+
471+}
472+
473+// Updates an array of accessible properties.
474+//
475+// This function should be called by `GtkWidget` types whenever an accessible
476+// property change must be communicated to assistive technologies.
477+//
478+// This function is meant to be used by language bindings.
479+func (x *ApplicationWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
480+
481+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
482+
483+}
484+
485+// Updates a list of accessible relations.
486+//
487+// This function should be called by `GtkWidget` types whenever an accessible
488+// relation change must be communicated to assistive technologies.
489+//
490+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
491+// you should pass each reference individually, followed by %NULL, e.g.
492+//
493+// ```c
494+// gtk_accessible_update_relation (accessible,
495+//
496+// GTK_ACCESSIBLE_RELATION_CONTROLS,
497+// ref1, NULL,
498+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
499+// ref1, ref2, ref3, NULL,
500+// -1);
501+//
502+// ```
503+func (x *ApplicationWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
504+
505+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
506+
507+}
508+
509+// Updates an array of accessible relations.
510+//
511+// This function should be called by `GtkWidget` types whenever an accessible
512+// relation change must be communicated to assistive technologies.
513+//
514+// This function is meant to be used by language bindings.
515+func (x *ApplicationWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
516+
517+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
518+
519+}
520+
521+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
522+// documentation for the value types of accessible states.
523+//
524+// This function should be called by `GtkWidget` types whenever an accessible
525+// state change must be communicated to assistive technologies.
526+//
527+// Example:
528+// ```c
529+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
530+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
531+//
532+// GTK_ACCESSIBLE_STATE_CHECKED, value,
533+// -1);
534+//
535+// ```
536+func (x *ApplicationWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
537+
538+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
539+
540+}
541+
542+// Updates an array of accessible states.
543+//
544+// This function should be called by `GtkWidget` types whenever an accessible
545+// state change must be communicated to assistive technologies.
546+//
547+// This function is meant to be used by language bindings.
548+func (x *ApplicationWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
549+
550+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
551+
552+}
553+
554+// Gets the ID of the @buildable object.
555+//
556+// `GtkBuilder` sets the name based on the ID attribute
557+// of the &lt;object&gt; tag used to construct the @buildable.
558+func (x *ApplicationWindow) GetBuildableId() string {
559+
560+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
561+
562+}
563+
564+// Returns the renderer that is used for this `GtkNative`.
565+func (x *ApplicationWindow) GetRenderer() *gsk.Renderer {
566+
567+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
568+ if GetRendererPtr == 0 {
569+ return nil
570+ }
571+
572+ gobject.IncreaseRef(GetRendererPtr)
573+
574+ GetRendererCls := &gsk.Renderer{}
575+ GetRendererCls.Ptr = GetRendererPtr
576+ return GetRendererCls
577+
578+}
579+
580+// Returns the surface of this `GtkNative`.
581+func (x *ApplicationWindow) GetSurface() *gdk.Surface {
582+
583+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
584+ if GetSurfacePtr == 0 {
585+ return nil
586+ }
587+
588+ gobject.IncreaseRef(GetSurfacePtr)
589+
590+ GetSurfaceCls := &gdk.Surface{}
591+ GetSurfaceCls.Ptr = GetSurfacePtr
592+ return GetSurfaceCls
593+
594+}
595+
596+// Retrieves the surface transform of @self.
597+//
598+// This is the translation from @self's surface coordinates into
599+// @self's widget coordinates.
600+func (x *ApplicationWindow) GetSurfaceTransform(XVar float64, YVar float64) {
601+
602+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
603+
604+}
605+
606+// Realizes a `GtkNative`.
607+//
608+// This should only be used by subclasses.
609+func (x *ApplicationWindow) Realize() {
610+
611+ gtk.XGtkNativeRealize(x.GoPointer())
612+
613+}
614+
615+// Unrealizes a `GtkNative`.
616+//
617+// This should only be used by subclasses.
618+func (x *ApplicationWindow) Unrealize() {
619+
620+ gtk.XGtkNativeUnrealize(x.GoPointer())
621+
622+}
623+
624+// Returns the display that this `GtkRoot` is on.
625+func (x *ApplicationWindow) GetDisplay() *gdk.Display {
626+
627+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
628+ if GetDisplayPtr == 0 {
629+ return nil
630+ }
631+
632+ gobject.IncreaseRef(GetDisplayPtr)
633+
634+ GetDisplayCls := &gdk.Display{}
635+ GetDisplayCls.Ptr = GetDisplayPtr
636+ return GetDisplayCls
637+
638+}
639+
640+// Retrieves the current focused widget within the root.
641+//
642+// Note that this is the widget that would have the focus
643+// if the root is active; if the root is not focused then
644+// `gtk_widget_has_focus (widget)` will be %FALSE for the
645+// widget.
646+func (x *ApplicationWindow) GetFocus() *gtk.Widget {
647+
648+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
649+ if GetFocusPtr == 0 {
650+ return nil
651+ }
652+
653+ gobject.IncreaseRef(GetFocusPtr)
654+
655+ GetFocusCls := &gtk.Widget{}
656+ GetFocusCls.Ptr = GetFocusPtr
657+ return GetFocusCls
658+
659+}
660+
661+// If @focus is not the current focus widget, and is focusable, sets
662+// it as the focus widget for the root.
663+//
664+// If @focus is %NULL, unsets the focus widget for the root.
665+//
666+// To set the focus to a particular widget in the root, it is usually
667+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
668+// this function.
669+func (x *ApplicationWindow) SetFocus(FocusVar *gtk.Widget) {
670+
671+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
672+
673+}
674+
675+func init() {
676+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
677+ if err != nil {
678+ panic(err)
679+ }
680+
681+ core.PuregoSafeRegister(&xNewApplicationWindow, lib, "adw_application_window_new")
682+
683+ core.PuregoSafeRegister(&xApplicationWindowGetContent, lib, "adw_application_window_get_content")
684+ core.PuregoSafeRegister(&xApplicationWindowSetContent, lib, "adw_application_window_set_content")
685+
686+}
A v4/adw/adw-application.go +433 -0
@@ -0,0 +1,433 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ApplicationClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A base class for Adwaita applications.
20+//
21+// `AdwApplication` handles library initialization by calling [func@init] in the
22+// default [signal@Gio.Application::startup] signal handler, in turn chaining up
23+// as required by [class@Gtk.Application]. Therefore, any subclass of
24+// `AdwApplication` should always chain up its `startup` handler before using
25+// any Adwaita or GTK API.
26+//
27+// ## Automatic Resources
28+//
29+// `AdwApplication` will automatically load stylesheets located in the
30+// application's resource base path (see
31+// [method@Gio.Application.set_resource_base_path], if they're present.
32+//
33+// They can be used to add custom styles to the application, as follows:
34+//
35+// - `style.css` contains styles that are always present.
36+//
37+// - `style-dark.css` contains styles only used when
38+// [property@StyleManager:dark] is `TRUE`.
39+//
40+// - `style-hc.css` contains styles used when the system high contrast
41+// preference is enabled.
42+//
43+// - `style-hc-dark.css` contains styles used when the system high contrast
44+// preference is enabled and [property@StyleManager:dark] is `TRUE`.
45+type Application struct {
46+ gtk.Application
47+}
48+
49+func ApplicationNewFromInternalPtr(ptr uintptr) *Application {
50+ cls := &Application{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewApplication func(string, gio.ApplicationFlags) uintptr
56+
57+// Creates a new `AdwApplication`.
58+//
59+// If `application_id` is not `NULL`, then it must be valid. See
60+// [func@Gio.Application.id_is_valid].
61+//
62+// If no application ID is given then some features (most notably application
63+// uniqueness) will be disabled.
64+func NewApplication(ApplicationIdVar string, FlagsVar gio.ApplicationFlags) *Application {
65+ NewApplicationPtr := xNewApplication(ApplicationIdVar, FlagsVar)
66+ if NewApplicationPtr == 0 {
67+ return nil
68+ }
69+
70+ NewApplicationCls := &Application{}
71+ NewApplicationCls.Ptr = NewApplicationPtr
72+ return NewApplicationCls
73+}
74+
75+var xApplicationGetStyleManager func(uintptr) uintptr
76+
77+// Gets the style manager for @self.
78+//
79+// This is a convenience property allowing to access `AdwStyleManager` through
80+// property bindings or expressions.
81+func (x *Application) GetStyleManager() *StyleManager {
82+
83+ GetStyleManagerPtr := xApplicationGetStyleManager(x.GoPointer())
84+ if GetStyleManagerPtr == 0 {
85+ return nil
86+ }
87+
88+ gobject.IncreaseRef(GetStyleManagerPtr)
89+
90+ GetStyleManagerCls := &StyleManager{}
91+ GetStyleManagerCls.Ptr = GetStyleManagerPtr
92+ return GetStyleManagerCls
93+
94+}
95+
96+func (c *Application) GoPointer() uintptr {
97+ return c.Ptr
98+}
99+
100+func (c *Application) SetGoPointer(ptr uintptr) {
101+ c.Ptr = ptr
102+}
103+
104+// Emits the #GActionGroup::action-added signal on @action_group.
105+//
106+// This function should only be called by #GActionGroup implementations.
107+func (x *Application) ActionAdded(ActionNameVar string) {
108+
109+ gio.XGActionGroupActionAdded(x.GoPointer(), ActionNameVar)
110+
111+}
112+
113+// Emits the #GActionGroup::action-enabled-changed signal on @action_group.
114+//
115+// This function should only be called by #GActionGroup implementations.
116+func (x *Application) ActionEnabledChanged(ActionNameVar string, EnabledVar bool) {
117+
118+ gio.XGActionGroupActionEnabledChanged(x.GoPointer(), ActionNameVar, EnabledVar)
119+
120+}
121+
122+// Emits the #GActionGroup::action-removed signal on @action_group.
123+//
124+// This function should only be called by #GActionGroup implementations.
125+func (x *Application) ActionRemoved(ActionNameVar string) {
126+
127+ gio.XGActionGroupActionRemoved(x.GoPointer(), ActionNameVar)
128+
129+}
130+
131+// Emits the #GActionGroup::action-state-changed signal on @action_group.
132+//
133+// This function should only be called by #GActionGroup implementations.
134+func (x *Application) ActionStateChanged(ActionNameVar string, StateVar *glib.Variant) {
135+
136+ gio.XGActionGroupActionStateChanged(x.GoPointer(), ActionNameVar, StateVar)
137+
138+}
139+
140+// Activate the named action within @action_group.
141+//
142+// If the action is expecting a parameter, then the correct type of
143+// parameter must be given as @parameter. If the action is expecting no
144+// parameters then @parameter must be %NULL. See
145+// g_action_group_get_action_parameter_type().
146+//
147+// If the #GActionGroup implementation supports asynchronous remote
148+// activation over D-Bus, this call may return before the relevant
149+// D-Bus traffic has been sent, or any replies have been received. In
150+// order to block on such asynchronous activation calls,
151+// g_dbus_connection_flush() should be called prior to the code, which
152+// depends on the result of the action activation. Without flushing
153+// the D-Bus connection, there is no guarantee that the action would
154+// have been activated.
155+//
156+// The following code which runs in a remote app instance, shows an
157+// example of a "quit" action being activated on the primary app
158+// instance over D-Bus. Here g_dbus_connection_flush() is called
159+// before `exit()`. Without g_dbus_connection_flush(), the "quit" action
160+// may fail to be activated on the primary instance.
161+//
162+// |[&lt;!-- language="C" --&gt;
163+// // call "quit" action on primary instance
164+// g_action_group_activate_action (G_ACTION_GROUP (app), "quit", NULL);
165+//
166+// // make sure the action is activated now
167+// g_dbus_connection_flush (...);
168+//
169+// g_debug ("application has been terminated. exiting.");
170+//
171+// exit (0);
172+// ]|
173+func (x *Application) ActivateAction(ActionNameVar string, ParameterVar *glib.Variant) {
174+
175+ gio.XGActionGroupActivateAction(x.GoPointer(), ActionNameVar, ParameterVar)
176+
177+}
178+
179+// Request for the state of the named action within @action_group to be
180+// changed to @value.
181+//
182+// The action must be stateful and @value must be of the correct type.
183+// See g_action_group_get_action_state_type().
184+//
185+// This call merely requests a change. The action may refuse to change
186+// its state or may change its state to something other than @value.
187+// See g_action_group_get_action_state_hint().
188+//
189+// If the @value GVariant is floating, it is consumed.
190+func (x *Application) ChangeActionState(ActionNameVar string, ValueVar *glib.Variant) {
191+
192+ gio.XGActionGroupChangeActionState(x.GoPointer(), ActionNameVar, ValueVar)
193+
194+}
195+
196+// Checks if the named action within @action_group is currently enabled.
197+//
198+// An action must be enabled in order to be activated or in order to
199+// have its state changed from outside callers.
200+func (x *Application) GetActionEnabled(ActionNameVar string) bool {
201+
202+ return gio.XGActionGroupGetActionEnabled(x.GoPointer(), ActionNameVar)
203+
204+}
205+
206+// Queries the type of the parameter that must be given when activating
207+// the named action within @action_group.
208+//
209+// When activating the action using g_action_group_activate_action(),
210+// the #GVariant given to that function must be of the type returned
211+// by this function.
212+//
213+// In the case that this function returns %NULL, you must not give any
214+// #GVariant, but %NULL instead.
215+//
216+// The parameter type of a particular action will never change but it is
217+// possible for an action to be removed and for a new action to be added
218+// with the same name but a different parameter type.
219+func (x *Application) GetActionParameterType(ActionNameVar string) *glib.VariantType {
220+
221+ return gio.XGActionGroupGetActionParameterType(x.GoPointer(), ActionNameVar)
222+
223+}
224+
225+// Queries the current state of the named action within @action_group.
226+//
227+// If the action is not stateful then %NULL will be returned. If the
228+// action is stateful then the type of the return value is the type
229+// given by g_action_group_get_action_state_type().
230+//
231+// The return value (if non-%NULL) should be freed with
232+// g_variant_unref() when it is no longer required.
233+func (x *Application) GetActionState(ActionNameVar string) *glib.Variant {
234+
235+ return gio.XGActionGroupGetActionState(x.GoPointer(), ActionNameVar)
236+
237+}
238+
239+// Requests a hint about the valid range of values for the state of the
240+// named action within @action_group.
241+//
242+// If %NULL is returned it either means that the action is not stateful
243+// or that there is no hint about the valid range of values for the
244+// state of the action.
245+//
246+// If a #GVariant array is returned then each item in the array is a
247+// possible value for the state. If a #GVariant pair (ie: two-tuple) is
248+// returned then the tuple specifies the inclusive lower and upper bound
249+// of valid values for the state.
250+//
251+// In any case, the information is merely a hint. It may be possible to
252+// have a state value outside of the hinted range and setting a value
253+// within the range may fail.
254+//
255+// The return value (if non-%NULL) should be freed with
256+// g_variant_unref() when it is no longer required.
257+func (x *Application) GetActionStateHint(ActionNameVar string) *glib.Variant {
258+
259+ return gio.XGActionGroupGetActionStateHint(x.GoPointer(), ActionNameVar)
260+
261+}
262+
263+// Queries the type of the state of the named action within
264+// @action_group.
265+//
266+// If the action is stateful then this function returns the
267+// #GVariantType of the state. All calls to
268+// g_action_group_change_action_state() must give a #GVariant of this
269+// type and g_action_group_get_action_state() will return a #GVariant
270+// of the same type.
271+//
272+// If the action is not stateful then this function will return %NULL.
273+// In that case, g_action_group_get_action_state() will return %NULL
274+// and you must not call g_action_group_change_action_state().
275+//
276+// The state type of a particular action will never change but it is
277+// possible for an action to be removed and for a new action to be added
278+// with the same name but a different state type.
279+func (x *Application) GetActionStateType(ActionNameVar string) *glib.VariantType {
280+
281+ return gio.XGActionGroupGetActionStateType(x.GoPointer(), ActionNameVar)
282+
283+}
284+
285+// Checks if the named action exists within @action_group.
286+func (x *Application) HasAction(ActionNameVar string) bool {
287+
288+ return gio.XGActionGroupHasAction(x.GoPointer(), ActionNameVar)
289+
290+}
291+
292+// Lists the actions contained within @action_group.
293+//
294+// The caller is responsible for freeing the list with g_strfreev() when
295+// it is no longer required.
296+func (x *Application) ListActions() uintptr {
297+
298+ return gio.XGActionGroupListActions(x.GoPointer())
299+
300+}
301+
302+// Queries all aspects of the named action within an @action_group.
303+//
304+// This function acquires the information available from
305+// g_action_group_has_action(), g_action_group_get_action_enabled(),
306+// g_action_group_get_action_parameter_type(),
307+// g_action_group_get_action_state_type(),
308+// g_action_group_get_action_state_hint() and
309+// g_action_group_get_action_state() with a single function call.
310+//
311+// This provides two main benefits.
312+//
313+// The first is the improvement in efficiency that comes with not having
314+// to perform repeated lookups of the action in order to discover
315+// different things about it. The second is that implementing
316+// #GActionGroup can now be done by only overriding this one virtual
317+// function.
318+//
319+// The interface provides a default implementation of this function that
320+// calls the individual functions, as required, to fetch the
321+// information. The interface also provides default implementations of
322+// those functions that call this function. All implementations,
323+// therefore, must override either this function or all of the others.
324+//
325+// If the action exists, %TRUE is returned and any of the requested
326+// fields (as indicated by having a non-%NULL reference passed in) are
327+// filled. If the action doesn't exist, %FALSE is returned and the
328+// fields may or may not have been modified.
329+func (x *Application) QueryAction(ActionNameVar string, EnabledVar bool, ParameterTypeVar **glib.VariantType, StateTypeVar **glib.VariantType, StateHintVar **glib.Variant, StateVar **glib.Variant) bool {
330+
331+ return gio.XGActionGroupQueryAction(x.GoPointer(), ActionNameVar, EnabledVar, ParameterTypeVar, StateTypeVar, StateHintVar, StateVar)
332+
333+}
334+
335+// Adds an action to the @action_map.
336+//
337+// If the action map already contains an action with the same name
338+// as @action then the old action is dropped from the action map.
339+//
340+// The action map takes its own reference on @action.
341+func (x *Application) AddAction(ActionVar gio.Action) {
342+
343+ gio.XGActionMapAddAction(x.GoPointer(), ActionVar.GoPointer())
344+
345+}
346+
347+// A convenience function for creating multiple #GSimpleAction instances
348+// and adding them to a #GActionMap.
349+//
350+// Each action is constructed as per one #GActionEntry.
351+//
352+// |[&lt;!-- language="C" --&gt;
353+// static void
354+// activate_quit (GSimpleAction *simple,
355+//
356+// GVariant *parameter,
357+// gpointer user_data)
358+//
359+// {
360+// exit (0);
361+// }
362+//
363+// static void
364+// activate_print_string (GSimpleAction *simple,
365+//
366+// GVariant *parameter,
367+// gpointer user_data)
368+//
369+// {
370+// g_print ("%s\n", g_variant_get_string (parameter, NULL));
371+// }
372+//
373+// static GActionGroup *
374+// create_action_group (void)
375+//
376+// {
377+// const GActionEntry entries[] = {
378+// { "quit", activate_quit },
379+// { "print-string", activate_print_string, "s" }
380+// };
381+// GSimpleActionGroup *group;
382+//
383+// group = g_simple_action_group_new ();
384+// g_action_map_add_action_entries (G_ACTION_MAP (group), entries, G_N_ELEMENTS (entries), NULL);
385+//
386+// return G_ACTION_GROUP (group);
387+// }
388+//
389+// ]|
390+func (x *Application) AddActionEntries(EntriesVar uintptr, NEntriesVar int32, UserDataVar uintptr) {
391+
392+ gio.XGActionMapAddActionEntries(x.GoPointer(), EntriesVar, NEntriesVar, UserDataVar)
393+
394+}
395+
396+// Looks up the action with the name @action_name in @action_map.
397+//
398+// If no such action exists, returns %NULL.
399+func (x *Application) LookupAction(ActionNameVar string) *gio.ActionBase {
400+
401+ LookupActionPtr := gio.XGActionMapLookupAction(x.GoPointer(), ActionNameVar)
402+ if LookupActionPtr == 0 {
403+ return nil
404+ }
405+
406+ gobject.IncreaseRef(LookupActionPtr)
407+
408+ LookupActionCls := &gio.ActionBase{}
409+ LookupActionCls.Ptr = LookupActionPtr
410+ return LookupActionCls
411+
412+}
413+
414+// Removes the named action from the action map.
415+//
416+// If no action of this name is in the map then nothing happens.
417+func (x *Application) RemoveAction(ActionNameVar string) {
418+
419+ gio.XGActionMapRemoveAction(x.GoPointer(), ActionNameVar)
420+
421+}
422+
423+func init() {
424+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
425+ if err != nil {
426+ panic(err)
427+ }
428+
429+ core.PuregoSafeRegister(&xNewApplication, lib, "adw_application_new")
430+
431+ core.PuregoSafeRegister(&xApplicationGetStyleManager, lib, "adw_application_get_style_manager")
432+
433+}
A v4/adw/adw-avatar.go +364 -0
@@ -0,0 +1,364 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type AvatarClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A widget displaying an image, with a generated fallback.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="avatar-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="avatar.png" alt="avatar"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// `AdwAvatar` is a widget that shows a round avatar.
26+//
27+// `AdwAvatar` generates an avatar with the initials of the
28+// [property@Avatar:text] on top of a colored background.
29+//
30+// The color is picked based on the hash of the [property@Avatar:text].
31+//
32+// If [property@Avatar:show-initials] is set to `FALSE`,
33+// [property@Avatar:icon-name] or `avatar-default-symbolic` is shown instead of
34+// the initials.
35+//
36+// Use [property@Avatar:custom-image] to set a custom image.
37+//
38+// ## CSS nodes
39+//
40+// `AdwAvatar` has a single CSS node with name `avatar`.
41+type Avatar struct {
42+ gtk.Widget
43+}
44+
45+func AvatarNewFromInternalPtr(ptr uintptr) *Avatar {
46+ cls := &Avatar{}
47+ cls.Ptr = ptr
48+ return cls
49+}
50+
51+var xNewAvatar func(int32, string, bool) uintptr
52+
53+// Creates a new `AdwAvatar`.
54+func NewAvatar(SizeVar int32, TextVar string, ShowInitialsVar bool) *gtk.Widget {
55+ NewAvatarPtr := xNewAvatar(SizeVar, TextVar, ShowInitialsVar)
56+ if NewAvatarPtr == 0 {
57+ return nil
58+ }
59+
60+ gobject.IncreaseRef(NewAvatarPtr)
61+
62+ NewAvatarCls := &gtk.Widget{}
63+ NewAvatarCls.Ptr = NewAvatarPtr
64+ return NewAvatarCls
65+}
66+
67+var xAvatarDrawToTexture func(uintptr, int32) uintptr
68+
69+// Renders @self into a [class@Gdk.Texture] at @scale_factor.
70+//
71+// This can be used to export the fallback avatar.
72+func (x *Avatar) DrawToTexture(ScaleFactorVar int32) *gdk.Texture {
73+
74+ DrawToTexturePtr := xAvatarDrawToTexture(x.GoPointer(), ScaleFactorVar)
75+ if DrawToTexturePtr == 0 {
76+ return nil
77+ }
78+
79+ DrawToTextureCls := &gdk.Texture{}
80+ DrawToTextureCls.Ptr = DrawToTexturePtr
81+ return DrawToTextureCls
82+
83+}
84+
85+var xAvatarGetCustomImage func(uintptr) uintptr
86+
87+// Gets the custom image paintable.
88+func (x *Avatar) GetCustomImage() *gdk.PaintableBase {
89+
90+ GetCustomImagePtr := xAvatarGetCustomImage(x.GoPointer())
91+ if GetCustomImagePtr == 0 {
92+ return nil
93+ }
94+
95+ gobject.IncreaseRef(GetCustomImagePtr)
96+
97+ GetCustomImageCls := &gdk.PaintableBase{}
98+ GetCustomImageCls.Ptr = GetCustomImagePtr
99+ return GetCustomImageCls
100+
101+}
102+
103+var xAvatarGetIconName func(uintptr) string
104+
105+// Gets the name of an icon to use as a fallback.
106+func (x *Avatar) GetIconName() string {
107+
108+ return xAvatarGetIconName(x.GoPointer())
109+
110+}
111+
112+var xAvatarGetShowInitials func(uintptr) bool
113+
114+// Gets whether initials are used instead of an icon on the fallback avatar.
115+func (x *Avatar) GetShowInitials() bool {
116+
117+ return xAvatarGetShowInitials(x.GoPointer())
118+
119+}
120+
121+var xAvatarGetSize func(uintptr) int32
122+
123+// Gets the size of the avatar.
124+func (x *Avatar) GetSize() int32 {
125+
126+ return xAvatarGetSize(x.GoPointer())
127+
128+}
129+
130+var xAvatarGetText func(uintptr) string
131+
132+// Gets the text used to generate the fallback initials and color.
133+func (x *Avatar) GetText() string {
134+
135+ return xAvatarGetText(x.GoPointer())
136+
137+}
138+
139+var xAvatarSetCustomImage func(uintptr, uintptr)
140+
141+// Sets the custom image paintable.
142+//
143+// Custom image is displayed instead of initials or icon.
144+func (x *Avatar) SetCustomImage(CustomImageVar gdk.Paintable) {
145+
146+ xAvatarSetCustomImage(x.GoPointer(), CustomImageVar.GoPointer())
147+
148+}
149+
150+var xAvatarSetIconName func(uintptr, string)
151+
152+// Sets the name of an icon to use as a fallback.
153+//
154+// If no name is set, `avatar-default-symbolic` will be used.
155+func (x *Avatar) SetIconName(IconNameVar string) {
156+
157+ xAvatarSetIconName(x.GoPointer(), IconNameVar)
158+
159+}
160+
161+var xAvatarSetShowInitials func(uintptr, bool)
162+
163+// Sets whether to use initials instead of an icon on the fallback avatar.
164+//
165+// See [property@Avatar:icon-name] for how to change the fallback icon.
166+func (x *Avatar) SetShowInitials(ShowInitialsVar bool) {
167+
168+ xAvatarSetShowInitials(x.GoPointer(), ShowInitialsVar)
169+
170+}
171+
172+var xAvatarSetSize func(uintptr, int32)
173+
174+// Sets the size of the avatar.
175+func (x *Avatar) SetSize(SizeVar int32) {
176+
177+ xAvatarSetSize(x.GoPointer(), SizeVar)
178+
179+}
180+
181+var xAvatarSetText func(uintptr, string)
182+
183+// Sets the text used to generate the fallback initials and color.
184+//
185+// It's only used to generate the color if [property@Avatar:show-initials] is
186+// `FALSE`.
187+func (x *Avatar) SetText(TextVar string) {
188+
189+ xAvatarSetText(x.GoPointer(), TextVar)
190+
191+}
192+
193+func (c *Avatar) GoPointer() uintptr {
194+ return c.Ptr
195+}
196+
197+func (c *Avatar) SetGoPointer(ptr uintptr) {
198+ c.Ptr = ptr
199+}
200+
201+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
202+func (x *Avatar) GetAccessibleRole() gtk.AccessibleRole {
203+
204+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
205+
206+}
207+
208+// Resets the accessible @property to its default value.
209+func (x *Avatar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
210+
211+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
212+
213+}
214+
215+// Resets the accessible @relation to its default value.
216+func (x *Avatar) ResetRelation(RelationVar gtk.AccessibleRelation) {
217+
218+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
219+
220+}
221+
222+// Resets the accessible @state to its default value.
223+func (x *Avatar) ResetState(StateVar gtk.AccessibleState) {
224+
225+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
226+
227+}
228+
229+// Updates a list of accessible properties.
230+//
231+// See the [enum@Gtk.AccessibleProperty] documentation for the
232+// value types of accessible properties.
233+//
234+// This function should be called by `GtkWidget` types whenever
235+// an accessible property change must be communicated to assistive
236+// technologies.
237+//
238+// Example:
239+// ```c
240+// value = gtk_adjustment_get_value (adjustment);
241+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
242+//
243+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
244+// -1);
245+//
246+// ```
247+func (x *Avatar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
248+
249+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
250+
251+}
252+
253+// Updates an array of accessible properties.
254+//
255+// This function should be called by `GtkWidget` types whenever an accessible
256+// property change must be communicated to assistive technologies.
257+//
258+// This function is meant to be used by language bindings.
259+func (x *Avatar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
260+
261+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
262+
263+}
264+
265+// Updates a list of accessible relations.
266+//
267+// This function should be called by `GtkWidget` types whenever an accessible
268+// relation change must be communicated to assistive technologies.
269+//
270+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
271+// you should pass each reference individually, followed by %NULL, e.g.
272+//
273+// ```c
274+// gtk_accessible_update_relation (accessible,
275+//
276+// GTK_ACCESSIBLE_RELATION_CONTROLS,
277+// ref1, NULL,
278+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
279+// ref1, ref2, ref3, NULL,
280+// -1);
281+//
282+// ```
283+func (x *Avatar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
284+
285+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
286+
287+}
288+
289+// Updates an array of accessible relations.
290+//
291+// This function should be called by `GtkWidget` types whenever an accessible
292+// relation change must be communicated to assistive technologies.
293+//
294+// This function is meant to be used by language bindings.
295+func (x *Avatar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
296+
297+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
298+
299+}
300+
301+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
302+// documentation for the value types of accessible states.
303+//
304+// This function should be called by `GtkWidget` types whenever an accessible
305+// state change must be communicated to assistive technologies.
306+//
307+// Example:
308+// ```c
309+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
310+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
311+//
312+// GTK_ACCESSIBLE_STATE_CHECKED, value,
313+// -1);
314+//
315+// ```
316+func (x *Avatar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
317+
318+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
319+
320+}
321+
322+// Updates an array of accessible states.
323+//
324+// This function should be called by `GtkWidget` types whenever an accessible
325+// state change must be communicated to assistive technologies.
326+//
327+// This function is meant to be used by language bindings.
328+func (x *Avatar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
329+
330+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
331+
332+}
333+
334+// Gets the ID of the @buildable object.
335+//
336+// `GtkBuilder` sets the name based on the ID attribute
337+// of the &lt;object&gt; tag used to construct the @buildable.
338+func (x *Avatar) GetBuildableId() string {
339+
340+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
341+
342+}
343+
344+func init() {
345+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
346+ if err != nil {
347+ panic(err)
348+ }
349+
350+ core.PuregoSafeRegister(&xNewAvatar, lib, "adw_avatar_new")
351+
352+ core.PuregoSafeRegister(&xAvatarDrawToTexture, lib, "adw_avatar_draw_to_texture")
353+ core.PuregoSafeRegister(&xAvatarGetCustomImage, lib, "adw_avatar_get_custom_image")
354+ core.PuregoSafeRegister(&xAvatarGetIconName, lib, "adw_avatar_get_icon_name")
355+ core.PuregoSafeRegister(&xAvatarGetShowInitials, lib, "adw_avatar_get_show_initials")
356+ core.PuregoSafeRegister(&xAvatarGetSize, lib, "adw_avatar_get_size")
357+ core.PuregoSafeRegister(&xAvatarGetText, lib, "adw_avatar_get_text")
358+ core.PuregoSafeRegister(&xAvatarSetCustomImage, lib, "adw_avatar_set_custom_image")
359+ core.PuregoSafeRegister(&xAvatarSetIconName, lib, "adw_avatar_set_icon_name")
360+ core.PuregoSafeRegister(&xAvatarSetShowInitials, lib, "adw_avatar_set_show_initials")
361+ core.PuregoSafeRegister(&xAvatarSetSize, lib, "adw_avatar_set_size")
362+ core.PuregoSafeRegister(&xAvatarSetText, lib, "adw_avatar_set_text")
363+
364+}
A v4/adw/adw-banner.go +412 -0
@@ -0,0 +1,412 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type BannerClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A bar with contextual information.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="banner-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="banner.png" alt="banner"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// Banners are hidden by default, use [property@Banner:revealed] to show them.
26+//
27+// Banners have a title, set with [property@Banner:title]. Titles can be marked
28+// up with Pango markup, use [property@Banner:use-markup] to enable it.
29+//
30+// The title will be shown centered or left-aligned depending on available
31+// space.
32+//
33+// Banners can optionally have a button with text on it, set through
34+// [property@Banner:button-label]. The button can be used with a `GAction`,
35+// or with the [signal@Banner::button-clicked] signal.
36+//
37+// ## CSS nodes
38+//
39+// `AdwBanner` has a main CSS node with the name `banner`.
40+type Banner struct {
41+ gtk.Widget
42+}
43+
44+func BannerNewFromInternalPtr(ptr uintptr) *Banner {
45+ cls := &Banner{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewBanner func(string) uintptr
51+
52+// Creates a new `AdwBanner`.
53+func NewBanner(TitleVar string) *gtk.Widget {
54+ NewBannerPtr := xNewBanner(TitleVar)
55+ if NewBannerPtr == 0 {
56+ return nil
57+ }
58+
59+ gobject.IncreaseRef(NewBannerPtr)
60+
61+ NewBannerCls := &gtk.Widget{}
62+ NewBannerCls.Ptr = NewBannerPtr
63+ return NewBannerCls
64+}
65+
66+var xBannerGetButtonLabel func(uintptr) string
67+
68+// Gets the button label for @self.
69+func (x *Banner) GetButtonLabel() string {
70+
71+ return xBannerGetButtonLabel(x.GoPointer())
72+
73+}
74+
75+var xBannerGetRevealed func(uintptr) bool
76+
77+// Gets if a banner is revealed
78+func (x *Banner) GetRevealed() bool {
79+
80+ return xBannerGetRevealed(x.GoPointer())
81+
82+}
83+
84+var xBannerGetTitle func(uintptr) string
85+
86+// Gets the title for @self.
87+func (x *Banner) GetTitle() string {
88+
89+ return xBannerGetTitle(x.GoPointer())
90+
91+}
92+
93+var xBannerGetUseMarkup func(uintptr) bool
94+
95+// Gets whether to use Pango markup for the banner title.
96+func (x *Banner) GetUseMarkup() bool {
97+
98+ return xBannerGetUseMarkup(x.GoPointer())
99+
100+}
101+
102+var xBannerSetButtonLabel func(uintptr, string)
103+
104+// Sets the button label for @self.
105+//
106+// If set to `""` or `NULL`, the button won't be shown.
107+//
108+// The button can be used with a `GAction`, or with the
109+// [signal@Banner::button-clicked] signal.
110+func (x *Banner) SetButtonLabel(LabelVar string) {
111+
112+ xBannerSetButtonLabel(x.GoPointer(), LabelVar)
113+
114+}
115+
116+var xBannerSetRevealed func(uintptr, bool)
117+
118+// Sets whether a banner should be revealed
119+func (x *Banner) SetRevealed(RevealedVar bool) {
120+
121+ xBannerSetRevealed(x.GoPointer(), RevealedVar)
122+
123+}
124+
125+var xBannerSetTitle func(uintptr, string)
126+
127+// Sets the title for this banner.
128+//
129+// See also: [property@Banner:use-markup].
130+func (x *Banner) SetTitle(TitleVar string) {
131+
132+ xBannerSetTitle(x.GoPointer(), TitleVar)
133+
134+}
135+
136+var xBannerSetUseMarkup func(uintptr, bool)
137+
138+// Sets whether to use Pango markup for the banner title.
139+//
140+// See also [func@Pango.parse_markup].
141+func (x *Banner) SetUseMarkup(UseMarkupVar bool) {
142+
143+ xBannerSetUseMarkup(x.GoPointer(), UseMarkupVar)
144+
145+}
146+
147+func (c *Banner) GoPointer() uintptr {
148+ return c.Ptr
149+}
150+
151+func (c *Banner) SetGoPointer(ptr uintptr) {
152+ c.Ptr = ptr
153+}
154+
155+// This signal is emitted after the action button has been clicked.
156+//
157+// It can be used as an alternative to setting an action.
158+func (x *Banner) ConnectButtonClicked(cb func(Banner)) {
159+ fcb := func(clsPtr uintptr) {
160+ fa := Banner{}
161+ fa.Ptr = clsPtr
162+
163+ cb(fa)
164+
165+ }
166+ gobject.ObjectConnect(x.GoPointer(), "signal::button-clicked", purego.NewCallback(fcb))
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *Banner) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *Banner) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *Banner) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *Banner) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *Banner) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *Banner) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *Banner) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *Banner) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *Banner) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *Banner) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the action name for @actionable.
303+func (x *Banner) GetActionName() string {
304+
305+ return gtk.XGtkActionableGetActionName(x.GoPointer())
306+
307+}
308+
309+// Gets the current target value of @actionable.
310+func (x *Banner) GetActionTargetValue() *glib.Variant {
311+
312+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
313+
314+}
315+
316+// Specifies the name of the action with which this widget should be
317+// associated.
318+//
319+// If @action_name is %NULL then the widget will be unassociated from
320+// any previous action.
321+//
322+// Usually this function is used when the widget is located (or will be
323+// located) within the hierarchy of a `GtkApplicationWindow`.
324+//
325+// Names are of the form “win.save” or “app.quit” for actions on the
326+// containing [class@ApplicationWindow] or its associated [class@Application],
327+// respectively. This is the same form used for actions in the [class@Gio.Menu]
328+// associated with the window.
329+func (x *Banner) SetActionName(ActionNameVar string) {
330+
331+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
332+
333+}
334+
335+// Sets the target of an actionable widget.
336+//
337+// This is a convenience function that calls [ctor@GLib.Variant.new] for
338+// @format_string and uses the result to call
339+// [method@Gtk.Actionable.set_action_target_value].
340+//
341+// If you are setting a string-valued target and want to set
342+// the action name at the same time, you can use
343+// [method@Gtk.Actionable.set_detailed_action_name].
344+func (x *Banner) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
345+
346+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
347+
348+}
349+
350+// Sets the target value of an actionable widget.
351+//
352+// If @target_value is %NULL then the target value is unset.
353+//
354+// The target value has two purposes. First, it is used as the parameter
355+// to activation of the action associated with the `GtkActionable` widget.
356+// Second, it is used to determine if the widget should be rendered as
357+// “active” — the widget is active if the state is equal to the given target.
358+//
359+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
360+// with string state in a typical “radio button” situation. Each button
361+// will be associated with the same action, but with a different target
362+// value for that action. Clicking on a particular button will activate
363+// the action with the target of that button, which will typically cause
364+// the action’s state to change to that value. Since the action’s state
365+// is now equal to the target value of the button, the button will now
366+// be rendered as active (and the other buttons, with different targets,
367+// rendered inactive).
368+func (x *Banner) SetActionTargetValue(TargetValueVar *glib.Variant) {
369+
370+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
371+
372+}
373+
374+// Sets the action-name and associated string target value of an
375+// actionable widget.
376+//
377+// @detailed_action_name is a string in the format accepted by
378+// [func@Gio.Action.parse_detailed_name].
379+func (x *Banner) SetDetailedActionName(DetailedActionNameVar string) {
380+
381+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
382+
383+}
384+
385+// Gets the ID of the @buildable object.
386+//
387+// `GtkBuilder` sets the name based on the ID attribute
388+// of the &lt;object&gt; tag used to construct the @buildable.
389+func (x *Banner) GetBuildableId() string {
390+
391+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
392+
393+}
394+
395+func init() {
396+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
397+ if err != nil {
398+ panic(err)
399+ }
400+
401+ core.PuregoSafeRegister(&xNewBanner, lib, "adw_banner_new")
402+
403+ core.PuregoSafeRegister(&xBannerGetButtonLabel, lib, "adw_banner_get_button_label")
404+ core.PuregoSafeRegister(&xBannerGetRevealed, lib, "adw_banner_get_revealed")
405+ core.PuregoSafeRegister(&xBannerGetTitle, lib, "adw_banner_get_title")
406+ core.PuregoSafeRegister(&xBannerGetUseMarkup, lib, "adw_banner_get_use_markup")
407+ core.PuregoSafeRegister(&xBannerSetButtonLabel, lib, "adw_banner_set_button_label")
408+ core.PuregoSafeRegister(&xBannerSetRevealed, lib, "adw_banner_set_revealed")
409+ core.PuregoSafeRegister(&xBannerSetTitle, lib, "adw_banner_set_title")
410+ core.PuregoSafeRegister(&xBannerSetUseMarkup, lib, "adw_banner_set_use_markup")
411+
412+}
A v4/adw/adw-bin.go +244 -0
@@ -0,0 +1,244 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type BinClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget with one child.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="bin-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="bin.png" alt="bin"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwBin` widget has only one child, set with the [property@Bin:child]
25+// property.
26+//
27+// It is useful for deriving subclasses, since it provides common code needed
28+// for handling a single child widget.
29+type Bin struct {
30+ gtk.Widget
31+}
32+
33+func BinNewFromInternalPtr(ptr uintptr) *Bin {
34+ cls := &Bin{}
35+ cls.Ptr = ptr
36+ return cls
37+}
38+
39+var xNewBin func() uintptr
40+
41+// Creates a new `AdwBin`.
42+func NewBin() *gtk.Widget {
43+ NewBinPtr := xNewBin()
44+ if NewBinPtr == 0 {
45+ return nil
46+ }
47+
48+ gobject.IncreaseRef(NewBinPtr)
49+
50+ NewBinCls := &gtk.Widget{}
51+ NewBinCls.Ptr = NewBinPtr
52+ return NewBinCls
53+}
54+
55+var xBinGetChild func(uintptr) uintptr
56+
57+// Gets the child widget of @self.
58+func (x *Bin) GetChild() *gtk.Widget {
59+
60+ GetChildPtr := xBinGetChild(x.GoPointer())
61+ if GetChildPtr == 0 {
62+ return nil
63+ }
64+
65+ gobject.IncreaseRef(GetChildPtr)
66+
67+ GetChildCls := &gtk.Widget{}
68+ GetChildCls.Ptr = GetChildPtr
69+ return GetChildCls
70+
71+}
72+
73+var xBinSetChild func(uintptr, uintptr)
74+
75+// Sets the child widget of @self.
76+func (x *Bin) SetChild(ChildVar *gtk.Widget) {
77+
78+ xBinSetChild(x.GoPointer(), ChildVar.GoPointer())
79+
80+}
81+
82+func (c *Bin) GoPointer() uintptr {
83+ return c.Ptr
84+}
85+
86+func (c *Bin) SetGoPointer(ptr uintptr) {
87+ c.Ptr = ptr
88+}
89+
90+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
91+func (x *Bin) GetAccessibleRole() gtk.AccessibleRole {
92+
93+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
94+
95+}
96+
97+// Resets the accessible @property to its default value.
98+func (x *Bin) ResetProperty(PropertyVar gtk.AccessibleProperty) {
99+
100+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
101+
102+}
103+
104+// Resets the accessible @relation to its default value.
105+func (x *Bin) ResetRelation(RelationVar gtk.AccessibleRelation) {
106+
107+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
108+
109+}
110+
111+// Resets the accessible @state to its default value.
112+func (x *Bin) ResetState(StateVar gtk.AccessibleState) {
113+
114+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
115+
116+}
117+
118+// Updates a list of accessible properties.
119+//
120+// See the [enum@Gtk.AccessibleProperty] documentation for the
121+// value types of accessible properties.
122+//
123+// This function should be called by `GtkWidget` types whenever
124+// an accessible property change must be communicated to assistive
125+// technologies.
126+//
127+// Example:
128+// ```c
129+// value = gtk_adjustment_get_value (adjustment);
130+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
131+//
132+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
133+// -1);
134+//
135+// ```
136+func (x *Bin) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
137+
138+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
139+
140+}
141+
142+// Updates an array of accessible properties.
143+//
144+// This function should be called by `GtkWidget` types whenever an accessible
145+// property change must be communicated to assistive technologies.
146+//
147+// This function is meant to be used by language bindings.
148+func (x *Bin) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
149+
150+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
151+
152+}
153+
154+// Updates a list of accessible relations.
155+//
156+// This function should be called by `GtkWidget` types whenever an accessible
157+// relation change must be communicated to assistive technologies.
158+//
159+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
160+// you should pass each reference individually, followed by %NULL, e.g.
161+//
162+// ```c
163+// gtk_accessible_update_relation (accessible,
164+//
165+// GTK_ACCESSIBLE_RELATION_CONTROLS,
166+// ref1, NULL,
167+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
168+// ref1, ref2, ref3, NULL,
169+// -1);
170+//
171+// ```
172+func (x *Bin) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
173+
174+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
175+
176+}
177+
178+// Updates an array of accessible relations.
179+//
180+// This function should be called by `GtkWidget` types whenever an accessible
181+// relation change must be communicated to assistive technologies.
182+//
183+// This function is meant to be used by language bindings.
184+func (x *Bin) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
185+
186+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
187+
188+}
189+
190+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
191+// documentation for the value types of accessible states.
192+//
193+// This function should be called by `GtkWidget` types whenever an accessible
194+// state change must be communicated to assistive technologies.
195+//
196+// Example:
197+// ```c
198+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
199+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
200+//
201+// GTK_ACCESSIBLE_STATE_CHECKED, value,
202+// -1);
203+//
204+// ```
205+func (x *Bin) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible states.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// state change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *Bin) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
220+
221+}
222+
223+// Gets the ID of the @buildable object.
224+//
225+// `GtkBuilder` sets the name based on the ID attribute
226+// of the &lt;object&gt; tag used to construct the @buildable.
227+func (x *Bin) GetBuildableId() string {
228+
229+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
230+
231+}
232+
233+func init() {
234+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
235+ if err != nil {
236+ panic(err)
237+ }
238+
239+ core.PuregoSafeRegister(&xNewBin, lib, "adw_bin_new")
240+
241+ core.PuregoSafeRegister(&xBinGetChild, lib, "adw_bin_get_child")
242+ core.PuregoSafeRegister(&xBinSetChild, lib, "adw_bin_set_child")
243+
244+}
A v4/adw/adw-button-content.go +317 -0
@@ -0,0 +1,317 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ButtonContentClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A helper widget for creating buttons.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="button-content-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="button-content.png" alt="button-content"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// `AdwButtonContent` is a box-like widget with an icon and a label.
25+//
26+// It's intended to be used as a direct child of [class@Gtk.Button],
27+// [class@Gtk.MenuButton] or [class@SplitButton], when they need to have both an
28+// icon and a label, as follows:
29+//
30+// ```xml
31+// &lt;object class="GtkButton"&gt;
32+//
33+// &lt;property name="child"&gt;
34+// &lt;object class="AdwButtonContent"&gt;
35+// &lt;property name="icon-name"&gt;document-open-symbolic&lt;/property&gt;
36+// &lt;property name="label" translatable="yes"&gt;_Open&lt;/property&gt;
37+// &lt;property name="use-underline"&gt;True&lt;/property&gt;
38+// &lt;/object&gt;
39+// &lt;/property&gt;
40+//
41+// &lt;/object&gt;
42+// ```
43+//
44+// `AdwButtonContent` handles style classes and connecting the mnemonic to the
45+// button automatically.
46+//
47+// ## CSS nodes
48+//
49+// ```
50+// buttoncontent
51+// ├── image
52+// ╰── label
53+// ```
54+//
55+// `AdwButtonContent`'s CSS node is called `buttoncontent`. It contains the
56+// subnodes `image` and `label`.
57+//
58+// When inside a `GtkButton` or `AdwSplitButton`, the button will receive the
59+// `.image-text-button` style class. When inside a `GtkMenuButton`, the
60+// internal `GtkButton` will receive it instead.
61+//
62+// ## Accessibility
63+//
64+// `AdwButtonContent` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
65+type ButtonContent struct {
66+ gtk.Widget
67+}
68+
69+func ButtonContentNewFromInternalPtr(ptr uintptr) *ButtonContent {
70+ cls := &ButtonContent{}
71+ cls.Ptr = ptr
72+ return cls
73+}
74+
75+var xNewButtonContent func() uintptr
76+
77+// Creates a new `AdwButtonContent`.
78+func NewButtonContent() *gtk.Widget {
79+ NewButtonContentPtr := xNewButtonContent()
80+ if NewButtonContentPtr == 0 {
81+ return nil
82+ }
83+
84+ gobject.IncreaseRef(NewButtonContentPtr)
85+
86+ NewButtonContentCls := &gtk.Widget{}
87+ NewButtonContentCls.Ptr = NewButtonContentPtr
88+ return NewButtonContentCls
89+}
90+
91+var xButtonContentGetIconName func(uintptr) string
92+
93+// Gets the name of the displayed icon.
94+func (x *ButtonContent) GetIconName() string {
95+
96+ return xButtonContentGetIconName(x.GoPointer())
97+
98+}
99+
100+var xButtonContentGetLabel func(uintptr) string
101+
102+// Gets the displayed label.
103+func (x *ButtonContent) GetLabel() string {
104+
105+ return xButtonContentGetLabel(x.GoPointer())
106+
107+}
108+
109+var xButtonContentGetUseUnderline func(uintptr) bool
110+
111+// Gets whether an underline in the text indicates a mnemonic.
112+func (x *ButtonContent) GetUseUnderline() bool {
113+
114+ return xButtonContentGetUseUnderline(x.GoPointer())
115+
116+}
117+
118+var xButtonContentSetIconName func(uintptr, string)
119+
120+// Sets the name of the displayed icon.
121+//
122+// If empty, the icon is not shown.
123+func (x *ButtonContent) SetIconName(IconNameVar string) {
124+
125+ xButtonContentSetIconName(x.GoPointer(), IconNameVar)
126+
127+}
128+
129+var xButtonContentSetLabel func(uintptr, string)
130+
131+// Sets the displayed label.
132+func (x *ButtonContent) SetLabel(LabelVar string) {
133+
134+ xButtonContentSetLabel(x.GoPointer(), LabelVar)
135+
136+}
137+
138+var xButtonContentSetUseUnderline func(uintptr, bool)
139+
140+// Sets whether an underline in the text indicates a mnemonic.
141+//
142+// The mnemonic can be used to activate the parent button.
143+//
144+// See [property@ButtonContent:label].
145+func (x *ButtonContent) SetUseUnderline(UseUnderlineVar bool) {
146+
147+ xButtonContentSetUseUnderline(x.GoPointer(), UseUnderlineVar)
148+
149+}
150+
151+func (c *ButtonContent) GoPointer() uintptr {
152+ return c.Ptr
153+}
154+
155+func (c *ButtonContent) SetGoPointer(ptr uintptr) {
156+ c.Ptr = ptr
157+}
158+
159+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
160+func (x *ButtonContent) GetAccessibleRole() gtk.AccessibleRole {
161+
162+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
163+
164+}
165+
166+// Resets the accessible @property to its default value.
167+func (x *ButtonContent) ResetProperty(PropertyVar gtk.AccessibleProperty) {
168+
169+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
170+
171+}
172+
173+// Resets the accessible @relation to its default value.
174+func (x *ButtonContent) ResetRelation(RelationVar gtk.AccessibleRelation) {
175+
176+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
177+
178+}
179+
180+// Resets the accessible @state to its default value.
181+func (x *ButtonContent) ResetState(StateVar gtk.AccessibleState) {
182+
183+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
184+
185+}
186+
187+// Updates a list of accessible properties.
188+//
189+// See the [enum@Gtk.AccessibleProperty] documentation for the
190+// value types of accessible properties.
191+//
192+// This function should be called by `GtkWidget` types whenever
193+// an accessible property change must be communicated to assistive
194+// technologies.
195+//
196+// Example:
197+// ```c
198+// value = gtk_adjustment_get_value (adjustment);
199+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
200+//
201+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
202+// -1);
203+//
204+// ```
205+func (x *ButtonContent) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
206+
207+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
208+
209+}
210+
211+// Updates an array of accessible properties.
212+//
213+// This function should be called by `GtkWidget` types whenever an accessible
214+// property change must be communicated to assistive technologies.
215+//
216+// This function is meant to be used by language bindings.
217+func (x *ButtonContent) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
218+
219+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
220+
221+}
222+
223+// Updates a list of accessible relations.
224+//
225+// This function should be called by `GtkWidget` types whenever an accessible
226+// relation change must be communicated to assistive technologies.
227+//
228+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
229+// you should pass each reference individually, followed by %NULL, e.g.
230+//
231+// ```c
232+// gtk_accessible_update_relation (accessible,
233+//
234+// GTK_ACCESSIBLE_RELATION_CONTROLS,
235+// ref1, NULL,
236+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
237+// ref1, ref2, ref3, NULL,
238+// -1);
239+//
240+// ```
241+func (x *ButtonContent) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
242+
243+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
244+
245+}
246+
247+// Updates an array of accessible relations.
248+//
249+// This function should be called by `GtkWidget` types whenever an accessible
250+// relation change must be communicated to assistive technologies.
251+//
252+// This function is meant to be used by language bindings.
253+func (x *ButtonContent) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
254+
255+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
256+
257+}
258+
259+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
260+// documentation for the value types of accessible states.
261+//
262+// This function should be called by `GtkWidget` types whenever an accessible
263+// state change must be communicated to assistive technologies.
264+//
265+// Example:
266+// ```c
267+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
268+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
269+//
270+// GTK_ACCESSIBLE_STATE_CHECKED, value,
271+// -1);
272+//
273+// ```
274+func (x *ButtonContent) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
275+
276+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
277+
278+}
279+
280+// Updates an array of accessible states.
281+//
282+// This function should be called by `GtkWidget` types whenever an accessible
283+// state change must be communicated to assistive technologies.
284+//
285+// This function is meant to be used by language bindings.
286+func (x *ButtonContent) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
287+
288+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
289+
290+}
291+
292+// Gets the ID of the @buildable object.
293+//
294+// `GtkBuilder` sets the name based on the ID attribute
295+// of the &lt;object&gt; tag used to construct the @buildable.
296+func (x *ButtonContent) GetBuildableId() string {
297+
298+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
299+
300+}
301+
302+func init() {
303+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
304+ if err != nil {
305+ panic(err)
306+ }
307+
308+ core.PuregoSafeRegister(&xNewButtonContent, lib, "adw_button_content_new")
309+
310+ core.PuregoSafeRegister(&xButtonContentGetIconName, lib, "adw_button_content_get_icon_name")
311+ core.PuregoSafeRegister(&xButtonContentGetLabel, lib, "adw_button_content_get_label")
312+ core.PuregoSafeRegister(&xButtonContentGetUseUnderline, lib, "adw_button_content_get_use_underline")
313+ core.PuregoSafeRegister(&xButtonContentSetIconName, lib, "adw_button_content_set_icon_name")
314+ core.PuregoSafeRegister(&xButtonContentSetLabel, lib, "adw_button_content_set_label")
315+ core.PuregoSafeRegister(&xButtonContentSetUseUnderline, lib, "adw_button_content_set_use_underline")
316+
317+}
A v4/adw/adw-carousel-indicator-dots.go +264 -0
@@ -0,0 +1,264 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorDotsClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A dots indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-dots.png" alt="carousel-indicator-dots"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorDots` widget shows a set of dots for each page of a
25+// given [class@Carousel]. The dot representing the carousel's active page is
26+// larger and more opaque than the others, the transition to the active and
27+// inactive state is gradual to match the carousel's position.
28+//
29+// See also [class@CarouselIndicatorLines].
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarouselIndicatorDots` has a single CSS node with name
34+// `carouselindicatordots`.
35+type CarouselIndicatorDots struct {
36+ gtk.Widget
37+}
38+
39+func CarouselIndicatorDotsNewFromInternalPtr(ptr uintptr) *CarouselIndicatorDots {
40+ cls := &CarouselIndicatorDots{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewCarouselIndicatorDots func() uintptr
46+
47+// Creates a new `AdwCarouselIndicatorDots`.
48+func NewCarouselIndicatorDots() *gtk.Widget {
49+ NewCarouselIndicatorDotsPtr := xNewCarouselIndicatorDots()
50+ if NewCarouselIndicatorDotsPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewCarouselIndicatorDotsPtr)
55+
56+ NewCarouselIndicatorDotsCls := &gtk.Widget{}
57+ NewCarouselIndicatorDotsCls.Ptr = NewCarouselIndicatorDotsPtr
58+ return NewCarouselIndicatorDotsCls
59+}
60+
61+var xCarouselIndicatorDotsGetCarousel func(uintptr) uintptr
62+
63+// Gets the displayed carousel.
64+func (x *CarouselIndicatorDots) GetCarousel() *Carousel {
65+
66+ GetCarouselPtr := xCarouselIndicatorDotsGetCarousel(x.GoPointer())
67+ if GetCarouselPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetCarouselPtr)
72+
73+ GetCarouselCls := &Carousel{}
74+ GetCarouselCls.Ptr = GetCarouselPtr
75+ return GetCarouselCls
76+
77+}
78+
79+var xCarouselIndicatorDotsSetCarousel func(uintptr, uintptr)
80+
81+// Sets the displayed carousel.
82+func (x *CarouselIndicatorDots) SetCarousel(CarouselVar *Carousel) {
83+
84+ xCarouselIndicatorDotsSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
85+
86+}
87+
88+func (c *CarouselIndicatorDots) GoPointer() uintptr {
89+ return c.Ptr
90+}
91+
92+func (c *CarouselIndicatorDots) SetGoPointer(ptr uintptr) {
93+ c.Ptr = ptr
94+}
95+
96+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
97+func (x *CarouselIndicatorDots) GetAccessibleRole() gtk.AccessibleRole {
98+
99+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
100+
101+}
102+
103+// Resets the accessible @property to its default value.
104+func (x *CarouselIndicatorDots) ResetProperty(PropertyVar gtk.AccessibleProperty) {
105+
106+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
107+
108+}
109+
110+// Resets the accessible @relation to its default value.
111+func (x *CarouselIndicatorDots) ResetRelation(RelationVar gtk.AccessibleRelation) {
112+
113+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
114+
115+}
116+
117+// Resets the accessible @state to its default value.
118+func (x *CarouselIndicatorDots) ResetState(StateVar gtk.AccessibleState) {
119+
120+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
121+
122+}
123+
124+// Updates a list of accessible properties.
125+//
126+// See the [enum@Gtk.AccessibleProperty] documentation for the
127+// value types of accessible properties.
128+//
129+// This function should be called by `GtkWidget` types whenever
130+// an accessible property change must be communicated to assistive
131+// technologies.
132+//
133+// Example:
134+// ```c
135+// value = gtk_adjustment_get_value (adjustment);
136+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
137+//
138+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
139+// -1);
140+//
141+// ```
142+func (x *CarouselIndicatorDots) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
143+
144+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
145+
146+}
147+
148+// Updates an array of accessible properties.
149+//
150+// This function should be called by `GtkWidget` types whenever an accessible
151+// property change must be communicated to assistive technologies.
152+//
153+// This function is meant to be used by language bindings.
154+func (x *CarouselIndicatorDots) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
155+
156+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
157+
158+}
159+
160+// Updates a list of accessible relations.
161+//
162+// This function should be called by `GtkWidget` types whenever an accessible
163+// relation change must be communicated to assistive technologies.
164+//
165+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
166+// you should pass each reference individually, followed by %NULL, e.g.
167+//
168+// ```c
169+// gtk_accessible_update_relation (accessible,
170+//
171+// GTK_ACCESSIBLE_RELATION_CONTROLS,
172+// ref1, NULL,
173+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
174+// ref1, ref2, ref3, NULL,
175+// -1);
176+//
177+// ```
178+func (x *CarouselIndicatorDots) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
179+
180+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
181+
182+}
183+
184+// Updates an array of accessible relations.
185+//
186+// This function should be called by `GtkWidget` types whenever an accessible
187+// relation change must be communicated to assistive technologies.
188+//
189+// This function is meant to be used by language bindings.
190+func (x *CarouselIndicatorDots) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
191+
192+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
193+
194+}
195+
196+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
197+// documentation for the value types of accessible states.
198+//
199+// This function should be called by `GtkWidget` types whenever an accessible
200+// state change must be communicated to assistive technologies.
201+//
202+// Example:
203+// ```c
204+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
205+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
206+//
207+// GTK_ACCESSIBLE_STATE_CHECKED, value,
208+// -1);
209+//
210+// ```
211+func (x *CarouselIndicatorDots) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
212+
213+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
214+
215+}
216+
217+// Updates an array of accessible states.
218+//
219+// This function should be called by `GtkWidget` types whenever an accessible
220+// state change must be communicated to assistive technologies.
221+//
222+// This function is meant to be used by language bindings.
223+func (x *CarouselIndicatorDots) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
224+
225+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
226+
227+}
228+
229+// Gets the ID of the @buildable object.
230+//
231+// `GtkBuilder` sets the name based on the ID attribute
232+// of the &lt;object&gt; tag used to construct the @buildable.
233+func (x *CarouselIndicatorDots) GetBuildableId() string {
234+
235+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
236+
237+}
238+
239+// Retrieves the orientation of the @orientable.
240+func (x *CarouselIndicatorDots) GetOrientation() gtk.Orientation {
241+
242+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
243+
244+}
245+
246+// Sets the orientation of the @orientable.
247+func (x *CarouselIndicatorDots) SetOrientation(OrientationVar gtk.Orientation) {
248+
249+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
250+
251+}
252+
253+func init() {
254+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
255+ if err != nil {
256+ panic(err)
257+ }
258+
259+ core.PuregoSafeRegister(&xNewCarouselIndicatorDots, lib, "adw_carousel_indicator_dots_new")
260+
261+ core.PuregoSafeRegister(&xCarouselIndicatorDotsGetCarousel, lib, "adw_carousel_indicator_dots_get_carousel")
262+ core.PuregoSafeRegister(&xCarouselIndicatorDotsSetCarousel, lib, "adw_carousel_indicator_dots_set_carousel")
263+
264+}
A v4/adw/adw-carousel-indicator-lines.go +263 -0
@@ -0,0 +1,263 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type CarouselIndicatorLinesClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A lines indicator for [class@Carousel].
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="carousel-indicator-dots-lines.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="carousel-indicator-lines.png" alt="carousel-indicator-lines"&gt;
21+//
22+// &lt;/picture&gt;
23+//
24+// The `AdwCarouselIndicatorLines` widget shows a set of lines for each page of
25+// a given [class@Carousel]. The carousel's active page is shown as another line
26+// that moves between them to match the carousel's position.
27+//
28+// See also [class@CarouselIndicatorDots].
29+//
30+// ## CSS nodes
31+//
32+// `AdwCarouselIndicatorLines` has a single CSS node with name
33+// `carouselindicatorlines`.
34+type CarouselIndicatorLines struct {
35+ gtk.Widget
36+}
37+
38+func CarouselIndicatorLinesNewFromInternalPtr(ptr uintptr) *CarouselIndicatorLines {
39+ cls := &CarouselIndicatorLines{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarouselIndicatorLines func() uintptr
45+
46+// Creates a new `AdwCarouselIndicatorLines`.
47+func NewCarouselIndicatorLines() *gtk.Widget {
48+ NewCarouselIndicatorLinesPtr := xNewCarouselIndicatorLines()
49+ if NewCarouselIndicatorLinesPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselIndicatorLinesPtr)
54+
55+ NewCarouselIndicatorLinesCls := &gtk.Widget{}
56+ NewCarouselIndicatorLinesCls.Ptr = NewCarouselIndicatorLinesPtr
57+ return NewCarouselIndicatorLinesCls
58+}
59+
60+var xCarouselIndicatorLinesGetCarousel func(uintptr) uintptr
61+
62+// Gets the displayed carousel.
63+func (x *CarouselIndicatorLines) GetCarousel() *Carousel {
64+
65+ GetCarouselPtr := xCarouselIndicatorLinesGetCarousel(x.GoPointer())
66+ if GetCarouselPtr == 0 {
67+ return nil
68+ }
69+
70+ gobject.IncreaseRef(GetCarouselPtr)
71+
72+ GetCarouselCls := &Carousel{}
73+ GetCarouselCls.Ptr = GetCarouselPtr
74+ return GetCarouselCls
75+
76+}
77+
78+var xCarouselIndicatorLinesSetCarousel func(uintptr, uintptr)
79+
80+// Sets the displayed carousel.
81+func (x *CarouselIndicatorLines) SetCarousel(CarouselVar *Carousel) {
82+
83+ xCarouselIndicatorLinesSetCarousel(x.GoPointer(), CarouselVar.GoPointer())
84+
85+}
86+
87+func (c *CarouselIndicatorLines) GoPointer() uintptr {
88+ return c.Ptr
89+}
90+
91+func (c *CarouselIndicatorLines) SetGoPointer(ptr uintptr) {
92+ c.Ptr = ptr
93+}
94+
95+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
96+func (x *CarouselIndicatorLines) GetAccessibleRole() gtk.AccessibleRole {
97+
98+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
99+
100+}
101+
102+// Resets the accessible @property to its default value.
103+func (x *CarouselIndicatorLines) ResetProperty(PropertyVar gtk.AccessibleProperty) {
104+
105+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
106+
107+}
108+
109+// Resets the accessible @relation to its default value.
110+func (x *CarouselIndicatorLines) ResetRelation(RelationVar gtk.AccessibleRelation) {
111+
112+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
113+
114+}
115+
116+// Resets the accessible @state to its default value.
117+func (x *CarouselIndicatorLines) ResetState(StateVar gtk.AccessibleState) {
118+
119+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
120+
121+}
122+
123+// Updates a list of accessible properties.
124+//
125+// See the [enum@Gtk.AccessibleProperty] documentation for the
126+// value types of accessible properties.
127+//
128+// This function should be called by `GtkWidget` types whenever
129+// an accessible property change must be communicated to assistive
130+// technologies.
131+//
132+// Example:
133+// ```c
134+// value = gtk_adjustment_get_value (adjustment);
135+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
136+//
137+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
138+// -1);
139+//
140+// ```
141+func (x *CarouselIndicatorLines) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
142+
143+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
144+
145+}
146+
147+// Updates an array of accessible properties.
148+//
149+// This function should be called by `GtkWidget` types whenever an accessible
150+// property change must be communicated to assistive technologies.
151+//
152+// This function is meant to be used by language bindings.
153+func (x *CarouselIndicatorLines) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
154+
155+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
156+
157+}
158+
159+// Updates a list of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
165+// you should pass each reference individually, followed by %NULL, e.g.
166+//
167+// ```c
168+// gtk_accessible_update_relation (accessible,
169+//
170+// GTK_ACCESSIBLE_RELATION_CONTROLS,
171+// ref1, NULL,
172+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
173+// ref1, ref2, ref3, NULL,
174+// -1);
175+//
176+// ```
177+func (x *CarouselIndicatorLines) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
178+
179+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
180+
181+}
182+
183+// Updates an array of accessible relations.
184+//
185+// This function should be called by `GtkWidget` types whenever an accessible
186+// relation change must be communicated to assistive technologies.
187+//
188+// This function is meant to be used by language bindings.
189+func (x *CarouselIndicatorLines) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
190+
191+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
192+
193+}
194+
195+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
196+// documentation for the value types of accessible states.
197+//
198+// This function should be called by `GtkWidget` types whenever an accessible
199+// state change must be communicated to assistive technologies.
200+//
201+// Example:
202+// ```c
203+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
204+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
205+//
206+// GTK_ACCESSIBLE_STATE_CHECKED, value,
207+// -1);
208+//
209+// ```
210+func (x *CarouselIndicatorLines) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
211+
212+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
213+
214+}
215+
216+// Updates an array of accessible states.
217+//
218+// This function should be called by `GtkWidget` types whenever an accessible
219+// state change must be communicated to assistive technologies.
220+//
221+// This function is meant to be used by language bindings.
222+func (x *CarouselIndicatorLines) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
223+
224+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
225+
226+}
227+
228+// Gets the ID of the @buildable object.
229+//
230+// `GtkBuilder` sets the name based on the ID attribute
231+// of the &lt;object&gt; tag used to construct the @buildable.
232+func (x *CarouselIndicatorLines) GetBuildableId() string {
233+
234+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
235+
236+}
237+
238+// Retrieves the orientation of the @orientable.
239+func (x *CarouselIndicatorLines) GetOrientation() gtk.Orientation {
240+
241+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
242+
243+}
244+
245+// Sets the orientation of the @orientable.
246+func (x *CarouselIndicatorLines) SetOrientation(OrientationVar gtk.Orientation) {
247+
248+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
249+
250+}
251+
252+func init() {
253+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
254+ if err != nil {
255+ panic(err)
256+ }
257+
258+ core.PuregoSafeRegister(&xNewCarouselIndicatorLines, lib, "adw_carousel_indicator_lines_new")
259+
260+ core.PuregoSafeRegister(&xCarouselIndicatorLinesGetCarousel, lib, "adw_carousel_indicator_lines_get_carousel")
261+ core.PuregoSafeRegister(&xCarouselIndicatorLinesSetCarousel, lib, "adw_carousel_indicator_lines_set_carousel")
262+
263+}
A v4/adw/adw-carousel.go +565 -0
@@ -0,0 +1,565 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type CarouselClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A paginated scrolling widget.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="carousel-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="carousel.png" alt="carousel"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwCarousel` widget can be used to display a set of pages with
26+// swipe-based navigation between them.
27+//
28+// [class@CarouselIndicatorDots] and [class@CarouselIndicatorLines] can be used
29+// to provide page indicators for `AdwCarousel`.
30+//
31+// ## CSS nodes
32+//
33+// `AdwCarousel` has a single CSS node with name `carousel`.
34+type Carousel struct {
35+ gtk.Widget
36+}
37+
38+func CarouselNewFromInternalPtr(ptr uintptr) *Carousel {
39+ cls := &Carousel{}
40+ cls.Ptr = ptr
41+ return cls
42+}
43+
44+var xNewCarousel func() uintptr
45+
46+// Creates a new `AdwCarousel`.
47+func NewCarousel() *gtk.Widget {
48+ NewCarouselPtr := xNewCarousel()
49+ if NewCarouselPtr == 0 {
50+ return nil
51+ }
52+
53+ gobject.IncreaseRef(NewCarouselPtr)
54+
55+ NewCarouselCls := &gtk.Widget{}
56+ NewCarouselCls.Ptr = NewCarouselPtr
57+ return NewCarouselCls
58+}
59+
60+var xCarouselAppend func(uintptr, uintptr)
61+
62+// Appends @child to @self.
63+func (x *Carousel) Append(ChildVar *gtk.Widget) {
64+
65+ xCarouselAppend(x.GoPointer(), ChildVar.GoPointer())
66+
67+}
68+
69+var xCarouselGetAllowLongSwipes func(uintptr) bool
70+
71+// Gets whether to allow swiping for more than one page at a time.
72+func (x *Carousel) GetAllowLongSwipes() bool {
73+
74+ return xCarouselGetAllowLongSwipes(x.GoPointer())
75+
76+}
77+
78+var xCarouselGetAllowMouseDrag func(uintptr) bool
79+
80+// Sets whether @self can be dragged with mouse pointer.
81+func (x *Carousel) GetAllowMouseDrag() bool {
82+
83+ return xCarouselGetAllowMouseDrag(x.GoPointer())
84+
85+}
86+
87+var xCarouselGetAllowScrollWheel func(uintptr) bool
88+
89+// Gets whether @self will respond to scroll wheel events.
90+func (x *Carousel) GetAllowScrollWheel() bool {
91+
92+ return xCarouselGetAllowScrollWheel(x.GoPointer())
93+
94+}
95+
96+var xCarouselGetInteractive func(uintptr) bool
97+
98+// Gets whether @self can be navigated.
99+func (x *Carousel) GetInteractive() bool {
100+
101+ return xCarouselGetInteractive(x.GoPointer())
102+
103+}
104+
105+var xCarouselGetNPages func(uintptr) uint
106+
107+// Gets the number of pages in @self.
108+func (x *Carousel) GetNPages() uint {
109+
110+ return xCarouselGetNPages(x.GoPointer())
111+
112+}
113+
114+var xCarouselGetNthPage func(uintptr, uint) uintptr
115+
116+// Gets the page at position @n.
117+func (x *Carousel) GetNthPage(NVar uint) *gtk.Widget {
118+
119+ GetNthPagePtr := xCarouselGetNthPage(x.GoPointer(), NVar)
120+ if GetNthPagePtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetNthPagePtr)
125+
126+ GetNthPageCls := &gtk.Widget{}
127+ GetNthPageCls.Ptr = GetNthPagePtr
128+ return GetNthPageCls
129+
130+}
131+
132+var xCarouselGetPosition func(uintptr) float64
133+
134+// Gets current scroll position in @self, unitless.
135+//
136+// 1 matches 1 page. Use [method@Carousel.scroll_to] for changing it.
137+func (x *Carousel) GetPosition() float64 {
138+
139+ return xCarouselGetPosition(x.GoPointer())
140+
141+}
142+
143+var xCarouselGetRevealDuration func(uintptr) uint
144+
145+// Gets the page reveal duration, in milliseconds.
146+func (x *Carousel) GetRevealDuration() uint {
147+
148+ return xCarouselGetRevealDuration(x.GoPointer())
149+
150+}
151+
152+var xCarouselGetScrollParams func(uintptr) *SpringParams
153+
154+// Gets the scroll animation spring parameters for @self.
155+func (x *Carousel) GetScrollParams() *SpringParams {
156+
157+ return xCarouselGetScrollParams(x.GoPointer())
158+
159+}
160+
161+var xCarouselGetSpacing func(uintptr) uint
162+
163+// Gets spacing between pages in pixels.
164+func (x *Carousel) GetSpacing() uint {
165+
166+ return xCarouselGetSpacing(x.GoPointer())
167+
168+}
169+
170+var xCarouselInsert func(uintptr, uintptr, int32)
171+
172+// Inserts @child into @self at position @position.
173+//
174+// If position is -1, or larger than the number of pages,
175+// @child will be appended to the end.
176+func (x *Carousel) Insert(ChildVar *gtk.Widget, PositionVar int32) {
177+
178+ xCarouselInsert(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
179+
180+}
181+
182+var xCarouselPrepend func(uintptr, uintptr)
183+
184+// Prepends @child to @self.
185+func (x *Carousel) Prepend(ChildVar *gtk.Widget) {
186+
187+ xCarouselPrepend(x.GoPointer(), ChildVar.GoPointer())
188+
189+}
190+
191+var xCarouselRemove func(uintptr, uintptr)
192+
193+// Removes @child from @self.
194+func (x *Carousel) Remove(ChildVar *gtk.Widget) {
195+
196+ xCarouselRemove(x.GoPointer(), ChildVar.GoPointer())
197+
198+}
199+
200+var xCarouselReorder func(uintptr, uintptr, int32)
201+
202+// Moves @child into position @position.
203+//
204+// If position is -1, or larger than the number of pages, @child will be moved
205+// at the end.
206+func (x *Carousel) Reorder(ChildVar *gtk.Widget, PositionVar int32) {
207+
208+ xCarouselReorder(x.GoPointer(), ChildVar.GoPointer(), PositionVar)
209+
210+}
211+
212+var xCarouselScrollTo func(uintptr, uintptr, bool)
213+
214+// Scrolls to @widget.
215+//
216+// If @animate is `TRUE`, the transition will be animated.
217+func (x *Carousel) ScrollTo(WidgetVar *gtk.Widget, AnimateVar bool) {
218+
219+ xCarouselScrollTo(x.GoPointer(), WidgetVar.GoPointer(), AnimateVar)
220+
221+}
222+
223+var xCarouselSetAllowLongSwipes func(uintptr, bool)
224+
225+// Sets whether to allow swiping for more than one page at a time.
226+//
227+// If @allow_long_swipes is `FALSE`, each swipe can only move to the adjacent
228+// pages.
229+func (x *Carousel) SetAllowLongSwipes(AllowLongSwipesVar bool) {
230+
231+ xCarouselSetAllowLongSwipes(x.GoPointer(), AllowLongSwipesVar)
232+
233+}
234+
235+var xCarouselSetAllowMouseDrag func(uintptr, bool)
236+
237+// Sets whether @self can be dragged with mouse pointer.
238+//
239+// If @allow_mouse_drag is `FALSE`, dragging is only available on touch.
240+func (x *Carousel) SetAllowMouseDrag(AllowMouseDragVar bool) {
241+
242+ xCarouselSetAllowMouseDrag(x.GoPointer(), AllowMouseDragVar)
243+
244+}
245+
246+var xCarouselSetAllowScrollWheel func(uintptr, bool)
247+
248+// Sets whether @self will respond to scroll wheel events.
249+//
250+// If @allow_scroll_wheel is `FALSE`, wheel events will be ignored.
251+func (x *Carousel) SetAllowScrollWheel(AllowScrollWheelVar bool) {
252+
253+ xCarouselSetAllowScrollWheel(x.GoPointer(), AllowScrollWheelVar)
254+
255+}
256+
257+var xCarouselSetInteractive func(uintptr, bool)
258+
259+// Sets whether @self can be navigated.
260+//
261+// This can be used to temporarily disable the carousel to only allow navigating
262+// it in a certain state.
263+func (x *Carousel) SetInteractive(InteractiveVar bool) {
264+
265+ xCarouselSetInteractive(x.GoPointer(), InteractiveVar)
266+
267+}
268+
269+var xCarouselSetRevealDuration func(uintptr, uint)
270+
271+// Sets the page reveal duration, in milliseconds.
272+//
273+// Reveal duration is used when animating adding or removing pages.
274+func (x *Carousel) SetRevealDuration(RevealDurationVar uint) {
275+
276+ xCarouselSetRevealDuration(x.GoPointer(), RevealDurationVar)
277+
278+}
279+
280+var xCarouselSetScrollParams func(uintptr, *SpringParams)
281+
282+// Sets the scroll animation spring parameters for @self.
283+//
284+// The default value is equivalent to:
285+//
286+// ```c
287+// adw_spring_params_new (1, 0.5, 500)
288+// ```
289+func (x *Carousel) SetScrollParams(ParamsVar *SpringParams) {
290+
291+ xCarouselSetScrollParams(x.GoPointer(), ParamsVar)
292+
293+}
294+
295+var xCarouselSetSpacing func(uintptr, uint)
296+
297+// Sets spacing between pages in pixels.
298+func (x *Carousel) SetSpacing(SpacingVar uint) {
299+
300+ xCarouselSetSpacing(x.GoPointer(), SpacingVar)
301+
302+}
303+
304+func (c *Carousel) GoPointer() uintptr {
305+ return c.Ptr
306+}
307+
308+func (c *Carousel) SetGoPointer(ptr uintptr) {
309+ c.Ptr = ptr
310+}
311+
312+// This signal is emitted after a page has been changed.
313+//
314+// It can be used to implement "infinite scrolling" by amending the pages
315+// after every scroll. Note that an empty carousel is indicated by
316+// `(int)index == -1`.
317+func (x *Carousel) ConnectPageChanged(cb func(Carousel, uint)) {
318+ fcb := func(clsPtr uintptr, IndexVarp uint) {
319+ fa := Carousel{}
320+ fa.Ptr = clsPtr
321+
322+ cb(fa, IndexVarp)
323+
324+ }
325+ gobject.ObjectConnect(x.GoPointer(), "signal::page-changed", purego.NewCallback(fcb))
326+}
327+
328+// Gets the progress @self will snap back to after the gesture is canceled.
329+func (x *Carousel) GetCancelProgress() float64 {
330+
331+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
332+
333+}
334+
335+// Gets the swipe distance of @self.
336+//
337+// This corresponds to how many pixels 1 unit represents.
338+func (x *Carousel) GetDistance() float64 {
339+
340+ return XAdwSwipeableGetDistance(x.GoPointer())
341+
342+}
343+
344+// Gets the current progress of @self.
345+func (x *Carousel) GetProgress() float64 {
346+
347+ return XAdwSwipeableGetProgress(x.GoPointer())
348+
349+}
350+
351+// Gets the snap points of @self.
352+//
353+// Each snap point represents a progress value that is considered acceptable to
354+// end the swipe on.
355+func (x *Carousel) GetSnapPoints(NSnapPointsVar int32) uintptr {
356+
357+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
358+
359+}
360+
361+// Gets the area @self can start a swipe from for the given direction and
362+// gesture type.
363+//
364+// This can be used to restrict swipes to only be possible from a certain area,
365+// for example, to only allow edge swipes, or to have a draggable element and
366+// ignore swipes elsewhere.
367+//
368+// If not implemented, the default implementation returns the allocation of
369+// @self, allowing swipes from anywhere.
370+func (x *Carousel) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
371+
372+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
373+
374+}
375+
376+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
377+func (x *Carousel) GetAccessibleRole() gtk.AccessibleRole {
378+
379+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
380+
381+}
382+
383+// Resets the accessible @property to its default value.
384+func (x *Carousel) ResetProperty(PropertyVar gtk.AccessibleProperty) {
385+
386+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
387+
388+}
389+
390+// Resets the accessible @relation to its default value.
391+func (x *Carousel) ResetRelation(RelationVar gtk.AccessibleRelation) {
392+
393+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
394+
395+}
396+
397+// Resets the accessible @state to its default value.
398+func (x *Carousel) ResetState(StateVar gtk.AccessibleState) {
399+
400+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
401+
402+}
403+
404+// Updates a list of accessible properties.
405+//
406+// See the [enum@Gtk.AccessibleProperty] documentation for the
407+// value types of accessible properties.
408+//
409+// This function should be called by `GtkWidget` types whenever
410+// an accessible property change must be communicated to assistive
411+// technologies.
412+//
413+// Example:
414+// ```c
415+// value = gtk_adjustment_get_value (adjustment);
416+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
417+//
418+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
419+// -1);
420+//
421+// ```
422+func (x *Carousel) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
423+
424+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
425+
426+}
427+
428+// Updates an array of accessible properties.
429+//
430+// This function should be called by `GtkWidget` types whenever an accessible
431+// property change must be communicated to assistive technologies.
432+//
433+// This function is meant to be used by language bindings.
434+func (x *Carousel) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
435+
436+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
437+
438+}
439+
440+// Updates a list of accessible relations.
441+//
442+// This function should be called by `GtkWidget` types whenever an accessible
443+// relation change must be communicated to assistive technologies.
444+//
445+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
446+// you should pass each reference individually, followed by %NULL, e.g.
447+//
448+// ```c
449+// gtk_accessible_update_relation (accessible,
450+//
451+// GTK_ACCESSIBLE_RELATION_CONTROLS,
452+// ref1, NULL,
453+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
454+// ref1, ref2, ref3, NULL,
455+// -1);
456+//
457+// ```
458+func (x *Carousel) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
459+
460+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
461+
462+}
463+
464+// Updates an array of accessible relations.
465+//
466+// This function should be called by `GtkWidget` types whenever an accessible
467+// relation change must be communicated to assistive technologies.
468+//
469+// This function is meant to be used by language bindings.
470+func (x *Carousel) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
471+
472+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
473+
474+}
475+
476+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
477+// documentation for the value types of accessible states.
478+//
479+// This function should be called by `GtkWidget` types whenever an accessible
480+// state change must be communicated to assistive technologies.
481+//
482+// Example:
483+// ```c
484+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
485+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
486+//
487+// GTK_ACCESSIBLE_STATE_CHECKED, value,
488+// -1);
489+//
490+// ```
491+func (x *Carousel) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
492+
493+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
494+
495+}
496+
497+// Updates an array of accessible states.
498+//
499+// This function should be called by `GtkWidget` types whenever an accessible
500+// state change must be communicated to assistive technologies.
501+//
502+// This function is meant to be used by language bindings.
503+func (x *Carousel) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
504+
505+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
506+
507+}
508+
509+// Gets the ID of the @buildable object.
510+//
511+// `GtkBuilder` sets the name based on the ID attribute
512+// of the &lt;object&gt; tag used to construct the @buildable.
513+func (x *Carousel) GetBuildableId() string {
514+
515+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
516+
517+}
518+
519+// Retrieves the orientation of the @orientable.
520+func (x *Carousel) GetOrientation() gtk.Orientation {
521+
522+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
523+
524+}
525+
526+// Sets the orientation of the @orientable.
527+func (x *Carousel) SetOrientation(OrientationVar gtk.Orientation) {
528+
529+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
530+
531+}
532+
533+func init() {
534+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
535+ if err != nil {
536+ panic(err)
537+ }
538+
539+ core.PuregoSafeRegister(&xNewCarousel, lib, "adw_carousel_new")
540+
541+ core.PuregoSafeRegister(&xCarouselAppend, lib, "adw_carousel_append")
542+ core.PuregoSafeRegister(&xCarouselGetAllowLongSwipes, lib, "adw_carousel_get_allow_long_swipes")
543+ core.PuregoSafeRegister(&xCarouselGetAllowMouseDrag, lib, "adw_carousel_get_allow_mouse_drag")
544+ core.PuregoSafeRegister(&xCarouselGetAllowScrollWheel, lib, "adw_carousel_get_allow_scroll_wheel")
545+ core.PuregoSafeRegister(&xCarouselGetInteractive, lib, "adw_carousel_get_interactive")
546+ core.PuregoSafeRegister(&xCarouselGetNPages, lib, "adw_carousel_get_n_pages")
547+ core.PuregoSafeRegister(&xCarouselGetNthPage, lib, "adw_carousel_get_nth_page")
548+ core.PuregoSafeRegister(&xCarouselGetPosition, lib, "adw_carousel_get_position")
549+ core.PuregoSafeRegister(&xCarouselGetRevealDuration, lib, "adw_carousel_get_reveal_duration")
550+ core.PuregoSafeRegister(&xCarouselGetScrollParams, lib, "adw_carousel_get_scroll_params")
551+ core.PuregoSafeRegister(&xCarouselGetSpacing, lib, "adw_carousel_get_spacing")
552+ core.PuregoSafeRegister(&xCarouselInsert, lib, "adw_carousel_insert")
553+ core.PuregoSafeRegister(&xCarouselPrepend, lib, "adw_carousel_prepend")
554+ core.PuregoSafeRegister(&xCarouselRemove, lib, "adw_carousel_remove")
555+ core.PuregoSafeRegister(&xCarouselReorder, lib, "adw_carousel_reorder")
556+ core.PuregoSafeRegister(&xCarouselScrollTo, lib, "adw_carousel_scroll_to")
557+ core.PuregoSafeRegister(&xCarouselSetAllowLongSwipes, lib, "adw_carousel_set_allow_long_swipes")
558+ core.PuregoSafeRegister(&xCarouselSetAllowMouseDrag, lib, "adw_carousel_set_allow_mouse_drag")
559+ core.PuregoSafeRegister(&xCarouselSetAllowScrollWheel, lib, "adw_carousel_set_allow_scroll_wheel")
560+ core.PuregoSafeRegister(&xCarouselSetInteractive, lib, "adw_carousel_set_interactive")
561+ core.PuregoSafeRegister(&xCarouselSetRevealDuration, lib, "adw_carousel_set_reveal_duration")
562+ core.PuregoSafeRegister(&xCarouselSetScrollParams, lib, "adw_carousel_set_scroll_params")
563+ core.PuregoSafeRegister(&xCarouselSetSpacing, lib, "adw_carousel_set_spacing")
564+
565+}
A v4/adw/adw-clamp-layout.go +150 -0
@@ -0,0 +1,150 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gtk"
8+)
9+
10+type ClampLayoutClass struct {
11+ ParentClass uintptr
12+}
13+
14+// A layout manager constraining its children to a given size.
15+//
16+// &lt;picture&gt;
17+//
18+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
19+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
20+//
21+// &lt;/picture&gt;
22+// &lt;picture&gt;
23+//
24+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
25+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
26+//
27+// &lt;/picture&gt;
28+//
29+// `AdwClampLayout` constraints the size of the widgets it contains to a given
30+// maximum size. It will constrain the width if it is horizontal, or the height
31+// if it is vertical. The expansion of the children from their minimum to their
32+// maximum size is eased out for a smooth transition.
33+//
34+// If a child requires more than the requested maximum size, it will be
35+// allocated the minimum size it can fit in instead.
36+//
37+// Each child will get the style classes .large when it reached its maximum
38+// size, .small when it's allocated the full size, .medium in-between, or none
39+// if it hasn't been allocated yet.
40+type ClampLayout struct {
41+ gtk.LayoutManager
42+}
43+
44+func ClampLayoutNewFromInternalPtr(ptr uintptr) *ClampLayout {
45+ cls := &ClampLayout{}
46+ cls.Ptr = ptr
47+ return cls
48+}
49+
50+var xNewClampLayout func() uintptr
51+
52+// Creates a new `AdwClampLayout`.
53+func NewClampLayout() *gtk.LayoutManager {
54+ NewClampLayoutPtr := xNewClampLayout()
55+ if NewClampLayoutPtr == 0 {
56+ return nil
57+ }
58+
59+ NewClampLayoutCls := &gtk.LayoutManager{}
60+ NewClampLayoutCls.Ptr = NewClampLayoutPtr
61+ return NewClampLayoutCls
62+}
63+
64+var xClampLayoutGetMaximumSize func(uintptr) int32
65+
66+// Gets the maximum size allocated to the children.
67+func (x *ClampLayout) GetMaximumSize() int32 {
68+
69+ return xClampLayoutGetMaximumSize(x.GoPointer())
70+
71+}
72+
73+var xClampLayoutGetTighteningThreshold func(uintptr) int32
74+
75+// Gets the size above which the children are clamped.
76+func (x *ClampLayout) GetTighteningThreshold() int32 {
77+
78+ return xClampLayoutGetTighteningThreshold(x.GoPointer())
79+
80+}
81+
82+var xClampLayoutSetMaximumSize func(uintptr, int32)
83+
84+// Sets the maximum size allocated to the children.
85+//
86+// It is the width if the layout is horizontal, or the height if it is vertical.
87+func (x *ClampLayout) SetMaximumSize(MaximumSizeVar int32) {
88+
89+ xClampLayoutSetMaximumSize(x.GoPointer(), MaximumSizeVar)
90+
91+}
92+
93+var xClampLayoutSetTighteningThreshold func(uintptr, int32)
94+
95+// Sets the size above which the children are clamped.
96+//
97+// Starting from this size, the layout will tighten its grip on the children,
98+// slowly allocating less and less of the available size up to the maximum
99+// allocated size. Below that threshold and below the maximum size, the children
100+// will be allocated all the available size.
101+//
102+// If the threshold is greater than the maximum size to allocate to the
103+// children, they will be allocated the whole size up to the maximum. If the
104+// threshold is lower than the minimum size to allocate to the children, that
105+// size will be used as the tightening threshold.
106+//
107+// Effectively, tightening the grip on a child before it reaches its maximum
108+// size makes transitions to and from the maximum size smoother when resizing.
109+func (x *ClampLayout) SetTighteningThreshold(TighteningThresholdVar int32) {
110+
111+ xClampLayoutSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
112+
113+}
114+
115+func (c *ClampLayout) GoPointer() uintptr {
116+ return c.Ptr
117+}
118+
119+func (c *ClampLayout) SetGoPointer(ptr uintptr) {
120+ c.Ptr = ptr
121+}
122+
123+// Retrieves the orientation of the @orientable.
124+func (x *ClampLayout) GetOrientation() gtk.Orientation {
125+
126+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
127+
128+}
129+
130+// Sets the orientation of the @orientable.
131+func (x *ClampLayout) SetOrientation(OrientationVar gtk.Orientation) {
132+
133+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
134+
135+}
136+
137+func init() {
138+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
139+ if err != nil {
140+ panic(err)
141+ }
142+
143+ core.PuregoSafeRegister(&xNewClampLayout, lib, "adw_clamp_layout_new")
144+
145+ core.PuregoSafeRegister(&xClampLayoutGetMaximumSize, lib, "adw_clamp_layout_get_maximum_size")
146+ core.PuregoSafeRegister(&xClampLayoutGetTighteningThreshold, lib, "adw_clamp_layout_get_tightening_threshold")
147+ core.PuregoSafeRegister(&xClampLayoutSetMaximumSize, lib, "adw_clamp_layout_set_maximum_size")
148+ core.PuregoSafeRegister(&xClampLayoutSetTighteningThreshold, lib, "adw_clamp_layout_set_tightening_threshold")
149+
150+}
A v4/adw/adw-clamp-scrollable.go +398 -0
@@ -0,0 +1,398 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampScrollableClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A scrollable [class@Clamp].
16+//
17+// `AdwClampScrollable` is a variant of [class@Clamp] that implements the
18+// [iface@Gtk.Scrollable] interface.
19+//
20+// The primary use case for `AdwClampScrollable` is clamping
21+// [class@Gtk.ListView].
22+type ClampScrollable struct {
23+ gtk.Widget
24+}
25+
26+func ClampScrollableNewFromInternalPtr(ptr uintptr) *ClampScrollable {
27+ cls := &ClampScrollable{}
28+ cls.Ptr = ptr
29+ return cls
30+}
31+
32+var xNewClampScrollable func() uintptr
33+
34+// Creates a new `AdwClampScrollable`.
35+func NewClampScrollable() *gtk.Widget {
36+ NewClampScrollablePtr := xNewClampScrollable()
37+ if NewClampScrollablePtr == 0 {
38+ return nil
39+ }
40+
41+ gobject.IncreaseRef(NewClampScrollablePtr)
42+
43+ NewClampScrollableCls := &gtk.Widget{}
44+ NewClampScrollableCls.Ptr = NewClampScrollablePtr
45+ return NewClampScrollableCls
46+}
47+
48+var xClampScrollableGetChild func(uintptr) uintptr
49+
50+// Gets the child widget of @self.
51+func (x *ClampScrollable) GetChild() *gtk.Widget {
52+
53+ GetChildPtr := xClampScrollableGetChild(x.GoPointer())
54+ if GetChildPtr == 0 {
55+ return nil
56+ }
57+
58+ gobject.IncreaseRef(GetChildPtr)
59+
60+ GetChildCls := &gtk.Widget{}
61+ GetChildCls.Ptr = GetChildPtr
62+ return GetChildCls
63+
64+}
65+
66+var xClampScrollableGetMaximumSize func(uintptr) int32
67+
68+// Gets the maximum size allocated to the child.
69+func (x *ClampScrollable) GetMaximumSize() int32 {
70+
71+ return xClampScrollableGetMaximumSize(x.GoPointer())
72+
73+}
74+
75+var xClampScrollableGetTighteningThreshold func(uintptr) int32
76+
77+// Gets the size above which the child is clamped.
78+func (x *ClampScrollable) GetTighteningThreshold() int32 {
79+
80+ return xClampScrollableGetTighteningThreshold(x.GoPointer())
81+
82+}
83+
84+var xClampScrollableSetChild func(uintptr, uintptr)
85+
86+// Sets the child widget of @self.
87+func (x *ClampScrollable) SetChild(ChildVar *gtk.Widget) {
88+
89+ xClampScrollableSetChild(x.GoPointer(), ChildVar.GoPointer())
90+
91+}
92+
93+var xClampScrollableSetMaximumSize func(uintptr, int32)
94+
95+// Sets the maximum size allocated to the child.
96+//
97+// It is the width if the clamp is horizontal, or the height if it is vertical.
98+func (x *ClampScrollable) SetMaximumSize(MaximumSizeVar int32) {
99+
100+ xClampScrollableSetMaximumSize(x.GoPointer(), MaximumSizeVar)
101+
102+}
103+
104+var xClampScrollableSetTighteningThreshold func(uintptr, int32)
105+
106+// Sets the size above which the child is clamped.
107+//
108+// Starting from this size, the clamp will tighten its grip on the child, slowly
109+// allocating less and less of the available size up to the maximum allocated
110+// size. Below that threshold and below the maximum width, the child will be
111+// allocated all the available size.
112+//
113+// If the threshold is greater than the maximum size to allocate to the child,
114+// the child will be allocated all the width up to the maximum. If the threshold
115+// is lower than the minimum size to allocate to the child, that size will be
116+// used as the tightening threshold.
117+//
118+// Effectively, tightening the grip on the child before it reaches its maximum
119+// size makes transitions to and from the maximum size smoother when resizing.
120+func (x *ClampScrollable) SetTighteningThreshold(TighteningThresholdVar int32) {
121+
122+ xClampScrollableSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
123+
124+}
125+
126+func (c *ClampScrollable) GoPointer() uintptr {
127+ return c.Ptr
128+}
129+
130+func (c *ClampScrollable) SetGoPointer(ptr uintptr) {
131+ c.Ptr = ptr
132+}
133+
134+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
135+func (x *ClampScrollable) GetAccessibleRole() gtk.AccessibleRole {
136+
137+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
138+
139+}
140+
141+// Resets the accessible @property to its default value.
142+func (x *ClampScrollable) ResetProperty(PropertyVar gtk.AccessibleProperty) {
143+
144+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
145+
146+}
147+
148+// Resets the accessible @relation to its default value.
149+func (x *ClampScrollable) ResetRelation(RelationVar gtk.AccessibleRelation) {
150+
151+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
152+
153+}
154+
155+// Resets the accessible @state to its default value.
156+func (x *ClampScrollable) ResetState(StateVar gtk.AccessibleState) {
157+
158+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
159+
160+}
161+
162+// Updates a list of accessible properties.
163+//
164+// See the [enum@Gtk.AccessibleProperty] documentation for the
165+// value types of accessible properties.
166+//
167+// This function should be called by `GtkWidget` types whenever
168+// an accessible property change must be communicated to assistive
169+// technologies.
170+//
171+// Example:
172+// ```c
173+// value = gtk_adjustment_get_value (adjustment);
174+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
175+//
176+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
177+// -1);
178+//
179+// ```
180+func (x *ClampScrollable) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
181+
182+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
183+
184+}
185+
186+// Updates an array of accessible properties.
187+//
188+// This function should be called by `GtkWidget` types whenever an accessible
189+// property change must be communicated to assistive technologies.
190+//
191+// This function is meant to be used by language bindings.
192+func (x *ClampScrollable) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
193+
194+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
195+
196+}
197+
198+// Updates a list of accessible relations.
199+//
200+// This function should be called by `GtkWidget` types whenever an accessible
201+// relation change must be communicated to assistive technologies.
202+//
203+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
204+// you should pass each reference individually, followed by %NULL, e.g.
205+//
206+// ```c
207+// gtk_accessible_update_relation (accessible,
208+//
209+// GTK_ACCESSIBLE_RELATION_CONTROLS,
210+// ref1, NULL,
211+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
212+// ref1, ref2, ref3, NULL,
213+// -1);
214+//
215+// ```
216+func (x *ClampScrollable) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
217+
218+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
219+
220+}
221+
222+// Updates an array of accessible relations.
223+//
224+// This function should be called by `GtkWidget` types whenever an accessible
225+// relation change must be communicated to assistive technologies.
226+//
227+// This function is meant to be used by language bindings.
228+func (x *ClampScrollable) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
229+
230+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
231+
232+}
233+
234+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
235+// documentation for the value types of accessible states.
236+//
237+// This function should be called by `GtkWidget` types whenever an accessible
238+// state change must be communicated to assistive technologies.
239+//
240+// Example:
241+// ```c
242+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
243+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
244+//
245+// GTK_ACCESSIBLE_STATE_CHECKED, value,
246+// -1);
247+//
248+// ```
249+func (x *ClampScrollable) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
250+
251+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
252+
253+}
254+
255+// Updates an array of accessible states.
256+//
257+// This function should be called by `GtkWidget` types whenever an accessible
258+// state change must be communicated to assistive technologies.
259+//
260+// This function is meant to be used by language bindings.
261+func (x *ClampScrollable) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
262+
263+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
264+
265+}
266+
267+// Gets the ID of the @buildable object.
268+//
269+// `GtkBuilder` sets the name based on the ID attribute
270+// of the &lt;object&gt; tag used to construct the @buildable.
271+func (x *ClampScrollable) GetBuildableId() string {
272+
273+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
274+
275+}
276+
277+// Retrieves the orientation of the @orientable.
278+func (x *ClampScrollable) GetOrientation() gtk.Orientation {
279+
280+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
281+
282+}
283+
284+// Sets the orientation of the @orientable.
285+func (x *ClampScrollable) SetOrientation(OrientationVar gtk.Orientation) {
286+
287+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
288+
289+}
290+
291+// Returns the size of a non-scrolling border around the
292+// outside of the scrollable.
293+//
294+// An example for this would be treeview headers. GTK can use
295+// this information to display overlaid graphics, like the
296+// overshoot indication, at the right position.
297+func (x *ClampScrollable) GetBorder(BorderVar *gtk.Border) bool {
298+
299+ return gtk.XGtkScrollableGetBorder(x.GoPointer(), BorderVar)
300+
301+}
302+
303+// Retrieves the `GtkAdjustment` used for horizontal scrolling.
304+func (x *ClampScrollable) GetHadjustment() *gtk.Adjustment {
305+
306+ GetHadjustmentPtr := gtk.XGtkScrollableGetHadjustment(x.GoPointer())
307+ if GetHadjustmentPtr == 0 {
308+ return nil
309+ }
310+
311+ gobject.IncreaseRef(GetHadjustmentPtr)
312+
313+ GetHadjustmentCls := &gtk.Adjustment{}
314+ GetHadjustmentCls.Ptr = GetHadjustmentPtr
315+ return GetHadjustmentCls
316+
317+}
318+
319+// Gets the horizontal `GtkScrollablePolicy`.
320+func (x *ClampScrollable) GetHscrollPolicy() gtk.ScrollablePolicy {
321+
322+ return gtk.XGtkScrollableGetHscrollPolicy(x.GoPointer())
323+
324+}
325+
326+// Retrieves the `GtkAdjustment` used for vertical scrolling.
327+func (x *ClampScrollable) GetVadjustment() *gtk.Adjustment {
328+
329+ GetVadjustmentPtr := gtk.XGtkScrollableGetVadjustment(x.GoPointer())
330+ if GetVadjustmentPtr == 0 {
331+ return nil
332+ }
333+
334+ gobject.IncreaseRef(GetVadjustmentPtr)
335+
336+ GetVadjustmentCls := &gtk.Adjustment{}
337+ GetVadjustmentCls.Ptr = GetVadjustmentPtr
338+ return GetVadjustmentCls
339+
340+}
341+
342+// Gets the vertical `GtkScrollablePolicy`.
343+func (x *ClampScrollable) GetVscrollPolicy() gtk.ScrollablePolicy {
344+
345+ return gtk.XGtkScrollableGetVscrollPolicy(x.GoPointer())
346+
347+}
348+
349+// Sets the horizontal adjustment of the `GtkScrollable`.
350+func (x *ClampScrollable) SetHadjustment(HadjustmentVar *gtk.Adjustment) {
351+
352+ gtk.XGtkScrollableSetHadjustment(x.GoPointer(), HadjustmentVar.GoPointer())
353+
354+}
355+
356+// Sets the `GtkScrollablePolicy`.
357+//
358+// The policy determines whether horizontal scrolling should start
359+// below the minimum width or below the natural width.
360+func (x *ClampScrollable) SetHscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
361+
362+ gtk.XGtkScrollableSetHscrollPolicy(x.GoPointer(), PolicyVar)
363+
364+}
365+
366+// Sets the vertical adjustment of the `GtkScrollable`.
367+func (x *ClampScrollable) SetVadjustment(VadjustmentVar *gtk.Adjustment) {
368+
369+ gtk.XGtkScrollableSetVadjustment(x.GoPointer(), VadjustmentVar.GoPointer())
370+
371+}
372+
373+// Sets the `GtkScrollablePolicy`.
374+//
375+// The policy determines whether vertical scrolling should start
376+// below the minimum height or below the natural height.
377+func (x *ClampScrollable) SetVscrollPolicy(PolicyVar gtk.ScrollablePolicy) {
378+
379+ gtk.XGtkScrollableSetVscrollPolicy(x.GoPointer(), PolicyVar)
380+
381+}
382+
383+func init() {
384+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
385+ if err != nil {
386+ panic(err)
387+ }
388+
389+ core.PuregoSafeRegister(&xNewClampScrollable, lib, "adw_clamp_scrollable_new")
390+
391+ core.PuregoSafeRegister(&xClampScrollableGetChild, lib, "adw_clamp_scrollable_get_child")
392+ core.PuregoSafeRegister(&xClampScrollableGetMaximumSize, lib, "adw_clamp_scrollable_get_maximum_size")
393+ core.PuregoSafeRegister(&xClampScrollableGetTighteningThreshold, lib, "adw_clamp_scrollable_get_tightening_threshold")
394+ core.PuregoSafeRegister(&xClampScrollableSetChild, lib, "adw_clamp_scrollable_set_child")
395+ core.PuregoSafeRegister(&xClampScrollableSetMaximumSize, lib, "adw_clamp_scrollable_set_maximum_size")
396+ core.PuregoSafeRegister(&xClampScrollableSetTighteningThreshold, lib, "adw_clamp_scrollable_set_tightening_threshold")
397+
398+}
A v4/adw/adw-clamp.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type ClampClass struct {
12+ ParentClass uintptr
13+}
14+
15+// A widget constraining its child to a given size.
16+//
17+// &lt;picture&gt;
18+//
19+// &lt;source srcset="clamp-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
20+// &lt;img src="clamp-wide.png" alt="clamp-wide"&gt;
21+//
22+// &lt;/picture&gt;
23+// &lt;picture&gt;
24+//
25+// &lt;source srcset="clamp-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
26+// &lt;img src="clamp-narrow.png" alt="clamp-narrow"&gt;
27+//
28+// &lt;/picture&gt;
29+//
30+// The `AdwClamp` widget constrains the size of the widget it contains to a
31+// given maximum size. It will constrain the width if it is horizontal, or the
32+// height if it is vertical. The expansion of the child from its minimum to its
33+// maximum size is eased out for a smooth transition.
34+//
35+// If the child requires more than the requested maximum size, it will be
36+// allocated the minimum size it can fit in instead.
37+//
38+// ## CSS nodes
39+//
40+// `AdwClamp` has a single CSS node with name `clamp`.
41+//
42+// Its children will receive the style classes `.large` when the child reached
43+// its maximum size, `.small` when the clamp allocates its full size to the
44+// child, `.medium` in-between, or none if it hasn't computed its size yet.
45+type Clamp struct {
46+ gtk.Widget
47+}
48+
49+func ClampNewFromInternalPtr(ptr uintptr) *Clamp {
50+ cls := &Clamp{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewClamp func() uintptr
56+
57+// Creates a new `AdwClamp`.
58+func NewClamp() *gtk.Widget {
59+ NewClampPtr := xNewClamp()
60+ if NewClampPtr == 0 {
61+ return nil
62+ }
63+
64+ gobject.IncreaseRef(NewClampPtr)
65+
66+ NewClampCls := &gtk.Widget{}
67+ NewClampCls.Ptr = NewClampPtr
68+ return NewClampCls
69+}
70+
71+var xClampGetChild func(uintptr) uintptr
72+
73+// Gets the child widget of @self.
74+func (x *Clamp) GetChild() *gtk.Widget {
75+
76+ GetChildPtr := xClampGetChild(x.GoPointer())
77+ if GetChildPtr == 0 {
78+ return nil
79+ }
80+
81+ gobject.IncreaseRef(GetChildPtr)
82+
83+ GetChildCls := &gtk.Widget{}
84+ GetChildCls.Ptr = GetChildPtr
85+ return GetChildCls
86+
87+}
88+
89+var xClampGetMaximumSize func(uintptr) int32
90+
91+// Gets the maximum size allocated to the child.
92+func (x *Clamp) GetMaximumSize() int32 {
93+
94+ return xClampGetMaximumSize(x.GoPointer())
95+
96+}
97+
98+var xClampGetTighteningThreshold func(uintptr) int32
99+
100+// Gets the size above which the child is clamped.
101+func (x *Clamp) GetTighteningThreshold() int32 {
102+
103+ return xClampGetTighteningThreshold(x.GoPointer())
104+
105+}
106+
107+var xClampSetChild func(uintptr, uintptr)
108+
109+// Sets the child widget of @self.
110+func (x *Clamp) SetChild(ChildVar *gtk.Widget) {
111+
112+ xClampSetChild(x.GoPointer(), ChildVar.GoPointer())
113+
114+}
115+
116+var xClampSetMaximumSize func(uintptr, int32)
117+
118+// Sets the maximum size allocated to the child.
119+//
120+// It is the width if the clamp is horizontal, or the height if it is vertical.
121+func (x *Clamp) SetMaximumSize(MaximumSizeVar int32) {
122+
123+ xClampSetMaximumSize(x.GoPointer(), MaximumSizeVar)
124+
125+}
126+
127+var xClampSetTighteningThreshold func(uintptr, int32)
128+
129+// Sets the size above which the child is clamped.
130+//
131+// Starting from this size, the clamp will tighten its grip on the child, slowly
132+// allocating less and less of the available size up to the maximum allocated
133+// size. Below that threshold and below the maximum size, the child will be
134+// allocated all the available size.
135+//
136+// If the threshold is greater than the maximum size to allocate to the child,
137+// the child will be allocated all the size up to the maximum. If the threshold
138+// is lower than the minimum size to allocate to the child, that size will be
139+// used as the tightening threshold.
140+//
141+// Effectively, tightening the grip on the child before it reaches its maximum
142+// size makes transitions to and from the maximum size smoother when resizing.
143+func (x *Clamp) SetTighteningThreshold(TighteningThresholdVar int32) {
144+
145+ xClampSetTighteningThreshold(x.GoPointer(), TighteningThresholdVar)
146+
147+}
148+
149+func (c *Clamp) GoPointer() uintptr {
150+ return c.Ptr
151+}
152+
153+func (c *Clamp) SetGoPointer(ptr uintptr) {
154+ c.Ptr = ptr
155+}
156+
157+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
158+func (x *Clamp) GetAccessibleRole() gtk.AccessibleRole {
159+
160+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
161+
162+}
163+
164+// Resets the accessible @property to its default value.
165+func (x *Clamp) ResetProperty(PropertyVar gtk.AccessibleProperty) {
166+
167+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
168+
169+}
170+
171+// Resets the accessible @relation to its default value.
172+func (x *Clamp) ResetRelation(RelationVar gtk.AccessibleRelation) {
173+
174+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
175+
176+}
177+
178+// Resets the accessible @state to its default value.
179+func (x *Clamp) ResetState(StateVar gtk.AccessibleState) {
180+
181+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
182+
183+}
184+
185+// Updates a list of accessible properties.
186+//
187+// See the [enum@Gtk.AccessibleProperty] documentation for the
188+// value types of accessible properties.
189+//
190+// This function should be called by `GtkWidget` types whenever
191+// an accessible property change must be communicated to assistive
192+// technologies.
193+//
194+// Example:
195+// ```c
196+// value = gtk_adjustment_get_value (adjustment);
197+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
198+//
199+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
200+// -1);
201+//
202+// ```
203+func (x *Clamp) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
204+
205+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
206+
207+}
208+
209+// Updates an array of accessible properties.
210+//
211+// This function should be called by `GtkWidget` types whenever an accessible
212+// property change must be communicated to assistive technologies.
213+//
214+// This function is meant to be used by language bindings.
215+func (x *Clamp) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
216+
217+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
218+
219+}
220+
221+// Updates a list of accessible relations.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// relation change must be communicated to assistive technologies.
225+//
226+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
227+// you should pass each reference individually, followed by %NULL, e.g.
228+//
229+// ```c
230+// gtk_accessible_update_relation (accessible,
231+//
232+// GTK_ACCESSIBLE_RELATION_CONTROLS,
233+// ref1, NULL,
234+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
235+// ref1, ref2, ref3, NULL,
236+// -1);
237+//
238+// ```
239+func (x *Clamp) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
240+
241+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
242+
243+}
244+
245+// Updates an array of accessible relations.
246+//
247+// This function should be called by `GtkWidget` types whenever an accessible
248+// relation change must be communicated to assistive technologies.
249+//
250+// This function is meant to be used by language bindings.
251+func (x *Clamp) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
252+
253+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
254+
255+}
256+
257+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
258+// documentation for the value types of accessible states.
259+//
260+// This function should be called by `GtkWidget` types whenever an accessible
261+// state change must be communicated to assistive technologies.
262+//
263+// Example:
264+// ```c
265+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
266+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
267+//
268+// GTK_ACCESSIBLE_STATE_CHECKED, value,
269+// -1);
270+//
271+// ```
272+func (x *Clamp) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
273+
274+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
275+
276+}
277+
278+// Updates an array of accessible states.
279+//
280+// This function should be called by `GtkWidget` types whenever an accessible
281+// state change must be communicated to assistive technologies.
282+//
283+// This function is meant to be used by language bindings.
284+func (x *Clamp) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
285+
286+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
287+
288+}
289+
290+// Gets the ID of the @buildable object.
291+//
292+// `GtkBuilder` sets the name based on the ID attribute
293+// of the &lt;object&gt; tag used to construct the @buildable.
294+func (x *Clamp) GetBuildableId() string {
295+
296+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
297+
298+}
299+
300+// Retrieves the orientation of the @orientable.
301+func (x *Clamp) GetOrientation() gtk.Orientation {
302+
303+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
304+
305+}
306+
307+// Sets the orientation of the @orientable.
308+func (x *Clamp) SetOrientation(OrientationVar gtk.Orientation) {
309+
310+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
311+
312+}
313+
314+func init() {
315+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
316+ if err != nil {
317+ panic(err)
318+ }
319+
320+ core.PuregoSafeRegister(&xNewClamp, lib, "adw_clamp_new")
321+
322+ core.PuregoSafeRegister(&xClampGetChild, lib, "adw_clamp_get_child")
323+ core.PuregoSafeRegister(&xClampGetMaximumSize, lib, "adw_clamp_get_maximum_size")
324+ core.PuregoSafeRegister(&xClampGetTighteningThreshold, lib, "adw_clamp_get_tightening_threshold")
325+ core.PuregoSafeRegister(&xClampSetChild, lib, "adw_clamp_set_child")
326+ core.PuregoSafeRegister(&xClampSetMaximumSize, lib, "adw_clamp_set_maximum_size")
327+ core.PuregoSafeRegister(&xClampSetTighteningThreshold, lib, "adw_clamp_set_tightening_threshold")
328+
329+}
A v4/adw/adw-combo-row.go +533 -0
@@ -0,0 +1,533 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type ComboRowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A [class@Gtk.ListBoxRow] used to choose from a list of items.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="combo-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="combo-row.png" alt="combo-row"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwComboRow` widget allows the user to choose from a list of valid
29+// choices. The row displays the selected choice. When activated, the row
30+// displays a popover which allows the user to make a new choice.
31+//
32+// Example of an `AdwComboRow` UI definition:
33+// ```xml
34+// &lt;object class="AdwComboRow"&gt;
35+//
36+// &lt;property name="title" translatable="yes"&gt;Combo Row&lt;/property&gt;
37+// &lt;property name="model"&gt;
38+// &lt;object class="GtkStringList"&gt;
39+// &lt;items&gt;
40+// &lt;item translatable="yes"&gt;Foo&lt;/item&gt;
41+// &lt;item translatable="yes"&gt;Bar&lt;/item&gt;
42+// &lt;item translatable="yes"&gt;Baz&lt;/item&gt;
43+// &lt;/items&gt;
44+// &lt;/object&gt;
45+// &lt;/property&gt;
46+//
47+// &lt;/object&gt;
48+// ```
49+//
50+// The [property@ComboRow:selected] and [property@ComboRow:selected-item]
51+// properties can be used to keep track of the selected item and react to their
52+// changes.
53+//
54+// `AdwComboRow` mirrors [class@Gtk.DropDown], see that widget for details.
55+//
56+// `AdwComboRow` is [property@Gtk.ListBoxRow:activatable] if a model is set.
57+//
58+// ## CSS nodes
59+//
60+// `AdwComboRow` has a main CSS node with name `row` and the `.combo` style
61+// class.
62+//
63+// Its popover has the node named `popover` with the `.menu` style class, it
64+// contains a [class@Gtk.ScrolledWindow], which in turn contains a
65+// [class@Gtk.ListView], both are accessible via their regular nodes.
66+//
67+// ## Accessibility
68+//
69+// `AdwComboRow` uses the `GTK_ACCESSIBLE_ROLE_COMBO_BOX` role.
70+type ComboRow struct {
71+ ActionRow
72+}
73+
74+func ComboRowNewFromInternalPtr(ptr uintptr) *ComboRow {
75+ cls := &ComboRow{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewComboRow func() uintptr
81+
82+// Creates a new `AdwComboRow`.
83+func NewComboRow() *gtk.Widget {
84+ NewComboRowPtr := xNewComboRow()
85+ if NewComboRowPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewComboRowPtr)
90+
91+ NewComboRowCls := &gtk.Widget{}
92+ NewComboRowCls.Ptr = NewComboRowPtr
93+ return NewComboRowCls
94+}
95+
96+var xComboRowGetExpression func(uintptr) uintptr
97+
98+// Gets the expression used to obtain strings from items.
99+func (x *ComboRow) GetExpression() *gtk.Expression {
100+
101+ GetExpressionPtr := xComboRowGetExpression(x.GoPointer())
102+ if GetExpressionPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(GetExpressionPtr)
107+
108+ GetExpressionCls := &gtk.Expression{}
109+ GetExpressionCls.Ptr = GetExpressionPtr
110+ return GetExpressionCls
111+
112+}
113+
114+var xComboRowGetFactory func(uintptr) uintptr
115+
116+// Gets the factory for populating list items.
117+func (x *ComboRow) GetFactory() *gtk.ListItemFactory {
118+
119+ GetFactoryPtr := xComboRowGetFactory(x.GoPointer())
120+ if GetFactoryPtr == 0 {
121+ return nil
122+ }
123+
124+ gobject.IncreaseRef(GetFactoryPtr)
125+
126+ GetFactoryCls := &gtk.ListItemFactory{}
127+ GetFactoryCls.Ptr = GetFactoryPtr
128+ return GetFactoryCls
129+
130+}
131+
132+var xComboRowGetListFactory func(uintptr) uintptr
133+
134+// Gets the factory for populating list items in the popup.
135+func (x *ComboRow) GetListFactory() *gtk.ListItemFactory {
136+
137+ GetListFactoryPtr := xComboRowGetListFactory(x.GoPointer())
138+ if GetListFactoryPtr == 0 {
139+ return nil
140+ }
141+
142+ gobject.IncreaseRef(GetListFactoryPtr)
143+
144+ GetListFactoryCls := &gtk.ListItemFactory{}
145+ GetListFactoryCls.Ptr = GetListFactoryPtr
146+ return GetListFactoryCls
147+
148+}
149+
150+var xComboRowGetModel func(uintptr) uintptr
151+
152+// Gets the model that provides the displayed items.
153+func (x *ComboRow) GetModel() *gio.ListModelBase {
154+
155+ GetModelPtr := xComboRowGetModel(x.GoPointer())
156+ if GetModelPtr == 0 {
157+ return nil
158+ }
159+
160+ gobject.IncreaseRef(GetModelPtr)
161+
162+ GetModelCls := &gio.ListModelBase{}
163+ GetModelCls.Ptr = GetModelPtr
164+ return GetModelCls
165+
166+}
167+
168+var xComboRowGetSelected func(uintptr) uint
169+
170+// Gets the position of the selected item.
171+func (x *ComboRow) GetSelected() uint {
172+
173+ return xComboRowGetSelected(x.GoPointer())
174+
175+}
176+
177+var xComboRowGetSelectedItem func(uintptr) uintptr
178+
179+// Gets the selected item.
180+func (x *ComboRow) GetSelectedItem() *gobject.Object {
181+
182+ GetSelectedItemPtr := xComboRowGetSelectedItem(x.GoPointer())
183+ if GetSelectedItemPtr == 0 {
184+ return nil
185+ }
186+
187+ gobject.IncreaseRef(GetSelectedItemPtr)
188+
189+ GetSelectedItemCls := &gobject.Object{}
190+ GetSelectedItemCls.Ptr = GetSelectedItemPtr
191+ return GetSelectedItemCls
192+
193+}
194+
195+var xComboRowGetUseSubtitle func(uintptr) bool
196+
197+// Gets whether to use the current value as the subtitle.
198+func (x *ComboRow) GetUseSubtitle() bool {
199+
200+ return xComboRowGetUseSubtitle(x.GoPointer())
201+
202+}
203+
204+var xComboRowSetExpression func(uintptr, uintptr)
205+
206+// Sets the expression used to obtain strings from items.
207+//
208+// The expression must have a value type of `G_TYPE_STRING`.
209+//
210+// It's used to bind strings to labels produced by the default factory if
211+// [property@ComboRow:factory] is not set, or when
212+// [property@ComboRow:use-subtitle] is set to `TRUE`.
213+func (x *ComboRow) SetExpression(ExpressionVar *gtk.Expression) {
214+
215+ xComboRowSetExpression(x.GoPointer(), ExpressionVar.GoPointer())
216+
217+}
218+
219+var xComboRowSetFactory func(uintptr, uintptr)
220+
221+// Sets the factory for populating list items.
222+//
223+// This factory is always used for the item in the row. It is also used for
224+// items in the popup unless [property@ComboRow:list-factory] is set.
225+func (x *ComboRow) SetFactory(FactoryVar *gtk.ListItemFactory) {
226+
227+ xComboRowSetFactory(x.GoPointer(), FactoryVar.GoPointer())
228+
229+}
230+
231+var xComboRowSetListFactory func(uintptr, uintptr)
232+
233+// Sets the factory for populating list items in the popup.
234+//
235+// If this is not set, [property@ComboRow:factory] is used.
236+func (x *ComboRow) SetListFactory(FactoryVar *gtk.ListItemFactory) {
237+
238+ xComboRowSetListFactory(x.GoPointer(), FactoryVar.GoPointer())
239+
240+}
241+
242+var xComboRowSetModel func(uintptr, uintptr)
243+
244+// Sets the model that provides the displayed items.
245+func (x *ComboRow) SetModel(ModelVar gio.ListModel) {
246+
247+ xComboRowSetModel(x.GoPointer(), ModelVar.GoPointer())
248+
249+}
250+
251+var xComboRowSetSelected func(uintptr, uint)
252+
253+// Selects the item at the given position.
254+func (x *ComboRow) SetSelected(PositionVar uint) {
255+
256+ xComboRowSetSelected(x.GoPointer(), PositionVar)
257+
258+}
259+
260+var xComboRowSetUseSubtitle func(uintptr, bool)
261+
262+// Sets whether to use the current value as the subtitle.
263+//
264+// If you use a custom list item factory, you will need to give the row a
265+// name conversion expression with [property@ComboRow:expression].
266+//
267+// If set to `TRUE`, you should not access [property@ActionRow:subtitle].
268+//
269+// The subtitle is interpreted as Pango markup if
270+// [property@PreferencesRow:use-markup] is set to `TRUE`.
271+func (x *ComboRow) SetUseSubtitle(UseSubtitleVar bool) {
272+
273+ xComboRowSetUseSubtitle(x.GoPointer(), UseSubtitleVar)
274+
275+}
276+
277+func (c *ComboRow) GoPointer() uintptr {
278+ return c.Ptr
279+}
280+
281+func (c *ComboRow) SetGoPointer(ptr uintptr) {
282+ c.Ptr = ptr
283+}
284+
285+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
286+func (x *ComboRow) GetAccessibleRole() gtk.AccessibleRole {
287+
288+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
289+
290+}
291+
292+// Resets the accessible @property to its default value.
293+func (x *ComboRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
294+
295+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
296+
297+}
298+
299+// Resets the accessible @relation to its default value.
300+func (x *ComboRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
301+
302+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
303+
304+}
305+
306+// Resets the accessible @state to its default value.
307+func (x *ComboRow) ResetState(StateVar gtk.AccessibleState) {
308+
309+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
310+
311+}
312+
313+// Updates a list of accessible properties.
314+//
315+// See the [enum@Gtk.AccessibleProperty] documentation for the
316+// value types of accessible properties.
317+//
318+// This function should be called by `GtkWidget` types whenever
319+// an accessible property change must be communicated to assistive
320+// technologies.
321+//
322+// Example:
323+// ```c
324+// value = gtk_adjustment_get_value (adjustment);
325+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
326+//
327+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
328+// -1);
329+//
330+// ```
331+func (x *ComboRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
332+
333+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
334+
335+}
336+
337+// Updates an array of accessible properties.
338+//
339+// This function should be called by `GtkWidget` types whenever an accessible
340+// property change must be communicated to assistive technologies.
341+//
342+// This function is meant to be used by language bindings.
343+func (x *ComboRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
344+
345+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
346+
347+}
348+
349+// Updates a list of accessible relations.
350+//
351+// This function should be called by `GtkWidget` types whenever an accessible
352+// relation change must be communicated to assistive technologies.
353+//
354+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
355+// you should pass each reference individually, followed by %NULL, e.g.
356+//
357+// ```c
358+// gtk_accessible_update_relation (accessible,
359+//
360+// GTK_ACCESSIBLE_RELATION_CONTROLS,
361+// ref1, NULL,
362+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
363+// ref1, ref2, ref3, NULL,
364+// -1);
365+//
366+// ```
367+func (x *ComboRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible relations.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// relation change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *ComboRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
386+// documentation for the value types of accessible states.
387+//
388+// This function should be called by `GtkWidget` types whenever an accessible
389+// state change must be communicated to assistive technologies.
390+//
391+// Example:
392+// ```c
393+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
394+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
395+//
396+// GTK_ACCESSIBLE_STATE_CHECKED, value,
397+// -1);
398+//
399+// ```
400+func (x *ComboRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
401+
402+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
403+
404+}
405+
406+// Updates an array of accessible states.
407+//
408+// This function should be called by `GtkWidget` types whenever an accessible
409+// state change must be communicated to assistive technologies.
410+//
411+// This function is meant to be used by language bindings.
412+func (x *ComboRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
413+
414+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
415+
416+}
417+
418+// Gets the action name for @actionable.
419+func (x *ComboRow) GetActionName() string {
420+
421+ return gtk.XGtkActionableGetActionName(x.GoPointer())
422+
423+}
424+
425+// Gets the current target value of @actionable.
426+func (x *ComboRow) GetActionTargetValue() *glib.Variant {
427+
428+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
429+
430+}
431+
432+// Specifies the name of the action with which this widget should be
433+// associated.
434+//
435+// If @action_name is %NULL then the widget will be unassociated from
436+// any previous action.
437+//
438+// Usually this function is used when the widget is located (or will be
439+// located) within the hierarchy of a `GtkApplicationWindow`.
440+//
441+// Names are of the form “win.save” or “app.quit” for actions on the
442+// containing [class@ApplicationWindow] or its associated [class@Application],
443+// respectively. This is the same form used for actions in the [class@Gio.Menu]
444+// associated with the window.
445+func (x *ComboRow) SetActionName(ActionNameVar string) {
446+
447+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
448+
449+}
450+
451+// Sets the target of an actionable widget.
452+//
453+// This is a convenience function that calls [ctor@GLib.Variant.new] for
454+// @format_string and uses the result to call
455+// [method@Gtk.Actionable.set_action_target_value].
456+//
457+// If you are setting a string-valued target and want to set
458+// the action name at the same time, you can use
459+// [method@Gtk.Actionable.set_detailed_action_name].
460+func (x *ComboRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
461+
462+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
463+
464+}
465+
466+// Sets the target value of an actionable widget.
467+//
468+// If @target_value is %NULL then the target value is unset.
469+//
470+// The target value has two purposes. First, it is used as the parameter
471+// to activation of the action associated with the `GtkActionable` widget.
472+// Second, it is used to determine if the widget should be rendered as
473+// “active” — the widget is active if the state is equal to the given target.
474+//
475+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
476+// with string state in a typical “radio button” situation. Each button
477+// will be associated with the same action, but with a different target
478+// value for that action. Clicking on a particular button will activate
479+// the action with the target of that button, which will typically cause
480+// the action’s state to change to that value. Since the action’s state
481+// is now equal to the target value of the button, the button will now
482+// be rendered as active (and the other buttons, with different targets,
483+// rendered inactive).
484+func (x *ComboRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
485+
486+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
487+
488+}
489+
490+// Sets the action-name and associated string target value of an
491+// actionable widget.
492+//
493+// @detailed_action_name is a string in the format accepted by
494+// [func@Gio.Action.parse_detailed_name].
495+func (x *ComboRow) SetDetailedActionName(DetailedActionNameVar string) {
496+
497+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
498+
499+}
500+
501+// Gets the ID of the @buildable object.
502+//
503+// `GtkBuilder` sets the name based on the ID attribute
504+// of the &lt;object&gt; tag used to construct the @buildable.
505+func (x *ComboRow) GetBuildableId() string {
506+
507+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
508+
509+}
510+
511+func init() {
512+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
513+ if err != nil {
514+ panic(err)
515+ }
516+
517+ core.PuregoSafeRegister(&xNewComboRow, lib, "adw_combo_row_new")
518+
519+ core.PuregoSafeRegister(&xComboRowGetExpression, lib, "adw_combo_row_get_expression")
520+ core.PuregoSafeRegister(&xComboRowGetFactory, lib, "adw_combo_row_get_factory")
521+ core.PuregoSafeRegister(&xComboRowGetListFactory, lib, "adw_combo_row_get_list_factory")
522+ core.PuregoSafeRegister(&xComboRowGetModel, lib, "adw_combo_row_get_model")
523+ core.PuregoSafeRegister(&xComboRowGetSelected, lib, "adw_combo_row_get_selected")
524+ core.PuregoSafeRegister(&xComboRowGetSelectedItem, lib, "adw_combo_row_get_selected_item")
525+ core.PuregoSafeRegister(&xComboRowGetUseSubtitle, lib, "adw_combo_row_get_use_subtitle")
526+ core.PuregoSafeRegister(&xComboRowSetExpression, lib, "adw_combo_row_set_expression")
527+ core.PuregoSafeRegister(&xComboRowSetFactory, lib, "adw_combo_row_set_factory")
528+ core.PuregoSafeRegister(&xComboRowSetListFactory, lib, "adw_combo_row_set_list_factory")
529+ core.PuregoSafeRegister(&xComboRowSetModel, lib, "adw_combo_row_set_model")
530+ core.PuregoSafeRegister(&xComboRowSetSelected, lib, "adw_combo_row_set_selected")
531+ core.PuregoSafeRegister(&xComboRowSetUseSubtitle, lib, "adw_combo_row_set_use_subtitle")
532+
533+}
A v4/adw/adw-easing.go +114 -0
@@ -0,0 +1,114 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// Describes the available easing functions for use with
10+// [class@TimedAnimation].
11+//
12+// New values may be added to this enumeration over time.
13+type Easing int
14+
15+const (
16+
17+ // Linear tweening.
18+ LinearValue Easing = 0
19+ // Quadratic tweening.
20+ EaseInQuadValue Easing = 1
21+ // Quadratic tweening, inverse of `ADW_EASE_IN_QUAD`.
22+ EaseOutQuadValue Easing = 2
23+ // Quadratic tweening, combining `ADW_EASE_IN_QUAD` and
24+ // `ADW_EASE_OUT_QUAD`.
25+ EaseInOutQuadValue Easing = 3
26+ // Cubic tweening.
27+ EaseInCubicValue Easing = 4
28+ // Cubic tweening, inverse of `ADW_EASE_IN_CUBIC`.
29+ EaseOutCubicValue Easing = 5
30+ // Cubic tweening, combining `ADW_EASE_IN_CUBIC` and
31+ // `ADW_EASE_OUT_CUBIC`.
32+ EaseInOutCubicValue Easing = 6
33+ // Quartic tweening.
34+ EaseInQuartValue Easing = 7
35+ // Quartic tweening, inverse of `ADW_EASE_IN_QUART`.
36+ EaseOutQuartValue Easing = 8
37+ // Quartic tweening, combining `ADW_EASE_IN_QUART` and
38+ // `ADW_EASE_OUT_QUART`.
39+ EaseInOutQuartValue Easing = 9
40+ // Quintic tweening.
41+ EaseInQuintValue Easing = 10
42+ // Quintic tweening, inverse of `ADW_EASE_IN_QUINT`.
43+ EaseOutQuintValue Easing = 11
44+ // Quintic tweening, combining `ADW_EASE_IN_QUINT` and
45+ // `ADW_EASE_OUT_QUINT`.
46+ EaseInOutQuintValue Easing = 12
47+ // Sine wave tweening.
48+ EaseInSineValue Easing = 13
49+ // Sine wave tweening, inverse of `ADW_EASE_IN_SINE`.
50+ EaseOutSineValue Easing = 14
51+ // Sine wave tweening, combining `ADW_EASE_IN_SINE` and
52+ // `ADW_EASE_OUT_SINE`.
53+ EaseInOutSineValue Easing = 15
54+ // Exponential tweening.
55+ EaseInExpoValue Easing = 16
56+ // Exponential tweening, inverse of `ADW_EASE_IN_EXPO`.
57+ EaseOutExpoValue Easing = 17
58+ // Exponential tweening, combining `ADW_EASE_IN_EXPO` and
59+ // `ADW_EASE_OUT_EXPO`.
60+ EaseInOutExpoValue Easing = 18
61+ // Circular tweening.
62+ EaseInCircValue Easing = 19
63+ // Circular tweening, inverse of `ADW_EASE_IN_CIRC`.
64+ EaseOutCircValue Easing = 20
65+ // Circular tweening, combining `ADW_EASE_IN_CIRC` and
66+ // `ADW_EASE_OUT_CIRC`.
67+ EaseInOutCircValue Easing = 21
68+ // Elastic tweening, with offshoot on start.
69+ EaseInElasticValue Easing = 22
70+ // Elastic tweening, with offshoot on end, inverse of
71+ // `ADW_EASE_IN_ELASTIC`.
72+ EaseOutElasticValue Easing = 23
73+ // Elastic tweening, with offshoot on both ends,
74+ // combining `ADW_EASE_IN_ELASTIC` and `ADW_EASE_OUT_ELASTIC`.
75+ EaseInOutElasticValue Easing = 24
76+ // Overshooting cubic tweening, with backtracking on start.
77+ EaseInBackValue Easing = 25
78+ // Overshooting cubic tweening, with backtracking on end,
79+ // inverse of `ADW_EASE_IN_BACK`.
80+ EaseOutBackValue Easing = 26
81+ // Overshooting cubic tweening, with backtracking on both
82+ // ends, combining `ADW_EASE_IN_BACK` and `ADW_EASE_OUT_BACK`.
83+ EaseInOutBackValue Easing = 27
84+ // Exponentially decaying parabolic (bounce) tweening,
85+ // on start.
86+ EaseInBounceValue Easing = 28
87+ // Exponentially decaying parabolic (bounce) tweening,
88+ // with bounce on end, inverse of `ADW_EASE_IN_BOUNCE`.
89+ EaseOutBounceValue Easing = 29
90+ // Exponentially decaying parabolic (bounce) tweening,
91+ // with bounce on both ends, combining `ADW_EASE_IN_BOUNCE` and
92+ // `ADW_EASE_OUT_BOUNCE`.
93+ EaseInOutBounceValue Easing = 30
94+)
95+
96+var xEasingEase func(Easing, float64) float64
97+
98+// Computes easing with @easing for @value.
99+//
100+// @value should generally be in the [0, 1] range.
101+func EasingEase(SelfVar Easing, ValueVar float64) float64 {
102+
103+ return xEasingEase(SelfVar, ValueVar)
104+
105+}
106+
107+func init() {
108+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
109+ if err != nil {
110+ panic(err)
111+ }
112+ core.PuregoSafeRegister(&xEasingEase, lib, "adw_easing_ease")
113+
114+}
A v4/adw/adw-entry-row.go +772 -0
@@ -0,0 +1,772 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+ "github.com/jwijenbergh/puregotk/v4/pango"
11+)
12+
13+type EntryRowClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A [class@Gtk.ListBoxRow] with an embedded text entry.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="entry-row.png" alt="entry-row"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwEntryRow` has a title that doubles as placeholder text. It shows an icon
27+// indicating that it's editable and can receive additional widgets before or
28+// after the editable part.
29+//
30+// If [property@EntryRow:show-apply-button] is set to `TRUE`, `AdwEntryRow` can
31+// show an apply button when editing its contents. This can be useful if
32+// changing its contents can result in an expensive operation, such as network
33+// activity.
34+//
35+// `AdwEntryRow` provides only minimal API and should be used with the
36+// [iface@Gtk.Editable] API.
37+//
38+// See also [class@PasswordEntryRow].
39+//
40+// ## AdwEntryRow as GtkBuildable
41+//
42+// The `AdwEntryRow` implementation of the [iface@Gtk.Buildable] interface
43+// supports adding a child at its end by specifying “suffix” or omitting the
44+// “type” attribute of a &lt;child&gt; element.
45+//
46+// It also supports adding a child as a prefix widget by specifying “prefix” as
47+// the “type” attribute of a &lt;child&gt; element.
48+//
49+// ## CSS nodes
50+//
51+// `AdwEntryRow` has a single CSS node with name `row` and the `.entry` style
52+// class.
53+type EntryRow struct {
54+ PreferencesRow
55+}
56+
57+func EntryRowNewFromInternalPtr(ptr uintptr) *EntryRow {
58+ cls := &EntryRow{}
59+ cls.Ptr = ptr
60+ return cls
61+}
62+
63+var xNewEntryRow func() uintptr
64+
65+// Creates a new `AdwEntryRow`.
66+func NewEntryRow() *gtk.Widget {
67+ NewEntryRowPtr := xNewEntryRow()
68+ if NewEntryRowPtr == 0 {
69+ return nil
70+ }
71+
72+ gobject.IncreaseRef(NewEntryRowPtr)
73+
74+ NewEntryRowCls := &gtk.Widget{}
75+ NewEntryRowCls.Ptr = NewEntryRowPtr
76+ return NewEntryRowCls
77+}
78+
79+var xEntryRowAddPrefix func(uintptr, uintptr)
80+
81+// Adds a prefix widget to @self.
82+func (x *EntryRow) AddPrefix(WidgetVar *gtk.Widget) {
83+
84+ xEntryRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
85+
86+}
87+
88+var xEntryRowAddSuffix func(uintptr, uintptr)
89+
90+// Adds a suffix widget to @self.
91+func (x *EntryRow) AddSuffix(WidgetVar *gtk.Widget) {
92+
93+ xEntryRowAddSuffix(x.GoPointer(), WidgetVar.GoPointer())
94+
95+}
96+
97+var xEntryRowGetActivatesDefault func(uintptr) bool
98+
99+// Gets whether activating the embedded entry can activate the default widget.
100+func (x *EntryRow) GetActivatesDefault() bool {
101+
102+ return xEntryRowGetActivatesDefault(x.GoPointer())
103+
104+}
105+
106+var xEntryRowGetAttributes func(uintptr) *pango.AttrList
107+
108+// Gets Pango attributes applied to the text of the embedded entry.
109+func (x *EntryRow) GetAttributes() *pango.AttrList {
110+
111+ return xEntryRowGetAttributes(x.GoPointer())
112+
113+}
114+
115+var xEntryRowGetEnableEmojiCompletion func(uintptr) bool
116+
117+// Gets whether to suggest emoji replacements on @self.
118+func (x *EntryRow) GetEnableEmojiCompletion() bool {
119+
120+ return xEntryRowGetEnableEmojiCompletion(x.GoPointer())
121+
122+}
123+
124+var xEntryRowGetInputHints func(uintptr) gtk.InputHints
125+
126+// Gets the additional input hints of @self.
127+func (x *EntryRow) GetInputHints() gtk.InputHints {
128+
129+ return xEntryRowGetInputHints(x.GoPointer())
130+
131+}
132+
133+var xEntryRowGetInputPurpose func(uintptr) gtk.InputPurpose
134+
135+// Gets the input purpose of @self.
136+func (x *EntryRow) GetInputPurpose() gtk.InputPurpose {
137+
138+ return xEntryRowGetInputPurpose(x.GoPointer())
139+
140+}
141+
142+var xEntryRowGetShowApplyButton func(uintptr) bool
143+
144+// Gets whether @self can show the apply button.
145+func (x *EntryRow) GetShowApplyButton() bool {
146+
147+ return xEntryRowGetShowApplyButton(x.GoPointer())
148+
149+}
150+
151+var xEntryRowGrabFocusWithoutSelecting func(uintptr) bool
152+
153+// Causes @self to have keyboard focus without selecting the text.
154+//
155+// See [method@Gtk.Text.grab_focus_without_selecting] for more information.
156+func (x *EntryRow) GrabFocusWithoutSelecting() bool {
157+
158+ return xEntryRowGrabFocusWithoutSelecting(x.GoPointer())
159+
160+}
161+
162+var xEntryRowRemove func(uintptr, uintptr)
163+
164+// Removes a child from @self.
165+func (x *EntryRow) Remove(WidgetVar *gtk.Widget) {
166+
167+ xEntryRowRemove(x.GoPointer(), WidgetVar.GoPointer())
168+
169+}
170+
171+var xEntryRowSetActivatesDefault func(uintptr, bool)
172+
173+// Sets whether activating the embedded entry can activate the default widget.
174+func (x *EntryRow) SetActivatesDefault(ActivatesVar bool) {
175+
176+ xEntryRowSetActivatesDefault(x.GoPointer(), ActivatesVar)
177+
178+}
179+
180+var xEntryRowSetAttributes func(uintptr, *pango.AttrList)
181+
182+// Sets Pango attributes to apply to the text of the embedded entry.
183+//
184+// The [struct@Pango.Attribute]'s `start_index` and `end_index` must refer to
185+// the [class@Gtk.EntryBuffer] text, i.e. without the preedit string.
186+func (x *EntryRow) SetAttributes(AttributesVar *pango.AttrList) {
187+
188+ xEntryRowSetAttributes(x.GoPointer(), AttributesVar)
189+
190+}
191+
192+var xEntryRowSetEnableEmojiCompletion func(uintptr, bool)
193+
194+// Sets whether to suggest emoji replacements on @self.
195+//
196+// Emoji replacement is done with :-delimited names, like `:heart:`.
197+func (x *EntryRow) SetEnableEmojiCompletion(EnableEmojiCompletionVar bool) {
198+
199+ xEntryRowSetEnableEmojiCompletion(x.GoPointer(), EnableEmojiCompletionVar)
200+
201+}
202+
203+var xEntryRowSetInputHints func(uintptr, gtk.InputHints)
204+
205+// Set additional input hints for @self.
206+//
207+// Input hints allow input methods to fine-tune their behavior.
208+//
209+// See also: [property@AdwEntryRow:input-purpose]
210+func (x *EntryRow) SetInputHints(HintsVar gtk.InputHints) {
211+
212+ xEntryRowSetInputHints(x.GoPointer(), HintsVar)
213+
214+}
215+
216+var xEntryRowSetInputPurpose func(uintptr, gtk.InputPurpose)
217+
218+// Sets the input purpose of @self.
219+//
220+// The input purpose can be used by input methods to adjust their behavior.
221+func (x *EntryRow) SetInputPurpose(PurposeVar gtk.InputPurpose) {
222+
223+ xEntryRowSetInputPurpose(x.GoPointer(), PurposeVar)
224+
225+}
226+
227+var xEntryRowSetShowApplyButton func(uintptr, bool)
228+
229+// Sets whether @self can show the apply button.
230+//
231+// When set to `TRUE`, typing text in the entry will reveal an apply button.
232+// Clicking it or pressing the &lt;kbd&gt;Enter&lt;/kbd&gt; key will hide the button and
233+// emit the [signal@EntryRow::apply] signal.
234+//
235+// This is useful if changing the entry contents can trigger an expensive
236+// operation, e.g. network activity, to avoid triggering it after typing every
237+// character.
238+func (x *EntryRow) SetShowApplyButton(ShowApplyButtonVar bool) {
239+
240+ xEntryRowSetShowApplyButton(x.GoPointer(), ShowApplyButtonVar)
241+
242+}
243+
244+func (c *EntryRow) GoPointer() uintptr {
245+ return c.Ptr
246+}
247+
248+func (c *EntryRow) SetGoPointer(ptr uintptr) {
249+ c.Ptr = ptr
250+}
251+
252+// Emitted when the apply button is pressed.
253+//
254+// See [property@EntryRow:show-apply-button].
255+func (x *EntryRow) ConnectApply(cb func(EntryRow)) {
256+ fcb := func(clsPtr uintptr) {
257+ fa := EntryRow{}
258+ fa.Ptr = clsPtr
259+
260+ cb(fa)
261+
262+ }
263+ gobject.ObjectConnect(x.GoPointer(), "signal::apply", purego.NewCallback(fcb))
264+}
265+
266+// Emitted when the embedded entry is activated.
267+func (x *EntryRow) ConnectEntryActivated(cb func(EntryRow)) {
268+ fcb := func(clsPtr uintptr) {
269+ fa := EntryRow{}
270+ fa.Ptr = clsPtr
271+
272+ cb(fa)
273+
274+ }
275+ gobject.ObjectConnect(x.GoPointer(), "signal::entry-activated", purego.NewCallback(fcb))
276+}
277+
278+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
279+func (x *EntryRow) GetAccessibleRole() gtk.AccessibleRole {
280+
281+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
282+
283+}
284+
285+// Resets the accessible @property to its default value.
286+func (x *EntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
287+
288+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
289+
290+}
291+
292+// Resets the accessible @relation to its default value.
293+func (x *EntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
294+
295+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
296+
297+}
298+
299+// Resets the accessible @state to its default value.
300+func (x *EntryRow) ResetState(StateVar gtk.AccessibleState) {
301+
302+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
303+
304+}
305+
306+// Updates a list of accessible properties.
307+//
308+// See the [enum@Gtk.AccessibleProperty] documentation for the
309+// value types of accessible properties.
310+//
311+// This function should be called by `GtkWidget` types whenever
312+// an accessible property change must be communicated to assistive
313+// technologies.
314+//
315+// Example:
316+// ```c
317+// value = gtk_adjustment_get_value (adjustment);
318+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
319+//
320+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
321+// -1);
322+//
323+// ```
324+func (x *EntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
325+
326+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
327+
328+}
329+
330+// Updates an array of accessible properties.
331+//
332+// This function should be called by `GtkWidget` types whenever an accessible
333+// property change must be communicated to assistive technologies.
334+//
335+// This function is meant to be used by language bindings.
336+func (x *EntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
337+
338+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
339+
340+}
341+
342+// Updates a list of accessible relations.
343+//
344+// This function should be called by `GtkWidget` types whenever an accessible
345+// relation change must be communicated to assistive technologies.
346+//
347+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
348+// you should pass each reference individually, followed by %NULL, e.g.
349+//
350+// ```c
351+// gtk_accessible_update_relation (accessible,
352+//
353+// GTK_ACCESSIBLE_RELATION_CONTROLS,
354+// ref1, NULL,
355+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
356+// ref1, ref2, ref3, NULL,
357+// -1);
358+//
359+// ```
360+func (x *EntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
361+
362+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
363+
364+}
365+
366+// Updates an array of accessible relations.
367+//
368+// This function should be called by `GtkWidget` types whenever an accessible
369+// relation change must be communicated to assistive technologies.
370+//
371+// This function is meant to be used by language bindings.
372+func (x *EntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
373+
374+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
375+
376+}
377+
378+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
379+// documentation for the value types of accessible states.
380+//
381+// This function should be called by `GtkWidget` types whenever an accessible
382+// state change must be communicated to assistive technologies.
383+//
384+// Example:
385+// ```c
386+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
387+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
388+//
389+// GTK_ACCESSIBLE_STATE_CHECKED, value,
390+// -1);
391+//
392+// ```
393+func (x *EntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
394+
395+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
396+
397+}
398+
399+// Updates an array of accessible states.
400+//
401+// This function should be called by `GtkWidget` types whenever an accessible
402+// state change must be communicated to assistive technologies.
403+//
404+// This function is meant to be used by language bindings.
405+func (x *EntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
406+
407+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
408+
409+}
410+
411+// Gets the action name for @actionable.
412+func (x *EntryRow) GetActionName() string {
413+
414+ return gtk.XGtkActionableGetActionName(x.GoPointer())
415+
416+}
417+
418+// Gets the current target value of @actionable.
419+func (x *EntryRow) GetActionTargetValue() *glib.Variant {
420+
421+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
422+
423+}
424+
425+// Specifies the name of the action with which this widget should be
426+// associated.
427+//
428+// If @action_name is %NULL then the widget will be unassociated from
429+// any previous action.
430+//
431+// Usually this function is used when the widget is located (or will be
432+// located) within the hierarchy of a `GtkApplicationWindow`.
433+//
434+// Names are of the form “win.save” or “app.quit” for actions on the
435+// containing [class@ApplicationWindow] or its associated [class@Application],
436+// respectively. This is the same form used for actions in the [class@Gio.Menu]
437+// associated with the window.
438+func (x *EntryRow) SetActionName(ActionNameVar string) {
439+
440+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
441+
442+}
443+
444+// Sets the target of an actionable widget.
445+//
446+// This is a convenience function that calls [ctor@GLib.Variant.new] for
447+// @format_string and uses the result to call
448+// [method@Gtk.Actionable.set_action_target_value].
449+//
450+// If you are setting a string-valued target and want to set
451+// the action name at the same time, you can use
452+// [method@Gtk.Actionable.set_detailed_action_name].
453+func (x *EntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
454+
455+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
456+
457+}
458+
459+// Sets the target value of an actionable widget.
460+//
461+// If @target_value is %NULL then the target value is unset.
462+//
463+// The target value has two purposes. First, it is used as the parameter
464+// to activation of the action associated with the `GtkActionable` widget.
465+// Second, it is used to determine if the widget should be rendered as
466+// “active” — the widget is active if the state is equal to the given target.
467+//
468+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
469+// with string state in a typical “radio button” situation. Each button
470+// will be associated with the same action, but with a different target
471+// value for that action. Clicking on a particular button will activate
472+// the action with the target of that button, which will typically cause
473+// the action’s state to change to that value. Since the action’s state
474+// is now equal to the target value of the button, the button will now
475+// be rendered as active (and the other buttons, with different targets,
476+// rendered inactive).
477+func (x *EntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
478+
479+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
480+
481+}
482+
483+// Sets the action-name and associated string target value of an
484+// actionable widget.
485+//
486+// @detailed_action_name is a string in the format accepted by
487+// [func@Gio.Action.parse_detailed_name].
488+func (x *EntryRow) SetDetailedActionName(DetailedActionNameVar string) {
489+
490+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
491+
492+}
493+
494+// Gets the ID of the @buildable object.
495+//
496+// `GtkBuilder` sets the name based on the ID attribute
497+// of the &lt;object&gt; tag used to construct the @buildable.
498+func (x *EntryRow) GetBuildableId() string {
499+
500+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
501+
502+}
503+
504+// Deletes the currently selected text of the editable.
505+//
506+// This call doesn’t do anything if there is no selected text.
507+func (x *EntryRow) DeleteSelection() {
508+
509+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
510+
511+}
512+
513+// Deletes a sequence of characters.
514+//
515+// The characters that are deleted are those characters at positions
516+// from @start_pos up to, but not including @end_pos. If @end_pos is
517+// negative, then the characters deleted are those from @start_pos to
518+// the end of the text.
519+//
520+// Note that the positions are specified in characters, not bytes.
521+func (x *EntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
522+
523+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
524+
525+}
526+
527+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
528+//
529+// This is a helper function that should be called from dispose,
530+// before removing the delegate object.
531+func (x *EntryRow) FinishDelegate() {
532+
533+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
534+
535+}
536+
537+// Gets the alignment of the editable.
538+func (x *EntryRow) GetAlignment() float32 {
539+
540+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
541+
542+}
543+
544+// Retrieves a sequence of characters.
545+//
546+// The characters that are retrieved are those characters at positions
547+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
548+// then the characters retrieved are those characters from @start_pos to
549+// the end of the text.
550+//
551+// Note that positions are specified in characters, not bytes.
552+func (x *EntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
553+
554+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
555+
556+}
557+
558+// Gets the `GtkEditable` that @editable is delegating its
559+// implementation to.
560+//
561+// Typically, the delegate is a [class@Gtk.Text] widget.
562+func (x *EntryRow) GetDelegate() *gtk.EditableBase {
563+
564+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
565+ if GetDelegatePtr == 0 {
566+ return nil
567+ }
568+
569+ gobject.IncreaseRef(GetDelegatePtr)
570+
571+ GetDelegateCls := &gtk.EditableBase{}
572+ GetDelegateCls.Ptr = GetDelegatePtr
573+ return GetDelegateCls
574+
575+}
576+
577+// Retrieves whether @editable is editable.
578+func (x *EntryRow) GetEditable() bool {
579+
580+ return gtk.XGtkEditableGetEditable(x.GoPointer())
581+
582+}
583+
584+// Gets if undo/redo actions are enabled for @editable
585+func (x *EntryRow) GetEnableUndo() bool {
586+
587+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
588+
589+}
590+
591+// Retrieves the desired maximum width of @editable, in characters.
592+func (x *EntryRow) GetMaxWidthChars() int32 {
593+
594+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
595+
596+}
597+
598+// Retrieves the current position of the cursor relative
599+// to the start of the content of the editable.
600+//
601+// Note that this position is in characters, not in bytes.
602+func (x *EntryRow) GetPosition() int32 {
603+
604+ return gtk.XGtkEditableGetPosition(x.GoPointer())
605+
606+}
607+
608+// Retrieves the selection bound of the editable.
609+//
610+// @start_pos will be filled with the start of the selection and
611+// @end_pos with end. If no text was selected both will be identical
612+// and %FALSE will be returned.
613+//
614+// Note that positions are specified in characters, not bytes.
615+func (x *EntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
616+
617+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
618+
619+}
620+
621+// Retrieves the contents of @editable.
622+//
623+// The returned string is owned by GTK and must not be modified or freed.
624+func (x *EntryRow) GetText() string {
625+
626+ return gtk.XGtkEditableGetText(x.GoPointer())
627+
628+}
629+
630+// Gets the number of characters of space reserved
631+// for the contents of the editable.
632+func (x *EntryRow) GetWidthChars() int32 {
633+
634+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
635+
636+}
637+
638+// Sets up a delegate for `GtkEditable`.
639+//
640+// This is assuming that the get_delegate vfunc in the `GtkEditable`
641+// interface has been set up for the @editable's type.
642+//
643+// This is a helper function that should be called in instance init,
644+// after creating the delegate object.
645+func (x *EntryRow) InitDelegate() {
646+
647+ gtk.XGtkEditableInitDelegate(x.GoPointer())
648+
649+}
650+
651+// Inserts @length bytes of @text into the contents of the
652+// widget, at position @position.
653+//
654+// Note that the position is in characters, not in bytes.
655+// The function updates @position to point after the newly
656+// inserted text.
657+func (x *EntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
658+
659+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
660+
661+}
662+
663+// Selects a region of text.
664+//
665+// The characters that are selected are those characters at positions
666+// from @start_pos up to, but not including @end_pos. If @end_pos is
667+// negative, then the characters selected are those characters from
668+// @start_pos to the end of the text.
669+//
670+// Note that positions are specified in characters, not bytes.
671+func (x *EntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
672+
673+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
674+
675+}
676+
677+// Sets the alignment for the contents of the editable.
678+//
679+// This controls the horizontal positioning of the contents when
680+// the displayed text is shorter than the width of the editable.
681+func (x *EntryRow) SetAlignment(XalignVar float32) {
682+
683+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
684+
685+}
686+
687+// Determines if the user can edit the text in the editable widget.
688+func (x *EntryRow) SetEditable(IsEditableVar bool) {
689+
690+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
691+
692+}
693+
694+// If enabled, changes to @editable will be saved for undo/redo
695+// actions.
696+//
697+// This results in an additional copy of text changes and are not
698+// stored in secure memory. As such, undo is forcefully disabled
699+// when [property@Gtk.Text:visibility] is set to %FALSE.
700+func (x *EntryRow) SetEnableUndo(EnableUndoVar bool) {
701+
702+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
703+
704+}
705+
706+// Sets the desired maximum width in characters of @editable.
707+func (x *EntryRow) SetMaxWidthChars(NCharsVar int32) {
708+
709+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
710+
711+}
712+
713+// Sets the cursor position in the editable to the given value.
714+//
715+// The cursor is displayed before the character with the given (base 0)
716+// index in the contents of the editable. The value must be less than
717+// or equal to the number of characters in the editable. A value of -1
718+// indicates that the position should be set after the last character
719+// of the editable. Note that @position is in characters, not in bytes.
720+func (x *EntryRow) SetPosition(PositionVar int32) {
721+
722+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
723+
724+}
725+
726+// Sets the text in the editable to the given value.
727+//
728+// This is replacing the current contents.
729+func (x *EntryRow) SetText(TextVar string) {
730+
731+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
732+
733+}
734+
735+// Changes the size request of the editable to be about the
736+// right size for @n_chars characters.
737+//
738+// Note that it changes the size request, the size can still
739+// be affected by how you pack the widget into containers.
740+// If @n_chars is -1, the size reverts to the default size.
741+func (x *EntryRow) SetWidthChars(NCharsVar int32) {
742+
743+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
744+
745+}
746+
747+func init() {
748+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
749+ if err != nil {
750+ panic(err)
751+ }
752+
753+ core.PuregoSafeRegister(&xNewEntryRow, lib, "adw_entry_row_new")
754+
755+ core.PuregoSafeRegister(&xEntryRowAddPrefix, lib, "adw_entry_row_add_prefix")
756+ core.PuregoSafeRegister(&xEntryRowAddSuffix, lib, "adw_entry_row_add_suffix")
757+ core.PuregoSafeRegister(&xEntryRowGetActivatesDefault, lib, "adw_entry_row_get_activates_default")
758+ core.PuregoSafeRegister(&xEntryRowGetAttributes, lib, "adw_entry_row_get_attributes")
759+ core.PuregoSafeRegister(&xEntryRowGetEnableEmojiCompletion, lib, "adw_entry_row_get_enable_emoji_completion")
760+ core.PuregoSafeRegister(&xEntryRowGetInputHints, lib, "adw_entry_row_get_input_hints")
761+ core.PuregoSafeRegister(&xEntryRowGetInputPurpose, lib, "adw_entry_row_get_input_purpose")
762+ core.PuregoSafeRegister(&xEntryRowGetShowApplyButton, lib, "adw_entry_row_get_show_apply_button")
763+ core.PuregoSafeRegister(&xEntryRowGrabFocusWithoutSelecting, lib, "adw_entry_row_grab_focus_without_selecting")
764+ core.PuregoSafeRegister(&xEntryRowRemove, lib, "adw_entry_row_remove")
765+ core.PuregoSafeRegister(&xEntryRowSetActivatesDefault, lib, "adw_entry_row_set_activates_default")
766+ core.PuregoSafeRegister(&xEntryRowSetAttributes, lib, "adw_entry_row_set_attributes")
767+ core.PuregoSafeRegister(&xEntryRowSetEnableEmojiCompletion, lib, "adw_entry_row_set_enable_emoji_completion")
768+ core.PuregoSafeRegister(&xEntryRowSetInputHints, lib, "adw_entry_row_set_input_hints")
769+ core.PuregoSafeRegister(&xEntryRowSetInputPurpose, lib, "adw_entry_row_set_input_purpose")
770+ core.PuregoSafeRegister(&xEntryRowSetShowApplyButton, lib, "adw_entry_row_set_show_apply_button")
771+
772+}
A v4/adw/adw-enum-list-model.go +224 -0
@@ -0,0 +1,224 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+)
10+
11+type EnumListItemClass struct {
12+ ParentClass uintptr
13+}
14+
15+type EnumListModelClass struct {
16+ ParentClass uintptr
17+}
18+
19+// `AdwEnumListItem` is the type of items in a [class@EnumListModel].
20+type EnumListItem struct {
21+ gobject.Object
22+}
23+
24+func EnumListItemNewFromInternalPtr(ptr uintptr) *EnumListItem {
25+ cls := &EnumListItem{}
26+ cls.Ptr = ptr
27+ return cls
28+}
29+
30+var xEnumListItemGetName func(uintptr) string
31+
32+// Gets the enum value name.
33+func (x *EnumListItem) GetName() string {
34+
35+ return xEnumListItemGetName(x.GoPointer())
36+
37+}
38+
39+var xEnumListItemGetNick func(uintptr) string
40+
41+// Gets the enum value nick.
42+func (x *EnumListItem) GetNick() string {
43+
44+ return xEnumListItemGetNick(x.GoPointer())
45+
46+}
47+
48+var xEnumListItemGetValue func(uintptr) int32
49+
50+// Gets the enum value.
51+func (x *EnumListItem) GetValue() int32 {
52+
53+ return xEnumListItemGetValue(x.GoPointer())
54+
55+}
56+
57+func (c *EnumListItem) GoPointer() uintptr {
58+ return c.Ptr
59+}
60+
61+func (c *EnumListItem) SetGoPointer(ptr uintptr) {
62+ c.Ptr = ptr
63+}
64+
65+// A [iface@Gio.ListModel] representing values of a given enum.
66+//
67+// `AdwEnumListModel` contains objects of type [class@EnumListItem].
68+type EnumListModel struct {
69+ gobject.Object
70+}
71+
72+func EnumListModelNewFromInternalPtr(ptr uintptr) *EnumListModel {
73+ cls := &EnumListModel{}
74+ cls.Ptr = ptr
75+ return cls
76+}
77+
78+var xNewEnumListModel func([]interface{}) uintptr
79+
80+// Creates a new `AdwEnumListModel` for @enum_type.
81+func NewEnumListModel(EnumTypeVar []interface{}) *EnumListModel {
82+ NewEnumListModelPtr := xNewEnumListModel(EnumTypeVar)
83+ if NewEnumListModelPtr == 0 {
84+ return nil
85+ }
86+
87+ NewEnumListModelCls := &EnumListModel{}
88+ NewEnumListModelCls.Ptr = NewEnumListModelPtr
89+ return NewEnumListModelCls
90+}
91+
92+var xEnumListModelFindPosition func(uintptr, int32) uint
93+
94+// Finds the position of a given enum value in @self.
95+func (x *EnumListModel) FindPosition(ValueVar int32) uint {
96+
97+ return xEnumListModelFindPosition(x.GoPointer(), ValueVar)
98+
99+}
100+
101+var xEnumListModelGetEnumType func(uintptr) []interface{}
102+
103+// Gets the type of the enum represented by @self.
104+func (x *EnumListModel) GetEnumType() []interface{} {
105+
106+ return xEnumListModelGetEnumType(x.GoPointer())
107+
108+}
109+
110+func (c *EnumListModel) GoPointer() uintptr {
111+ return c.Ptr
112+}
113+
114+func (c *EnumListModel) SetGoPointer(ptr uintptr) {
115+ c.Ptr = ptr
116+}
117+
118+// Get the item at @position.
119+//
120+// If @position is greater than the number of items in @list, %NULL is
121+// returned.
122+//
123+// %NULL is never returned for an index that is smaller than the length
124+// of the list.
125+//
126+// See also: g_list_model_get_n_items()
127+func (x *EnumListModel) GetItem(PositionVar uint) uintptr {
128+
129+ return gio.XGListModelGetItem(x.GoPointer(), PositionVar)
130+
131+}
132+
133+// Gets the type of the items in @list.
134+//
135+// All items returned from g_list_model_get_item() are of the type
136+// returned by this function, or a subtype, or if the type is an
137+// interface, they are an implementation of that interface.
138+//
139+// The item type of a #GListModel can not change during the life of the
140+// model.
141+func (x *EnumListModel) GetItemType() []interface{} {
142+
143+ return gio.XGListModelGetItemType(x.GoPointer())
144+
145+}
146+
147+// Gets the number of items in @list.
148+//
149+// Depending on the model implementation, calling this function may be
150+// less efficient than iterating the list with increasing values for
151+// @position until g_list_model_get_item() returns %NULL.
152+func (x *EnumListModel) GetNItems() uint {
153+
154+ return gio.XGListModelGetNItems(x.GoPointer())
155+
156+}
157+
158+// Get the item at @position.
159+//
160+// If @position is greater than the number of items in @list, %NULL is
161+// returned.
162+//
163+// %NULL is never returned for an index that is smaller than the length
164+// of the list.
165+//
166+// This function is meant to be used by language bindings in place
167+// of g_list_model_get_item().
168+//
169+// See also: g_list_model_get_n_items()
170+func (x *EnumListModel) GetObject(PositionVar uint) *gobject.Object {
171+
172+ GetObjectPtr := gio.XGListModelGetObject(x.GoPointer(), PositionVar)
173+ if GetObjectPtr == 0 {
174+ return nil
175+ }
176+
177+ GetObjectCls := &gobject.Object{}
178+ GetObjectCls.Ptr = GetObjectPtr
179+ return GetObjectCls
180+
181+}
182+
183+// Emits the #GListModel::items-changed signal on @list.
184+//
185+// This function should only be called by classes implementing
186+// #GListModel. It has to be called after the internal representation
187+// of @list has been updated, because handlers connected to this signal
188+// might query the new state of the list.
189+//
190+// Implementations must only make changes to the model (as visible to
191+// its consumer) in places that will not cause problems for that
192+// consumer. For models that are driven directly by a write API (such
193+// as #GListStore), changes can be reported in response to uses of that
194+// API. For models that represent remote data, changes should only be
195+// made from a fresh mainloop dispatch. It is particularly not
196+// permitted to make changes in response to a call to the #GListModel
197+// consumer API.
198+//
199+// Stated another way: in general, it is assumed that code making a
200+// series of accesses to the model via the API, without returning to the
201+// mainloop, and without calling other code, will continue to view the
202+// same contents of the model.
203+func (x *EnumListModel) ItemsChanged(PositionVar uint, RemovedVar uint, AddedVar uint) {
204+
205+ gio.XGListModelItemsChanged(x.GoPointer(), PositionVar, RemovedVar, AddedVar)
206+
207+}
208+
209+func init() {
210+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
211+ if err != nil {
212+ panic(err)
213+ }
214+
215+ core.PuregoSafeRegister(&xEnumListItemGetName, lib, "adw_enum_list_item_get_name")
216+ core.PuregoSafeRegister(&xEnumListItemGetNick, lib, "adw_enum_list_item_get_nick")
217+ core.PuregoSafeRegister(&xEnumListItemGetValue, lib, "adw_enum_list_item_get_value")
218+
219+ core.PuregoSafeRegister(&xNewEnumListModel, lib, "adw_enum_list_model_new")
220+
221+ core.PuregoSafeRegister(&xEnumListModelFindPosition, lib, "adw_enum_list_model_find_position")
222+ core.PuregoSafeRegister(&xEnumListModelGetEnumType, lib, "adw_enum_list_model_get_enum_type")
223+
224+}
A v4/adw/adw-expander-row.go +509 -0
@@ -0,0 +1,509 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type ExpanderRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to reveal widgets.
19+//
20+// &lt;picture&gt;
21+//
22+// &lt;source srcset="expander-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
23+// &lt;img src="expander-row.png" alt="expander-row"&gt;
24+//
25+// &lt;/picture&gt;
26+//
27+// The `AdwExpanderRow` widget allows the user to reveal or hide widgets below
28+// it. It also allows the user to enable the expansion of the row, allowing to
29+// disable all that the row contains.
30+//
31+// ## AdwExpanderRow as GtkBuildable
32+//
33+// The `AdwExpanderRow` implementation of the [iface@Gtk.Buildable] interface
34+// supports adding a child as an action widget by specifying “action” as the
35+// “type” attribute of a &lt;child&gt; element.
36+//
37+// It also supports adding it as a prefix widget by specifying “prefix” as the
38+// “type” attribute of a &lt;child&gt; element.
39+//
40+// ## CSS nodes
41+//
42+// `AdwExpanderRow` has a main CSS node with name `row` and the `.expander`
43+// style class. It has the `.empty` style class when it contains no children.
44+//
45+// It contains the subnodes `row.header` for its main embedded row,
46+// `list.nested` for the list it can expand, and `image.expander-row-arrow` for
47+// its arrow.
48+type ExpanderRow struct {
49+ PreferencesRow
50+}
51+
52+func ExpanderRowNewFromInternalPtr(ptr uintptr) *ExpanderRow {
53+ cls := &ExpanderRow{}
54+ cls.Ptr = ptr
55+ return cls
56+}
57+
58+var xNewExpanderRow func() uintptr
59+
60+// Creates a new `AdwExpanderRow`.
61+func NewExpanderRow() *gtk.Widget {
62+ NewExpanderRowPtr := xNewExpanderRow()
63+ if NewExpanderRowPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewExpanderRowPtr)
68+
69+ NewExpanderRowCls := &gtk.Widget{}
70+ NewExpanderRowCls.Ptr = NewExpanderRowPtr
71+ return NewExpanderRowCls
72+}
73+
74+var xExpanderRowAddAction func(uintptr, uintptr)
75+
76+// Adds an action widget to @self.
77+func (x *ExpanderRow) AddAction(WidgetVar *gtk.Widget) {
78+
79+ xExpanderRowAddAction(x.GoPointer(), WidgetVar.GoPointer())
80+
81+}
82+
83+var xExpanderRowAddPrefix func(uintptr, uintptr)
84+
85+// Adds a prefix widget to @self.
86+func (x *ExpanderRow) AddPrefix(WidgetVar *gtk.Widget) {
87+
88+ xExpanderRowAddPrefix(x.GoPointer(), WidgetVar.GoPointer())
89+
90+}
91+
92+var xExpanderRowAddRow func(uintptr, uintptr)
93+
94+// Adds a widget to @self.
95+//
96+// The widget will appear in the expanding list below @self.
97+func (x *ExpanderRow) AddRow(ChildVar *gtk.Widget) {
98+
99+ xExpanderRowAddRow(x.GoPointer(), ChildVar.GoPointer())
100+
101+}
102+
103+var xExpanderRowGetEnableExpansion func(uintptr) bool
104+
105+// Gets whether the expansion of @self is enabled.
106+func (x *ExpanderRow) GetEnableExpansion() bool {
107+
108+ return xExpanderRowGetEnableExpansion(x.GoPointer())
109+
110+}
111+
112+var xExpanderRowGetExpanded func(uintptr) bool
113+
114+// Gets whether @self is expanded.
115+func (x *ExpanderRow) GetExpanded() bool {
116+
117+ return xExpanderRowGetExpanded(x.GoPointer())
118+
119+}
120+
121+var xExpanderRowGetIconName func(uintptr) string
122+
123+// Gets the icon name for @self.
124+func (x *ExpanderRow) GetIconName() string {
125+
126+ return xExpanderRowGetIconName(x.GoPointer())
127+
128+}
129+
130+var xExpanderRowGetShowEnableSwitch func(uintptr) bool
131+
132+// Gets whether the switch enabling the expansion of @self is visible.
133+func (x *ExpanderRow) GetShowEnableSwitch() bool {
134+
135+ return xExpanderRowGetShowEnableSwitch(x.GoPointer())
136+
137+}
138+
139+var xExpanderRowGetSubtitle func(uintptr) string
140+
141+// Gets the subtitle for @self.
142+func (x *ExpanderRow) GetSubtitle() string {
143+
144+ return xExpanderRowGetSubtitle(x.GoPointer())
145+
146+}
147+
148+var xExpanderRowGetSubtitleLines func(uintptr) bool
149+
150+// Gets the number of lines at the end of which the subtitle label will be
151+// ellipsized.
152+func (x *ExpanderRow) GetSubtitleLines() bool {
153+
154+ return xExpanderRowGetSubtitleLines(x.GoPointer())
155+
156+}
157+
158+var xExpanderRowGetTitleLines func(uintptr) bool
159+
160+// Gets the number of lines at the end of which the title label will be
161+// ellipsized.
162+func (x *ExpanderRow) GetTitleLines() bool {
163+
164+ return xExpanderRowGetTitleLines(x.GoPointer())
165+
166+}
167+
168+var xExpanderRowRemove func(uintptr, uintptr)
169+
170+func (x *ExpanderRow) Remove(ChildVar *gtk.Widget) {
171+
172+ xExpanderRowRemove(x.GoPointer(), ChildVar.GoPointer())
173+
174+}
175+
176+var xExpanderRowSetEnableExpansion func(uintptr, bool)
177+
178+// Sets whether the expansion of @self is enabled.
179+func (x *ExpanderRow) SetEnableExpansion(EnableExpansionVar bool) {
180+
181+ xExpanderRowSetEnableExpansion(x.GoPointer(), EnableExpansionVar)
182+
183+}
184+
185+var xExpanderRowSetExpanded func(uintptr, bool)
186+
187+// Sets whether @self is expanded.
188+func (x *ExpanderRow) SetExpanded(ExpandedVar bool) {
189+
190+ xExpanderRowSetExpanded(x.GoPointer(), ExpandedVar)
191+
192+}
193+
194+var xExpanderRowSetIconName func(uintptr, string)
195+
196+// Sets the icon name for @self.
197+func (x *ExpanderRow) SetIconName(IconNameVar string) {
198+
199+ xExpanderRowSetIconName(x.GoPointer(), IconNameVar)
200+
201+}
202+
203+var xExpanderRowSetShowEnableSwitch func(uintptr, bool)
204+
205+// Sets whether the switch enabling the expansion of @self is visible.
206+func (x *ExpanderRow) SetShowEnableSwitch(ShowEnableSwitchVar bool) {
207+
208+ xExpanderRowSetShowEnableSwitch(x.GoPointer(), ShowEnableSwitchVar)
209+
210+}
211+
212+var xExpanderRowSetSubtitle func(uintptr, string)
213+
214+// Sets the subtitle for @self.
215+//
216+// The subtitle is interpreted as Pango markup unless
217+// [property@PreferencesRow:use-markup] is set to `FALSE`.
218+func (x *ExpanderRow) SetSubtitle(SubtitleVar string) {
219+
220+ xExpanderRowSetSubtitle(x.GoPointer(), SubtitleVar)
221+
222+}
223+
224+var xExpanderRowSetSubtitleLines func(uintptr, int32)
225+
226+// Sets the number of lines at the end of which the subtitle label will be
227+// ellipsized.
228+//
229+// If the value is 0, the number of lines won't be limited.
230+func (x *ExpanderRow) SetSubtitleLines(SubtitleLinesVar int32) {
231+
232+ xExpanderRowSetSubtitleLines(x.GoPointer(), SubtitleLinesVar)
233+
234+}
235+
236+var xExpanderRowSetTitleLines func(uintptr, int32)
237+
238+// Sets the number of lines at the end of which the title label will be
239+// ellipsized.
240+//
241+// If the value is 0, the number of lines won't be limited.
242+func (x *ExpanderRow) SetTitleLines(TitleLinesVar int32) {
243+
244+ xExpanderRowSetTitleLines(x.GoPointer(), TitleLinesVar)
245+
246+}
247+
248+func (c *ExpanderRow) GoPointer() uintptr {
249+ return c.Ptr
250+}
251+
252+func (c *ExpanderRow) SetGoPointer(ptr uintptr) {
253+ c.Ptr = ptr
254+}
255+
256+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
257+func (x *ExpanderRow) GetAccessibleRole() gtk.AccessibleRole {
258+
259+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
260+
261+}
262+
263+// Resets the accessible @property to its default value.
264+func (x *ExpanderRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
265+
266+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
267+
268+}
269+
270+// Resets the accessible @relation to its default value.
271+func (x *ExpanderRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
272+
273+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
274+
275+}
276+
277+// Resets the accessible @state to its default value.
278+func (x *ExpanderRow) ResetState(StateVar gtk.AccessibleState) {
279+
280+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
281+
282+}
283+
284+// Updates a list of accessible properties.
285+//
286+// See the [enum@Gtk.AccessibleProperty] documentation for the
287+// value types of accessible properties.
288+//
289+// This function should be called by `GtkWidget` types whenever
290+// an accessible property change must be communicated to assistive
291+// technologies.
292+//
293+// Example:
294+// ```c
295+// value = gtk_adjustment_get_value (adjustment);
296+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
297+//
298+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
299+// -1);
300+//
301+// ```
302+func (x *ExpanderRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
303+
304+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
305+
306+}
307+
308+// Updates an array of accessible properties.
309+//
310+// This function should be called by `GtkWidget` types whenever an accessible
311+// property change must be communicated to assistive technologies.
312+//
313+// This function is meant to be used by language bindings.
314+func (x *ExpanderRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
315+
316+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
317+
318+}
319+
320+// Updates a list of accessible relations.
321+//
322+// This function should be called by `GtkWidget` types whenever an accessible
323+// relation change must be communicated to assistive technologies.
324+//
325+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
326+// you should pass each reference individually, followed by %NULL, e.g.
327+//
328+// ```c
329+// gtk_accessible_update_relation (accessible,
330+//
331+// GTK_ACCESSIBLE_RELATION_CONTROLS,
332+// ref1, NULL,
333+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
334+// ref1, ref2, ref3, NULL,
335+// -1);
336+//
337+// ```
338+func (x *ExpanderRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
339+
340+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
341+
342+}
343+
344+// Updates an array of accessible relations.
345+//
346+// This function should be called by `GtkWidget` types whenever an accessible
347+// relation change must be communicated to assistive technologies.
348+//
349+// This function is meant to be used by language bindings.
350+func (x *ExpanderRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
351+
352+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
353+
354+}
355+
356+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
357+// documentation for the value types of accessible states.
358+//
359+// This function should be called by `GtkWidget` types whenever an accessible
360+// state change must be communicated to assistive technologies.
361+//
362+// Example:
363+// ```c
364+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
365+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
366+//
367+// GTK_ACCESSIBLE_STATE_CHECKED, value,
368+// -1);
369+//
370+// ```
371+func (x *ExpanderRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
372+
373+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
374+
375+}
376+
377+// Updates an array of accessible states.
378+//
379+// This function should be called by `GtkWidget` types whenever an accessible
380+// state change must be communicated to assistive technologies.
381+//
382+// This function is meant to be used by language bindings.
383+func (x *ExpanderRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
384+
385+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
386+
387+}
388+
389+// Gets the action name for @actionable.
390+func (x *ExpanderRow) GetActionName() string {
391+
392+ return gtk.XGtkActionableGetActionName(x.GoPointer())
393+
394+}
395+
396+// Gets the current target value of @actionable.
397+func (x *ExpanderRow) GetActionTargetValue() *glib.Variant {
398+
399+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
400+
401+}
402+
403+// Specifies the name of the action with which this widget should be
404+// associated.
405+//
406+// If @action_name is %NULL then the widget will be unassociated from
407+// any previous action.
408+//
409+// Usually this function is used when the widget is located (or will be
410+// located) within the hierarchy of a `GtkApplicationWindow`.
411+//
412+// Names are of the form “win.save” or “app.quit” for actions on the
413+// containing [class@ApplicationWindow] or its associated [class@Application],
414+// respectively. This is the same form used for actions in the [class@Gio.Menu]
415+// associated with the window.
416+func (x *ExpanderRow) SetActionName(ActionNameVar string) {
417+
418+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
419+
420+}
421+
422+// Sets the target of an actionable widget.
423+//
424+// This is a convenience function that calls [ctor@GLib.Variant.new] for
425+// @format_string and uses the result to call
426+// [method@Gtk.Actionable.set_action_target_value].
427+//
428+// If you are setting a string-valued target and want to set
429+// the action name at the same time, you can use
430+// [method@Gtk.Actionable.set_detailed_action_name].
431+func (x *ExpanderRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
432+
433+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
434+
435+}
436+
437+// Sets the target value of an actionable widget.
438+//
439+// If @target_value is %NULL then the target value is unset.
440+//
441+// The target value has two purposes. First, it is used as the parameter
442+// to activation of the action associated with the `GtkActionable` widget.
443+// Second, it is used to determine if the widget should be rendered as
444+// “active” — the widget is active if the state is equal to the given target.
445+//
446+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
447+// with string state in a typical “radio button” situation. Each button
448+// will be associated with the same action, but with a different target
449+// value for that action. Clicking on a particular button will activate
450+// the action with the target of that button, which will typically cause
451+// the action’s state to change to that value. Since the action’s state
452+// is now equal to the target value of the button, the button will now
453+// be rendered as active (and the other buttons, with different targets,
454+// rendered inactive).
455+func (x *ExpanderRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
456+
457+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
458+
459+}
460+
461+// Sets the action-name and associated string target value of an
462+// actionable widget.
463+//
464+// @detailed_action_name is a string in the format accepted by
465+// [func@Gio.Action.parse_detailed_name].
466+func (x *ExpanderRow) SetDetailedActionName(DetailedActionNameVar string) {
467+
468+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
469+
470+}
471+
472+// Gets the ID of the @buildable object.
473+//
474+// `GtkBuilder` sets the name based on the ID attribute
475+// of the &lt;object&gt; tag used to construct the @buildable.
476+func (x *ExpanderRow) GetBuildableId() string {
477+
478+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
479+
480+}
481+
482+func init() {
483+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
484+ if err != nil {
485+ panic(err)
486+ }
487+
488+ core.PuregoSafeRegister(&xNewExpanderRow, lib, "adw_expander_row_new")
489+
490+ core.PuregoSafeRegister(&xExpanderRowAddAction, lib, "adw_expander_row_add_action")
491+ core.PuregoSafeRegister(&xExpanderRowAddPrefix, lib, "adw_expander_row_add_prefix")
492+ core.PuregoSafeRegister(&xExpanderRowAddRow, lib, "adw_expander_row_add_row")
493+ core.PuregoSafeRegister(&xExpanderRowGetEnableExpansion, lib, "adw_expander_row_get_enable_expansion")
494+ core.PuregoSafeRegister(&xExpanderRowGetExpanded, lib, "adw_expander_row_get_expanded")
495+ core.PuregoSafeRegister(&xExpanderRowGetIconName, lib, "adw_expander_row_get_icon_name")
496+ core.PuregoSafeRegister(&xExpanderRowGetShowEnableSwitch, lib, "adw_expander_row_get_show_enable_switch")
497+ core.PuregoSafeRegister(&xExpanderRowGetSubtitle, lib, "adw_expander_row_get_subtitle")
498+ core.PuregoSafeRegister(&xExpanderRowGetSubtitleLines, lib, "adw_expander_row_get_subtitle_lines")
499+ core.PuregoSafeRegister(&xExpanderRowGetTitleLines, lib, "adw_expander_row_get_title_lines")
500+ core.PuregoSafeRegister(&xExpanderRowRemove, lib, "adw_expander_row_remove")
501+ core.PuregoSafeRegister(&xExpanderRowSetEnableExpansion, lib, "adw_expander_row_set_enable_expansion")
502+ core.PuregoSafeRegister(&xExpanderRowSetExpanded, lib, "adw_expander_row_set_expanded")
503+ core.PuregoSafeRegister(&xExpanderRowSetIconName, lib, "adw_expander_row_set_icon_name")
504+ core.PuregoSafeRegister(&xExpanderRowSetShowEnableSwitch, lib, "adw_expander_row_set_show_enable_switch")
505+ core.PuregoSafeRegister(&xExpanderRowSetSubtitle, lib, "adw_expander_row_set_subtitle")
506+ core.PuregoSafeRegister(&xExpanderRowSetSubtitleLines, lib, "adw_expander_row_set_subtitle_lines")
507+ core.PuregoSafeRegister(&xExpanderRowSetTitleLines, lib, "adw_expander_row_set_title_lines")
508+
509+}
A v4/adw/adw-flap.go +739 -0
@@ -0,0 +1,739 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type FlapClass struct {
13+ ParentClass uintptr
14+}
15+
16+// Describes the possible folding behavior of a [class@Flap] widget.
17+type FlapFoldPolicy int
18+
19+const (
20+
21+ // Disable folding, the flap cannot reach narrow
22+ // sizes.
23+ FlapFoldPolicyNeverValue FlapFoldPolicy = 0
24+ // Keep the flap always folded.
25+ FlapFoldPolicyAlwaysValue FlapFoldPolicy = 1
26+ // Fold and unfold the flap based on available
27+ // space.
28+ FlapFoldPolicyAutoValue FlapFoldPolicy = 2
29+)
30+
31+// Describes transitions types of a [class@Flap] widget.
32+//
33+// It determines the type of animation when transitioning between children in a
34+// [class@Flap] widget, as well as which areas can be swiped via
35+// [property@Flap:swipe-to-open] and [property@Flap:swipe-to-close].
36+//
37+// New values may be added to this enum over time.
38+type FlapTransitionType int
39+
40+const (
41+
42+ // The flap slides over the content, which is
43+ // dimmed. When folded, only the flap can be swiped.
44+ FlapTransitionTypeOverValue FlapTransitionType = 0
45+ // The content slides over the flap. Only the
46+ // content can be swiped.
47+ FlapTransitionTypeUnderValue FlapTransitionType = 1
48+ // The flap slides offscreen when hidden,
49+ // neither the flap nor content overlap each other. Both widgets can be
50+ // swiped.
51+ FlapTransitionTypeSlideValue FlapTransitionType = 2
52+)
53+
54+// An adaptive container acting like a box or an overlay.
55+//
56+// &lt;picture&gt;
57+//
58+// &lt;source srcset="flap-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
59+// &lt;img src="flap-wide.png" alt="flap-wide"&gt;
60+//
61+// &lt;/picture&gt;
62+// &lt;picture&gt;
63+//
64+// &lt;source srcset="flap-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
65+// &lt;img src="flap-narrow.png" alt="flap-narrow"&gt;
66+//
67+// &lt;/picture&gt;
68+//
69+// The `AdwFlap` widget can display its children like a [class@Gtk.Box] does or
70+// like a [class@Gtk.Overlay] does, according to the
71+// [property@Flap:fold-policy] value.
72+//
73+// `AdwFlap` has at most three children: [property@Flap:content],
74+// [property@Flap:flap] and [property@Flap:separator]. Content is the primary
75+// child, flap is displayed next to it when unfolded, or overlays it when
76+// folded. Flap can be shown or hidden by changing the
77+// [property@Flap:reveal-flap] value, as well as via swipe gestures if
78+// [property@Flap:swipe-to-open] and/or [property@Flap:swipe-to-close] are set
79+// to `TRUE`.
80+//
81+// Optionally, a separator can be provided, which would be displayed between
82+// the content and the flap when there's no shadow to separate them, depending
83+// on the transition type.
84+//
85+// [property@Flap:flap] is transparent by default; add the
86+// [`.background`](style-classes.html#background) style class to it if this is
87+// unwanted.
88+//
89+// If [property@Flap:modal] is set to `TRUE`, content becomes completely
90+// inaccessible when the flap is revealed while folded.
91+//
92+// The position of the flap and separator children relative to the content is
93+// determined by orientation, as well as the [property@Flap:flap-position]
94+// value.
95+//
96+// Folding the flap will automatically hide the flap widget, and unfolding it
97+// will automatically reveal it. If this behavior is not desired, the
98+// [property@Flap:locked] property can be used to override it.
99+//
100+// Common use cases include sidebars, header bars that need to be able to
101+// overlap the window content (for example, in fullscreen mode) and bottom
102+// sheets.
103+//
104+// ## AdwFlap as GtkBuildable
105+//
106+// The `AdwFlap` implementation of the [iface@Gtk.Buildable] interface supports
107+// setting the flap child by specifying “flap” as the “type” attribute of a
108+// `&lt;child&gt;` element, and separator by specifying “separator”. Specifying
109+// “content” child type or omitting it results in setting the content child.
110+//
111+// ## CSS nodes
112+//
113+// `AdwFlap` has a single CSS node with name `flap`. The node will get the style
114+// classes `.folded` when it is folded, and `.unfolded` when it's not.
115+type Flap struct {
116+ gtk.Widget
117+}
118+
119+func FlapNewFromInternalPtr(ptr uintptr) *Flap {
120+ cls := &Flap{}
121+ cls.Ptr = ptr
122+ return cls
123+}
124+
125+var xNewFlap func() uintptr
126+
127+// Creates a new `AdwFlap`.
128+func NewFlap() *gtk.Widget {
129+ NewFlapPtr := xNewFlap()
130+ if NewFlapPtr == 0 {
131+ return nil
132+ }
133+
134+ gobject.IncreaseRef(NewFlapPtr)
135+
136+ NewFlapCls := &gtk.Widget{}
137+ NewFlapCls.Ptr = NewFlapPtr
138+ return NewFlapCls
139+}
140+
141+var xFlapGetContent func(uintptr) uintptr
142+
143+// Gets the content widget for @self.
144+func (x *Flap) GetContent() *gtk.Widget {
145+
146+ GetContentPtr := xFlapGetContent(x.GoPointer())
147+ if GetContentPtr == 0 {
148+ return nil
149+ }
150+
151+ gobject.IncreaseRef(GetContentPtr)
152+
153+ GetContentCls := &gtk.Widget{}
154+ GetContentCls.Ptr = GetContentPtr
155+ return GetContentCls
156+
157+}
158+
159+var xFlapGetFlap func(uintptr) uintptr
160+
161+// Gets the flap widget for @self.
162+func (x *Flap) GetFlap() *gtk.Widget {
163+
164+ GetFlapPtr := xFlapGetFlap(x.GoPointer())
165+ if GetFlapPtr == 0 {
166+ return nil
167+ }
168+
169+ gobject.IncreaseRef(GetFlapPtr)
170+
171+ GetFlapCls := &gtk.Widget{}
172+ GetFlapCls.Ptr = GetFlapPtr
173+ return GetFlapCls
174+
175+}
176+
177+var xFlapGetFlapPosition func(uintptr) gtk.PackType
178+
179+// Gets the flap position for @self.
180+func (x *Flap) GetFlapPosition() gtk.PackType {
181+
182+ return xFlapGetFlapPosition(x.GoPointer())
183+
184+}
185+
186+var xFlapGetFoldDuration func(uintptr) uint
187+
188+// Gets the fold transition animation duration for @self, in milliseconds.
189+func (x *Flap) GetFoldDuration() uint {
190+
191+ return xFlapGetFoldDuration(x.GoPointer())
192+
193+}
194+
195+var xFlapGetFoldPolicy func(uintptr) FlapFoldPolicy
196+
197+// Gets the fold policy for @self.
198+func (x *Flap) GetFoldPolicy() FlapFoldPolicy {
199+
200+ return xFlapGetFoldPolicy(x.GoPointer())
201+
202+}
203+
204+var xFlapGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
205+
206+// Gets the fold threshold policy for @self.
207+func (x *Flap) GetFoldThresholdPolicy() FoldThresholdPolicy {
208+
209+ return xFlapGetFoldThresholdPolicy(x.GoPointer())
210+
211+}
212+
213+var xFlapGetFolded func(uintptr) bool
214+
215+// Gets whether @self is currently folded.
216+//
217+// See [property@Flap:fold-policy].
218+func (x *Flap) GetFolded() bool {
219+
220+ return xFlapGetFolded(x.GoPointer())
221+
222+}
223+
224+var xFlapGetLocked func(uintptr) bool
225+
226+// Gets whether @self is locked.
227+func (x *Flap) GetLocked() bool {
228+
229+ return xFlapGetLocked(x.GoPointer())
230+
231+}
232+
233+var xFlapGetModal func(uintptr) bool
234+
235+// Gets whether @self is modal.
236+func (x *Flap) GetModal() bool {
237+
238+ return xFlapGetModal(x.GoPointer())
239+
240+}
241+
242+var xFlapGetRevealFlap func(uintptr) bool
243+
244+// Gets whether the flap widget is revealed for @self.
245+func (x *Flap) GetRevealFlap() bool {
246+
247+ return xFlapGetRevealFlap(x.GoPointer())
248+
249+}
250+
251+var xFlapGetRevealParams func(uintptr) *SpringParams
252+
253+// Gets the reveal animation spring parameters for @self.
254+func (x *Flap) GetRevealParams() *SpringParams {
255+
256+ return xFlapGetRevealParams(x.GoPointer())
257+
258+}
259+
260+var xFlapGetRevealProgress func(uintptr) float64
261+
262+// Gets the current reveal progress for @self.
263+//
264+// 0 means fully hidden, 1 means fully revealed.
265+//
266+// See [property@Flap:reveal-flap].
267+func (x *Flap) GetRevealProgress() float64 {
268+
269+ return xFlapGetRevealProgress(x.GoPointer())
270+
271+}
272+
273+var xFlapGetSeparator func(uintptr) uintptr
274+
275+// Gets the separator widget for @self.
276+func (x *Flap) GetSeparator() *gtk.Widget {
277+
278+ GetSeparatorPtr := xFlapGetSeparator(x.GoPointer())
279+ if GetSeparatorPtr == 0 {
280+ return nil
281+ }
282+
283+ gobject.IncreaseRef(GetSeparatorPtr)
284+
285+ GetSeparatorCls := &gtk.Widget{}
286+ GetSeparatorCls.Ptr = GetSeparatorPtr
287+ return GetSeparatorCls
288+
289+}
290+
291+var xFlapGetSwipeToClose func(uintptr) bool
292+
293+// Gets whether @self can be closed with a swipe gesture.
294+func (x *Flap) GetSwipeToClose() bool {
295+
296+ return xFlapGetSwipeToClose(x.GoPointer())
297+
298+}
299+
300+var xFlapGetSwipeToOpen func(uintptr) bool
301+
302+// Gets whether @self can be opened with a swipe gesture.
303+func (x *Flap) GetSwipeToOpen() bool {
304+
305+ return xFlapGetSwipeToOpen(x.GoPointer())
306+
307+}
308+
309+var xFlapGetTransitionType func(uintptr) FlapTransitionType
310+
311+// Gets the type of animation used for reveal and fold transitions in @self.
312+func (x *Flap) GetTransitionType() FlapTransitionType {
313+
314+ return xFlapGetTransitionType(x.GoPointer())
315+
316+}
317+
318+var xFlapSetContent func(uintptr, uintptr)
319+
320+// Sets the content widget for @self.
321+//
322+// It's always displayed when unfolded, and partially visible when folded.
323+func (x *Flap) SetContent(ContentVar *gtk.Widget) {
324+
325+ xFlapSetContent(x.GoPointer(), ContentVar.GoPointer())
326+
327+}
328+
329+var xFlapSetFlap func(uintptr, uintptr)
330+
331+// Sets the flap widget for @self.
332+//
333+// It's only visible when [property@Flap:reveal-progress] is greater than 0.
334+func (x *Flap) SetFlap(FlapVar *gtk.Widget) {
335+
336+ xFlapSetFlap(x.GoPointer(), FlapVar.GoPointer())
337+
338+}
339+
340+var xFlapSetFlapPosition func(uintptr, gtk.PackType)
341+
342+// Sets the flap position for @self.
343+//
344+// If it's set to `GTK_PACK_START`, the flap is displayed before the content,
345+// if `GTK_PACK_END`, it's displayed after the content.
346+func (x *Flap) SetFlapPosition(PositionVar gtk.PackType) {
347+
348+ xFlapSetFlapPosition(x.GoPointer(), PositionVar)
349+
350+}
351+
352+var xFlapSetFoldDuration func(uintptr, uint)
353+
354+// Sets the fold transition animation duration for @self, in milliseconds.
355+func (x *Flap) SetFoldDuration(DurationVar uint) {
356+
357+ xFlapSetFoldDuration(x.GoPointer(), DurationVar)
358+
359+}
360+
361+var xFlapSetFoldPolicy func(uintptr, FlapFoldPolicy)
362+
363+// Sets the fold policy for @self.
364+func (x *Flap) SetFoldPolicy(PolicyVar FlapFoldPolicy) {
365+
366+ xFlapSetFoldPolicy(x.GoPointer(), PolicyVar)
367+
368+}
369+
370+var xFlapSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
371+
372+// Sets the fold threshold policy for @self.
373+//
374+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, flap will only fold when the
375+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
376+// will fold as soon as children don't get their natural size.
377+//
378+// This can be useful if you have a long ellipsizing label and want to let it
379+// ellipsize instead of immediately folding.
380+func (x *Flap) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
381+
382+ xFlapSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
383+
384+}
385+
386+var xFlapSetLocked func(uintptr, bool)
387+
388+// Sets whether @self is locked.
389+//
390+// If `FALSE`, folding when the flap is revealed automatically closes it, and
391+// unfolding it when the flap is not revealed opens it. If `TRUE`,
392+// [property@Flap:reveal-flap] value never changes on its own.
393+func (x *Flap) SetLocked(LockedVar bool) {
394+
395+ xFlapSetLocked(x.GoPointer(), LockedVar)
396+
397+}
398+
399+var xFlapSetModal func(uintptr, bool)
400+
401+// Sets whether @self is modal.
402+//
403+// If `TRUE`, clicking the content widget while flap is revealed, as well as
404+// pressing the &lt;kbd&gt;Esc&lt;/kbd&gt; key, will close the flap. If `FALSE`, clicks are
405+// passed through to the content widget.
406+func (x *Flap) SetModal(ModalVar bool) {
407+
408+ xFlapSetModal(x.GoPointer(), ModalVar)
409+
410+}
411+
412+var xFlapSetRevealFlap func(uintptr, bool)
413+
414+// Sets whether the flap widget is revealed for @self.
415+func (x *Flap) SetRevealFlap(RevealFlapVar bool) {
416+
417+ xFlapSetRevealFlap(x.GoPointer(), RevealFlapVar)
418+
419+}
420+
421+var xFlapSetRevealParams func(uintptr, *SpringParams)
422+
423+// Sets the reveal animation spring parameters for @self.
424+//
425+// The default value is equivalent to:
426+//
427+// ```c
428+// adw_spring_params_new (1, 0.5, 500)
429+// ```
430+func (x *Flap) SetRevealParams(ParamsVar *SpringParams) {
431+
432+ xFlapSetRevealParams(x.GoPointer(), ParamsVar)
433+
434+}
435+
436+var xFlapSetSeparator func(uintptr, uintptr)
437+
438+// Sets the separator widget for @self.
439+//
440+// It's displayed between content and flap when there's no shadow to display.
441+// When exactly it's visible depends on the [property@Flap:transition-type]
442+// value.
443+func (x *Flap) SetSeparator(SeparatorVar *gtk.Widget) {
444+
445+ xFlapSetSeparator(x.GoPointer(), SeparatorVar.GoPointer())
446+
447+}
448+
449+var xFlapSetSwipeToClose func(uintptr, bool)
450+
451+// Sets whether @self can be closed with a swipe gesture.
452+//
453+// The area that can be swiped depends on the [property@Flap:transition-type]
454+// value.
455+func (x *Flap) SetSwipeToClose(SwipeToCloseVar bool) {
456+
457+ xFlapSetSwipeToClose(x.GoPointer(), SwipeToCloseVar)
458+
459+}
460+
461+var xFlapSetSwipeToOpen func(uintptr, bool)
462+
463+// Sets whether @self can be opened with a swipe gesture.
464+//
465+// The area that can be swiped depends on the [property@Flap:transition-type]
466+// value.
467+func (x *Flap) SetSwipeToOpen(SwipeToOpenVar bool) {
468+
469+ xFlapSetSwipeToOpen(x.GoPointer(), SwipeToOpenVar)
470+
471+}
472+
473+var xFlapSetTransitionType func(uintptr, FlapTransitionType)
474+
475+// Sets the type of animation used for reveal and fold transitions in @self.
476+//
477+// [property@Flap:flap] is transparent by default, which means the content will
478+// be seen through it with `ADW_FLAP_TRANSITION_TYPE_OVER` transitions; add the
479+// [`.background`](style-classes.html#background) style class to it if this is
480+// unwanted.
481+func (x *Flap) SetTransitionType(TransitionTypeVar FlapTransitionType) {
482+
483+ xFlapSetTransitionType(x.GoPointer(), TransitionTypeVar)
484+
485+}
486+
487+func (c *Flap) GoPointer() uintptr {
488+ return c.Ptr
489+}
490+
491+func (c *Flap) SetGoPointer(ptr uintptr) {
492+ c.Ptr = ptr
493+}
494+
495+// Gets the progress @self will snap back to after the gesture is canceled.
496+func (x *Flap) GetCancelProgress() float64 {
497+
498+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
499+
500+}
501+
502+// Gets the swipe distance of @self.
503+//
504+// This corresponds to how many pixels 1 unit represents.
505+func (x *Flap) GetDistance() float64 {
506+
507+ return XAdwSwipeableGetDistance(x.GoPointer())
508+
509+}
510+
511+// Gets the current progress of @self.
512+func (x *Flap) GetProgress() float64 {
513+
514+ return XAdwSwipeableGetProgress(x.GoPointer())
515+
516+}
517+
518+// Gets the snap points of @self.
519+//
520+// Each snap point represents a progress value that is considered acceptable to
521+// end the swipe on.
522+func (x *Flap) GetSnapPoints(NSnapPointsVar int32) uintptr {
523+
524+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
525+
526+}
527+
528+// Gets the area @self can start a swipe from for the given direction and
529+// gesture type.
530+//
531+// This can be used to restrict swipes to only be possible from a certain area,
532+// for example, to only allow edge swipes, or to have a draggable element and
533+// ignore swipes elsewhere.
534+//
535+// If not implemented, the default implementation returns the allocation of
536+// @self, allowing swipes from anywhere.
537+func (x *Flap) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
538+
539+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
540+
541+}
542+
543+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
544+func (x *Flap) GetAccessibleRole() gtk.AccessibleRole {
545+
546+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
547+
548+}
549+
550+// Resets the accessible @property to its default value.
551+func (x *Flap) ResetProperty(PropertyVar gtk.AccessibleProperty) {
552+
553+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
554+
555+}
556+
557+// Resets the accessible @relation to its default value.
558+func (x *Flap) ResetRelation(RelationVar gtk.AccessibleRelation) {
559+
560+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
561+
562+}
563+
564+// Resets the accessible @state to its default value.
565+func (x *Flap) ResetState(StateVar gtk.AccessibleState) {
566+
567+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
568+
569+}
570+
571+// Updates a list of accessible properties.
572+//
573+// See the [enum@Gtk.AccessibleProperty] documentation for the
574+// value types of accessible properties.
575+//
576+// This function should be called by `GtkWidget` types whenever
577+// an accessible property change must be communicated to assistive
578+// technologies.
579+//
580+// Example:
581+// ```c
582+// value = gtk_adjustment_get_value (adjustment);
583+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
584+//
585+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
586+// -1);
587+//
588+// ```
589+func (x *Flap) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
590+
591+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
592+
593+}
594+
595+// Updates an array of accessible properties.
596+//
597+// This function should be called by `GtkWidget` types whenever an accessible
598+// property change must be communicated to assistive technologies.
599+//
600+// This function is meant to be used by language bindings.
601+func (x *Flap) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
602+
603+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
604+
605+}
606+
607+// Updates a list of accessible relations.
608+//
609+// This function should be called by `GtkWidget` types whenever an accessible
610+// relation change must be communicated to assistive technologies.
611+//
612+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
613+// you should pass each reference individually, followed by %NULL, e.g.
614+//
615+// ```c
616+// gtk_accessible_update_relation (accessible,
617+//
618+// GTK_ACCESSIBLE_RELATION_CONTROLS,
619+// ref1, NULL,
620+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
621+// ref1, ref2, ref3, NULL,
622+// -1);
623+//
624+// ```
625+func (x *Flap) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
626+
627+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
628+
629+}
630+
631+// Updates an array of accessible relations.
632+//
633+// This function should be called by `GtkWidget` types whenever an accessible
634+// relation change must be communicated to assistive technologies.
635+//
636+// This function is meant to be used by language bindings.
637+func (x *Flap) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
638+
639+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
640+
641+}
642+
643+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
644+// documentation for the value types of accessible states.
645+//
646+// This function should be called by `GtkWidget` types whenever an accessible
647+// state change must be communicated to assistive technologies.
648+//
649+// Example:
650+// ```c
651+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
652+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
653+//
654+// GTK_ACCESSIBLE_STATE_CHECKED, value,
655+// -1);
656+//
657+// ```
658+func (x *Flap) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
659+
660+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
661+
662+}
663+
664+// Updates an array of accessible states.
665+//
666+// This function should be called by `GtkWidget` types whenever an accessible
667+// state change must be communicated to assistive technologies.
668+//
669+// This function is meant to be used by language bindings.
670+func (x *Flap) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
671+
672+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
673+
674+}
675+
676+// Gets the ID of the @buildable object.
677+//
678+// `GtkBuilder` sets the name based on the ID attribute
679+// of the &lt;object&gt; tag used to construct the @buildable.
680+func (x *Flap) GetBuildableId() string {
681+
682+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
683+
684+}
685+
686+// Retrieves the orientation of the @orientable.
687+func (x *Flap) GetOrientation() gtk.Orientation {
688+
689+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
690+
691+}
692+
693+// Sets the orientation of the @orientable.
694+func (x *Flap) SetOrientation(OrientationVar gtk.Orientation) {
695+
696+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
697+
698+}
699+
700+func init() {
701+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
702+ if err != nil {
703+ panic(err)
704+ }
705+
706+ core.PuregoSafeRegister(&xNewFlap, lib, "adw_flap_new")
707+
708+ core.PuregoSafeRegister(&xFlapGetContent, lib, "adw_flap_get_content")
709+ core.PuregoSafeRegister(&xFlapGetFlap, lib, "adw_flap_get_flap")
710+ core.PuregoSafeRegister(&xFlapGetFlapPosition, lib, "adw_flap_get_flap_position")
711+ core.PuregoSafeRegister(&xFlapGetFoldDuration, lib, "adw_flap_get_fold_duration")
712+ core.PuregoSafeRegister(&xFlapGetFoldPolicy, lib, "adw_flap_get_fold_policy")
713+ core.PuregoSafeRegister(&xFlapGetFoldThresholdPolicy, lib, "adw_flap_get_fold_threshold_policy")
714+ core.PuregoSafeRegister(&xFlapGetFolded, lib, "adw_flap_get_folded")
715+ core.PuregoSafeRegister(&xFlapGetLocked, lib, "adw_flap_get_locked")
716+ core.PuregoSafeRegister(&xFlapGetModal, lib, "adw_flap_get_modal")
717+ core.PuregoSafeRegister(&xFlapGetRevealFlap, lib, "adw_flap_get_reveal_flap")
718+ core.PuregoSafeRegister(&xFlapGetRevealParams, lib, "adw_flap_get_reveal_params")
719+ core.PuregoSafeRegister(&xFlapGetRevealProgress, lib, "adw_flap_get_reveal_progress")
720+ core.PuregoSafeRegister(&xFlapGetSeparator, lib, "adw_flap_get_separator")
721+ core.PuregoSafeRegister(&xFlapGetSwipeToClose, lib, "adw_flap_get_swipe_to_close")
722+ core.PuregoSafeRegister(&xFlapGetSwipeToOpen, lib, "adw_flap_get_swipe_to_open")
723+ core.PuregoSafeRegister(&xFlapGetTransitionType, lib, "adw_flap_get_transition_type")
724+ core.PuregoSafeRegister(&xFlapSetContent, lib, "adw_flap_set_content")
725+ core.PuregoSafeRegister(&xFlapSetFlap, lib, "adw_flap_set_flap")
726+ core.PuregoSafeRegister(&xFlapSetFlapPosition, lib, "adw_flap_set_flap_position")
727+ core.PuregoSafeRegister(&xFlapSetFoldDuration, lib, "adw_flap_set_fold_duration")
728+ core.PuregoSafeRegister(&xFlapSetFoldPolicy, lib, "adw_flap_set_fold_policy")
729+ core.PuregoSafeRegister(&xFlapSetFoldThresholdPolicy, lib, "adw_flap_set_fold_threshold_policy")
730+ core.PuregoSafeRegister(&xFlapSetLocked, lib, "adw_flap_set_locked")
731+ core.PuregoSafeRegister(&xFlapSetModal, lib, "adw_flap_set_modal")
732+ core.PuregoSafeRegister(&xFlapSetRevealFlap, lib, "adw_flap_set_reveal_flap")
733+ core.PuregoSafeRegister(&xFlapSetRevealParams, lib, "adw_flap_set_reveal_params")
734+ core.PuregoSafeRegister(&xFlapSetSeparator, lib, "adw_flap_set_separator")
735+ core.PuregoSafeRegister(&xFlapSetSwipeToClose, lib, "adw_flap_set_swipe_to_close")
736+ core.PuregoSafeRegister(&xFlapSetSwipeToOpen, lib, "adw_flap_set_swipe_to_open")
737+ core.PuregoSafeRegister(&xFlapSetTransitionType, lib, "adw_flap_set_transition_type")
738+
739+}
A v4/adw/adw-fold-threshold-policy.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Determines when [class@Flap] and [class@Leaflet] will fold.
5+type FoldThresholdPolicy int
6+
7+const (
8+
9+ // Folding is based on the minimum size
10+ FoldThresholdPolicyMinimumValue FoldThresholdPolicy = 0
11+ // Folding is based on the natural size
12+ FoldThresholdPolicyNaturalValue FoldThresholdPolicy = 1
13+)
A v4/adw/adw-header-bar.go +486 -0
@@ -0,0 +1,486 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type HeaderBarClass struct {
12+ ParentClass uintptr
13+}
14+
15+// Describes title centering behavior of a [class@HeaderBar] widget.
16+type CenteringPolicy int
17+
18+const (
19+
20+ // Keep the title centered when possible
21+ CenteringPolicyLooseValue CenteringPolicy = 0
22+ // Keep the title centered at all cost
23+ CenteringPolicyStrictValue CenteringPolicy = 1
24+)
25+
26+// A title bar widget.
27+//
28+// &lt;picture&gt;
29+//
30+// &lt;source srcset="header-bar-dark.png" media="(prefers-color-scheme: dark)"&gt;
31+// &lt;img src="header-bar.png" alt="header-bar"&gt;
32+//
33+// &lt;/picture&gt;
34+//
35+// `AdwHeaderBar` is similar to [class@Gtk.HeaderBar], but provides additional
36+// features compared to it. Refer to `GtkHeaderBar` for details.
37+//
38+// [property@HeaderBar:centering-policy] allows to enforce strict centering of
39+// the title widget, this is useful for [class@ViewSwitcherTitle].
40+//
41+// [property@HeaderBar:show-start-title-buttons] and
42+// [property@HeaderBar:show-end-title-buttons] allow to easily create split
43+// header bar layouts using [class@Leaflet], as follows:
44+//
45+// ```xml
46+// &lt;object class="AdwLeaflet" id="leaflet"&gt;
47+//
48+// &lt;child&gt;
49+// &lt;object class="GtkBox"&gt;
50+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
51+// &lt;child&gt;
52+// &lt;object class="AdwHeaderBar"&gt;
53+// &lt;binding name="show-end-title-buttons"&gt;
54+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
55+// &lt;/binding&gt;
56+// &lt;/object&gt;
57+// &lt;/child&gt;
58+// &lt;!-- ... --&gt;
59+// &lt;/object&gt;
60+// &lt;/child&gt;
61+// &lt;!-- ... --&gt;
62+// &lt;child&gt;
63+// &lt;object class="GtkBox"&gt;
64+// &lt;property name="orientation"&gt;vertical&lt;/property&gt;
65+// &lt;property name="hexpand"&gt;True&lt;/property&gt;
66+// &lt;child&gt;
67+// &lt;object class="AdwHeaderBar"&gt;
68+// &lt;binding name="show-start-title-buttons"&gt;
69+// &lt;lookup name="folded"&gt;leaflet&lt;/lookup&gt;
70+// &lt;/binding&gt;
71+// &lt;/object&gt;
72+// &lt;/child&gt;
73+// &lt;!-- ... --&gt;
74+// &lt;/object&gt;
75+// &lt;/child&gt;
76+//
77+// &lt;/object&gt;
78+// ```
79+//
80+// &lt;picture&gt;
81+//
82+// &lt;source srcset="header-bar-split-dark.png" media="(prefers-color-scheme: dark)"&gt;
83+// &lt;img src="header-bar-split.png" alt="header-bar-split"&gt;
84+//
85+// &lt;/picture&gt;
86+//
87+// ## CSS nodes
88+//
89+// ```
90+// headerbar
91+// ╰── windowhandle
92+//
93+// ╰── box
94+// ├── widget
95+// │ ╰── box.start
96+// │ ├── windowcontrols.start
97+// │ ╰── [other children]
98+// ├── [Title Widget]
99+// ╰── widget
100+// ╰── box.end
101+// ├── [other children]
102+// ╰── windowcontrols.end
103+//
104+// ```
105+//
106+// `AdwHeaderBar`'s CSS node is called `headerbar`. It contains a `windowhandle`
107+// subnode, which contains a `box` subnode, which contains two `widget` subnodes
108+// at the start and end of the header bar, each of which contains a `box`
109+// subnode with the `.start` and `.end` style classes respectively, as well as a
110+// center node that represents the title.
111+//
112+// Each of the boxes contains a `windowcontrols` subnode, see
113+// [class@Gtk.WindowControls] for details, as well as other children.
114+//
115+// ## Accessibility
116+//
117+// `AdwHeaderBar` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
118+type HeaderBar struct {
119+ gtk.Widget
120+}
121+
122+func HeaderBarNewFromInternalPtr(ptr uintptr) *HeaderBar {
123+ cls := &HeaderBar{}
124+ cls.Ptr = ptr
125+ return cls
126+}
127+
128+var xNewHeaderBar func() uintptr
129+
130+// Creates a new `AdwHeaderBar`.
131+func NewHeaderBar() *gtk.Widget {
132+ NewHeaderBarPtr := xNewHeaderBar()
133+ if NewHeaderBarPtr == 0 {
134+ return nil
135+ }
136+
137+ gobject.IncreaseRef(NewHeaderBarPtr)
138+
139+ NewHeaderBarCls := &gtk.Widget{}
140+ NewHeaderBarCls.Ptr = NewHeaderBarPtr
141+ return NewHeaderBarCls
142+}
143+
144+var xHeaderBarGetCenteringPolicy func(uintptr) CenteringPolicy
145+
146+// Gets the policy for aligning the center widget.
147+func (x *HeaderBar) GetCenteringPolicy() CenteringPolicy {
148+
149+ return xHeaderBarGetCenteringPolicy(x.GoPointer())
150+
151+}
152+
153+var xHeaderBarGetDecorationLayout func(uintptr) string
154+
155+// Gets the decoration layout for @self.
156+func (x *HeaderBar) GetDecorationLayout() string {
157+
158+ return xHeaderBarGetDecorationLayout(x.GoPointer())
159+
160+}
161+
162+var xHeaderBarGetShowEndTitleButtons func(uintptr) bool
163+
164+// Gets whether to show title buttons at the end of @self.
165+func (x *HeaderBar) GetShowEndTitleButtons() bool {
166+
167+ return xHeaderBarGetShowEndTitleButtons(x.GoPointer())
168+
169+}
170+
171+var xHeaderBarGetShowStartTitleButtons func(uintptr) bool
172+
173+// Gets whether to show title buttons at the start of @self.
174+func (x *HeaderBar) GetShowStartTitleButtons() bool {
175+
176+ return xHeaderBarGetShowStartTitleButtons(x.GoPointer())
177+
178+}
179+
180+var xHeaderBarGetTitleWidget func(uintptr) uintptr
181+
182+// Gets the title widget widget of @self.
183+func (x *HeaderBar) GetTitleWidget() *gtk.Widget {
184+
185+ GetTitleWidgetPtr := xHeaderBarGetTitleWidget(x.GoPointer())
186+ if GetTitleWidgetPtr == 0 {
187+ return nil
188+ }
189+
190+ gobject.IncreaseRef(GetTitleWidgetPtr)
191+
192+ GetTitleWidgetCls := &gtk.Widget{}
193+ GetTitleWidgetCls.Ptr = GetTitleWidgetPtr
194+ return GetTitleWidgetCls
195+
196+}
197+
198+var xHeaderBarPackEnd func(uintptr, uintptr)
199+
200+// Adds @child to @self, packed with reference to the end of @self.
201+func (x *HeaderBar) PackEnd(ChildVar *gtk.Widget) {
202+
203+ xHeaderBarPackEnd(x.GoPointer(), ChildVar.GoPointer())
204+
205+}
206+
207+var xHeaderBarPackStart func(uintptr, uintptr)
208+
209+// Adds @child to @self, packed with reference to the start of the @self.
210+func (x *HeaderBar) PackStart(ChildVar *gtk.Widget) {
211+
212+ xHeaderBarPackStart(x.GoPointer(), ChildVar.GoPointer())
213+
214+}
215+
216+var xHeaderBarRemove func(uintptr, uintptr)
217+
218+// Removes a child from @self.
219+//
220+// The child must have been added with [method@HeaderBar.pack_start],
221+// [method@HeaderBar.pack_end] or [property@HeaderBar:title-widget].
222+func (x *HeaderBar) Remove(ChildVar *gtk.Widget) {
223+
224+ xHeaderBarRemove(x.GoPointer(), ChildVar.GoPointer())
225+
226+}
227+
228+var xHeaderBarSetCenteringPolicy func(uintptr, CenteringPolicy)
229+
230+// Sets the policy for aligning the center widget.
231+func (x *HeaderBar) SetCenteringPolicy(CenteringPolicyVar CenteringPolicy) {
232+
233+ xHeaderBarSetCenteringPolicy(x.GoPointer(), CenteringPolicyVar)
234+
235+}
236+
237+var xHeaderBarSetDecorationLayout func(uintptr, string)
238+
239+// Sets the decoration layout for @self.
240+//
241+// If this property is not set, the
242+// [property@Gtk.Settings:gtk-decoration-layout] setting is used.
243+//
244+// The format of the string is button names, separated by commas. A colon
245+// separates the buttons that should appear at the start from those at the end.
246+// Recognized button names are minimize, maximize, close and icon (the window
247+// icon).
248+//
249+// For example, “icon:minimize,maximize,close” specifies an icon at the start,
250+// and minimize, maximize and close buttons at the end.
251+func (x *HeaderBar) SetDecorationLayout(LayoutVar string) {
252+
253+ xHeaderBarSetDecorationLayout(x.GoPointer(), LayoutVar)
254+
255+}
256+
257+var xHeaderBarSetShowEndTitleButtons func(uintptr, bool)
258+
259+// Sets whether to show title buttons at the end of @self.
260+//
261+// See [property@HeaderBar:show-start-title-buttons] for the other side.
262+//
263+// Which buttons are actually shown and where is determined by the
264+// [property@HeaderBar:decoration-layout] property, and by the state of the
265+// window (e.g. a close button will not be shown if the window can't be closed).
266+func (x *HeaderBar) SetShowEndTitleButtons(SettingVar bool) {
267+
268+ xHeaderBarSetShowEndTitleButtons(x.GoPointer(), SettingVar)
269+
270+}
271+
272+var xHeaderBarSetShowStartTitleButtons func(uintptr, bool)
273+
274+// Sets whether to show title buttons at the start of @self.
275+//
276+// See [property@HeaderBar:show-end-title-buttons] for the other side.
277+//
278+// Which buttons are actually shown and where is determined by the
279+// [property@HeaderBar:decoration-layout] property, and by the state of the
280+// window (e.g. a close button will not be shown if the window can't be closed).
281+func (x *HeaderBar) SetShowStartTitleButtons(SettingVar bool) {
282+
283+ xHeaderBarSetShowStartTitleButtons(x.GoPointer(), SettingVar)
284+
285+}
286+
287+var xHeaderBarSetTitleWidget func(uintptr, uintptr)
288+
289+// Sets the title widget for @self.
290+//
291+// When set to `NULL`, the header bar will display the title of the window it
292+// is contained in.
293+//
294+// To use a different title, use [class@WindowTitle]:
295+//
296+// ```xml
297+// &lt;object class="AdwHeaderBar"&gt;
298+//
299+// &lt;property name="title-widget"&gt;
300+// &lt;object class="AdwWindowTitle"&gt;
301+// &lt;property name="title" translatable="yes"&gt;Title&lt;/property&gt;
302+// &lt;/object&gt;
303+// &lt;/property&gt;
304+//
305+// &lt;/object&gt;
306+// ```
307+func (x *HeaderBar) SetTitleWidget(TitleWidgetVar *gtk.Widget) {
308+
309+ xHeaderBarSetTitleWidget(x.GoPointer(), TitleWidgetVar.GoPointer())
310+
311+}
312+
313+func (c *HeaderBar) GoPointer() uintptr {
314+ return c.Ptr
315+}
316+
317+func (c *HeaderBar) SetGoPointer(ptr uintptr) {
318+ c.Ptr = ptr
319+}
320+
321+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
322+func (x *HeaderBar) GetAccessibleRole() gtk.AccessibleRole {
323+
324+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
325+
326+}
327+
328+// Resets the accessible @property to its default value.
329+func (x *HeaderBar) ResetProperty(PropertyVar gtk.AccessibleProperty) {
330+
331+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
332+
333+}
334+
335+// Resets the accessible @relation to its default value.
336+func (x *HeaderBar) ResetRelation(RelationVar gtk.AccessibleRelation) {
337+
338+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
339+
340+}
341+
342+// Resets the accessible @state to its default value.
343+func (x *HeaderBar) ResetState(StateVar gtk.AccessibleState) {
344+
345+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
346+
347+}
348+
349+// Updates a list of accessible properties.
350+//
351+// See the [enum@Gtk.AccessibleProperty] documentation for the
352+// value types of accessible properties.
353+//
354+// This function should be called by `GtkWidget` types whenever
355+// an accessible property change must be communicated to assistive
356+// technologies.
357+//
358+// Example:
359+// ```c
360+// value = gtk_adjustment_get_value (adjustment);
361+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
362+//
363+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
364+// -1);
365+//
366+// ```
367+func (x *HeaderBar) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
368+
369+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
370+
371+}
372+
373+// Updates an array of accessible properties.
374+//
375+// This function should be called by `GtkWidget` types whenever an accessible
376+// property change must be communicated to assistive technologies.
377+//
378+// This function is meant to be used by language bindings.
379+func (x *HeaderBar) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
380+
381+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
382+
383+}
384+
385+// Updates a list of accessible relations.
386+//
387+// This function should be called by `GtkWidget` types whenever an accessible
388+// relation change must be communicated to assistive technologies.
389+//
390+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
391+// you should pass each reference individually, followed by %NULL, e.g.
392+//
393+// ```c
394+// gtk_accessible_update_relation (accessible,
395+//
396+// GTK_ACCESSIBLE_RELATION_CONTROLS,
397+// ref1, NULL,
398+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
399+// ref1, ref2, ref3, NULL,
400+// -1);
401+//
402+// ```
403+func (x *HeaderBar) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
404+
405+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
406+
407+}
408+
409+// Updates an array of accessible relations.
410+//
411+// This function should be called by `GtkWidget` types whenever an accessible
412+// relation change must be communicated to assistive technologies.
413+//
414+// This function is meant to be used by language bindings.
415+func (x *HeaderBar) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
416+
417+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
418+
419+}
420+
421+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
422+// documentation for the value types of accessible states.
423+//
424+// This function should be called by `GtkWidget` types whenever an accessible
425+// state change must be communicated to assistive technologies.
426+//
427+// Example:
428+// ```c
429+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
430+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
431+//
432+// GTK_ACCESSIBLE_STATE_CHECKED, value,
433+// -1);
434+//
435+// ```
436+func (x *HeaderBar) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
437+
438+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
439+
440+}
441+
442+// Updates an array of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// This function is meant to be used by language bindings.
448+func (x *HeaderBar) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
449+
450+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
451+
452+}
453+
454+// Gets the ID of the @buildable object.
455+//
456+// `GtkBuilder` sets the name based on the ID attribute
457+// of the &lt;object&gt; tag used to construct the @buildable.
458+func (x *HeaderBar) GetBuildableId() string {
459+
460+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
461+
462+}
463+
464+func init() {
465+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
466+ if err != nil {
467+ panic(err)
468+ }
469+
470+ core.PuregoSafeRegister(&xNewHeaderBar, lib, "adw_header_bar_new")
471+
472+ core.PuregoSafeRegister(&xHeaderBarGetCenteringPolicy, lib, "adw_header_bar_get_centering_policy")
473+ core.PuregoSafeRegister(&xHeaderBarGetDecorationLayout, lib, "adw_header_bar_get_decoration_layout")
474+ core.PuregoSafeRegister(&xHeaderBarGetShowEndTitleButtons, lib, "adw_header_bar_get_show_end_title_buttons")
475+ core.PuregoSafeRegister(&xHeaderBarGetShowStartTitleButtons, lib, "adw_header_bar_get_show_start_title_buttons")
476+ core.PuregoSafeRegister(&xHeaderBarGetTitleWidget, lib, "adw_header_bar_get_title_widget")
477+ core.PuregoSafeRegister(&xHeaderBarPackEnd, lib, "adw_header_bar_pack_end")
478+ core.PuregoSafeRegister(&xHeaderBarPackStart, lib, "adw_header_bar_pack_start")
479+ core.PuregoSafeRegister(&xHeaderBarRemove, lib, "adw_header_bar_remove")
480+ core.PuregoSafeRegister(&xHeaderBarSetCenteringPolicy, lib, "adw_header_bar_set_centering_policy")
481+ core.PuregoSafeRegister(&xHeaderBarSetDecorationLayout, lib, "adw_header_bar_set_decoration_layout")
482+ core.PuregoSafeRegister(&xHeaderBarSetShowEndTitleButtons, lib, "adw_header_bar_set_show_end_title_buttons")
483+ core.PuregoSafeRegister(&xHeaderBarSetShowStartTitleButtons, lib, "adw_header_bar_set_show_start_title_buttons")
484+ core.PuregoSafeRegister(&xHeaderBarSetTitleWidget, lib, "adw_header_bar_set_title_widget")
485+
486+}
A v4/adw/adw-leaflet.go +880 -0
@@ -0,0 +1,880 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type LeafletClass struct {
13+ ParentClass uintptr
14+}
15+
16+type LeafletPageClass struct {
17+ ParentClass uintptr
18+}
19+
20+// Describes the possible transitions in a [class@Leaflet] widget.
21+//
22+// New values may be added to this enumeration over time.
23+type LeafletTransitionType int
24+
25+const (
26+
27+ // Cover the old page or uncover the new page, sliding from or towards the end according to orientation, text direction and children order
28+ LeafletTransitionTypeOverValue LeafletTransitionType = 0
29+ // Uncover the new page or cover the old page, sliding from or towards the start according to orientation, text direction and children order
30+ LeafletTransitionTypeUnderValue LeafletTransitionType = 1
31+ // Slide from left, right, up or down according to the orientation, text direction and the children order
32+ LeafletTransitionTypeSlideValue LeafletTransitionType = 2
33+)
34+
35+// An adaptive container acting like a box or a stack.
36+//
37+// &lt;picture&gt;
38+//
39+// &lt;source srcset="leaflet-wide-dark.png" media="(prefers-color-scheme: dark)"&gt;
40+// &lt;img src="leaflet-wide.png" alt="leaflet-wide"&gt;
41+//
42+// &lt;/picture&gt;
43+// &lt;picture&gt;
44+//
45+// &lt;source srcset="leaflet-narrow-dark.png" media="(prefers-color-scheme: dark)"&gt;
46+// &lt;img src="leaflet-narrow.png" alt="leaflet-narrow"&gt;
47+//
48+// &lt;/picture&gt;
49+//
50+// The `AdwLeaflet` widget can display its children like a [class@Gtk.Box] does
51+// or like a [class@Gtk.Stack] does, adapting to size changes by switching
52+// between the two modes.
53+//
54+// When there is enough space the children are displayed side by side, otherwise
55+// only one is displayed and the leaflet is said to be “folded”.
56+// The threshold is dictated by the preferred minimum sizes of the children.
57+// When a leaflet is folded, the children can be navigated using swipe gestures.
58+//
59+// The “over” and “under” transition types stack the children one on top of the
60+// other, while the “slide” transition puts the children side by side. While
61+// navigating to a child on the side or below can be performed by swiping the
62+// current child away, navigating to an upper child requires dragging it from
63+// the edge where it resides. This doesn't affect non-dragging swipes.
64+//
65+// ## CSS nodes
66+//
67+// `AdwLeaflet` has a single CSS node with name `leaflet`. The node will get the
68+// style classes `.folded` when it is folded, `.unfolded` when it's not, or none
69+// if it hasn't computed its fold yet.
70+type Leaflet struct {
71+ gtk.Widget
72+}
73+
74+func LeafletNewFromInternalPtr(ptr uintptr) *Leaflet {
75+ cls := &Leaflet{}
76+ cls.Ptr = ptr
77+ return cls
78+}
79+
80+var xNewLeaflet func() uintptr
81+
82+// Creates a new `AdwLeaflet`.
83+func NewLeaflet() *gtk.Widget {
84+ NewLeafletPtr := xNewLeaflet()
85+ if NewLeafletPtr == 0 {
86+ return nil
87+ }
88+
89+ gobject.IncreaseRef(NewLeafletPtr)
90+
91+ NewLeafletCls := &gtk.Widget{}
92+ NewLeafletCls.Ptr = NewLeafletPtr
93+ return NewLeafletCls
94+}
95+
96+var xLeafletAppend func(uintptr, uintptr) uintptr
97+
98+// Adds a child to @self.
99+func (x *Leaflet) Append(ChildVar *gtk.Widget) *LeafletPage {
100+
101+ AppendPtr := xLeafletAppend(x.GoPointer(), ChildVar.GoPointer())
102+ if AppendPtr == 0 {
103+ return nil
104+ }
105+
106+ gobject.IncreaseRef(AppendPtr)
107+
108+ AppendCls := &LeafletPage{}
109+ AppendCls.Ptr = AppendPtr
110+ return AppendCls
111+
112+}
113+
114+var xLeafletGetAdjacentChild func(uintptr, NavigationDirection) uintptr
115+
116+// Finds the previous or next navigatable child.
117+//
118+// This will be the same child [method@Leaflet.navigate] or swipe gestures will
119+// navigate to.
120+//
121+// If there's no child to navigate to, `NULL` will be returned instead.
122+//
123+// See [property@LeafletPage:navigatable].
124+func (x *Leaflet) GetAdjacentChild(DirectionVar NavigationDirection) *gtk.Widget {
125+
126+ GetAdjacentChildPtr := xLeafletGetAdjacentChild(x.GoPointer(), DirectionVar)
127+ if GetAdjacentChildPtr == 0 {
128+ return nil
129+ }
130+
131+ gobject.IncreaseRef(GetAdjacentChildPtr)
132+
133+ GetAdjacentChildCls := &gtk.Widget{}
134+ GetAdjacentChildCls.Ptr = GetAdjacentChildPtr
135+ return GetAdjacentChildCls
136+
137+}
138+
139+var xLeafletGetCanNavigateBack func(uintptr) bool
140+
141+// Gets whether gestures and shortcuts for navigating backward are enabled.
142+func (x *Leaflet) GetCanNavigateBack() bool {
143+
144+ return xLeafletGetCanNavigateBack(x.GoPointer())
145+
146+}
147+
148+var xLeafletGetCanNavigateForward func(uintptr) bool
149+
150+// Gets whether gestures and shortcuts for navigating forward are enabled.
151+func (x *Leaflet) GetCanNavigateForward() bool {
152+
153+ return xLeafletGetCanNavigateForward(x.GoPointer())
154+
155+}
156+
157+var xLeafletGetCanUnfold func(uintptr) bool
158+
159+// Gets whether @self can unfold.
160+func (x *Leaflet) GetCanUnfold() bool {
161+
162+ return xLeafletGetCanUnfold(x.GoPointer())
163+
164+}
165+
166+var xLeafletGetChildByName func(uintptr, string) uintptr
167+
168+// Finds the child of @self with @name.
169+//
170+// Returns `NULL` if there is no child with this name.
171+//
172+// See [property@LeafletPage:name].
173+func (x *Leaflet) GetChildByName(NameVar string) *gtk.Widget {
174+
175+ GetChildByNamePtr := xLeafletGetChildByName(x.GoPointer(), NameVar)
176+ if GetChildByNamePtr == 0 {
177+ return nil
178+ }
179+
180+ gobject.IncreaseRef(GetChildByNamePtr)
181+
182+ GetChildByNameCls := &gtk.Widget{}
183+ GetChildByNameCls.Ptr = GetChildByNamePtr
184+ return GetChildByNameCls
185+
186+}
187+
188+var xLeafletGetChildTransitionParams func(uintptr) *SpringParams
189+
190+// Gets the child transition spring parameters for @self.
191+func (x *Leaflet) GetChildTransitionParams() *SpringParams {
192+
193+ return xLeafletGetChildTransitionParams(x.GoPointer())
194+
195+}
196+
197+var xLeafletGetChildTransitionRunning func(uintptr) bool
198+
199+// Gets whether a child transition is currently running for @self.
200+func (x *Leaflet) GetChildTransitionRunning() bool {
201+
202+ return xLeafletGetChildTransitionRunning(x.GoPointer())
203+
204+}
205+
206+var xLeafletGetFoldThresholdPolicy func(uintptr) FoldThresholdPolicy
207+
208+// Gets the fold threshold policy for @self.
209+func (x *Leaflet) GetFoldThresholdPolicy() FoldThresholdPolicy {
210+
211+ return xLeafletGetFoldThresholdPolicy(x.GoPointer())
212+
213+}
214+
215+var xLeafletGetFolded func(uintptr) bool
216+
217+// Gets whether @self is folded.
218+//
219+// The leaflet will be folded if the size allocated to it is smaller than the
220+// sum of the minimum or natural sizes of the children (see
221+// [property@Leaflet:fold-threshold-policy]), it will be unfolded otherwise.
222+func (x *Leaflet) GetFolded() bool {
223+
224+ return xLeafletGetFolded(x.GoPointer())
225+
226+}
227+
228+var xLeafletGetHomogeneous func(uintptr) bool
229+
230+// Gets whether @self is homogeneous.
231+func (x *Leaflet) GetHomogeneous() bool {
232+
233+ return xLeafletGetHomogeneous(x.GoPointer())
234+
235+}
236+
237+var xLeafletGetModeTransitionDuration func(uintptr) uint
238+
239+// Gets the mode transition animation duration for @self.
240+func (x *Leaflet) GetModeTransitionDuration() uint {
241+
242+ return xLeafletGetModeTransitionDuration(x.GoPointer())
243+
244+}
245+
246+var xLeafletGetPage func(uintptr, uintptr) uintptr
247+
248+// Returns the [class@LeafletPage] object for @child.
249+func (x *Leaflet) GetPage(ChildVar *gtk.Widget) *LeafletPage {
250+
251+ GetPagePtr := xLeafletGetPage(x.GoPointer(), ChildVar.GoPointer())
252+ if GetPagePtr == 0 {
253+ return nil
254+ }
255+
256+ gobject.IncreaseRef(GetPagePtr)
257+
258+ GetPageCls := &LeafletPage{}
259+ GetPageCls.Ptr = GetPagePtr
260+ return GetPageCls
261+
262+}
263+
264+var xLeafletGetPages func(uintptr) uintptr
265+
266+// Returns a [iface@Gio.ListModel] that contains the pages of the leaflet.
267+//
268+// This can be used to keep an up-to-date view. The model also implements
269+// [iface@Gtk.SelectionModel] and can be used to track and change the visible
270+// page.
271+func (x *Leaflet) GetPages() *gtk.SelectionModelBase {
272+
273+ GetPagesPtr := xLeafletGetPages(x.GoPointer())
274+ if GetPagesPtr == 0 {
275+ return nil
276+ }
277+
278+ GetPagesCls := &gtk.SelectionModelBase{}
279+ GetPagesCls.Ptr = GetPagesPtr
280+ return GetPagesCls
281+
282+}
283+
284+var xLeafletGetTransitionType func(uintptr) LeafletTransitionType
285+
286+// Gets the type of animation used for transitions between modes and children.
287+func (x *Leaflet) GetTransitionType() LeafletTransitionType {
288+
289+ return xLeafletGetTransitionType(x.GoPointer())
290+
291+}
292+
293+var xLeafletGetVisibleChild func(uintptr) uintptr
294+
295+// Gets the widget currently visible when the leaflet is folded.
296+func (x *Leaflet) GetVisibleChild() *gtk.Widget {
297+
298+ GetVisibleChildPtr := xLeafletGetVisibleChild(x.GoPointer())
299+ if GetVisibleChildPtr == 0 {
300+ return nil
301+ }
302+
303+ gobject.IncreaseRef(GetVisibleChildPtr)
304+
305+ GetVisibleChildCls := &gtk.Widget{}
306+ GetVisibleChildCls.Ptr = GetVisibleChildPtr
307+ return GetVisibleChildCls
308+
309+}
310+
311+var xLeafletGetVisibleChildName func(uintptr) string
312+
313+// Gets the name of the currently visible child widget.
314+func (x *Leaflet) GetVisibleChildName() string {
315+
316+ return xLeafletGetVisibleChildName(x.GoPointer())
317+
318+}
319+
320+var xLeafletInsertChildAfter func(uintptr, uintptr, uintptr) uintptr
321+
322+// Inserts @child in the position after @sibling in the list of children.
323+//
324+// If @sibling is `NULL`, inserts @child at the first position.
325+func (x *Leaflet) InsertChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) *LeafletPage {
326+
327+ InsertChildAfterPtr := xLeafletInsertChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
328+ if InsertChildAfterPtr == 0 {
329+ return nil
330+ }
331+
332+ gobject.IncreaseRef(InsertChildAfterPtr)
333+
334+ InsertChildAfterCls := &LeafletPage{}
335+ InsertChildAfterCls.Ptr = InsertChildAfterPtr
336+ return InsertChildAfterCls
337+
338+}
339+
340+var xLeafletNavigate func(uintptr, NavigationDirection) bool
341+
342+// Navigates to the previous or next child.
343+//
344+// The child must have the [property@LeafletPage:navigatable] property set to
345+// `TRUE`, otherwise it will be skipped.
346+//
347+// This will be the same child as returned by
348+// [method@Leaflet.get_adjacent_child] or navigated to via swipe gestures.
349+func (x *Leaflet) Navigate(DirectionVar NavigationDirection) bool {
350+
351+ return xLeafletNavigate(x.GoPointer(), DirectionVar)
352+
353+}
354+
355+var xLeafletPrepend func(uintptr, uintptr) uintptr
356+
357+// Inserts @child at the first position in @self.
358+func (x *Leaflet) Prepend(ChildVar *gtk.Widget) *LeafletPage {
359+
360+ PrependPtr := xLeafletPrepend(x.GoPointer(), ChildVar.GoPointer())
361+ if PrependPtr == 0 {
362+ return nil
363+ }
364+
365+ gobject.IncreaseRef(PrependPtr)
366+
367+ PrependCls := &LeafletPage{}
368+ PrependCls.Ptr = PrependPtr
369+ return PrependCls
370+
371+}
372+
373+var xLeafletRemove func(uintptr, uintptr)
374+
375+// Removes a child widget from @self.
376+func (x *Leaflet) Remove(ChildVar *gtk.Widget) {
377+
378+ xLeafletRemove(x.GoPointer(), ChildVar.GoPointer())
379+
380+}
381+
382+var xLeafletReorderChildAfter func(uintptr, uintptr, uintptr)
383+
384+// Moves @child to the position after @sibling in the list of children.
385+//
386+// If @sibling is `NULL`, moves @child to the first position.
387+func (x *Leaflet) ReorderChildAfter(ChildVar *gtk.Widget, SiblingVar *gtk.Widget) {
388+
389+ xLeafletReorderChildAfter(x.GoPointer(), ChildVar.GoPointer(), SiblingVar.GoPointer())
390+
391+}
392+
393+var xLeafletSetCanNavigateBack func(uintptr, bool)
394+
395+// Sets whether gestures and shortcuts for navigating backward are enabled.
396+//
397+// The supported gestures are:
398+//
399+// - One-finger swipe on touchscreens
400+// - Horizontal scrolling on touchpads (usually two-finger swipe)
401+// - Back/forward mouse buttons
402+//
403+// The keyboard back/forward keys are also supported, as well as the
404+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut for horizontal orientation, or
405+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↑&lt;/kbd&gt; for vertical orientation.
406+//
407+// If the orientation is horizontal, for right-to-left locales, gestures and
408+// shortcuts are reversed.
409+//
410+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
411+// be navigated to.
412+func (x *Leaflet) SetCanNavigateBack(CanNavigateBackVar bool) {
413+
414+ xLeafletSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
415+
416+}
417+
418+var xLeafletSetCanNavigateForward func(uintptr, bool)
419+
420+// Sets whether gestures and shortcuts for navigating forward are enabled.
421+//
422+// The supported gestures are:
423+//
424+// - One-finger swipe on touchscreens
425+// - Horizontal scrolling on touchpads (usually two-finger swipe)
426+// - Back/forward mouse buttons
427+//
428+// The keyboard back/forward keys are also supported, as well as the
429+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;→&lt;/kbd&gt; shortcut for horizontal orientation, or
430+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;↓&lt;/kbd&gt; for vertical orientation.
431+//
432+// If the orientation is horizontal, for right-to-left locales, gestures and
433+// shortcuts are reversed.
434+//
435+// Only children that have [property@LeafletPage:navigatable] set to `TRUE` can
436+// be navigated to.
437+func (x *Leaflet) SetCanNavigateForward(CanNavigateForwardVar bool) {
438+
439+ xLeafletSetCanNavigateForward(x.GoPointer(), CanNavigateForwardVar)
440+
441+}
442+
443+var xLeafletSetCanUnfold func(uintptr, bool)
444+
445+// Sets whether @self can unfold.
446+func (x *Leaflet) SetCanUnfold(CanUnfoldVar bool) {
447+
448+ xLeafletSetCanUnfold(x.GoPointer(), CanUnfoldVar)
449+
450+}
451+
452+var xLeafletSetChildTransitionParams func(uintptr, *SpringParams)
453+
454+// Sets the child transition spring parameters for @self.
455+//
456+// The default value is equivalent to:
457+//
458+// ```c
459+// adw_spring_params_new (1, 0.5, 500)
460+// ```
461+func (x *Leaflet) SetChildTransitionParams(ParamsVar *SpringParams) {
462+
463+ xLeafletSetChildTransitionParams(x.GoPointer(), ParamsVar)
464+
465+}
466+
467+var xLeafletSetFoldThresholdPolicy func(uintptr, FoldThresholdPolicy)
468+
469+// Sets the fold threshold policy for @self.
470+//
471+// If set to `ADW_FOLD_THRESHOLD_POLICY_MINIMUM`, it will only fold when the
472+// children cannot fit anymore. With `ADW_FOLD_THRESHOLD_POLICY_NATURAL`, it
473+// will fold as soon as children don't get their natural size.
474+//
475+// This can be useful if you have a long ellipsizing label and want to let it
476+// ellipsize instead of immediately folding.
477+func (x *Leaflet) SetFoldThresholdPolicy(PolicyVar FoldThresholdPolicy) {
478+
479+ xLeafletSetFoldThresholdPolicy(x.GoPointer(), PolicyVar)
480+
481+}
482+
483+var xLeafletSetHomogeneous func(uintptr, bool)
484+
485+// Sets @self to be homogeneous or not.
486+//
487+// If set to `FALSE`, different children can have different size along the
488+// opposite orientation.
489+func (x *Leaflet) SetHomogeneous(HomogeneousVar bool) {
490+
491+ xLeafletSetHomogeneous(x.GoPointer(), HomogeneousVar)
492+
493+}
494+
495+var xLeafletSetModeTransitionDuration func(uintptr, uint)
496+
497+// Sets the mode transition animation duration for @self.
498+func (x *Leaflet) SetModeTransitionDuration(DurationVar uint) {
499+
500+ xLeafletSetModeTransitionDuration(x.GoPointer(), DurationVar)
501+
502+}
503+
504+var xLeafletSetTransitionType func(uintptr, LeafletTransitionType)
505+
506+// Sets the type of animation used for transitions between modes and children.
507+//
508+// The transition type can be changed without problems at runtime, so it is
509+// possible to change the animation based on the mode or child that is about to
510+// become current.
511+func (x *Leaflet) SetTransitionType(TransitionVar LeafletTransitionType) {
512+
513+ xLeafletSetTransitionType(x.GoPointer(), TransitionVar)
514+
515+}
516+
517+var xLeafletSetVisibleChild func(uintptr, uintptr)
518+
519+// Sets the widget currently visible when the leaflet is folded.
520+//
521+// The transition is determined by [property@Leaflet:transition-type] and
522+// [property@Leaflet:child-transition-params]. The transition can be cancelled
523+// by the user, in which case visible child will change back to the previously
524+// visible child.
525+func (x *Leaflet) SetVisibleChild(VisibleChildVar *gtk.Widget) {
526+
527+ xLeafletSetVisibleChild(x.GoPointer(), VisibleChildVar.GoPointer())
528+
529+}
530+
531+var xLeafletSetVisibleChildName func(uintptr, string)
532+
533+// Makes the child with the name @name visible.
534+//
535+// See [property@Leaflet:visible-child].
536+func (x *Leaflet) SetVisibleChildName(NameVar string) {
537+
538+ xLeafletSetVisibleChildName(x.GoPointer(), NameVar)
539+
540+}
541+
542+func (c *Leaflet) GoPointer() uintptr {
543+ return c.Ptr
544+}
545+
546+func (c *Leaflet) SetGoPointer(ptr uintptr) {
547+ c.Ptr = ptr
548+}
549+
550+// Gets the progress @self will snap back to after the gesture is canceled.
551+func (x *Leaflet) GetCancelProgress() float64 {
552+
553+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
554+
555+}
556+
557+// Gets the swipe distance of @self.
558+//
559+// This corresponds to how many pixels 1 unit represents.
560+func (x *Leaflet) GetDistance() float64 {
561+
562+ return XAdwSwipeableGetDistance(x.GoPointer())
563+
564+}
565+
566+// Gets the current progress of @self.
567+func (x *Leaflet) GetProgress() float64 {
568+
569+ return XAdwSwipeableGetProgress(x.GoPointer())
570+
571+}
572+
573+// Gets the snap points of @self.
574+//
575+// Each snap point represents a progress value that is considered acceptable to
576+// end the swipe on.
577+func (x *Leaflet) GetSnapPoints(NSnapPointsVar int32) uintptr {
578+
579+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
580+
581+}
582+
583+// Gets the area @self can start a swipe from for the given direction and
584+// gesture type.
585+//
586+// This can be used to restrict swipes to only be possible from a certain area,
587+// for example, to only allow edge swipes, or to have a draggable element and
588+// ignore swipes elsewhere.
589+//
590+// If not implemented, the default implementation returns the allocation of
591+// @self, allowing swipes from anywhere.
592+func (x *Leaflet) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
593+
594+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
595+
596+}
597+
598+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
599+func (x *Leaflet) GetAccessibleRole() gtk.AccessibleRole {
600+
601+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
602+
603+}
604+
605+// Resets the accessible @property to its default value.
606+func (x *Leaflet) ResetProperty(PropertyVar gtk.AccessibleProperty) {
607+
608+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
609+
610+}
611+
612+// Resets the accessible @relation to its default value.
613+func (x *Leaflet) ResetRelation(RelationVar gtk.AccessibleRelation) {
614+
615+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
616+
617+}
618+
619+// Resets the accessible @state to its default value.
620+func (x *Leaflet) ResetState(StateVar gtk.AccessibleState) {
621+
622+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
623+
624+}
625+
626+// Updates a list of accessible properties.
627+//
628+// See the [enum@Gtk.AccessibleProperty] documentation for the
629+// value types of accessible properties.
630+//
631+// This function should be called by `GtkWidget` types whenever
632+// an accessible property change must be communicated to assistive
633+// technologies.
634+//
635+// Example:
636+// ```c
637+// value = gtk_adjustment_get_value (adjustment);
638+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
639+//
640+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
641+// -1);
642+//
643+// ```
644+func (x *Leaflet) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
645+
646+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
647+
648+}
649+
650+// Updates an array of accessible properties.
651+//
652+// This function should be called by `GtkWidget` types whenever an accessible
653+// property change must be communicated to assistive technologies.
654+//
655+// This function is meant to be used by language bindings.
656+func (x *Leaflet) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
657+
658+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
659+
660+}
661+
662+// Updates a list of accessible relations.
663+//
664+// This function should be called by `GtkWidget` types whenever an accessible
665+// relation change must be communicated to assistive technologies.
666+//
667+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
668+// you should pass each reference individually, followed by %NULL, e.g.
669+//
670+// ```c
671+// gtk_accessible_update_relation (accessible,
672+//
673+// GTK_ACCESSIBLE_RELATION_CONTROLS,
674+// ref1, NULL,
675+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
676+// ref1, ref2, ref3, NULL,
677+// -1);
678+//
679+// ```
680+func (x *Leaflet) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
681+
682+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
683+
684+}
685+
686+// Updates an array of accessible relations.
687+//
688+// This function should be called by `GtkWidget` types whenever an accessible
689+// relation change must be communicated to assistive technologies.
690+//
691+// This function is meant to be used by language bindings.
692+func (x *Leaflet) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
693+
694+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
695+
696+}
697+
698+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
699+// documentation for the value types of accessible states.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// state change must be communicated to assistive technologies.
703+//
704+// Example:
705+// ```c
706+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
707+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
708+//
709+// GTK_ACCESSIBLE_STATE_CHECKED, value,
710+// -1);
711+//
712+// ```
713+func (x *Leaflet) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
714+
715+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
716+
717+}
718+
719+// Updates an array of accessible states.
720+//
721+// This function should be called by `GtkWidget` types whenever an accessible
722+// state change must be communicated to assistive technologies.
723+//
724+// This function is meant to be used by language bindings.
725+func (x *Leaflet) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
726+
727+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
728+
729+}
730+
731+// Gets the ID of the @buildable object.
732+//
733+// `GtkBuilder` sets the name based on the ID attribute
734+// of the &lt;object&gt; tag used to construct the @buildable.
735+func (x *Leaflet) GetBuildableId() string {
736+
737+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
738+
739+}
740+
741+// Retrieves the orientation of the @orientable.
742+func (x *Leaflet) GetOrientation() gtk.Orientation {
743+
744+ return gtk.XGtkOrientableGetOrientation(x.GoPointer())
745+
746+}
747+
748+// Sets the orientation of the @orientable.
749+func (x *Leaflet) SetOrientation(OrientationVar gtk.Orientation) {
750+
751+ gtk.XGtkOrientableSetOrientation(x.GoPointer(), OrientationVar)
752+
753+}
754+
755+// An auxiliary class used by [class@Leaflet].
756+type LeafletPage struct {
757+ gobject.Object
758+}
759+
760+func LeafletPageNewFromInternalPtr(ptr uintptr) *LeafletPage {
761+ cls := &LeafletPage{}
762+ cls.Ptr = ptr
763+ return cls
764+}
765+
766+var xLeafletPageGetChild func(uintptr) uintptr
767+
768+// Gets the leaflet child to which @self belongs.
769+func (x *LeafletPage) GetChild() *gtk.Widget {
770+
771+ GetChildPtr := xLeafletPageGetChild(x.GoPointer())
772+ if GetChildPtr == 0 {
773+ return nil
774+ }
775+
776+ gobject.IncreaseRef(GetChildPtr)
777+
778+ GetChildCls := &gtk.Widget{}
779+ GetChildCls.Ptr = GetChildPtr
780+ return GetChildCls
781+
782+}
783+
784+var xLeafletPageGetName func(uintptr) string
785+
786+// Gets the name of @self.
787+func (x *LeafletPage) GetName() string {
788+
789+ return xLeafletPageGetName(x.GoPointer())
790+
791+}
792+
793+var xLeafletPageGetNavigatable func(uintptr) bool
794+
795+// Gets whether the child can be navigated to when folded.
796+func (x *LeafletPage) GetNavigatable() bool {
797+
798+ return xLeafletPageGetNavigatable(x.GoPointer())
799+
800+}
801+
802+var xLeafletPageSetName func(uintptr, string)
803+
804+// Sets the name of the @self.
805+func (x *LeafletPage) SetName(NameVar string) {
806+
807+ xLeafletPageSetName(x.GoPointer(), NameVar)
808+
809+}
810+
811+var xLeafletPageSetNavigatable func(uintptr, bool)
812+
813+// Sets whether @self can be navigated to when folded.
814+//
815+// If `FALSE`, the child will be ignored by [method@Leaflet.get_adjacent_child],
816+// [method@Leaflet.navigate], and swipe gestures.
817+//
818+// This can be used used to prevent switching to widgets like separators.
819+func (x *LeafletPage) SetNavigatable(NavigatableVar bool) {
820+
821+ xLeafletPageSetNavigatable(x.GoPointer(), NavigatableVar)
822+
823+}
824+
825+func (c *LeafletPage) GoPointer() uintptr {
826+ return c.Ptr
827+}
828+
829+func (c *LeafletPage) SetGoPointer(ptr uintptr) {
830+ c.Ptr = ptr
831+}
832+
833+func init() {
834+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
835+ if err != nil {
836+ panic(err)
837+ }
838+
839+ core.PuregoSafeRegister(&xNewLeaflet, lib, "adw_leaflet_new")
840+
841+ core.PuregoSafeRegister(&xLeafletAppend, lib, "adw_leaflet_append")
842+ core.PuregoSafeRegister(&xLeafletGetAdjacentChild, lib, "adw_leaflet_get_adjacent_child")
843+ core.PuregoSafeRegister(&xLeafletGetCanNavigateBack, lib, "adw_leaflet_get_can_navigate_back")
844+ core.PuregoSafeRegister(&xLeafletGetCanNavigateForward, lib, "adw_leaflet_get_can_navigate_forward")
845+ core.PuregoSafeRegister(&xLeafletGetCanUnfold, lib, "adw_leaflet_get_can_unfold")
846+ core.PuregoSafeRegister(&xLeafletGetChildByName, lib, "adw_leaflet_get_child_by_name")
847+ core.PuregoSafeRegister(&xLeafletGetChildTransitionParams, lib, "adw_leaflet_get_child_transition_params")
848+ core.PuregoSafeRegister(&xLeafletGetChildTransitionRunning, lib, "adw_leaflet_get_child_transition_running")
849+ core.PuregoSafeRegister(&xLeafletGetFoldThresholdPolicy, lib, "adw_leaflet_get_fold_threshold_policy")
850+ core.PuregoSafeRegister(&xLeafletGetFolded, lib, "adw_leaflet_get_folded")
851+ core.PuregoSafeRegister(&xLeafletGetHomogeneous, lib, "adw_leaflet_get_homogeneous")
852+ core.PuregoSafeRegister(&xLeafletGetModeTransitionDuration, lib, "adw_leaflet_get_mode_transition_duration")
853+ core.PuregoSafeRegister(&xLeafletGetPage, lib, "adw_leaflet_get_page")
854+ core.PuregoSafeRegister(&xLeafletGetPages, lib, "adw_leaflet_get_pages")
855+ core.PuregoSafeRegister(&xLeafletGetTransitionType, lib, "adw_leaflet_get_transition_type")
856+ core.PuregoSafeRegister(&xLeafletGetVisibleChild, lib, "adw_leaflet_get_visible_child")
857+ core.PuregoSafeRegister(&xLeafletGetVisibleChildName, lib, "adw_leaflet_get_visible_child_name")
858+ core.PuregoSafeRegister(&xLeafletInsertChildAfter, lib, "adw_leaflet_insert_child_after")
859+ core.PuregoSafeRegister(&xLeafletNavigate, lib, "adw_leaflet_navigate")
860+ core.PuregoSafeRegister(&xLeafletPrepend, lib, "adw_leaflet_prepend")
861+ core.PuregoSafeRegister(&xLeafletRemove, lib, "adw_leaflet_remove")
862+ core.PuregoSafeRegister(&xLeafletReorderChildAfter, lib, "adw_leaflet_reorder_child_after")
863+ core.PuregoSafeRegister(&xLeafletSetCanNavigateBack, lib, "adw_leaflet_set_can_navigate_back")
864+ core.PuregoSafeRegister(&xLeafletSetCanNavigateForward, lib, "adw_leaflet_set_can_navigate_forward")
865+ core.PuregoSafeRegister(&xLeafletSetCanUnfold, lib, "adw_leaflet_set_can_unfold")
866+ core.PuregoSafeRegister(&xLeafletSetChildTransitionParams, lib, "adw_leaflet_set_child_transition_params")
867+ core.PuregoSafeRegister(&xLeafletSetFoldThresholdPolicy, lib, "adw_leaflet_set_fold_threshold_policy")
868+ core.PuregoSafeRegister(&xLeafletSetHomogeneous, lib, "adw_leaflet_set_homogeneous")
869+ core.PuregoSafeRegister(&xLeafletSetModeTransitionDuration, lib, "adw_leaflet_set_mode_transition_duration")
870+ core.PuregoSafeRegister(&xLeafletSetTransitionType, lib, "adw_leaflet_set_transition_type")
871+ core.PuregoSafeRegister(&xLeafletSetVisibleChild, lib, "adw_leaflet_set_visible_child")
872+ core.PuregoSafeRegister(&xLeafletSetVisibleChildName, lib, "adw_leaflet_set_visible_child_name")
873+
874+ core.PuregoSafeRegister(&xLeafletPageGetChild, lib, "adw_leaflet_page_get_child")
875+ core.PuregoSafeRegister(&xLeafletPageGetName, lib, "adw_leaflet_page_get_name")
876+ core.PuregoSafeRegister(&xLeafletPageGetNavigatable, lib, "adw_leaflet_page_get_navigatable")
877+ core.PuregoSafeRegister(&xLeafletPageSetName, lib, "adw_leaflet_page_set_name")
878+ core.PuregoSafeRegister(&xLeafletPageSetNavigatable, lib, "adw_leaflet_page_set_navigatable")
879+
880+}
A v4/adw/adw-main.go +46 -0
@@ -0,0 +1,46 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+var xInit func()
10+
11+// Initializes Libadwaita.
12+//
13+// This function can be used instead of [func@Gtk.init] as it initializes GTK
14+// implicitly.
15+//
16+// There's no need to call this function if you're using [class@Application].
17+//
18+// If Libadwaita has already been initialized, the function will simply return.
19+//
20+// This makes sure translations, types, themes, and icons for the Adwaita
21+// library are set up properly.
22+func Init() {
23+
24+ xInit()
25+
26+}
27+
28+var xIsInitialized func() bool
29+
30+// Use this function to check if libadwaita has been initialized with
31+// [func@init].
32+func IsInitialized() bool {
33+
34+ return xIsInitialized()
35+
36+}
37+
38+func init() {
39+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
40+ if err != nil {
41+ panic(err)
42+ }
43+ core.PuregoSafeRegister(&xInit, lib, "adw_init")
44+ core.PuregoSafeRegister(&xIsInitialized, lib, "adw_is_initialized")
45+
46+}
A v4/adw/adw-message-dialog.go +928 -0
@@ -0,0 +1,928 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gio"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gsk"
11+ "github.com/jwijenbergh/puregotk/v4/gtk"
12+)
13+
14+type MessageDialogClass struct {
15+ ParentClass uintptr
16+
17+ Padding uintptr
18+}
19+
20+// Describes the possible styles of [class@MessageDialog] response buttons.
21+//
22+// See [method@MessageDialog.set_response_appearance].
23+type ResponseAppearance int
24+
25+const (
26+
27+ // the default appearance.
28+ ResponseDefaultValue ResponseAppearance = 0
29+ // used to denote important responses such as the
30+ // affirmative action.
31+ ResponseSuggestedValue ResponseAppearance = 1
32+ // used to draw attention to the potentially damaging
33+ // consequences of using the response. This appearance acts as a warning to
34+ // the user.
35+ ResponseDestructiveValue ResponseAppearance = 2
36+)
37+
38+// A dialog presenting a message or a question.
39+//
40+// &lt;picture&gt;
41+//
42+// &lt;source srcset="message-dialog-dark.png" media="(prefers-color-scheme: dark)"&gt;
43+// &lt;img src="message-dialog.png" alt="message-dialog"&gt;
44+//
45+// &lt;/picture&gt;
46+//
47+// Message dialogs have a heading, a body, an optional child widget, and one or
48+// multiple responses, each presented as a button.
49+//
50+// Each response has a unique string ID, and a button label. Additionally, each
51+// response can be enabled or disabled, and can have a suggested or destructive
52+// appearance.
53+//
54+// When one of the responses is activated, or the dialog is closed, the
55+// [signal@MessageDialog::response] signal will be emitted. This signal is
56+// detailed, and the detail, as well as the `response` parameter will be set to
57+// the ID of the activated response, or to the value of the
58+// [property@MessageDialog:close-response] property if the dialog had been
59+// closed without activating any of the responses.
60+//
61+// Response buttons can be presented horizontally or vertically depending on
62+// available space.
63+//
64+// When a response is activated, `AdwMessageDialog` is closed automatically.
65+//
66+// An example of using a message dialog:
67+//
68+// ```c
69+// GtkWidget *dialog;
70+//
71+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
72+//
73+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
74+//
75+// _("A file named “%s” already exists. Do you want to replace it?"),
76+// filename);
77+//
78+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
79+//
80+// "cancel", _("_Cancel"),
81+// "replace", _("_Replace"),
82+// NULL);
83+//
84+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
85+//
86+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
87+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
88+//
89+// g_signal_connect (dialog, "response", G_CALLBACK (response_cb), self);
90+//
91+// gtk_window_present (GTK_WINDOW (dialog));
92+// ```
93+//
94+// ## Async API
95+//
96+// `AdwMessageDialog` can also be used via the [method@MessageDialog.choose]
97+// method. This API follows the GIO async pattern, and the result can be
98+// obtained by calling [method@MessageDialog.choose_finish], for example:
99+//
100+// ```c
101+// static void
102+// dialog_cb (AdwMessageDialog *dialog,
103+//
104+// GAsyncResult *result,
105+// MyWindow *self)
106+//
107+// {
108+// const char *response = adw_message_dialog_choose_finish (dialog, result);
109+//
110+// // ...
111+// }
112+//
113+// static void
114+// show_dialog (MyWindow *self)
115+//
116+// {
117+// GtkWidget *dialog;
118+//
119+// dialog = adw_message_dialog_new (GTK_WINDOW (self), _("Replace File?"), NULL);
120+//
121+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
122+// _("A file named “%s” already exists. Do you want to replace it?"),
123+// filename);
124+//
125+// adw_message_dialog_add_responses (ADW_MESSAGE_DIALOG (dialog),
126+// "cancel", _("_Cancel"),
127+// "replace", _("_Replace"),
128+// NULL);
129+//
130+// adw_message_dialog_set_response_appearance (ADW_MESSAGE_DIALOG (dialog), "replace", ADW_RESPONSE_DESTRUCTIVE);
131+//
132+// adw_message_dialog_set_default_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
133+// adw_message_dialog_set_close_response (ADW_MESSAGE_DIALOG (dialog), "cancel");
134+//
135+// adw_message_dialog_choose (ADW_MESSAGE_DIALOG (dialog), NULL, (GAsyncReadyCallback) dialog_cb, self);
136+// }
137+//
138+// ```
139+//
140+// ## AdwMessageDialog as GtkBuildable
141+//
142+// `AdwMessageDialog` supports adding responses in UI definitions by via the
143+// `&lt;responses&gt;` element that may contain multiple `&lt;response&gt;` elements, each
144+// respresenting a response.
145+//
146+// Each of the `&lt;response&gt;` elements must have the `id` attribute specifying the
147+// response ID. The contents of the element are used as the response label.
148+//
149+// Response labels can be translated with the usual `translatable`, `context`
150+// and `comments` attributes.
151+//
152+// The `&lt;response&gt;` elements can also have `enabled` and/or `appearance`
153+// attributes. See [method@MessageDialog.set_response_enabled] and
154+// [method@MessageDialog.set_response_appearance] for details.
155+//
156+// Example of an `AdwMessageDialog` UI definition:
157+//
158+// ```xml
159+// &lt;object class="AdwMessageDialog" id="dialog"&gt;
160+//
161+// &lt;property name="heading" translatable="yes"&gt;Save Changes?&lt;/property&gt;
162+// &lt;property name="body" translatable="yes"&gt;Open documents contain unsaved changes. Changes which are not saved will be permanently lost.&lt;/property&gt;
163+// &lt;property name="default-response"&gt;save&lt;/property&gt;
164+// &lt;property name="close-response"&gt;cancel&lt;/property&gt;
165+// &lt;signal name="response" handler="response_cb"/&gt;
166+// &lt;responses&gt;
167+// &lt;response id="cancel" translatable="yes"&gt;_Cancel&lt;/response&gt;
168+// &lt;response id="discard" translatable="yes" appearance="destructive"&gt;_Discard&lt;/response&gt;
169+// &lt;response id="save" translatable="yes" appearance="suggested" enabled="false"&gt;_Save&lt;/response&gt;
170+// &lt;/responses&gt;
171+//
172+// &lt;/object&gt;
173+// ```
174+//
175+// ## Accessibility
176+//
177+// `AdwMessageDialog` uses the `GTK_ACCESSIBLE_ROLE_DIALOG` role.
178+type MessageDialog struct {
179+ gtk.Window
180+}
181+
182+func MessageDialogNewFromInternalPtr(ptr uintptr) *MessageDialog {
183+ cls := &MessageDialog{}
184+ cls.Ptr = ptr
185+ return cls
186+}
187+
188+var xNewMessageDialog func(uintptr, string, string) uintptr
189+
190+// Creates a new `AdwMessageDialog`.
191+//
192+// @heading and @body can be set to `NULL`. This can be useful if they need to
193+// be formatted or use markup. In that case, set them to `NULL` and call
194+// [method@MessageDialog.format_body] or similar methods afterwards:
195+//
196+// ```c
197+// GtkWidget *dialog;
198+//
199+// dialog = adw_message_dialog_new (parent, _("Replace File?"), NULL);
200+// adw_message_dialog_format_body (ADW_MESSAGE_DIALOG (dialog),
201+//
202+// _("A file named “%s” already exists. Do you want to replace it?"),
203+// filename);
204+//
205+// ```
206+func NewMessageDialog(ParentVar *gtk.Window, HeadingVar string, BodyVar string) *gtk.Widget {
207+ NewMessageDialogPtr := xNewMessageDialog(ParentVar.GoPointer(), HeadingVar, BodyVar)
208+ if NewMessageDialogPtr == 0 {
209+ return nil
210+ }
211+
212+ gobject.IncreaseRef(NewMessageDialogPtr)
213+
214+ NewMessageDialogCls := &gtk.Widget{}
215+ NewMessageDialogCls.Ptr = NewMessageDialogPtr
216+ return NewMessageDialogCls
217+}
218+
219+var xMessageDialogAddResponse func(uintptr, string, string)
220+
221+// Adds a response with @id and @label to @self.
222+//
223+// Responses are represented as buttons in the dialog.
224+//
225+// Response ID must be unique. It will be used in
226+// [signal@MessageDialog::response] to tell which response had been activated,
227+// as well as to inspect and modify the response later.
228+//
229+// An embedded underline in @label indicates a mnemonic.
230+//
231+// [method@MessageDialog.set_response_label] can be used to change the response
232+// label after it had been added.
233+//
234+// [method@MessageDialog.set_response_enabled] and
235+// [method@MessageDialog.set_response_appearance] can be used to customize the
236+// responses further.
237+func (x *MessageDialog) AddResponse(IdVar string, LabelVar string) {
238+
239+ xMessageDialogAddResponse(x.GoPointer(), IdVar, LabelVar)
240+
241+}
242+
243+var xMessageDialogAddResponses func(uintptr, string, ...interface{})
244+
245+// Adds multiple responses to @self.
246+//
247+// This is the same as calling [method@MessageDialog.add_response] repeatedly.
248+// The variable argument list should be `NULL`-terminated list of response IDs
249+// and labels.
250+//
251+// Example:
252+//
253+// ```c
254+// adw_message_dialog_add_responses (dialog,
255+//
256+// "cancel", _("_Cancel"),
257+// "discard", _("_Discard"),
258+// "save", _("_Save"),
259+// NULL);
260+//
261+// ```
262+func (x *MessageDialog) AddResponses(FirstIdVar string, varArgs ...interface{}) {
263+
264+ xMessageDialogAddResponses(x.GoPointer(), FirstIdVar, varArgs...)
265+
266+}
267+
268+var xMessageDialogChoose func(uintptr, uintptr, uintptr, uintptr)
269+
270+// This function shows @self to the user.
271+//
272+// The @callback will be called when the alert is dismissed. It should call
273+// [method@MessageDialog.choose_finish] to obtain the result.
274+func (x *MessageDialog) Choose(CancellableVar *gio.Cancellable, CallbackVar gio.AsyncReadyCallback, UserDataVar uintptr) {
275+
276+ xMessageDialogChoose(x.GoPointer(), CancellableVar.GoPointer(), purego.NewCallback(CallbackVar), UserDataVar)
277+
278+}
279+
280+var xMessageDialogChooseFinish func(uintptr, uintptr) string
281+
282+// Finishes the [method@MessageDialog.choose] call and returns the response ID.
283+func (x *MessageDialog) ChooseFinish(ResultVar gio.AsyncResult) string {
284+
285+ return xMessageDialogChooseFinish(x.GoPointer(), ResultVar.GoPointer())
286+
287+}
288+
289+var xMessageDialogFormatBody func(uintptr, string, ...interface{})
290+
291+// Sets the formatted body text of @self.
292+//
293+// See [property@MessageDialog:body].
294+func (x *MessageDialog) FormatBody(FormatVar string, varArgs ...interface{}) {
295+
296+ xMessageDialogFormatBody(x.GoPointer(), FormatVar, varArgs...)
297+
298+}
299+
300+var xMessageDialogFormatBodyMarkup func(uintptr, string, ...interface{})
301+
302+// Sets the formatted body text of @self with Pango markup.
303+//
304+// The @format is assumed to contain Pango markup.
305+//
306+// Special XML characters in the `printf()` arguments passed to this function
307+// will automatically be escaped as necessary, see
308+// [func@GLib.markup_printf_escaped].
309+//
310+// See [property@MessageDialog:body].
311+func (x *MessageDialog) FormatBodyMarkup(FormatVar string, varArgs ...interface{}) {
312+
313+ xMessageDialogFormatBodyMarkup(x.GoPointer(), FormatVar, varArgs...)
314+
315+}
316+
317+var xMessageDialogFormatHeading func(uintptr, string, ...interface{})
318+
319+// Sets the formatted heading of @self.
320+//
321+// See [property@MessageDialog:heading].
322+func (x *MessageDialog) FormatHeading(FormatVar string, varArgs ...interface{}) {
323+
324+ xMessageDialogFormatHeading(x.GoPointer(), FormatVar, varArgs...)
325+
326+}
327+
328+var xMessageDialogFormatHeadingMarkup func(uintptr, string, ...interface{})
329+
330+// Sets the formatted heading of @self with Pango markup.
331+//
332+// The @format is assumed to contain Pango markup.
333+//
334+// Special XML characters in the `printf()` arguments passed to this function
335+// will automatically be escaped as necessary, see
336+// [func@GLib.markup_printf_escaped].
337+//
338+// See [property@MessageDialog:heading].
339+func (x *MessageDialog) FormatHeadingMarkup(FormatVar string, varArgs ...interface{}) {
340+
341+ xMessageDialogFormatHeadingMarkup(x.GoPointer(), FormatVar, varArgs...)
342+
343+}
344+
345+var xMessageDialogGetBody func(uintptr) string
346+
347+// Gets the body text of @self.
348+func (x *MessageDialog) GetBody() string {
349+
350+ return xMessageDialogGetBody(x.GoPointer())
351+
352+}
353+
354+var xMessageDialogGetBodyUseMarkup func(uintptr) bool
355+
356+// Gets whether the body text of @self includes Pango markup.
357+func (x *MessageDialog) GetBodyUseMarkup() bool {
358+
359+ return xMessageDialogGetBodyUseMarkup(x.GoPointer())
360+
361+}
362+
363+var xMessageDialogGetCloseResponse func(uintptr) string
364+
365+// Gets the ID of the close response of @self.
366+func (x *MessageDialog) GetCloseResponse() string {
367+
368+ return xMessageDialogGetCloseResponse(x.GoPointer())
369+
370+}
371+
372+var xMessageDialogGetDefaultResponse func(uintptr) string
373+
374+// Gets the ID of the default response of @self.
375+func (x *MessageDialog) GetDefaultResponse() string {
376+
377+ return xMessageDialogGetDefaultResponse(x.GoPointer())
378+
379+}
380+
381+var xMessageDialogGetExtraChild func(uintptr) uintptr
382+
383+// Gets the child widget of @self.
384+func (x *MessageDialog) GetExtraChild() *gtk.Widget {
385+
386+ GetExtraChildPtr := xMessageDialogGetExtraChild(x.GoPointer())
387+ if GetExtraChildPtr == 0 {
388+ return nil
389+ }
390+
391+ gobject.IncreaseRef(GetExtraChildPtr)
392+
393+ GetExtraChildCls := &gtk.Widget{}
394+ GetExtraChildCls.Ptr = GetExtraChildPtr
395+ return GetExtraChildCls
396+
397+}
398+
399+var xMessageDialogGetHeading func(uintptr) string
400+
401+// Gets the heading of @self.
402+func (x *MessageDialog) GetHeading() string {
403+
404+ return xMessageDialogGetHeading(x.GoPointer())
405+
406+}
407+
408+var xMessageDialogGetHeadingUseMarkup func(uintptr) bool
409+
410+// Gets whether the heading of @self includes Pango markup.
411+func (x *MessageDialog) GetHeadingUseMarkup() bool {
412+
413+ return xMessageDialogGetHeadingUseMarkup(x.GoPointer())
414+
415+}
416+
417+var xMessageDialogGetResponseAppearance func(uintptr, string) ResponseAppearance
418+
419+// Gets the appearance of @response.
420+//
421+// See [method@MessageDialog.set_response_appearance].
422+func (x *MessageDialog) GetResponseAppearance(ResponseVar string) ResponseAppearance {
423+
424+ return xMessageDialogGetResponseAppearance(x.GoPointer(), ResponseVar)
425+
426+}
427+
428+var xMessageDialogGetResponseEnabled func(uintptr, string) bool
429+
430+// Gets whether @response is enabled.
431+//
432+// See [method@MessageDialog.set_response_enabled].
433+func (x *MessageDialog) GetResponseEnabled(ResponseVar string) bool {
434+
435+ return xMessageDialogGetResponseEnabled(x.GoPointer(), ResponseVar)
436+
437+}
438+
439+var xMessageDialogGetResponseLabel func(uintptr, string) string
440+
441+// Gets the label of @response.
442+//
443+// See [method@MessageDialog.set_response_label].
444+func (x *MessageDialog) GetResponseLabel(ResponseVar string) string {
445+
446+ return xMessageDialogGetResponseLabel(x.GoPointer(), ResponseVar)
447+
448+}
449+
450+var xMessageDialogHasResponse func(uintptr, string) bool
451+
452+// Gets whether @self has a response with the ID @response.
453+func (x *MessageDialog) HasResponse(ResponseVar string) bool {
454+
455+ return xMessageDialogHasResponse(x.GoPointer(), ResponseVar)
456+
457+}
458+
459+var xMessageDialogResponse func(uintptr, string)
460+
461+// Emits the [signal@MessageDialog::response] signal with the given response ID.
462+//
463+// Used to indicate that the user has responded to the dialog in some way.
464+func (x *MessageDialog) Response(ResponseVar string) {
465+
466+ xMessageDialogResponse(x.GoPointer(), ResponseVar)
467+
468+}
469+
470+var xMessageDialogSetBody func(uintptr, string)
471+
472+// Sets the body text of @self.
473+func (x *MessageDialog) SetBody(BodyVar string) {
474+
475+ xMessageDialogSetBody(x.GoPointer(), BodyVar)
476+
477+}
478+
479+var xMessageDialogSetBodyUseMarkup func(uintptr, bool)
480+
481+// Sets whether the body text of @self includes Pango markup.
482+//
483+// See [func@Pango.parse_markup].
484+func (x *MessageDialog) SetBodyUseMarkup(UseMarkupVar bool) {
485+
486+ xMessageDialogSetBodyUseMarkup(x.GoPointer(), UseMarkupVar)
487+
488+}
489+
490+var xMessageDialogSetCloseResponse func(uintptr, string)
491+
492+// Sets the ID of the close response of @self.
493+//
494+// It will be passed to [signal@MessageDialog::response] if the window is
495+// closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system action.
496+//
497+// It doesn't have to correspond to any of the responses in the dialog.
498+//
499+// The default close response is `close`.
500+func (x *MessageDialog) SetCloseResponse(ResponseVar string) {
501+
502+ xMessageDialogSetCloseResponse(x.GoPointer(), ResponseVar)
503+
504+}
505+
506+var xMessageDialogSetDefaultResponse func(uintptr, string)
507+
508+// Sets the ID of the default response of @self.
509+//
510+// If set, pressing &lt;kbd&gt;Enter&lt;/kbd&gt; will activate the corresponding button.
511+//
512+// If set to `NULL` or to a non-existent response ID, pressing &lt;kbd&gt;Enter&lt;/kbd&gt;
513+// will do nothing.
514+func (x *MessageDialog) SetDefaultResponse(ResponseVar string) {
515+
516+ xMessageDialogSetDefaultResponse(x.GoPointer(), ResponseVar)
517+
518+}
519+
520+var xMessageDialogSetExtraChild func(uintptr, uintptr)
521+
522+// Sets the child widget of @self.
523+//
524+// The child widget is displayed below the heading and body.
525+func (x *MessageDialog) SetExtraChild(ChildVar *gtk.Widget) {
526+
527+ xMessageDialogSetExtraChild(x.GoPointer(), ChildVar.GoPointer())
528+
529+}
530+
531+var xMessageDialogSetHeading func(uintptr, string)
532+
533+// Sets the heading of @self.
534+func (x *MessageDialog) SetHeading(HeadingVar string) {
535+
536+ xMessageDialogSetHeading(x.GoPointer(), HeadingVar)
537+
538+}
539+
540+var xMessageDialogSetHeadingUseMarkup func(uintptr, bool)
541+
542+// Sets whether the heading of @self includes Pango markup.
543+//
544+// See [func@Pango.parse_markup].
545+func (x *MessageDialog) SetHeadingUseMarkup(UseMarkupVar bool) {
546+
547+ xMessageDialogSetHeadingUseMarkup(x.GoPointer(), UseMarkupVar)
548+
549+}
550+
551+var xMessageDialogSetResponseAppearance func(uintptr, string, ResponseAppearance)
552+
553+// Sets the appearance for @response.
554+//
555+// &lt;picture&gt;
556+//
557+// &lt;source srcset="message-dialog-appearance-dark.png" media="(prefers-color-scheme: dark)"&gt;
558+// &lt;img src="message-dialog-appearance.png" alt="message-dialog-appearance"&gt;
559+//
560+// &lt;/picture&gt;
561+//
562+// Use `ADW_RESPONSE_SUGGESTED` to mark important responses such as the
563+// affirmative action, like the Save button in the example.
564+//
565+// Use `ADW_RESPONSE_DESTRUCTIVE` to draw attention to the potentially damaging
566+// consequences of using @response. This appearance acts as a warning to the
567+// user. The Discard button in the example is using this appearance.
568+//
569+// The default appearance is `ADW_RESPONSE_DEFAULT`.
570+//
571+// Negative responses like Cancel or Close should use the default appearance.
572+func (x *MessageDialog) SetResponseAppearance(ResponseVar string, AppearanceVar ResponseAppearance) {
573+
574+ xMessageDialogSetResponseAppearance(x.GoPointer(), ResponseVar, AppearanceVar)
575+
576+}
577+
578+var xMessageDialogSetResponseEnabled func(uintptr, string, bool)
579+
580+// Sets whether @response is enabled.
581+//
582+// If @response is not enabled, the corresponding button will have
583+// [property@Gtk.Widget:sensitive] set to `FALSE` and it can't be activated as
584+// a default response.
585+//
586+// @response can still be used as [property@MessageDialog:close-response] while
587+// it's not enabled.
588+//
589+// Responses are enabled by default.
590+func (x *MessageDialog) SetResponseEnabled(ResponseVar string, EnabledVar bool) {
591+
592+ xMessageDialogSetResponseEnabled(x.GoPointer(), ResponseVar, EnabledVar)
593+
594+}
595+
596+var xMessageDialogSetResponseLabel func(uintptr, string, string)
597+
598+// Sets the label of @response to @label.
599+//
600+// Labels are displayed on the dialog buttons. An embedded underline in @label
601+// indicates a mnemonic.
602+func (x *MessageDialog) SetResponseLabel(ResponseVar string, LabelVar string) {
603+
604+ xMessageDialogSetResponseLabel(x.GoPointer(), ResponseVar, LabelVar)
605+
606+}
607+
608+func (c *MessageDialog) GoPointer() uintptr {
609+ return c.Ptr
610+}
611+
612+func (c *MessageDialog) SetGoPointer(ptr uintptr) {
613+ c.Ptr = ptr
614+}
615+
616+// This signal is emitted when the dialog is closed.
617+//
618+// @response will be set to the response ID of the button that had been
619+// activated.
620+//
621+// if the dialog was closed by pressing &lt;kbd&gt;Escape&lt;/kbd&gt; or with a system
622+// action, @response will be set to the value of
623+// [property@MessageDialog:close-response].
624+func (x *MessageDialog) ConnectResponse(cb func(MessageDialog, string)) {
625+ fcb := func(clsPtr uintptr, ResponseVarp string) {
626+ fa := MessageDialog{}
627+ fa.Ptr = clsPtr
628+
629+ cb(fa, ResponseVarp)
630+
631+ }
632+ gobject.ObjectConnect(x.GoPointer(), "signal::response", purego.NewCallback(fcb))
633+}
634+
635+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
636+func (x *MessageDialog) GetAccessibleRole() gtk.AccessibleRole {
637+
638+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
639+
640+}
641+
642+// Resets the accessible @property to its default value.
643+func (x *MessageDialog) ResetProperty(PropertyVar gtk.AccessibleProperty) {
644+
645+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
646+
647+}
648+
649+// Resets the accessible @relation to its default value.
650+func (x *MessageDialog) ResetRelation(RelationVar gtk.AccessibleRelation) {
651+
652+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
653+
654+}
655+
656+// Resets the accessible @state to its default value.
657+func (x *MessageDialog) ResetState(StateVar gtk.AccessibleState) {
658+
659+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
660+
661+}
662+
663+// Updates a list of accessible properties.
664+//
665+// See the [enum@Gtk.AccessibleProperty] documentation for the
666+// value types of accessible properties.
667+//
668+// This function should be called by `GtkWidget` types whenever
669+// an accessible property change must be communicated to assistive
670+// technologies.
671+//
672+// Example:
673+// ```c
674+// value = gtk_adjustment_get_value (adjustment);
675+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
676+//
677+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
678+// -1);
679+//
680+// ```
681+func (x *MessageDialog) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
682+
683+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
684+
685+}
686+
687+// Updates an array of accessible properties.
688+//
689+// This function should be called by `GtkWidget` types whenever an accessible
690+// property change must be communicated to assistive technologies.
691+//
692+// This function is meant to be used by language bindings.
693+func (x *MessageDialog) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
694+
695+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
696+
697+}
698+
699+// Updates a list of accessible relations.
700+//
701+// This function should be called by `GtkWidget` types whenever an accessible
702+// relation change must be communicated to assistive technologies.
703+//
704+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
705+// you should pass each reference individually, followed by %NULL, e.g.
706+//
707+// ```c
708+// gtk_accessible_update_relation (accessible,
709+//
710+// GTK_ACCESSIBLE_RELATION_CONTROLS,
711+// ref1, NULL,
712+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
713+// ref1, ref2, ref3, NULL,
714+// -1);
715+//
716+// ```
717+func (x *MessageDialog) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
718+
719+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
720+
721+}
722+
723+// Updates an array of accessible relations.
724+//
725+// This function should be called by `GtkWidget` types whenever an accessible
726+// relation change must be communicated to assistive technologies.
727+//
728+// This function is meant to be used by language bindings.
729+func (x *MessageDialog) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
730+
731+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
732+
733+}
734+
735+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
736+// documentation for the value types of accessible states.
737+//
738+// This function should be called by `GtkWidget` types whenever an accessible
739+// state change must be communicated to assistive technologies.
740+//
741+// Example:
742+// ```c
743+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
744+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
745+//
746+// GTK_ACCESSIBLE_STATE_CHECKED, value,
747+// -1);
748+//
749+// ```
750+func (x *MessageDialog) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
751+
752+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
753+
754+}
755+
756+// Updates an array of accessible states.
757+//
758+// This function should be called by `GtkWidget` types whenever an accessible
759+// state change must be communicated to assistive technologies.
760+//
761+// This function is meant to be used by language bindings.
762+func (x *MessageDialog) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
763+
764+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
765+
766+}
767+
768+// Gets the ID of the @buildable object.
769+//
770+// `GtkBuilder` sets the name based on the ID attribute
771+// of the &lt;object&gt; tag used to construct the @buildable.
772+func (x *MessageDialog) GetBuildableId() string {
773+
774+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
775+
776+}
777+
778+// Returns the renderer that is used for this `GtkNative`.
779+func (x *MessageDialog) GetRenderer() *gsk.Renderer {
780+
781+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
782+ if GetRendererPtr == 0 {
783+ return nil
784+ }
785+
786+ gobject.IncreaseRef(GetRendererPtr)
787+
788+ GetRendererCls := &gsk.Renderer{}
789+ GetRendererCls.Ptr = GetRendererPtr
790+ return GetRendererCls
791+
792+}
793+
794+// Returns the surface of this `GtkNative`.
795+func (x *MessageDialog) GetSurface() *gdk.Surface {
796+
797+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
798+ if GetSurfacePtr == 0 {
799+ return nil
800+ }
801+
802+ gobject.IncreaseRef(GetSurfacePtr)
803+
804+ GetSurfaceCls := &gdk.Surface{}
805+ GetSurfaceCls.Ptr = GetSurfacePtr
806+ return GetSurfaceCls
807+
808+}
809+
810+// Retrieves the surface transform of @self.
811+//
812+// This is the translation from @self's surface coordinates into
813+// @self's widget coordinates.
814+func (x *MessageDialog) GetSurfaceTransform(XVar float64, YVar float64) {
815+
816+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
817+
818+}
819+
820+// Realizes a `GtkNative`.
821+//
822+// This should only be used by subclasses.
823+func (x *MessageDialog) Realize() {
824+
825+ gtk.XGtkNativeRealize(x.GoPointer())
826+
827+}
828+
829+// Unrealizes a `GtkNative`.
830+//
831+// This should only be used by subclasses.
832+func (x *MessageDialog) Unrealize() {
833+
834+ gtk.XGtkNativeUnrealize(x.GoPointer())
835+
836+}
837+
838+// Returns the display that this `GtkRoot` is on.
839+func (x *MessageDialog) GetDisplay() *gdk.Display {
840+
841+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
842+ if GetDisplayPtr == 0 {
843+ return nil
844+ }
845+
846+ gobject.IncreaseRef(GetDisplayPtr)
847+
848+ GetDisplayCls := &gdk.Display{}
849+ GetDisplayCls.Ptr = GetDisplayPtr
850+ return GetDisplayCls
851+
852+}
853+
854+// Retrieves the current focused widget within the root.
855+//
856+// Note that this is the widget that would have the focus
857+// if the root is active; if the root is not focused then
858+// `gtk_widget_has_focus (widget)` will be %FALSE for the
859+// widget.
860+func (x *MessageDialog) GetFocus() *gtk.Widget {
861+
862+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
863+ if GetFocusPtr == 0 {
864+ return nil
865+ }
866+
867+ gobject.IncreaseRef(GetFocusPtr)
868+
869+ GetFocusCls := &gtk.Widget{}
870+ GetFocusCls.Ptr = GetFocusPtr
871+ return GetFocusCls
872+
873+}
874+
875+// If @focus is not the current focus widget, and is focusable, sets
876+// it as the focus widget for the root.
877+//
878+// If @focus is %NULL, unsets the focus widget for the root.
879+//
880+// To set the focus to a particular widget in the root, it is usually
881+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
882+// this function.
883+func (x *MessageDialog) SetFocus(FocusVar *gtk.Widget) {
884+
885+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
886+
887+}
888+
889+func init() {
890+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
891+ if err != nil {
892+ panic(err)
893+ }
894+
895+ core.PuregoSafeRegister(&xNewMessageDialog, lib, "adw_message_dialog_new")
896+
897+ core.PuregoSafeRegister(&xMessageDialogAddResponse, lib, "adw_message_dialog_add_response")
898+ core.PuregoSafeRegister(&xMessageDialogAddResponses, lib, "adw_message_dialog_add_responses")
899+ core.PuregoSafeRegister(&xMessageDialogChoose, lib, "adw_message_dialog_choose")
900+ core.PuregoSafeRegister(&xMessageDialogChooseFinish, lib, "adw_message_dialog_choose_finish")
901+ core.PuregoSafeRegister(&xMessageDialogFormatBody, lib, "adw_message_dialog_format_body")
902+ core.PuregoSafeRegister(&xMessageDialogFormatBodyMarkup, lib, "adw_message_dialog_format_body_markup")
903+ core.PuregoSafeRegister(&xMessageDialogFormatHeading, lib, "adw_message_dialog_format_heading")
904+ core.PuregoSafeRegister(&xMessageDialogFormatHeadingMarkup, lib, "adw_message_dialog_format_heading_markup")
905+ core.PuregoSafeRegister(&xMessageDialogGetBody, lib, "adw_message_dialog_get_body")
906+ core.PuregoSafeRegister(&xMessageDialogGetBodyUseMarkup, lib, "adw_message_dialog_get_body_use_markup")
907+ core.PuregoSafeRegister(&xMessageDialogGetCloseResponse, lib, "adw_message_dialog_get_close_response")
908+ core.PuregoSafeRegister(&xMessageDialogGetDefaultResponse, lib, "adw_message_dialog_get_default_response")
909+ core.PuregoSafeRegister(&xMessageDialogGetExtraChild, lib, "adw_message_dialog_get_extra_child")
910+ core.PuregoSafeRegister(&xMessageDialogGetHeading, lib, "adw_message_dialog_get_heading")
911+ core.PuregoSafeRegister(&xMessageDialogGetHeadingUseMarkup, lib, "adw_message_dialog_get_heading_use_markup")
912+ core.PuregoSafeRegister(&xMessageDialogGetResponseAppearance, lib, "adw_message_dialog_get_response_appearance")
913+ core.PuregoSafeRegister(&xMessageDialogGetResponseEnabled, lib, "adw_message_dialog_get_response_enabled")
914+ core.PuregoSafeRegister(&xMessageDialogGetResponseLabel, lib, "adw_message_dialog_get_response_label")
915+ core.PuregoSafeRegister(&xMessageDialogHasResponse, lib, "adw_message_dialog_has_response")
916+ core.PuregoSafeRegister(&xMessageDialogResponse, lib, "adw_message_dialog_response")
917+ core.PuregoSafeRegister(&xMessageDialogSetBody, lib, "adw_message_dialog_set_body")
918+ core.PuregoSafeRegister(&xMessageDialogSetBodyUseMarkup, lib, "adw_message_dialog_set_body_use_markup")
919+ core.PuregoSafeRegister(&xMessageDialogSetCloseResponse, lib, "adw_message_dialog_set_close_response")
920+ core.PuregoSafeRegister(&xMessageDialogSetDefaultResponse, lib, "adw_message_dialog_set_default_response")
921+ core.PuregoSafeRegister(&xMessageDialogSetExtraChild, lib, "adw_message_dialog_set_extra_child")
922+ core.PuregoSafeRegister(&xMessageDialogSetHeading, lib, "adw_message_dialog_set_heading")
923+ core.PuregoSafeRegister(&xMessageDialogSetHeadingUseMarkup, lib, "adw_message_dialog_set_heading_use_markup")
924+ core.PuregoSafeRegister(&xMessageDialogSetResponseAppearance, lib, "adw_message_dialog_set_response_appearance")
925+ core.PuregoSafeRegister(&xMessageDialogSetResponseEnabled, lib, "adw_message_dialog_set_response_enabled")
926+ core.PuregoSafeRegister(&xMessageDialogSetResponseLabel, lib, "adw_message_dialog_set_response_label")
927+
928+}
A v4/adw/adw-navigation-direction.go +13 -0
@@ -0,0 +1,13 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Describes the direction of a swipe navigation gesture.
5+type NavigationDirection int
6+
7+const (
8+
9+ // Corresponds to start or top, depending on orientation and text direction
10+ NavigationDirectionBackValue NavigationDirection = 0
11+ // Corresponds to end or bottom, depending on orientation and text direction
12+ NavigationDirectionForwardValue NavigationDirection = 1
13+)
A v4/adw/adw-password-entry-row.go +548 -0
@@ -0,0 +1,548 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PasswordEntryRowClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A [class@EntryRow] tailored for entering secrets.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="password-entry-row-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="password-entry-row.png" alt="password-entry-row"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// It does not show its contents in clear text, does not allow to copy it to the
26+// clipboard, and shows a warning when Caps Lock is engaged. If the underlying
27+// platform allows it, `AdwPasswordEntryRow` will also place the text in a
28+// non-pageable memory area, to avoid it being written out to disk by the
29+// operating system.
30+//
31+// It offer a way to reveal the contents in clear text.
32+//
33+// ## CSS Nodes
34+//
35+// `AdwPasswordEntryRow` has a single CSS node with name `row` that carries
36+// `.entry` and `.password` style classes.
37+type PasswordEntryRow struct {
38+ EntryRow
39+}
40+
41+func PasswordEntryRowNewFromInternalPtr(ptr uintptr) *PasswordEntryRow {
42+ cls := &PasswordEntryRow{}
43+ cls.Ptr = ptr
44+ return cls
45+}
46+
47+var xNewPasswordEntryRow func() uintptr
48+
49+// Creates a new `AdwPasswordEntryRow`.
50+func NewPasswordEntryRow() *gtk.Widget {
51+ NewPasswordEntryRowPtr := xNewPasswordEntryRow()
52+ if NewPasswordEntryRowPtr == 0 {
53+ return nil
54+ }
55+
56+ gobject.IncreaseRef(NewPasswordEntryRowPtr)
57+
58+ NewPasswordEntryRowCls := &gtk.Widget{}
59+ NewPasswordEntryRowCls.Ptr = NewPasswordEntryRowPtr
60+ return NewPasswordEntryRowCls
61+}
62+
63+func (c *PasswordEntryRow) GoPointer() uintptr {
64+ return c.Ptr
65+}
66+
67+func (c *PasswordEntryRow) SetGoPointer(ptr uintptr) {
68+ c.Ptr = ptr
69+}
70+
71+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
72+func (x *PasswordEntryRow) GetAccessibleRole() gtk.AccessibleRole {
73+
74+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
75+
76+}
77+
78+// Resets the accessible @property to its default value.
79+func (x *PasswordEntryRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
80+
81+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
82+
83+}
84+
85+// Resets the accessible @relation to its default value.
86+func (x *PasswordEntryRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
87+
88+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
89+
90+}
91+
92+// Resets the accessible @state to its default value.
93+func (x *PasswordEntryRow) ResetState(StateVar gtk.AccessibleState) {
94+
95+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
96+
97+}
98+
99+// Updates a list of accessible properties.
100+//
101+// See the [enum@Gtk.AccessibleProperty] documentation for the
102+// value types of accessible properties.
103+//
104+// This function should be called by `GtkWidget` types whenever
105+// an accessible property change must be communicated to assistive
106+// technologies.
107+//
108+// Example:
109+// ```c
110+// value = gtk_adjustment_get_value (adjustment);
111+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
112+//
113+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
114+// -1);
115+//
116+// ```
117+func (x *PasswordEntryRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
118+
119+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
120+
121+}
122+
123+// Updates an array of accessible properties.
124+//
125+// This function should be called by `GtkWidget` types whenever an accessible
126+// property change must be communicated to assistive technologies.
127+//
128+// This function is meant to be used by language bindings.
129+func (x *PasswordEntryRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
130+
131+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
132+
133+}
134+
135+// Updates a list of accessible relations.
136+//
137+// This function should be called by `GtkWidget` types whenever an accessible
138+// relation change must be communicated to assistive technologies.
139+//
140+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
141+// you should pass each reference individually, followed by %NULL, e.g.
142+//
143+// ```c
144+// gtk_accessible_update_relation (accessible,
145+//
146+// GTK_ACCESSIBLE_RELATION_CONTROLS,
147+// ref1, NULL,
148+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
149+// ref1, ref2, ref3, NULL,
150+// -1);
151+//
152+// ```
153+func (x *PasswordEntryRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
154+
155+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
156+
157+}
158+
159+// Updates an array of accessible relations.
160+//
161+// This function should be called by `GtkWidget` types whenever an accessible
162+// relation change must be communicated to assistive technologies.
163+//
164+// This function is meant to be used by language bindings.
165+func (x *PasswordEntryRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
166+
167+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
168+
169+}
170+
171+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
172+// documentation for the value types of accessible states.
173+//
174+// This function should be called by `GtkWidget` types whenever an accessible
175+// state change must be communicated to assistive technologies.
176+//
177+// Example:
178+// ```c
179+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
180+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
181+//
182+// GTK_ACCESSIBLE_STATE_CHECKED, value,
183+// -1);
184+//
185+// ```
186+func (x *PasswordEntryRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
187+
188+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
189+
190+}
191+
192+// Updates an array of accessible states.
193+//
194+// This function should be called by `GtkWidget` types whenever an accessible
195+// state change must be communicated to assistive technologies.
196+//
197+// This function is meant to be used by language bindings.
198+func (x *PasswordEntryRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
199+
200+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
201+
202+}
203+
204+// Gets the action name for @actionable.
205+func (x *PasswordEntryRow) GetActionName() string {
206+
207+ return gtk.XGtkActionableGetActionName(x.GoPointer())
208+
209+}
210+
211+// Gets the current target value of @actionable.
212+func (x *PasswordEntryRow) GetActionTargetValue() *glib.Variant {
213+
214+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
215+
216+}
217+
218+// Specifies the name of the action with which this widget should be
219+// associated.
220+//
221+// If @action_name is %NULL then the widget will be unassociated from
222+// any previous action.
223+//
224+// Usually this function is used when the widget is located (or will be
225+// located) within the hierarchy of a `GtkApplicationWindow`.
226+//
227+// Names are of the form “win.save” or “app.quit” for actions on the
228+// containing [class@ApplicationWindow] or its associated [class@Application],
229+// respectively. This is the same form used for actions in the [class@Gio.Menu]
230+// associated with the window.
231+func (x *PasswordEntryRow) SetActionName(ActionNameVar string) {
232+
233+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
234+
235+}
236+
237+// Sets the target of an actionable widget.
238+//
239+// This is a convenience function that calls [ctor@GLib.Variant.new] for
240+// @format_string and uses the result to call
241+// [method@Gtk.Actionable.set_action_target_value].
242+//
243+// If you are setting a string-valued target and want to set
244+// the action name at the same time, you can use
245+// [method@Gtk.Actionable.set_detailed_action_name].
246+func (x *PasswordEntryRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
247+
248+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
249+
250+}
251+
252+// Sets the target value of an actionable widget.
253+//
254+// If @target_value is %NULL then the target value is unset.
255+//
256+// The target value has two purposes. First, it is used as the parameter
257+// to activation of the action associated with the `GtkActionable` widget.
258+// Second, it is used to determine if the widget should be rendered as
259+// “active” — the widget is active if the state is equal to the given target.
260+//
261+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
262+// with string state in a typical “radio button” situation. Each button
263+// will be associated with the same action, but with a different target
264+// value for that action. Clicking on a particular button will activate
265+// the action with the target of that button, which will typically cause
266+// the action’s state to change to that value. Since the action’s state
267+// is now equal to the target value of the button, the button will now
268+// be rendered as active (and the other buttons, with different targets,
269+// rendered inactive).
270+func (x *PasswordEntryRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
271+
272+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
273+
274+}
275+
276+// Sets the action-name and associated string target value of an
277+// actionable widget.
278+//
279+// @detailed_action_name is a string in the format accepted by
280+// [func@Gio.Action.parse_detailed_name].
281+func (x *PasswordEntryRow) SetDetailedActionName(DetailedActionNameVar string) {
282+
283+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
284+
285+}
286+
287+// Gets the ID of the @buildable object.
288+//
289+// `GtkBuilder` sets the name based on the ID attribute
290+// of the &lt;object&gt; tag used to construct the @buildable.
291+func (x *PasswordEntryRow) GetBuildableId() string {
292+
293+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
294+
295+}
296+
297+// Deletes the currently selected text of the editable.
298+//
299+// This call doesn’t do anything if there is no selected text.
300+func (x *PasswordEntryRow) DeleteSelection() {
301+
302+ gtk.XGtkEditableDeleteSelection(x.GoPointer())
303+
304+}
305+
306+// Deletes a sequence of characters.
307+//
308+// The characters that are deleted are those characters at positions
309+// from @start_pos up to, but not including @end_pos. If @end_pos is
310+// negative, then the characters deleted are those from @start_pos to
311+// the end of the text.
312+//
313+// Note that the positions are specified in characters, not bytes.
314+func (x *PasswordEntryRow) DeleteText(StartPosVar int32, EndPosVar int32) {
315+
316+ gtk.XGtkEditableDeleteText(x.GoPointer(), StartPosVar, EndPosVar)
317+
318+}
319+
320+// Undoes the setup done by [method@Gtk.Editable.init_delegate].
321+//
322+// This is a helper function that should be called from dispose,
323+// before removing the delegate object.
324+func (x *PasswordEntryRow) FinishDelegate() {
325+
326+ gtk.XGtkEditableFinishDelegate(x.GoPointer())
327+
328+}
329+
330+// Gets the alignment of the editable.
331+func (x *PasswordEntryRow) GetAlignment() float32 {
332+
333+ return gtk.XGtkEditableGetAlignment(x.GoPointer())
334+
335+}
336+
337+// Retrieves a sequence of characters.
338+//
339+// The characters that are retrieved are those characters at positions
340+// from @start_pos up to, but not including @end_pos. If @end_pos is negative,
341+// then the characters retrieved are those characters from @start_pos to
342+// the end of the text.
343+//
344+// Note that positions are specified in characters, not bytes.
345+func (x *PasswordEntryRow) GetChars(StartPosVar int32, EndPosVar int32) string {
346+
347+ return gtk.XGtkEditableGetChars(x.GoPointer(), StartPosVar, EndPosVar)
348+
349+}
350+
351+// Gets the `GtkEditable` that @editable is delegating its
352+// implementation to.
353+//
354+// Typically, the delegate is a [class@Gtk.Text] widget.
355+func (x *PasswordEntryRow) GetDelegate() *gtk.EditableBase {
356+
357+ GetDelegatePtr := gtk.XGtkEditableGetDelegate(x.GoPointer())
358+ if GetDelegatePtr == 0 {
359+ return nil
360+ }
361+
362+ gobject.IncreaseRef(GetDelegatePtr)
363+
364+ GetDelegateCls := &gtk.EditableBase{}
365+ GetDelegateCls.Ptr = GetDelegatePtr
366+ return GetDelegateCls
367+
368+}
369+
370+// Retrieves whether @editable is editable.
371+func (x *PasswordEntryRow) GetEditable() bool {
372+
373+ return gtk.XGtkEditableGetEditable(x.GoPointer())
374+
375+}
376+
377+// Gets if undo/redo actions are enabled for @editable
378+func (x *PasswordEntryRow) GetEnableUndo() bool {
379+
380+ return gtk.XGtkEditableGetEnableUndo(x.GoPointer())
381+
382+}
383+
384+// Retrieves the desired maximum width of @editable, in characters.
385+func (x *PasswordEntryRow) GetMaxWidthChars() int32 {
386+
387+ return gtk.XGtkEditableGetMaxWidthChars(x.GoPointer())
388+
389+}
390+
391+// Retrieves the current position of the cursor relative
392+// to the start of the content of the editable.
393+//
394+// Note that this position is in characters, not in bytes.
395+func (x *PasswordEntryRow) GetPosition() int32 {
396+
397+ return gtk.XGtkEditableGetPosition(x.GoPointer())
398+
399+}
400+
401+// Retrieves the selection bound of the editable.
402+//
403+// @start_pos will be filled with the start of the selection and
404+// @end_pos with end. If no text was selected both will be identical
405+// and %FALSE will be returned.
406+//
407+// Note that positions are specified in characters, not bytes.
408+func (x *PasswordEntryRow) GetSelectionBounds(StartPosVar int32, EndPosVar int32) bool {
409+
410+ return gtk.XGtkEditableGetSelectionBounds(x.GoPointer(), StartPosVar, EndPosVar)
411+
412+}
413+
414+// Retrieves the contents of @editable.
415+//
416+// The returned string is owned by GTK and must not be modified or freed.
417+func (x *PasswordEntryRow) GetText() string {
418+
419+ return gtk.XGtkEditableGetText(x.GoPointer())
420+
421+}
422+
423+// Gets the number of characters of space reserved
424+// for the contents of the editable.
425+func (x *PasswordEntryRow) GetWidthChars() int32 {
426+
427+ return gtk.XGtkEditableGetWidthChars(x.GoPointer())
428+
429+}
430+
431+// Sets up a delegate for `GtkEditable`.
432+//
433+// This is assuming that the get_delegate vfunc in the `GtkEditable`
434+// interface has been set up for the @editable's type.
435+//
436+// This is a helper function that should be called in instance init,
437+// after creating the delegate object.
438+func (x *PasswordEntryRow) InitDelegate() {
439+
440+ gtk.XGtkEditableInitDelegate(x.GoPointer())
441+
442+}
443+
444+// Inserts @length bytes of @text into the contents of the
445+// widget, at position @position.
446+//
447+// Note that the position is in characters, not in bytes.
448+// The function updates @position to point after the newly
449+// inserted text.
450+func (x *PasswordEntryRow) InsertText(TextVar string, LengthVar int32, PositionVar int32) {
451+
452+ gtk.XGtkEditableInsertText(x.GoPointer(), TextVar, LengthVar, PositionVar)
453+
454+}
455+
456+// Selects a region of text.
457+//
458+// The characters that are selected are those characters at positions
459+// from @start_pos up to, but not including @end_pos. If @end_pos is
460+// negative, then the characters selected are those characters from
461+// @start_pos to the end of the text.
462+//
463+// Note that positions are specified in characters, not bytes.
464+func (x *PasswordEntryRow) SelectRegion(StartPosVar int32, EndPosVar int32) {
465+
466+ gtk.XGtkEditableSelectRegion(x.GoPointer(), StartPosVar, EndPosVar)
467+
468+}
469+
470+// Sets the alignment for the contents of the editable.
471+//
472+// This controls the horizontal positioning of the contents when
473+// the displayed text is shorter than the width of the editable.
474+func (x *PasswordEntryRow) SetAlignment(XalignVar float32) {
475+
476+ gtk.XGtkEditableSetAlignment(x.GoPointer(), XalignVar)
477+
478+}
479+
480+// Determines if the user can edit the text in the editable widget.
481+func (x *PasswordEntryRow) SetEditable(IsEditableVar bool) {
482+
483+ gtk.XGtkEditableSetEditable(x.GoPointer(), IsEditableVar)
484+
485+}
486+
487+// If enabled, changes to @editable will be saved for undo/redo
488+// actions.
489+//
490+// This results in an additional copy of text changes and are not
491+// stored in secure memory. As such, undo is forcefully disabled
492+// when [property@Gtk.Text:visibility] is set to %FALSE.
493+func (x *PasswordEntryRow) SetEnableUndo(EnableUndoVar bool) {
494+
495+ gtk.XGtkEditableSetEnableUndo(x.GoPointer(), EnableUndoVar)
496+
497+}
498+
499+// Sets the desired maximum width in characters of @editable.
500+func (x *PasswordEntryRow) SetMaxWidthChars(NCharsVar int32) {
501+
502+ gtk.XGtkEditableSetMaxWidthChars(x.GoPointer(), NCharsVar)
503+
504+}
505+
506+// Sets the cursor position in the editable to the given value.
507+//
508+// The cursor is displayed before the character with the given (base 0)
509+// index in the contents of the editable. The value must be less than
510+// or equal to the number of characters in the editable. A value of -1
511+// indicates that the position should be set after the last character
512+// of the editable. Note that @position is in characters, not in bytes.
513+func (x *PasswordEntryRow) SetPosition(PositionVar int32) {
514+
515+ gtk.XGtkEditableSetPosition(x.GoPointer(), PositionVar)
516+
517+}
518+
519+// Sets the text in the editable to the given value.
520+//
521+// This is replacing the current contents.
522+func (x *PasswordEntryRow) SetText(TextVar string) {
523+
524+ gtk.XGtkEditableSetText(x.GoPointer(), TextVar)
525+
526+}
527+
528+// Changes the size request of the editable to be about the
529+// right size for @n_chars characters.
530+//
531+// Note that it changes the size request, the size can still
532+// be affected by how you pack the widget into containers.
533+// If @n_chars is -1, the size reverts to the default size.
534+func (x *PasswordEntryRow) SetWidthChars(NCharsVar int32) {
535+
536+ gtk.XGtkEditableSetWidthChars(x.GoPointer(), NCharsVar)
537+
538+}
539+
540+func init() {
541+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
542+ if err != nil {
543+ panic(err)
544+ }
545+
546+ core.PuregoSafeRegister(&xNewPasswordEntryRow, lib, "adw_password_entry_row_new")
547+
548+}
A v4/adw/adw-preferences-group.go +329 -0
@@ -0,0 +1,329 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesGroupClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A group of preference rows.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-group-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-group.png" alt="preferences-group"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// An `AdwPreferencesGroup` represents a group or tightly related preferences,
27+// which in turn are represented by [class@PreferencesRow].
28+//
29+// To summarize the role of the preferences it gathers, a group can have both a
30+// title and a description. The title will be used by [class@PreferencesWindow]
31+// to let the user look for a preference.
32+//
33+// ## AdwPreferencesGroup as GtkBuildable
34+//
35+// The `AdwPreferencesGroup` implementation of the [iface@Gtk.Buildable] interface
36+// supports adding [class@PreferencesRow]s to the list by omitting "type". If "type"
37+// is omitted and the widget isn't a [class@PreferencesRow] the child is added to
38+// a box below the list.
39+//
40+// When the "type" attribute of a child is `header-suffix`, the child
41+// is set as the suffix on the end of the title and description.
42+//
43+// ## CSS nodes
44+//
45+// `AdwPreferencesGroup` has a single CSS node with name `preferencesgroup`.
46+//
47+// ## Accessibility
48+//
49+// `AdwPreferencesGroup` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
50+type PreferencesGroup struct {
51+ gtk.Widget
52+}
53+
54+func PreferencesGroupNewFromInternalPtr(ptr uintptr) *PreferencesGroup {
55+ cls := &PreferencesGroup{}
56+ cls.Ptr = ptr
57+ return cls
58+}
59+
60+var xNewPreferencesGroup func() uintptr
61+
62+// Creates a new `AdwPreferencesGroup`.
63+func NewPreferencesGroup() *gtk.Widget {
64+ NewPreferencesGroupPtr := xNewPreferencesGroup()
65+ if NewPreferencesGroupPtr == 0 {
66+ return nil
67+ }
68+
69+ gobject.IncreaseRef(NewPreferencesGroupPtr)
70+
71+ NewPreferencesGroupCls := &gtk.Widget{}
72+ NewPreferencesGroupCls.Ptr = NewPreferencesGroupPtr
73+ return NewPreferencesGroupCls
74+}
75+
76+var xPreferencesGroupAdd func(uintptr, uintptr)
77+
78+// Adds a child to @self.
79+func (x *PreferencesGroup) Add(ChildVar *gtk.Widget) {
80+
81+ xPreferencesGroupAdd(x.GoPointer(), ChildVar.GoPointer())
82+
83+}
84+
85+var xPreferencesGroupGetDescription func(uintptr) string
86+
87+// Gets the description of @self.
88+func (x *PreferencesGroup) GetDescription() string {
89+
90+ return xPreferencesGroupGetDescription(x.GoPointer())
91+
92+}
93+
94+var xPreferencesGroupGetHeaderSuffix func(uintptr) uintptr
95+
96+// Gets the suffix for @self's header.
97+func (x *PreferencesGroup) GetHeaderSuffix() *gtk.Widget {
98+
99+ GetHeaderSuffixPtr := xPreferencesGroupGetHeaderSuffix(x.GoPointer())
100+ if GetHeaderSuffixPtr == 0 {
101+ return nil
102+ }
103+
104+ gobject.IncreaseRef(GetHeaderSuffixPtr)
105+
106+ GetHeaderSuffixCls := &gtk.Widget{}
107+ GetHeaderSuffixCls.Ptr = GetHeaderSuffixPtr
108+ return GetHeaderSuffixCls
109+
110+}
111+
112+var xPreferencesGroupGetTitle func(uintptr) string
113+
114+// Gets the title of @self.
115+func (x *PreferencesGroup) GetTitle() string {
116+
117+ return xPreferencesGroupGetTitle(x.GoPointer())
118+
119+}
120+
121+var xPreferencesGroupRemove func(uintptr, uintptr)
122+
123+// Removes a child from @self.
124+func (x *PreferencesGroup) Remove(ChildVar *gtk.Widget) {
125+
126+ xPreferencesGroupRemove(x.GoPointer(), ChildVar.GoPointer())
127+
128+}
129+
130+var xPreferencesGroupSetDescription func(uintptr, string)
131+
132+// Sets the description for @self.
133+func (x *PreferencesGroup) SetDescription(DescriptionVar string) {
134+
135+ xPreferencesGroupSetDescription(x.GoPointer(), DescriptionVar)
136+
137+}
138+
139+var xPreferencesGroupSetHeaderSuffix func(uintptr, uintptr)
140+
141+// Sets the suffix for @self's header.
142+//
143+// Displayed above the list, next to the title and description.
144+//
145+// Suffixes are commonly used to show a button or a spinner for the whole group.
146+func (x *PreferencesGroup) SetHeaderSuffix(SuffixVar *gtk.Widget) {
147+
148+ xPreferencesGroupSetHeaderSuffix(x.GoPointer(), SuffixVar.GoPointer())
149+
150+}
151+
152+var xPreferencesGroupSetTitle func(uintptr, string)
153+
154+// Sets the title for @self.
155+func (x *PreferencesGroup) SetTitle(TitleVar string) {
156+
157+ xPreferencesGroupSetTitle(x.GoPointer(), TitleVar)
158+
159+}
160+
161+func (c *PreferencesGroup) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesGroup) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesGroup) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesGroup) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesGroup) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesGroup) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesGroup) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesGroup) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesGroup) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesGroup) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesGroup) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesGroup) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesGroup) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesGroup, lib, "adw_preferences_group_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesGroupAdd, lib, "adw_preferences_group_add")
321+ core.PuregoSafeRegister(&xPreferencesGroupGetDescription, lib, "adw_preferences_group_get_description")
322+ core.PuregoSafeRegister(&xPreferencesGroupGetHeaderSuffix, lib, "adw_preferences_group_get_header_suffix")
323+ core.PuregoSafeRegister(&xPreferencesGroupGetTitle, lib, "adw_preferences_group_get_title")
324+ core.PuregoSafeRegister(&xPreferencesGroupRemove, lib, "adw_preferences_group_remove")
325+ core.PuregoSafeRegister(&xPreferencesGroupSetDescription, lib, "adw_preferences_group_set_description")
326+ core.PuregoSafeRegister(&xPreferencesGroupSetHeaderSuffix, lib, "adw_preferences_group_set_header_suffix")
327+ core.PuregoSafeRegister(&xPreferencesGroupSetTitle, lib, "adw_preferences_group_set_title")
328+
329+}
A v4/adw/adw-preferences-page.go +332 -0
@@ -0,0 +1,332 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type PreferencesPageClass struct {
12+ ParentClass uintptr
13+
14+ Padding uintptr
15+}
16+
17+// A page from [class@PreferencesWindow].
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="preferences-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="preferences-page.png" alt="preferences-page"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// The `AdwPreferencesPage` widget gathers preferences groups into a single page
27+// of a preferences window.
28+//
29+// ## CSS nodes
30+//
31+// `AdwPreferencesPage` has a single CSS node with name `preferencespage`.
32+//
33+// ## Accessibility
34+//
35+// `AdwPreferencesPage` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
36+type PreferencesPage struct {
37+ gtk.Widget
38+}
39+
40+func PreferencesPageNewFromInternalPtr(ptr uintptr) *PreferencesPage {
41+ cls := &PreferencesPage{}
42+ cls.Ptr = ptr
43+ return cls
44+}
45+
46+var xNewPreferencesPage func() uintptr
47+
48+// Creates a new `AdwPreferencesPage`.
49+func NewPreferencesPage() *gtk.Widget {
50+ NewPreferencesPagePtr := xNewPreferencesPage()
51+ if NewPreferencesPagePtr == 0 {
52+ return nil
53+ }
54+
55+ gobject.IncreaseRef(NewPreferencesPagePtr)
56+
57+ NewPreferencesPageCls := &gtk.Widget{}
58+ NewPreferencesPageCls.Ptr = NewPreferencesPagePtr
59+ return NewPreferencesPageCls
60+}
61+
62+var xPreferencesPageAdd func(uintptr, uintptr)
63+
64+// Adds a preferences group to @self.
65+func (x *PreferencesPage) Add(GroupVar *PreferencesGroup) {
66+
67+ xPreferencesPageAdd(x.GoPointer(), GroupVar.GoPointer())
68+
69+}
70+
71+var xPreferencesPageGetIconName func(uintptr) string
72+
73+// Gets the icon name for @self.
74+func (x *PreferencesPage) GetIconName() string {
75+
76+ return xPreferencesPageGetIconName(x.GoPointer())
77+
78+}
79+
80+var xPreferencesPageGetName func(uintptr) string
81+
82+// Gets the name of @self.
83+func (x *PreferencesPage) GetName() string {
84+
85+ return xPreferencesPageGetName(x.GoPointer())
86+
87+}
88+
89+var xPreferencesPageGetTitle func(uintptr) string
90+
91+// Gets the title of @self.
92+func (x *PreferencesPage) GetTitle() string {
93+
94+ return xPreferencesPageGetTitle(x.GoPointer())
95+
96+}
97+
98+var xPreferencesPageGetUseUnderline func(uintptr) bool
99+
100+// Gets whether an embedded underline in the title indicates a mnemonic.
101+func (x *PreferencesPage) GetUseUnderline() bool {
102+
103+ return xPreferencesPageGetUseUnderline(x.GoPointer())
104+
105+}
106+
107+var xPreferencesPageRemove func(uintptr, uintptr)
108+
109+// Removes a group from @self.
110+func (x *PreferencesPage) Remove(GroupVar *PreferencesGroup) {
111+
112+ xPreferencesPageRemove(x.GoPointer(), GroupVar.GoPointer())
113+
114+}
115+
116+var xPreferencesPageScrollToTop func(uintptr)
117+
118+// Scrolls the scrolled window of @self to the top.
119+func (x *PreferencesPage) ScrollToTop() {
120+
121+ xPreferencesPageScrollToTop(x.GoPointer())
122+
123+}
124+
125+var xPreferencesPageSetIconName func(uintptr, string)
126+
127+// Sets the icon name for @self.
128+func (x *PreferencesPage) SetIconName(IconNameVar string) {
129+
130+ xPreferencesPageSetIconName(x.GoPointer(), IconNameVar)
131+
132+}
133+
134+var xPreferencesPageSetName func(uintptr, string)
135+
136+// Sets the name of @self.
137+func (x *PreferencesPage) SetName(NameVar string) {
138+
139+ xPreferencesPageSetName(x.GoPointer(), NameVar)
140+
141+}
142+
143+var xPreferencesPageSetTitle func(uintptr, string)
144+
145+// Sets the title of @self.
146+func (x *PreferencesPage) SetTitle(TitleVar string) {
147+
148+ xPreferencesPageSetTitle(x.GoPointer(), TitleVar)
149+
150+}
151+
152+var xPreferencesPageSetUseUnderline func(uintptr, bool)
153+
154+// Sets whether an embedded underline in the title indicates a mnemonic.
155+func (x *PreferencesPage) SetUseUnderline(UseUnderlineVar bool) {
156+
157+ xPreferencesPageSetUseUnderline(x.GoPointer(), UseUnderlineVar)
158+
159+}
160+
161+func (c *PreferencesPage) GoPointer() uintptr {
162+ return c.Ptr
163+}
164+
165+func (c *PreferencesPage) SetGoPointer(ptr uintptr) {
166+ c.Ptr = ptr
167+}
168+
169+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
170+func (x *PreferencesPage) GetAccessibleRole() gtk.AccessibleRole {
171+
172+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
173+
174+}
175+
176+// Resets the accessible @property to its default value.
177+func (x *PreferencesPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
178+
179+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
180+
181+}
182+
183+// Resets the accessible @relation to its default value.
184+func (x *PreferencesPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
185+
186+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
187+
188+}
189+
190+// Resets the accessible @state to its default value.
191+func (x *PreferencesPage) ResetState(StateVar gtk.AccessibleState) {
192+
193+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
194+
195+}
196+
197+// Updates a list of accessible properties.
198+//
199+// See the [enum@Gtk.AccessibleProperty] documentation for the
200+// value types of accessible properties.
201+//
202+// This function should be called by `GtkWidget` types whenever
203+// an accessible property change must be communicated to assistive
204+// technologies.
205+//
206+// Example:
207+// ```c
208+// value = gtk_adjustment_get_value (adjustment);
209+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
210+//
211+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
212+// -1);
213+//
214+// ```
215+func (x *PreferencesPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
216+
217+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
218+
219+}
220+
221+// Updates an array of accessible properties.
222+//
223+// This function should be called by `GtkWidget` types whenever an accessible
224+// property change must be communicated to assistive technologies.
225+//
226+// This function is meant to be used by language bindings.
227+func (x *PreferencesPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
228+
229+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
230+
231+}
232+
233+// Updates a list of accessible relations.
234+//
235+// This function should be called by `GtkWidget` types whenever an accessible
236+// relation change must be communicated to assistive technologies.
237+//
238+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
239+// you should pass each reference individually, followed by %NULL, e.g.
240+//
241+// ```c
242+// gtk_accessible_update_relation (accessible,
243+//
244+// GTK_ACCESSIBLE_RELATION_CONTROLS,
245+// ref1, NULL,
246+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
247+// ref1, ref2, ref3, NULL,
248+// -1);
249+//
250+// ```
251+func (x *PreferencesPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
252+
253+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
254+
255+}
256+
257+// Updates an array of accessible relations.
258+//
259+// This function should be called by `GtkWidget` types whenever an accessible
260+// relation change must be communicated to assistive technologies.
261+//
262+// This function is meant to be used by language bindings.
263+func (x *PreferencesPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
264+
265+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
266+
267+}
268+
269+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
270+// documentation for the value types of accessible states.
271+//
272+// This function should be called by `GtkWidget` types whenever an accessible
273+// state change must be communicated to assistive technologies.
274+//
275+// Example:
276+// ```c
277+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
278+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
279+//
280+// GTK_ACCESSIBLE_STATE_CHECKED, value,
281+// -1);
282+//
283+// ```
284+func (x *PreferencesPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
285+
286+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
287+
288+}
289+
290+// Updates an array of accessible states.
291+//
292+// This function should be called by `GtkWidget` types whenever an accessible
293+// state change must be communicated to assistive technologies.
294+//
295+// This function is meant to be used by language bindings.
296+func (x *PreferencesPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
297+
298+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
299+
300+}
301+
302+// Gets the ID of the @buildable object.
303+//
304+// `GtkBuilder` sets the name based on the ID attribute
305+// of the &lt;object&gt; tag used to construct the @buildable.
306+func (x *PreferencesPage) GetBuildableId() string {
307+
308+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
309+
310+}
311+
312+func init() {
313+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
314+ if err != nil {
315+ panic(err)
316+ }
317+
318+ core.PuregoSafeRegister(&xNewPreferencesPage, lib, "adw_preferences_page_new")
319+
320+ core.PuregoSafeRegister(&xPreferencesPageAdd, lib, "adw_preferences_page_add")
321+ core.PuregoSafeRegister(&xPreferencesPageGetIconName, lib, "adw_preferences_page_get_icon_name")
322+ core.PuregoSafeRegister(&xPreferencesPageGetName, lib, "adw_preferences_page_get_name")
323+ core.PuregoSafeRegister(&xPreferencesPageGetTitle, lib, "adw_preferences_page_get_title")
324+ core.PuregoSafeRegister(&xPreferencesPageGetUseUnderline, lib, "adw_preferences_page_get_use_underline")
325+ core.PuregoSafeRegister(&xPreferencesPageRemove, lib, "adw_preferences_page_remove")
326+ core.PuregoSafeRegister(&xPreferencesPageScrollToTop, lib, "adw_preferences_page_scroll_to_top")
327+ core.PuregoSafeRegister(&xPreferencesPageSetIconName, lib, "adw_preferences_page_set_icon_name")
328+ core.PuregoSafeRegister(&xPreferencesPageSetName, lib, "adw_preferences_page_set_name")
329+ core.PuregoSafeRegister(&xPreferencesPageSetTitle, lib, "adw_preferences_page_set_title")
330+ core.PuregoSafeRegister(&xPreferencesPageSetUseUnderline, lib, "adw_preferences_page_set_use_underline")
331+
332+}
A v4/adw/adw-preferences-row.go +385 -0
@@ -0,0 +1,385 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/glib"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type PreferencesRowClass struct {
13+ ParentClass uintptr
14+
15+ Padding uintptr
16+}
17+
18+// A [class@Gtk.ListBoxRow] used to present preferences.
19+//
20+// The `AdwPreferencesRow` widget has a title that [class@PreferencesWindow]
21+// will use to let the user look for a preference. It doesn't present the title
22+// in any way and lets you present the preference as you please.
23+//
24+// [class@ActionRow] and its derivatives are convenient to use as preference
25+// rows as they take care of presenting the preference's title while letting you
26+// compose the inputs of the preference around it.
27+type PreferencesRow struct {
28+ gtk.ListBoxRow
29+}
30+
31+func PreferencesRowNewFromInternalPtr(ptr uintptr) *PreferencesRow {
32+ cls := &PreferencesRow{}
33+ cls.Ptr = ptr
34+ return cls
35+}
36+
37+var xNewPreferencesRow func() uintptr
38+
39+// Creates a new `AdwPreferencesRow`.
40+func NewPreferencesRow() *gtk.Widget {
41+ NewPreferencesRowPtr := xNewPreferencesRow()
42+ if NewPreferencesRowPtr == 0 {
43+ return nil
44+ }
45+
46+ gobject.IncreaseRef(NewPreferencesRowPtr)
47+
48+ NewPreferencesRowCls := &gtk.Widget{}
49+ NewPreferencesRowCls.Ptr = NewPreferencesRowPtr
50+ return NewPreferencesRowCls
51+}
52+
53+var xPreferencesRowGetTitle func(uintptr) string
54+
55+// Gets the title of the preference represented by @self.
56+func (x *PreferencesRow) GetTitle() string {
57+
58+ return xPreferencesRowGetTitle(x.GoPointer())
59+
60+}
61+
62+var xPreferencesRowGetTitleSelectable func(uintptr) bool
63+
64+// Gets whether the user can copy the title from the label
65+func (x *PreferencesRow) GetTitleSelectable() bool {
66+
67+ return xPreferencesRowGetTitleSelectable(x.GoPointer())
68+
69+}
70+
71+var xPreferencesRowGetUseMarkup func(uintptr) bool
72+
73+// Gets whether to use Pango markup for the title label.
74+func (x *PreferencesRow) GetUseMarkup() bool {
75+
76+ return xPreferencesRowGetUseMarkup(x.GoPointer())
77+
78+}
79+
80+var xPreferencesRowGetUseUnderline func(uintptr) bool
81+
82+// Gets whether an embedded underline in the title indicates a mnemonic.
83+func (x *PreferencesRow) GetUseUnderline() bool {
84+
85+ return xPreferencesRowGetUseUnderline(x.GoPointer())
86+
87+}
88+
89+var xPreferencesRowSetTitle func(uintptr, string)
90+
91+// Sets the title of the preference represented by @self.
92+//
93+// The title is interpreted as Pango markup unless
94+// [property@PreferencesRow:use-markup] is set to `FALSE`.
95+func (x *PreferencesRow) SetTitle(TitleVar string) {
96+
97+ xPreferencesRowSetTitle(x.GoPointer(), TitleVar)
98+
99+}
100+
101+var xPreferencesRowSetTitleSelectable func(uintptr, bool)
102+
103+// Sets whether the user can copy the title from the label
104+//
105+// See also [property@Gtk.Label:selectable].
106+func (x *PreferencesRow) SetTitleSelectable(TitleSelectableVar bool) {
107+
108+ xPreferencesRowSetTitleSelectable(x.GoPointer(), TitleSelectableVar)
109+
110+}
111+
112+var xPreferencesRowSetUseMarkup func(uintptr, bool)
113+
114+// Sets whether to use Pango markup for the title label.
115+//
116+// Subclasses may also use it for other labels, such as subtitle.
117+//
118+// See also [func@Pango.parse_markup].
119+func (x *PreferencesRow) SetUseMarkup(UseMarkupVar bool) {
120+
121+ xPreferencesRowSetUseMarkup(x.GoPointer(), UseMarkupVar)
122+
123+}
124+
125+var xPreferencesRowSetUseUnderline func(uintptr, bool)
126+
127+// Sets whether an embedded underline in the title indicates a mnemonic.
128+func (x *PreferencesRow) SetUseUnderline(UseUnderlineVar bool) {
129+
130+ xPreferencesRowSetUseUnderline(x.GoPointer(), UseUnderlineVar)
131+
132+}
133+
134+func (c *PreferencesRow) GoPointer() uintptr {
135+ return c.Ptr
136+}
137+
138+func (c *PreferencesRow) SetGoPointer(ptr uintptr) {
139+ c.Ptr = ptr
140+}
141+
142+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
143+func (x *PreferencesRow) GetAccessibleRole() gtk.AccessibleRole {
144+
145+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
146+
147+}
148+
149+// Resets the accessible @property to its default value.
150+func (x *PreferencesRow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
151+
152+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
153+
154+}
155+
156+// Resets the accessible @relation to its default value.
157+func (x *PreferencesRow) ResetRelation(RelationVar gtk.AccessibleRelation) {
158+
159+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
160+
161+}
162+
163+// Resets the accessible @state to its default value.
164+func (x *PreferencesRow) ResetState(StateVar gtk.AccessibleState) {
165+
166+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
167+
168+}
169+
170+// Updates a list of accessible properties.
171+//
172+// See the [enum@Gtk.AccessibleProperty] documentation for the
173+// value types of accessible properties.
174+//
175+// This function should be called by `GtkWidget` types whenever
176+// an accessible property change must be communicated to assistive
177+// technologies.
178+//
179+// Example:
180+// ```c
181+// value = gtk_adjustment_get_value (adjustment);
182+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
183+//
184+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
185+// -1);
186+//
187+// ```
188+func (x *PreferencesRow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
189+
190+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
191+
192+}
193+
194+// Updates an array of accessible properties.
195+//
196+// This function should be called by `GtkWidget` types whenever an accessible
197+// property change must be communicated to assistive technologies.
198+//
199+// This function is meant to be used by language bindings.
200+func (x *PreferencesRow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
201+
202+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
203+
204+}
205+
206+// Updates a list of accessible relations.
207+//
208+// This function should be called by `GtkWidget` types whenever an accessible
209+// relation change must be communicated to assistive technologies.
210+//
211+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
212+// you should pass each reference individually, followed by %NULL, e.g.
213+//
214+// ```c
215+// gtk_accessible_update_relation (accessible,
216+//
217+// GTK_ACCESSIBLE_RELATION_CONTROLS,
218+// ref1, NULL,
219+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
220+// ref1, ref2, ref3, NULL,
221+// -1);
222+//
223+// ```
224+func (x *PreferencesRow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
225+
226+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
227+
228+}
229+
230+// Updates an array of accessible relations.
231+//
232+// This function should be called by `GtkWidget` types whenever an accessible
233+// relation change must be communicated to assistive technologies.
234+//
235+// This function is meant to be used by language bindings.
236+func (x *PreferencesRow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
237+
238+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
239+
240+}
241+
242+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
243+// documentation for the value types of accessible states.
244+//
245+// This function should be called by `GtkWidget` types whenever an accessible
246+// state change must be communicated to assistive technologies.
247+//
248+// Example:
249+// ```c
250+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
251+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
252+//
253+// GTK_ACCESSIBLE_STATE_CHECKED, value,
254+// -1);
255+//
256+// ```
257+func (x *PreferencesRow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
258+
259+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
260+
261+}
262+
263+// Updates an array of accessible states.
264+//
265+// This function should be called by `GtkWidget` types whenever an accessible
266+// state change must be communicated to assistive technologies.
267+//
268+// This function is meant to be used by language bindings.
269+func (x *PreferencesRow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
270+
271+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
272+
273+}
274+
275+// Gets the action name for @actionable.
276+func (x *PreferencesRow) GetActionName() string {
277+
278+ return gtk.XGtkActionableGetActionName(x.GoPointer())
279+
280+}
281+
282+// Gets the current target value of @actionable.
283+func (x *PreferencesRow) GetActionTargetValue() *glib.Variant {
284+
285+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
286+
287+}
288+
289+// Specifies the name of the action with which this widget should be
290+// associated.
291+//
292+// If @action_name is %NULL then the widget will be unassociated from
293+// any previous action.
294+//
295+// Usually this function is used when the widget is located (or will be
296+// located) within the hierarchy of a `GtkApplicationWindow`.
297+//
298+// Names are of the form “win.save” or “app.quit” for actions on the
299+// containing [class@ApplicationWindow] or its associated [class@Application],
300+// respectively. This is the same form used for actions in the [class@Gio.Menu]
301+// associated with the window.
302+func (x *PreferencesRow) SetActionName(ActionNameVar string) {
303+
304+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
305+
306+}
307+
308+// Sets the target of an actionable widget.
309+//
310+// This is a convenience function that calls [ctor@GLib.Variant.new] for
311+// @format_string and uses the result to call
312+// [method@Gtk.Actionable.set_action_target_value].
313+//
314+// If you are setting a string-valued target and want to set
315+// the action name at the same time, you can use
316+// [method@Gtk.Actionable.set_detailed_action_name].
317+func (x *PreferencesRow) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
318+
319+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
320+
321+}
322+
323+// Sets the target value of an actionable widget.
324+//
325+// If @target_value is %NULL then the target value is unset.
326+//
327+// The target value has two purposes. First, it is used as the parameter
328+// to activation of the action associated with the `GtkActionable` widget.
329+// Second, it is used to determine if the widget should be rendered as
330+// “active” — the widget is active if the state is equal to the given target.
331+//
332+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
333+// with string state in a typical “radio button” situation. Each button
334+// will be associated with the same action, but with a different target
335+// value for that action. Clicking on a particular button will activate
336+// the action with the target of that button, which will typically cause
337+// the action’s state to change to that value. Since the action’s state
338+// is now equal to the target value of the button, the button will now
339+// be rendered as active (and the other buttons, with different targets,
340+// rendered inactive).
341+func (x *PreferencesRow) SetActionTargetValue(TargetValueVar *glib.Variant) {
342+
343+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
344+
345+}
346+
347+// Sets the action-name and associated string target value of an
348+// actionable widget.
349+//
350+// @detailed_action_name is a string in the format accepted by
351+// [func@Gio.Action.parse_detailed_name].
352+func (x *PreferencesRow) SetDetailedActionName(DetailedActionNameVar string) {
353+
354+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
355+
356+}
357+
358+// Gets the ID of the @buildable object.
359+//
360+// `GtkBuilder` sets the name based on the ID attribute
361+// of the &lt;object&gt; tag used to construct the @buildable.
362+func (x *PreferencesRow) GetBuildableId() string {
363+
364+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
365+
366+}
367+
368+func init() {
369+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
370+ if err != nil {
371+ panic(err)
372+ }
373+
374+ core.PuregoSafeRegister(&xNewPreferencesRow, lib, "adw_preferences_row_new")
375+
376+ core.PuregoSafeRegister(&xPreferencesRowGetTitle, lib, "adw_preferences_row_get_title")
377+ core.PuregoSafeRegister(&xPreferencesRowGetTitleSelectable, lib, "adw_preferences_row_get_title_selectable")
378+ core.PuregoSafeRegister(&xPreferencesRowGetUseMarkup, lib, "adw_preferences_row_get_use_markup")
379+ core.PuregoSafeRegister(&xPreferencesRowGetUseUnderline, lib, "adw_preferences_row_get_use_underline")
380+ core.PuregoSafeRegister(&xPreferencesRowSetTitle, lib, "adw_preferences_row_set_title")
381+ core.PuregoSafeRegister(&xPreferencesRowSetTitleSelectable, lib, "adw_preferences_row_set_title_selectable")
382+ core.PuregoSafeRegister(&xPreferencesRowSetUseMarkup, lib, "adw_preferences_row_set_use_markup")
383+ core.PuregoSafeRegister(&xPreferencesRowSetUseUnderline, lib, "adw_preferences_row_set_use_underline")
384+
385+}
A v4/adw/adw-preferences-window.go +491 -0
@@ -0,0 +1,491 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gsk"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type PreferencesWindowClass struct {
14+ ParentClass uintptr
15+
16+ Padding uintptr
17+}
18+
19+// A window to present an application's preferences.
20+//
21+// &lt;picture&gt;
22+//
23+// &lt;source srcset="preferences-window-dark.png" media="(prefers-color-scheme: dark)"&gt;
24+// &lt;img src="preferences-window.png" alt="preferences-window"&gt;
25+//
26+// &lt;/picture&gt;
27+//
28+// The `AdwPreferencesWindow` widget presents an application's preferences
29+// gathered into pages and groups. The preferences are searchable by the user.
30+//
31+// ## CSS nodes
32+//
33+// `AdwPreferencesWindow` has a main CSS node with the name `window` and the
34+// style class `.preferences`.
35+type PreferencesWindow struct {
36+ Window
37+}
38+
39+func PreferencesWindowNewFromInternalPtr(ptr uintptr) *PreferencesWindow {
40+ cls := &PreferencesWindow{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewPreferencesWindow func() uintptr
46+
47+// Creates a new `AdwPreferencesWindow`.
48+func NewPreferencesWindow() *gtk.Widget {
49+ NewPreferencesWindowPtr := xNewPreferencesWindow()
50+ if NewPreferencesWindowPtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewPreferencesWindowPtr)
55+
56+ NewPreferencesWindowCls := &gtk.Widget{}
57+ NewPreferencesWindowCls.Ptr = NewPreferencesWindowPtr
58+ return NewPreferencesWindowCls
59+}
60+
61+var xPreferencesWindowAdd func(uintptr, uintptr)
62+
63+// Adds a preferences page to @self.
64+func (x *PreferencesWindow) Add(PageVar *PreferencesPage) {
65+
66+ xPreferencesWindowAdd(x.GoPointer(), PageVar.GoPointer())
67+
68+}
69+
70+var xPreferencesWindowAddToast func(uintptr, uintptr)
71+
72+// Displays @toast.
73+//
74+// See [method@ToastOverlay.add_toast].
75+func (x *PreferencesWindow) AddToast(ToastVar *Toast) {
76+
77+ xPreferencesWindowAddToast(x.GoPointer(), ToastVar.GoPointer())
78+
79+}
80+
81+var xPreferencesWindowCloseSubpage func(uintptr)
82+
83+// Closes the current subpage.
84+//
85+// If there is no presented subpage, this does nothing.
86+func (x *PreferencesWindow) CloseSubpage() {
87+
88+ xPreferencesWindowCloseSubpage(x.GoPointer())
89+
90+}
91+
92+var xPreferencesWindowGetCanNavigateBack func(uintptr) bool
93+
94+// Gets whether gestures and shortcuts for closing subpages are enabled.
95+func (x *PreferencesWindow) GetCanNavigateBack() bool {
96+
97+ return xPreferencesWindowGetCanNavigateBack(x.GoPointer())
98+
99+}
100+
101+var xPreferencesWindowGetSearchEnabled func(uintptr) bool
102+
103+// Gets whether search is enabled for @self.
104+func (x *PreferencesWindow) GetSearchEnabled() bool {
105+
106+ return xPreferencesWindowGetSearchEnabled(x.GoPointer())
107+
108+}
109+
110+var xPreferencesWindowGetVisiblePage func(uintptr) uintptr
111+
112+// Gets the currently visible page of @self.
113+func (x *PreferencesWindow) GetVisiblePage() *PreferencesPage {
114+
115+ GetVisiblePagePtr := xPreferencesWindowGetVisiblePage(x.GoPointer())
116+ if GetVisiblePagePtr == 0 {
117+ return nil
118+ }
119+
120+ gobject.IncreaseRef(GetVisiblePagePtr)
121+
122+ GetVisiblePageCls := &PreferencesPage{}
123+ GetVisiblePageCls.Ptr = GetVisiblePagePtr
124+ return GetVisiblePageCls
125+
126+}
127+
128+var xPreferencesWindowGetVisiblePageName func(uintptr) string
129+
130+// Gets the name of currently visible page of @self.
131+func (x *PreferencesWindow) GetVisiblePageName() string {
132+
133+ return xPreferencesWindowGetVisiblePageName(x.GoPointer())
134+
135+}
136+
137+var xPreferencesWindowPresentSubpage func(uintptr, uintptr)
138+
139+// Sets @subpage as the window's subpage and opens it.
140+//
141+// The transition can be cancelled by the user, in which case visible child will
142+// change back to the previously visible child.
143+func (x *PreferencesWindow) PresentSubpage(SubpageVar *gtk.Widget) {
144+
145+ xPreferencesWindowPresentSubpage(x.GoPointer(), SubpageVar.GoPointer())
146+
147+}
148+
149+var xPreferencesWindowRemove func(uintptr, uintptr)
150+
151+// Removes a page from @self.
152+func (x *PreferencesWindow) Remove(PageVar *PreferencesPage) {
153+
154+ xPreferencesWindowRemove(x.GoPointer(), PageVar.GoPointer())
155+
156+}
157+
158+var xPreferencesWindowSetCanNavigateBack func(uintptr, bool)
159+
160+// Sets whether gestures and shortcuts for closing subpages are enabled.
161+//
162+// The supported gestures are:
163+//
164+// - One-finger swipe on touchscreens
165+// - Horizontal scrolling on touchpads (usually two-finger swipe)
166+// - Back mouse button
167+//
168+// The keyboard back key is also supported, as well as the
169+// &lt;kbd&gt;Alt&lt;/kbd&gt;+&lt;kbd&gt;←&lt;/kbd&gt; shortcut.
170+//
171+// For right-to-left locales, gestures and shortcuts are reversed.
172+func (x *PreferencesWindow) SetCanNavigateBack(CanNavigateBackVar bool) {
173+
174+ xPreferencesWindowSetCanNavigateBack(x.GoPointer(), CanNavigateBackVar)
175+
176+}
177+
178+var xPreferencesWindowSetSearchEnabled func(uintptr, bool)
179+
180+// Sets whether search is enabled for @self.
181+func (x *PreferencesWindow) SetSearchEnabled(SearchEnabledVar bool) {
182+
183+ xPreferencesWindowSetSearchEnabled(x.GoPointer(), SearchEnabledVar)
184+
185+}
186+
187+var xPreferencesWindowSetVisiblePage func(uintptr, uintptr)
188+
189+// Makes @page the visible page of @self.
190+func (x *PreferencesWindow) SetVisiblePage(PageVar *PreferencesPage) {
191+
192+ xPreferencesWindowSetVisiblePage(x.GoPointer(), PageVar.GoPointer())
193+
194+}
195+
196+var xPreferencesWindowSetVisiblePageName func(uintptr, string)
197+
198+// Makes the page with the given name visible.
199+//
200+// See [property@ViewStack:visible-child].
201+func (x *PreferencesWindow) SetVisiblePageName(NameVar string) {
202+
203+ xPreferencesWindowSetVisiblePageName(x.GoPointer(), NameVar)
204+
205+}
206+
207+func (c *PreferencesWindow) GoPointer() uintptr {
208+ return c.Ptr
209+}
210+
211+func (c *PreferencesWindow) SetGoPointer(ptr uintptr) {
212+ c.Ptr = ptr
213+}
214+
215+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
216+func (x *PreferencesWindow) GetAccessibleRole() gtk.AccessibleRole {
217+
218+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
219+
220+}
221+
222+// Resets the accessible @property to its default value.
223+func (x *PreferencesWindow) ResetProperty(PropertyVar gtk.AccessibleProperty) {
224+
225+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
226+
227+}
228+
229+// Resets the accessible @relation to its default value.
230+func (x *PreferencesWindow) ResetRelation(RelationVar gtk.AccessibleRelation) {
231+
232+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
233+
234+}
235+
236+// Resets the accessible @state to its default value.
237+func (x *PreferencesWindow) ResetState(StateVar gtk.AccessibleState) {
238+
239+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
240+
241+}
242+
243+// Updates a list of accessible properties.
244+//
245+// See the [enum@Gtk.AccessibleProperty] documentation for the
246+// value types of accessible properties.
247+//
248+// This function should be called by `GtkWidget` types whenever
249+// an accessible property change must be communicated to assistive
250+// technologies.
251+//
252+// Example:
253+// ```c
254+// value = gtk_adjustment_get_value (adjustment);
255+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
256+//
257+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
258+// -1);
259+//
260+// ```
261+func (x *PreferencesWindow) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
262+
263+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
264+
265+}
266+
267+// Updates an array of accessible properties.
268+//
269+// This function should be called by `GtkWidget` types whenever an accessible
270+// property change must be communicated to assistive technologies.
271+//
272+// This function is meant to be used by language bindings.
273+func (x *PreferencesWindow) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
274+
275+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
276+
277+}
278+
279+// Updates a list of accessible relations.
280+//
281+// This function should be called by `GtkWidget` types whenever an accessible
282+// relation change must be communicated to assistive technologies.
283+//
284+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
285+// you should pass each reference individually, followed by %NULL, e.g.
286+//
287+// ```c
288+// gtk_accessible_update_relation (accessible,
289+//
290+// GTK_ACCESSIBLE_RELATION_CONTROLS,
291+// ref1, NULL,
292+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
293+// ref1, ref2, ref3, NULL,
294+// -1);
295+//
296+// ```
297+func (x *PreferencesWindow) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
298+
299+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
300+
301+}
302+
303+// Updates an array of accessible relations.
304+//
305+// This function should be called by `GtkWidget` types whenever an accessible
306+// relation change must be communicated to assistive technologies.
307+//
308+// This function is meant to be used by language bindings.
309+func (x *PreferencesWindow) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
310+
311+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
312+
313+}
314+
315+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
316+// documentation for the value types of accessible states.
317+//
318+// This function should be called by `GtkWidget` types whenever an accessible
319+// state change must be communicated to assistive technologies.
320+//
321+// Example:
322+// ```c
323+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
324+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
325+//
326+// GTK_ACCESSIBLE_STATE_CHECKED, value,
327+// -1);
328+//
329+// ```
330+func (x *PreferencesWindow) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
331+
332+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
333+
334+}
335+
336+// Updates an array of accessible states.
337+//
338+// This function should be called by `GtkWidget` types whenever an accessible
339+// state change must be communicated to assistive technologies.
340+//
341+// This function is meant to be used by language bindings.
342+func (x *PreferencesWindow) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
343+
344+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
345+
346+}
347+
348+// Gets the ID of the @buildable object.
349+//
350+// `GtkBuilder` sets the name based on the ID attribute
351+// of the &lt;object&gt; tag used to construct the @buildable.
352+func (x *PreferencesWindow) GetBuildableId() string {
353+
354+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
355+
356+}
357+
358+// Returns the renderer that is used for this `GtkNative`.
359+func (x *PreferencesWindow) GetRenderer() *gsk.Renderer {
360+
361+ GetRendererPtr := gtk.XGtkNativeGetRenderer(x.GoPointer())
362+ if GetRendererPtr == 0 {
363+ return nil
364+ }
365+
366+ gobject.IncreaseRef(GetRendererPtr)
367+
368+ GetRendererCls := &gsk.Renderer{}
369+ GetRendererCls.Ptr = GetRendererPtr
370+ return GetRendererCls
371+
372+}
373+
374+// Returns the surface of this `GtkNative`.
375+func (x *PreferencesWindow) GetSurface() *gdk.Surface {
376+
377+ GetSurfacePtr := gtk.XGtkNativeGetSurface(x.GoPointer())
378+ if GetSurfacePtr == 0 {
379+ return nil
380+ }
381+
382+ gobject.IncreaseRef(GetSurfacePtr)
383+
384+ GetSurfaceCls := &gdk.Surface{}
385+ GetSurfaceCls.Ptr = GetSurfacePtr
386+ return GetSurfaceCls
387+
388+}
389+
390+// Retrieves the surface transform of @self.
391+//
392+// This is the translation from @self's surface coordinates into
393+// @self's widget coordinates.
394+func (x *PreferencesWindow) GetSurfaceTransform(XVar float64, YVar float64) {
395+
396+ gtk.XGtkNativeGetSurfaceTransform(x.GoPointer(), XVar, YVar)
397+
398+}
399+
400+// Realizes a `GtkNative`.
401+//
402+// This should only be used by subclasses.
403+func (x *PreferencesWindow) Realize() {
404+
405+ gtk.XGtkNativeRealize(x.GoPointer())
406+
407+}
408+
409+// Unrealizes a `GtkNative`.
410+//
411+// This should only be used by subclasses.
412+func (x *PreferencesWindow) Unrealize() {
413+
414+ gtk.XGtkNativeUnrealize(x.GoPointer())
415+
416+}
417+
418+// Returns the display that this `GtkRoot` is on.
419+func (x *PreferencesWindow) GetDisplay() *gdk.Display {
420+
421+ GetDisplayPtr := gtk.XGtkRootGetDisplay(x.GoPointer())
422+ if GetDisplayPtr == 0 {
423+ return nil
424+ }
425+
426+ gobject.IncreaseRef(GetDisplayPtr)
427+
428+ GetDisplayCls := &gdk.Display{}
429+ GetDisplayCls.Ptr = GetDisplayPtr
430+ return GetDisplayCls
431+
432+}
433+
434+// Retrieves the current focused widget within the root.
435+//
436+// Note that this is the widget that would have the focus
437+// if the root is active; if the root is not focused then
438+// `gtk_widget_has_focus (widget)` will be %FALSE for the
439+// widget.
440+func (x *PreferencesWindow) GetFocus() *gtk.Widget {
441+
442+ GetFocusPtr := gtk.XGtkRootGetFocus(x.GoPointer())
443+ if GetFocusPtr == 0 {
444+ return nil
445+ }
446+
447+ gobject.IncreaseRef(GetFocusPtr)
448+
449+ GetFocusCls := &gtk.Widget{}
450+ GetFocusCls.Ptr = GetFocusPtr
451+ return GetFocusCls
452+
453+}
454+
455+// If @focus is not the current focus widget, and is focusable, sets
456+// it as the focus widget for the root.
457+//
458+// If @focus is %NULL, unsets the focus widget for the root.
459+//
460+// To set the focus to a particular widget in the root, it is usually
461+// more convenient to use [method@Gtk.Widget.grab_focus] instead of
462+// this function.
463+func (x *PreferencesWindow) SetFocus(FocusVar *gtk.Widget) {
464+
465+ gtk.XGtkRootSetFocus(x.GoPointer(), FocusVar.GoPointer())
466+
467+}
468+
469+func init() {
470+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
471+ if err != nil {
472+ panic(err)
473+ }
474+
475+ core.PuregoSafeRegister(&xNewPreferencesWindow, lib, "adw_preferences_window_new")
476+
477+ core.PuregoSafeRegister(&xPreferencesWindowAdd, lib, "adw_preferences_window_add")
478+ core.PuregoSafeRegister(&xPreferencesWindowAddToast, lib, "adw_preferences_window_add_toast")
479+ core.PuregoSafeRegister(&xPreferencesWindowCloseSubpage, lib, "adw_preferences_window_close_subpage")
480+ core.PuregoSafeRegister(&xPreferencesWindowGetCanNavigateBack, lib, "adw_preferences_window_get_can_navigate_back")
481+ core.PuregoSafeRegister(&xPreferencesWindowGetSearchEnabled, lib, "adw_preferences_window_get_search_enabled")
482+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePage, lib, "adw_preferences_window_get_visible_page")
483+ core.PuregoSafeRegister(&xPreferencesWindowGetVisiblePageName, lib, "adw_preferences_window_get_visible_page_name")
484+ core.PuregoSafeRegister(&xPreferencesWindowPresentSubpage, lib, "adw_preferences_window_present_subpage")
485+ core.PuregoSafeRegister(&xPreferencesWindowRemove, lib, "adw_preferences_window_remove")
486+ core.PuregoSafeRegister(&xPreferencesWindowSetCanNavigateBack, lib, "adw_preferences_window_set_can_navigate_back")
487+ core.PuregoSafeRegister(&xPreferencesWindowSetSearchEnabled, lib, "adw_preferences_window_set_search_enabled")
488+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePage, lib, "adw_preferences_window_set_visible_page")
489+ core.PuregoSafeRegister(&xPreferencesWindowSetVisiblePageName, lib, "adw_preferences_window_set_visible_page_name")
490+
491+}
A v4/adw/adw-split-button.go +594 -0
@@ -0,0 +1,594 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gio"
8+ "github.com/jwijenbergh/puregotk/v4/glib"
9+ "github.com/jwijenbergh/puregotk/v4/gobject"
10+ "github.com/jwijenbergh/puregotk/v4/gtk"
11+)
12+
13+type SplitButtonClass struct {
14+ ParentClass uintptr
15+}
16+
17+// A combined button and dropdown widget.
18+//
19+// &lt;picture&gt;
20+//
21+// &lt;source srcset="split-button-dark.png" media="(prefers-color-scheme: dark)"&gt;
22+// &lt;img src="split-button.png" alt="split-button"&gt;
23+//
24+// &lt;/picture&gt;
25+//
26+// `AdwSplitButton` is typically used to present a set of actions in a menu,
27+// but allow access to one of them with a single click.
28+//
29+// The API is very similar to [class@Gtk.Button] and [class@Gtk.MenuButton], see
30+// their documentation for details.
31+//
32+// ## CSS nodes
33+//
34+// ```
35+// splitbutton[.image-button][.text-button]
36+// ├── button
37+// │ ╰── &lt;content&gt;
38+// ├── separator
39+// ╰── menubutton
40+//
41+// ╰── button.toggle
42+// ╰── arrow
43+//
44+// ```
45+//
46+// `AdwSplitButton`'s CSS node is called `splitbutton`. It contains the css
47+// nodes: `button`, `separator`, `menubutton`. See [class@Gtk.MenuButton]
48+// documentation for the `menubutton` contents.
49+//
50+// The main CSS node will contain the `.image-button` or `.text-button` style
51+// classes matching the button contents. The nested button nodes will never
52+// contain them.
53+//
54+// ## Accessibility
55+//
56+// `AdwSplitButton` uses the `GTK_ACCESSIBLE_ROLE_GROUP` role.
57+type SplitButton struct {
58+ gtk.Widget
59+}
60+
61+func SplitButtonNewFromInternalPtr(ptr uintptr) *SplitButton {
62+ cls := &SplitButton{}
63+ cls.Ptr = ptr
64+ return cls
65+}
66+
67+var xNewSplitButton func() uintptr
68+
69+// Creates a new `AdwSplitButton`.
70+func NewSplitButton() *gtk.Widget {
71+ NewSplitButtonPtr := xNewSplitButton()
72+ if NewSplitButtonPtr == 0 {
73+ return nil
74+ }
75+
76+ gobject.IncreaseRef(NewSplitButtonPtr)
77+
78+ NewSplitButtonCls := &gtk.Widget{}
79+ NewSplitButtonCls.Ptr = NewSplitButtonPtr
80+ return NewSplitButtonCls
81+}
82+
83+var xSplitButtonGetChild func(uintptr) uintptr
84+
85+// Gets the child widget.
86+func (x *SplitButton) GetChild() *gtk.Widget {
87+
88+ GetChildPtr := xSplitButtonGetChild(x.GoPointer())
89+ if GetChildPtr == 0 {
90+ return nil
91+ }
92+
93+ gobject.IncreaseRef(GetChildPtr)
94+
95+ GetChildCls := &gtk.Widget{}
96+ GetChildCls.Ptr = GetChildPtr
97+ return GetChildCls
98+
99+}
100+
101+var xSplitButtonGetDirection func(uintptr) gtk.ArrowType
102+
103+// Gets the direction in which the popup will be popped up.
104+func (x *SplitButton) GetDirection() gtk.ArrowType {
105+
106+ return xSplitButtonGetDirection(x.GoPointer())
107+
108+}
109+
110+var xSplitButtonGetDropdownTooltip func(uintptr) string
111+
112+// Gets the tooltip of the dropdown button of @self.
113+func (x *SplitButton) GetDropdownTooltip() string {
114+
115+ return xSplitButtonGetDropdownTooltip(x.GoPointer())
116+
117+}
118+
119+var xSplitButtonGetIconName func(uintptr) string
120+
121+// Gets the name of the icon used to automatically populate the button.
122+func (x *SplitButton) GetIconName() string {
123+
124+ return xSplitButtonGetIconName(x.GoPointer())
125+
126+}
127+
128+var xSplitButtonGetLabel func(uintptr) string
129+
130+// Gets the label for @self.
131+func (x *SplitButton) GetLabel() string {
132+
133+ return xSplitButtonGetLabel(x.GoPointer())
134+
135+}
136+
137+var xSplitButtonGetMenuModel func(uintptr) uintptr
138+
139+// Gets the menu model from which the popup will be created.
140+func (x *SplitButton) GetMenuModel() *gio.MenuModel {
141+
142+ GetMenuModelPtr := xSplitButtonGetMenuModel(x.GoPointer())
143+ if GetMenuModelPtr == 0 {
144+ return nil
145+ }
146+
147+ gobject.IncreaseRef(GetMenuModelPtr)
148+
149+ GetMenuModelCls := &gio.MenuModel{}
150+ GetMenuModelCls.Ptr = GetMenuModelPtr
151+ return GetMenuModelCls
152+
153+}
154+
155+var xSplitButtonGetPopover func(uintptr) uintptr
156+
157+// Gets the popover that will be popped up when the dropdown is clicked.
158+func (x *SplitButton) GetPopover() *gtk.Popover {
159+
160+ GetPopoverPtr := xSplitButtonGetPopover(x.GoPointer())
161+ if GetPopoverPtr == 0 {
162+ return nil
163+ }
164+
165+ gobject.IncreaseRef(GetPopoverPtr)
166+
167+ GetPopoverCls := &gtk.Popover{}
168+ GetPopoverCls.Ptr = GetPopoverPtr
169+ return GetPopoverCls
170+
171+}
172+
173+var xSplitButtonGetUseUnderline func(uintptr) bool
174+
175+// Gets whether an underline in the text indicates a mnemonic.
176+func (x *SplitButton) GetUseUnderline() bool {
177+
178+ return xSplitButtonGetUseUnderline(x.GoPointer())
179+
180+}
181+
182+var xSplitButtonPopdown func(uintptr)
183+
184+// Dismisses the menu.
185+func (x *SplitButton) Popdown() {
186+
187+ xSplitButtonPopdown(x.GoPointer())
188+
189+}
190+
191+var xSplitButtonPopup func(uintptr)
192+
193+// Pops up the menu.
194+func (x *SplitButton) Popup() {
195+
196+ xSplitButtonPopup(x.GoPointer())
197+
198+}
199+
200+var xSplitButtonSetChild func(uintptr, uintptr)
201+
202+// Sets the child widget.
203+//
204+// Setting the child widget will set [property@SplitButton:label] and
205+// [property@SplitButton:icon-name] to `NULL`.
206+func (x *SplitButton) SetChild(ChildVar *gtk.Widget) {
207+
208+ xSplitButtonSetChild(x.GoPointer(), ChildVar.GoPointer())
209+
210+}
211+
212+var xSplitButtonSetDirection func(uintptr, gtk.ArrowType)
213+
214+// Sets the direction in which the popup will be popped up.
215+//
216+// The dropdown arrow icon will point at the same direction.
217+//
218+// If the does not fit in the available space in the given direction, GTK will
219+// try its best to keep it inside the screen and fully visible.
220+//
221+// If you pass `GTK_ARROW_NONE`, it's equivalent to `GTK_ARROW_DOWN`.
222+func (x *SplitButton) SetDirection(DirectionVar gtk.ArrowType) {
223+
224+ xSplitButtonSetDirection(x.GoPointer(), DirectionVar)
225+
226+}
227+
228+var xSplitButtonSetDropdownTooltip func(uintptr, string)
229+
230+// Sets the tooltip of the dropdown button of @self.
231+//
232+// The tooltip can be marked up with the Pango text markup language.
233+func (x *SplitButton) SetDropdownTooltip(TooltipVar string) {
234+
235+ xSplitButtonSetDropdownTooltip(x.GoPointer(), TooltipVar)
236+
237+}
238+
239+var xSplitButtonSetIconName func(uintptr, string)
240+
241+// Sets the name of the icon used to automatically populate the button.
242+//
243+// Setting the icon name will set [property@SplitButton:label] and
244+// [property@SplitButton:child] to `NULL`.
245+func (x *SplitButton) SetIconName(IconNameVar string) {
246+
247+ xSplitButtonSetIconName(x.GoPointer(), IconNameVar)
248+
249+}
250+
251+var xSplitButtonSetLabel func(uintptr, string)
252+
253+// Sets the label for @self.
254+//
255+// Setting the label will set [property@SplitButton:icon-name] and
256+// [property@SplitButton:child] to `NULL`.
257+func (x *SplitButton) SetLabel(LabelVar string) {
258+
259+ xSplitButtonSetLabel(x.GoPointer(), LabelVar)
260+
261+}
262+
263+var xSplitButtonSetMenuModel func(uintptr, uintptr)
264+
265+// Sets the menu model from which the popup will be created.
266+//
267+// If the menu model is `NULL`, the dropdown is disabled.
268+//
269+// A [class@Gtk.Popover] will be created from the menu model with
270+// [ctor@Gtk.PopoverMenu.new_from_model]. Actions will be connected as
271+// documented for this function.
272+//
273+// If [property@SplitButton:popover] is already set, it will be dissociated from
274+// the button, and the property is set to `NULL`.
275+func (x *SplitButton) SetMenuModel(MenuModelVar *gio.MenuModel) {
276+
277+ xSplitButtonSetMenuModel(x.GoPointer(), MenuModelVar.GoPointer())
278+
279+}
280+
281+var xSplitButtonSetPopover func(uintptr, uintptr)
282+
283+// Sets the popover that will be popped up when the dropdown is clicked.
284+//
285+// If the popover is `NULL`, the dropdown is disabled.
286+//
287+// If [property@SplitButton:menu-model] is set, the menu model is dissociated
288+// from the button, and the property is set to `NULL`.
289+func (x *SplitButton) SetPopover(PopoverVar *gtk.Popover) {
290+
291+ xSplitButtonSetPopover(x.GoPointer(), PopoverVar.GoPointer())
292+
293+}
294+
295+var xSplitButtonSetUseUnderline func(uintptr, bool)
296+
297+// Sets whether an underline in the text indicates a mnemonic.
298+//
299+// See [property@SplitButton:label].
300+func (x *SplitButton) SetUseUnderline(UseUnderlineVar bool) {
301+
302+ xSplitButtonSetUseUnderline(x.GoPointer(), UseUnderlineVar)
303+
304+}
305+
306+func (c *SplitButton) GoPointer() uintptr {
307+ return c.Ptr
308+}
309+
310+func (c *SplitButton) SetGoPointer(ptr uintptr) {
311+ c.Ptr = ptr
312+}
313+
314+// Emitted to animate press then release.
315+//
316+// This is an action signal. Applications should never connect to this signal,
317+// but use the [signal@SplitButton::clicked] signal.
318+func (x *SplitButton) ConnectActivate(cb func(SplitButton)) {
319+ fcb := func(clsPtr uintptr) {
320+ fa := SplitButton{}
321+ fa.Ptr = clsPtr
322+
323+ cb(fa)
324+
325+ }
326+ gobject.ObjectConnect(x.GoPointer(), "signal::activate", purego.NewCallback(fcb))
327+}
328+
329+// Emitted when the button has been activated (pressed and released).
330+func (x *SplitButton) ConnectClicked(cb func(SplitButton)) {
331+ fcb := func(clsPtr uintptr) {
332+ fa := SplitButton{}
333+ fa.Ptr = clsPtr
334+
335+ cb(fa)
336+
337+ }
338+ gobject.ObjectConnect(x.GoPointer(), "signal::clicked", purego.NewCallback(fcb))
339+}
340+
341+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
342+func (x *SplitButton) GetAccessibleRole() gtk.AccessibleRole {
343+
344+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
345+
346+}
347+
348+// Resets the accessible @property to its default value.
349+func (x *SplitButton) ResetProperty(PropertyVar gtk.AccessibleProperty) {
350+
351+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
352+
353+}
354+
355+// Resets the accessible @relation to its default value.
356+func (x *SplitButton) ResetRelation(RelationVar gtk.AccessibleRelation) {
357+
358+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
359+
360+}
361+
362+// Resets the accessible @state to its default value.
363+func (x *SplitButton) ResetState(StateVar gtk.AccessibleState) {
364+
365+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
366+
367+}
368+
369+// Updates a list of accessible properties.
370+//
371+// See the [enum@Gtk.AccessibleProperty] documentation for the
372+// value types of accessible properties.
373+//
374+// This function should be called by `GtkWidget` types whenever
375+// an accessible property change must be communicated to assistive
376+// technologies.
377+//
378+// Example:
379+// ```c
380+// value = gtk_adjustment_get_value (adjustment);
381+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
382+//
383+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
384+// -1);
385+//
386+// ```
387+func (x *SplitButton) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
388+
389+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
390+
391+}
392+
393+// Updates an array of accessible properties.
394+//
395+// This function should be called by `GtkWidget` types whenever an accessible
396+// property change must be communicated to assistive technologies.
397+//
398+// This function is meant to be used by language bindings.
399+func (x *SplitButton) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
400+
401+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
402+
403+}
404+
405+// Updates a list of accessible relations.
406+//
407+// This function should be called by `GtkWidget` types whenever an accessible
408+// relation change must be communicated to assistive technologies.
409+//
410+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
411+// you should pass each reference individually, followed by %NULL, e.g.
412+//
413+// ```c
414+// gtk_accessible_update_relation (accessible,
415+//
416+// GTK_ACCESSIBLE_RELATION_CONTROLS,
417+// ref1, NULL,
418+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
419+// ref1, ref2, ref3, NULL,
420+// -1);
421+//
422+// ```
423+func (x *SplitButton) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
424+
425+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
426+
427+}
428+
429+// Updates an array of accessible relations.
430+//
431+// This function should be called by `GtkWidget` types whenever an accessible
432+// relation change must be communicated to assistive technologies.
433+//
434+// This function is meant to be used by language bindings.
435+func (x *SplitButton) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
436+
437+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
438+
439+}
440+
441+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
442+// documentation for the value types of accessible states.
443+//
444+// This function should be called by `GtkWidget` types whenever an accessible
445+// state change must be communicated to assistive technologies.
446+//
447+// Example:
448+// ```c
449+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
450+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
451+//
452+// GTK_ACCESSIBLE_STATE_CHECKED, value,
453+// -1);
454+//
455+// ```
456+func (x *SplitButton) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
457+
458+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
459+
460+}
461+
462+// Updates an array of accessible states.
463+//
464+// This function should be called by `GtkWidget` types whenever an accessible
465+// state change must be communicated to assistive technologies.
466+//
467+// This function is meant to be used by language bindings.
468+func (x *SplitButton) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
469+
470+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
471+
472+}
473+
474+// Gets the action name for @actionable.
475+func (x *SplitButton) GetActionName() string {
476+
477+ return gtk.XGtkActionableGetActionName(x.GoPointer())
478+
479+}
480+
481+// Gets the current target value of @actionable.
482+func (x *SplitButton) GetActionTargetValue() *glib.Variant {
483+
484+ return gtk.XGtkActionableGetActionTargetValue(x.GoPointer())
485+
486+}
487+
488+// Specifies the name of the action with which this widget should be
489+// associated.
490+//
491+// If @action_name is %NULL then the widget will be unassociated from
492+// any previous action.
493+//
494+// Usually this function is used when the widget is located (or will be
495+// located) within the hierarchy of a `GtkApplicationWindow`.
496+//
497+// Names are of the form “win.save” or “app.quit” for actions on the
498+// containing [class@ApplicationWindow] or its associated [class@Application],
499+// respectively. This is the same form used for actions in the [class@Gio.Menu]
500+// associated with the window.
501+func (x *SplitButton) SetActionName(ActionNameVar string) {
502+
503+ gtk.XGtkActionableSetActionName(x.GoPointer(), ActionNameVar)
504+
505+}
506+
507+// Sets the target of an actionable widget.
508+//
509+// This is a convenience function that calls [ctor@GLib.Variant.new] for
510+// @format_string and uses the result to call
511+// [method@Gtk.Actionable.set_action_target_value].
512+//
513+// If you are setting a string-valued target and want to set
514+// the action name at the same time, you can use
515+// [method@Gtk.Actionable.set_detailed_action_name].
516+func (x *SplitButton) SetActionTarget(FormatStringVar string, varArgs ...interface{}) {
517+
518+ gtk.XGtkActionableSetActionTarget(x.GoPointer(), FormatStringVar, varArgs...)
519+
520+}
521+
522+// Sets the target value of an actionable widget.
523+//
524+// If @target_value is %NULL then the target value is unset.
525+//
526+// The target value has two purposes. First, it is used as the parameter
527+// to activation of the action associated with the `GtkActionable` widget.
528+// Second, it is used to determine if the widget should be rendered as
529+// “active” — the widget is active if the state is equal to the given target.
530+//
531+// Consider the example of associating a set of buttons with a [iface@Gio.Action]
532+// with string state in a typical “radio button” situation. Each button
533+// will be associated with the same action, but with a different target
534+// value for that action. Clicking on a particular button will activate
535+// the action with the target of that button, which will typically cause
536+// the action’s state to change to that value. Since the action’s state
537+// is now equal to the target value of the button, the button will now
538+// be rendered as active (and the other buttons, with different targets,
539+// rendered inactive).
540+func (x *SplitButton) SetActionTargetValue(TargetValueVar *glib.Variant) {
541+
542+ gtk.XGtkActionableSetActionTargetValue(x.GoPointer(), TargetValueVar)
543+
544+}
545+
546+// Sets the action-name and associated string target value of an
547+// actionable widget.
548+//
549+// @detailed_action_name is a string in the format accepted by
550+// [func@Gio.Action.parse_detailed_name].
551+func (x *SplitButton) SetDetailedActionName(DetailedActionNameVar string) {
552+
553+ gtk.XGtkActionableSetDetailedActionName(x.GoPointer(), DetailedActionNameVar)
554+
555+}
556+
557+// Gets the ID of the @buildable object.
558+//
559+// `GtkBuilder` sets the name based on the ID attribute
560+// of the &lt;object&gt; tag used to construct the @buildable.
561+func (x *SplitButton) GetBuildableId() string {
562+
563+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
564+
565+}
566+
567+func init() {
568+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
569+ if err != nil {
570+ panic(err)
571+ }
572+
573+ core.PuregoSafeRegister(&xNewSplitButton, lib, "adw_split_button_new")
574+
575+ core.PuregoSafeRegister(&xSplitButtonGetChild, lib, "adw_split_button_get_child")
576+ core.PuregoSafeRegister(&xSplitButtonGetDirection, lib, "adw_split_button_get_direction")
577+ core.PuregoSafeRegister(&xSplitButtonGetDropdownTooltip, lib, "adw_split_button_get_dropdown_tooltip")
578+ core.PuregoSafeRegister(&xSplitButtonGetIconName, lib, "adw_split_button_get_icon_name")
579+ core.PuregoSafeRegister(&xSplitButtonGetLabel, lib, "adw_split_button_get_label")
580+ core.PuregoSafeRegister(&xSplitButtonGetMenuModel, lib, "adw_split_button_get_menu_model")
581+ core.PuregoSafeRegister(&xSplitButtonGetPopover, lib, "adw_split_button_get_popover")
582+ core.PuregoSafeRegister(&xSplitButtonGetUseUnderline, lib, "adw_split_button_get_use_underline")
583+ core.PuregoSafeRegister(&xSplitButtonPopdown, lib, "adw_split_button_popdown")
584+ core.PuregoSafeRegister(&xSplitButtonPopup, lib, "adw_split_button_popup")
585+ core.PuregoSafeRegister(&xSplitButtonSetChild, lib, "adw_split_button_set_child")
586+ core.PuregoSafeRegister(&xSplitButtonSetDirection, lib, "adw_split_button_set_direction")
587+ core.PuregoSafeRegister(&xSplitButtonSetDropdownTooltip, lib, "adw_split_button_set_dropdown_tooltip")
588+ core.PuregoSafeRegister(&xSplitButtonSetIconName, lib, "adw_split_button_set_icon_name")
589+ core.PuregoSafeRegister(&xSplitButtonSetLabel, lib, "adw_split_button_set_label")
590+ core.PuregoSafeRegister(&xSplitButtonSetMenuModel, lib, "adw_split_button_set_menu_model")
591+ core.PuregoSafeRegister(&xSplitButtonSetPopover, lib, "adw_split_button_set_popover")
592+ core.PuregoSafeRegister(&xSplitButtonSetUseUnderline, lib, "adw_split_button_set_use_underline")
593+
594+}
A v4/adw/adw-spring-animation.go +288 -0
@@ -0,0 +1,288 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gobject"
8+ "github.com/jwijenbergh/puregotk/v4/gtk"
9+)
10+
11+type SpringAnimationClass struct {
12+}
13+
14+// A spring-based [class@Animation].
15+//
16+// `AdwSpringAnimation` implements an animation driven by a physical model of a
17+// spring described by [struct@SpringParams], with a resting position in
18+// [property@SpringAnimation:value-to], stretched to
19+// [property@SpringAnimation:value-from].
20+//
21+// Since the animation is physically simulated, spring animations don't have a
22+// fixed duration. The animation will stop when the simulated spring comes to a
23+// rest - when the amplitude of the oscillations becomes smaller than
24+// [property@SpringAnimation:epsilon], or immediately when it reaches
25+// [property@SpringAnimation:value-to] if
26+// [property@SpringAnimation:clamp] is set to `TRUE`. The estimated duration can
27+// be obtained with [property@SpringAnimation:estimated-duration].
28+//
29+// Due to the nature of spring-driven motion the animation can overshoot
30+// [property@SpringAnimation:value-to] before coming to a rest. Whether the
31+// animation will overshoot or not depends on the damping ratio of the spring.
32+// See [struct@SpringParams] for more information about specific damping ratio
33+// values.
34+//
35+// If [property@SpringAnimation:clamp] is `TRUE`, the animation will abruptly
36+// end as soon as it reaches the final value, preventing overshooting.
37+//
38+// Animations can have an initial velocity value, set via
39+// [property@SpringAnimation:initial-velocity], which adjusts the curve without
40+// changing the duration. This makes spring animations useful for deceleration
41+// at the end of gestures.
42+//
43+// If the initial and final values are equal, and the initial velocity is not 0,
44+// the animation value will bounce and return to its resting position.
45+type SpringAnimation struct {
46+ Animation
47+}
48+
49+func SpringAnimationNewFromInternalPtr(ptr uintptr) *SpringAnimation {
50+ cls := &SpringAnimation{}
51+ cls.Ptr = ptr
52+ return cls
53+}
54+
55+var xNewSpringAnimation func(uintptr, float64, float64, *SpringParams, uintptr) uintptr
56+
57+// Creates a new `AdwSpringAnimation` on @widget.
58+//
59+// The animation will animate @target from @from to @to with the dynamics of a
60+// spring described by @spring_params.
61+func NewSpringAnimation(WidgetVar *gtk.Widget, FromVar float64, ToVar float64, SpringParamsVar *SpringParams, TargetVar *AnimationTarget) *Animation {
62+ NewSpringAnimationPtr := xNewSpringAnimation(WidgetVar.GoPointer(), FromVar, ToVar, SpringParamsVar, TargetVar.GoPointer())
63+ if NewSpringAnimationPtr == 0 {
64+ return nil
65+ }
66+
67+ gobject.IncreaseRef(NewSpringAnimationPtr)
68+
69+ NewSpringAnimationCls := &Animation{}
70+ NewSpringAnimationCls.Ptr = NewSpringAnimationPtr
71+ return NewSpringAnimationCls
72+}
73+
74+var xSpringAnimationCalculateValue func(uintptr, uint) float64
75+
76+// Calculates the value @self will have at @time.
77+//
78+// The time starts at 0 and ends at
79+// [property@SpringAnimation:estimated_duration].
80+//
81+// See also [method@SpringAnimation.calculate_velocity].
82+func (x *SpringAnimation) CalculateValue(TimeVar uint) float64 {
83+
84+ return xSpringAnimationCalculateValue(x.GoPointer(), TimeVar)
85+
86+}
87+
88+var xSpringAnimationCalculateVelocity func(uintptr, uint) float64
89+
90+// Calculates the velocity @self will have at @time.
91+//
92+// The time starts at 0 and ends at
93+// [property@SpringAnimation:estimated_duration].
94+//
95+// See also [method@SpringAnimation.calculate_value].
96+func (x *SpringAnimation) CalculateVelocity(TimeVar uint) float64 {
97+
98+ return xSpringAnimationCalculateVelocity(x.GoPointer(), TimeVar)
99+
100+}
101+
102+var xSpringAnimationGetClamp func(uintptr) bool
103+
104+// Gets whether @self should be clamped.
105+func (x *SpringAnimation) GetClamp() bool {
106+
107+ return xSpringAnimationGetClamp(x.GoPointer())
108+
109+}
110+
111+var xSpringAnimationGetEpsilon func(uintptr) float64
112+
113+// Gets the precision of the spring.
114+func (x *SpringAnimation) GetEpsilon() float64 {
115+
116+ return xSpringAnimationGetEpsilon(x.GoPointer())
117+
118+}
119+
120+var xSpringAnimationGetEstimatedDuration func(uintptr) uint
121+
122+// Gets the estimated duration of @self, in milliseconds.
123+//
124+// Can be [const@DURATION_INFINITE] if the spring damping is set to 0.
125+func (x *SpringAnimation) GetEstimatedDuration() uint {
126+
127+ return xSpringAnimationGetEstimatedDuration(x.GoPointer())
128+
129+}
130+
131+var xSpringAnimationGetInitialVelocity func(uintptr) float64
132+
133+// Gets the initial velocity of @self.
134+func (x *SpringAnimation) GetInitialVelocity() float64 {
135+
136+ return xSpringAnimationGetInitialVelocity(x.GoPointer())
137+
138+}
139+
140+var xSpringAnimationGetSpringParams func(uintptr) *SpringParams
141+
142+// Gets the physical parameters of the spring of @self.
143+func (x *SpringAnimation) GetSpringParams() *SpringParams {
144+
145+ return xSpringAnimationGetSpringParams(x.GoPointer())
146+
147+}
148+
149+var xSpringAnimationGetValueFrom func(uintptr) float64
150+
151+// Gets the value @self will animate from.
152+func (x *SpringAnimation) GetValueFrom() float64 {
153+
154+ return xSpringAnimationGetValueFrom(x.GoPointer())
155+
156+}
157+
158+var xSpringAnimationGetValueTo func(uintptr) float64
159+
160+// Gets the value @self will animate to.
161+func (x *SpringAnimation) GetValueTo() float64 {
162+
163+ return xSpringAnimationGetValueTo(x.GoPointer())
164+
165+}
166+
167+var xSpringAnimationGetVelocity func(uintptr) float64
168+
169+// Gets the current velocity of @self.
170+func (x *SpringAnimation) GetVelocity() float64 {
171+
172+ return xSpringAnimationGetVelocity(x.GoPointer())
173+
174+}
175+
176+var xSpringAnimationSetClamp func(uintptr, bool)
177+
178+// Sets whether @self should be clamped.
179+//
180+// If set to `TRUE`, the animation will abruptly end as soon as it reaches the
181+// final value, preventing overshooting.
182+//
183+// It won't prevent overshooting [property@SpringAnimation:value-from] if a
184+// relative negative [property@SpringAnimation:initial-velocity] is set.
185+func (x *SpringAnimation) SetClamp(ClampVar bool) {
186+
187+ xSpringAnimationSetClamp(x.GoPointer(), ClampVar)
188+
189+}
190+
191+var xSpringAnimationSetEpsilon func(uintptr, float64)
192+
193+// Sets the precision of the spring.
194+//
195+// The level of precision used to determine when the animation has come to a
196+// rest, that is, when the amplitude of the oscillations becomes smaller than
197+// this value.
198+//
199+// If the epsilon value is too small, the animation will take a long time to
200+// stop after the animated value has stopped visibly changing.
201+//
202+// If the epsilon value is too large, the animation will end prematurely.
203+//
204+// The default value is 0.001.
205+func (x *SpringAnimation) SetEpsilon(EpsilonVar float64) {
206+
207+ xSpringAnimationSetEpsilon(x.GoPointer(), EpsilonVar)
208+
209+}
210+
211+var xSpringAnimationSetInitialVelocity func(uintptr, float64)
212+
213+// Sets the initial velocity of @self.
214+//
215+// Initial velocity affects only the animation curve, but not its duration.
216+func (x *SpringAnimation) SetInitialVelocity(VelocityVar float64) {
217+
218+ xSpringAnimationSetInitialVelocity(x.GoPointer(), VelocityVar)
219+
220+}
221+
222+var xSpringAnimationSetSpringParams func(uintptr, *SpringParams)
223+
224+// Sets the physical parameters of the spring of @self.
225+func (x *SpringAnimation) SetSpringParams(SpringParamsVar *SpringParams) {
226+
227+ xSpringAnimationSetSpringParams(x.GoPointer(), SpringParamsVar)
228+
229+}
230+
231+var xSpringAnimationSetValueFrom func(uintptr, float64)
232+
233+// Sets the value @self will animate from.
234+//
235+// The animation will start at this value and end at
236+// [property@SpringAnimation:value-to].
237+func (x *SpringAnimation) SetValueFrom(ValueVar float64) {
238+
239+ xSpringAnimationSetValueFrom(x.GoPointer(), ValueVar)
240+
241+}
242+
243+var xSpringAnimationSetValueTo func(uintptr, float64)
244+
245+// Sets the value @self will animate to.
246+//
247+// The animation will start at [property@SpringAnimation:value-from] and end at
248+// this value.
249+func (x *SpringAnimation) SetValueTo(ValueVar float64) {
250+
251+ xSpringAnimationSetValueTo(x.GoPointer(), ValueVar)
252+
253+}
254+
255+func (c *SpringAnimation) GoPointer() uintptr {
256+ return c.Ptr
257+}
258+
259+func (c *SpringAnimation) SetGoPointer(ptr uintptr) {
260+ c.Ptr = ptr
261+}
262+
263+func init() {
264+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
265+ if err != nil {
266+ panic(err)
267+ }
268+
269+ core.PuregoSafeRegister(&xNewSpringAnimation, lib, "adw_spring_animation_new")
270+
271+ core.PuregoSafeRegister(&xSpringAnimationCalculateValue, lib, "adw_spring_animation_calculate_value")
272+ core.PuregoSafeRegister(&xSpringAnimationCalculateVelocity, lib, "adw_spring_animation_calculate_velocity")
273+ core.PuregoSafeRegister(&xSpringAnimationGetClamp, lib, "adw_spring_animation_get_clamp")
274+ core.PuregoSafeRegister(&xSpringAnimationGetEpsilon, lib, "adw_spring_animation_get_epsilon")
275+ core.PuregoSafeRegister(&xSpringAnimationGetEstimatedDuration, lib, "adw_spring_animation_get_estimated_duration")
276+ core.PuregoSafeRegister(&xSpringAnimationGetInitialVelocity, lib, "adw_spring_animation_get_initial_velocity")
277+ core.PuregoSafeRegister(&xSpringAnimationGetSpringParams, lib, "adw_spring_animation_get_spring_params")
278+ core.PuregoSafeRegister(&xSpringAnimationGetValueFrom, lib, "adw_spring_animation_get_value_from")
279+ core.PuregoSafeRegister(&xSpringAnimationGetValueTo, lib, "adw_spring_animation_get_value_to")
280+ core.PuregoSafeRegister(&xSpringAnimationGetVelocity, lib, "adw_spring_animation_get_velocity")
281+ core.PuregoSafeRegister(&xSpringAnimationSetClamp, lib, "adw_spring_animation_set_clamp")
282+ core.PuregoSafeRegister(&xSpringAnimationSetEpsilon, lib, "adw_spring_animation_set_epsilon")
283+ core.PuregoSafeRegister(&xSpringAnimationSetInitialVelocity, lib, "adw_spring_animation_set_initial_velocity")
284+ core.PuregoSafeRegister(&xSpringAnimationSetSpringParams, lib, "adw_spring_animation_set_spring_params")
285+ core.PuregoSafeRegister(&xSpringAnimationSetValueFrom, lib, "adw_spring_animation_set_value_from")
286+ core.PuregoSafeRegister(&xSpringAnimationSetValueTo, lib, "adw_spring_animation_set_value_to")
287+
288+}
A v4/adw/adw-spring-params.go +35 -0
@@ -0,0 +1,35 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+// Physical parameters of a spring for [class@SpringAnimation].
5+//
6+// Any spring can be described by three parameters: mass, stiffness and damping.
7+//
8+// An undamped spring will produce an oscillatory motion which will go on
9+// forever.
10+//
11+// The frequency and amplitude of the oscillations will be determined by the
12+// stiffness (how "strong" the spring is) and its mass (how much "inertia" it
13+// has).
14+//
15+// If damping is larger than 0, the amplitude of that oscillating motion will
16+// exponientally decrease over time. If that damping is strong enough that the
17+// spring can't complete a full oscillation, it's called an overdamped spring.
18+//
19+// If we the spring can oscillate, it's called an underdamped spring.
20+//
21+// The value between these two behaviors is called critical damping; a
22+// critically damped spring will comes to rest in the minimum possible time
23+// without producing oscillations.
24+//
25+// The damping can be replaced by damping ratio, which produces the following
26+// springs:
27+//
28+// * 0: an undamped spring.
29+// * Between 0 and 1: an underdamped spring.
30+// * 1: a critically damped spring.
31+// * Larger than 1: an overdamped spring.
32+//
33+// As such
34+type SpringParams struct {
35+}
A v4/adw/adw-squeezer.go +619 -0 collapsed to keep the page light
A v4/adw/adw-status-page.go +347 -0
@@ -0,0 +1,347 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+ "github.com/jwijenbergh/puregotk/v4/gobject"
9+ "github.com/jwijenbergh/puregotk/v4/gtk"
10+)
11+
12+type StatusPageClass struct {
13+ ParentClass uintptr
14+}
15+
16+// A page used for empty/error states and similar use-cases.
17+//
18+// &lt;picture&gt;
19+//
20+// &lt;source srcset="status-page-dark.png" media="(prefers-color-scheme: dark)"&gt;
21+// &lt;img src="status-page.png" alt="status-page"&gt;
22+//
23+// &lt;/picture&gt;
24+//
25+// The `AdwStatusPage` widget can have an icon, a title, a description and a
26+// custom widget which is displayed below them.
27+//
28+// ## CSS nodes
29+//
30+// `AdwStatusPage` has a main CSS node with name `statuspage`.
31+//
32+// `AdwStatusPage` can use the
33+// [`.compact`](style-classes.html#compact-status-page) style class for when it
34+// needs to fit into a small space such a sidebar or a popover.
35+type StatusPage struct {
36+ gtk.Widget
37+}
38+
39+func StatusPageNewFromInternalPtr(ptr uintptr) *StatusPage {
40+ cls := &StatusPage{}
41+ cls.Ptr = ptr
42+ return cls
43+}
44+
45+var xNewStatusPage func() uintptr
46+
47+// Creates a new `AdwStatusPage`.
48+func NewStatusPage() *gtk.Widget {
49+ NewStatusPagePtr := xNewStatusPage()
50+ if NewStatusPagePtr == 0 {
51+ return nil
52+ }
53+
54+ gobject.IncreaseRef(NewStatusPagePtr)
55+
56+ NewStatusPageCls := &gtk.Widget{}
57+ NewStatusPageCls.Ptr = NewStatusPagePtr
58+ return NewStatusPageCls
59+}
60+
61+var xStatusPageGetChild func(uintptr) uintptr
62+
63+// Gets the child widget of @self.
64+func (x *StatusPage) GetChild() *gtk.Widget {
65+
66+ GetChildPtr := xStatusPageGetChild(x.GoPointer())
67+ if GetChildPtr == 0 {
68+ return nil
69+ }
70+
71+ gobject.IncreaseRef(GetChildPtr)
72+
73+ GetChildCls := &gtk.Widget{}
74+ GetChildCls.Ptr = GetChildPtr
75+ return GetChildCls
76+
77+}
78+
79+var xStatusPageGetDescription func(uintptr) string
80+
81+// Gets the description for @self.
82+func (x *StatusPage) GetDescription() string {
83+
84+ return xStatusPageGetDescription(x.GoPointer())
85+
86+}
87+
88+var xStatusPageGetIconName func(uintptr) string
89+
90+// Gets the icon name for @self.
91+func (x *StatusPage) GetIconName() string {
92+
93+ return xStatusPageGetIconName(x.GoPointer())
94+
95+}
96+
97+var xStatusPageGetPaintable func(uintptr) uintptr
98+
99+// Gets the paintable for @self.
100+func (x *StatusPage) GetPaintable() *gdk.PaintableBase {
101+
102+ GetPaintablePtr := xStatusPageGetPaintable(x.GoPointer())
103+ if GetPaintablePtr == 0 {
104+ return nil
105+ }
106+
107+ gobject.IncreaseRef(GetPaintablePtr)
108+
109+ GetPaintableCls := &gdk.PaintableBase{}
110+ GetPaintableCls.Ptr = GetPaintablePtr
111+ return GetPaintableCls
112+
113+}
114+
115+var xStatusPageGetTitle func(uintptr) string
116+
117+// Gets the title for @self.
118+func (x *StatusPage) GetTitle() string {
119+
120+ return xStatusPageGetTitle(x.GoPointer())
121+
122+}
123+
124+var xStatusPageSetChild func(uintptr, uintptr)
125+
126+// Sets the child widget of @self.
127+func (x *StatusPage) SetChild(ChildVar *gtk.Widget) {
128+
129+ xStatusPageSetChild(x.GoPointer(), ChildVar.GoPointer())
130+
131+}
132+
133+var xStatusPageSetDescription func(uintptr, string)
134+
135+// Sets the description for @self.
136+//
137+// The description is displayed below the title.
138+func (x *StatusPage) SetDescription(DescriptionVar string) {
139+
140+ xStatusPageSetDescription(x.GoPointer(), DescriptionVar)
141+
142+}
143+
144+var xStatusPageSetIconName func(uintptr, string)
145+
146+// Sets the icon name for @self.
147+//
148+// Changing this will set [property@StatusPage:paintable] to `NULL`.
149+func (x *StatusPage) SetIconName(IconNameVar string) {
150+
151+ xStatusPageSetIconName(x.GoPointer(), IconNameVar)
152+
153+}
154+
155+var xStatusPageSetPaintable func(uintptr, uintptr)
156+
157+// Sets the paintable for @self.
158+//
159+// Changing this will set [property@StatusPage:icon-name] to `NULL`.
160+func (x *StatusPage) SetPaintable(PaintableVar gdk.Paintable) {
161+
162+ xStatusPageSetPaintable(x.GoPointer(), PaintableVar.GoPointer())
163+
164+}
165+
166+var xStatusPageSetTitle func(uintptr, string)
167+
168+// Sets the title for @self.
169+//
170+// The title is displayed below the icon.
171+func (x *StatusPage) SetTitle(TitleVar string) {
172+
173+ xStatusPageSetTitle(x.GoPointer(), TitleVar)
174+
175+}
176+
177+func (c *StatusPage) GoPointer() uintptr {
178+ return c.Ptr
179+}
180+
181+func (c *StatusPage) SetGoPointer(ptr uintptr) {
182+ c.Ptr = ptr
183+}
184+
185+// Retrieves the `GtkAccessibleRole` for the given `GtkAccessible`.
186+func (x *StatusPage) GetAccessibleRole() gtk.AccessibleRole {
187+
188+ return gtk.XGtkAccessibleGetAccessibleRole(x.GoPointer())
189+
190+}
191+
192+// Resets the accessible @property to its default value.
193+func (x *StatusPage) ResetProperty(PropertyVar gtk.AccessibleProperty) {
194+
195+ gtk.XGtkAccessibleResetProperty(x.GoPointer(), PropertyVar)
196+
197+}
198+
199+// Resets the accessible @relation to its default value.
200+func (x *StatusPage) ResetRelation(RelationVar gtk.AccessibleRelation) {
201+
202+ gtk.XGtkAccessibleResetRelation(x.GoPointer(), RelationVar)
203+
204+}
205+
206+// Resets the accessible @state to its default value.
207+func (x *StatusPage) ResetState(StateVar gtk.AccessibleState) {
208+
209+ gtk.XGtkAccessibleResetState(x.GoPointer(), StateVar)
210+
211+}
212+
213+// Updates a list of accessible properties.
214+//
215+// See the [enum@Gtk.AccessibleProperty] documentation for the
216+// value types of accessible properties.
217+//
218+// This function should be called by `GtkWidget` types whenever
219+// an accessible property change must be communicated to assistive
220+// technologies.
221+//
222+// Example:
223+// ```c
224+// value = gtk_adjustment_get_value (adjustment);
225+// gtk_accessible_update_property (GTK_ACCESSIBLE (spin_button),
226+//
227+// GTK_ACCESSIBLE_PROPERTY_VALUE_NOW, value,
228+// -1);
229+//
230+// ```
231+func (x *StatusPage) UpdateProperty(FirstPropertyVar gtk.AccessibleProperty, varArgs ...interface{}) {
232+
233+ gtk.XGtkAccessibleUpdateProperty(x.GoPointer(), FirstPropertyVar, varArgs...)
234+
235+}
236+
237+// Updates an array of accessible properties.
238+//
239+// This function should be called by `GtkWidget` types whenever an accessible
240+// property change must be communicated to assistive technologies.
241+//
242+// This function is meant to be used by language bindings.
243+func (x *StatusPage) UpdatePropertyValue(NPropertiesVar int32, PropertiesVar uintptr, ValuesVar uintptr) {
244+
245+ gtk.XGtkAccessibleUpdatePropertyValue(x.GoPointer(), NPropertiesVar, PropertiesVar, ValuesVar)
246+
247+}
248+
249+// Updates a list of accessible relations.
250+//
251+// This function should be called by `GtkWidget` types whenever an accessible
252+// relation change must be communicated to assistive technologies.
253+//
254+// If the [enum@Gtk.AccessibleRelation] requires a list of references,
255+// you should pass each reference individually, followed by %NULL, e.g.
256+//
257+// ```c
258+// gtk_accessible_update_relation (accessible,
259+//
260+// GTK_ACCESSIBLE_RELATION_CONTROLS,
261+// ref1, NULL,
262+// GTK_ACCESSIBLE_RELATION_LABELLED_BY,
263+// ref1, ref2, ref3, NULL,
264+// -1);
265+//
266+// ```
267+func (x *StatusPage) UpdateRelation(FirstRelationVar gtk.AccessibleRelation, varArgs ...interface{}) {
268+
269+ gtk.XGtkAccessibleUpdateRelation(x.GoPointer(), FirstRelationVar, varArgs...)
270+
271+}
272+
273+// Updates an array of accessible relations.
274+//
275+// This function should be called by `GtkWidget` types whenever an accessible
276+// relation change must be communicated to assistive technologies.
277+//
278+// This function is meant to be used by language bindings.
279+func (x *StatusPage) UpdateRelationValue(NRelationsVar int32, RelationsVar uintptr, ValuesVar uintptr) {
280+
281+ gtk.XGtkAccessibleUpdateRelationValue(x.GoPointer(), NRelationsVar, RelationsVar, ValuesVar)
282+
283+}
284+
285+// Updates a list of accessible states. See the [enum@Gtk.AccessibleState]
286+// documentation for the value types of accessible states.
287+//
288+// This function should be called by `GtkWidget` types whenever an accessible
289+// state change must be communicated to assistive technologies.
290+//
291+// Example:
292+// ```c
293+// value = GTK_ACCESSIBLE_TRISTATE_MIXED;
294+// gtk_accessible_update_state (GTK_ACCESSIBLE (check_button),
295+//
296+// GTK_ACCESSIBLE_STATE_CHECKED, value,
297+// -1);
298+//
299+// ```
300+func (x *StatusPage) UpdateState(FirstStateVar gtk.AccessibleState, varArgs ...interface{}) {
301+
302+ gtk.XGtkAccessibleUpdateState(x.GoPointer(), FirstStateVar, varArgs...)
303+
304+}
305+
306+// Updates an array of accessible states.
307+//
308+// This function should be called by `GtkWidget` types whenever an accessible
309+// state change must be communicated to assistive technologies.
310+//
311+// This function is meant to be used by language bindings.
312+func (x *StatusPage) UpdateStateValue(NStatesVar int32, StatesVar uintptr, ValuesVar uintptr) {
313+
314+ gtk.XGtkAccessibleUpdateStateValue(x.GoPointer(), NStatesVar, StatesVar, ValuesVar)
315+
316+}
317+
318+// Gets the ID of the @buildable object.
319+//
320+// `GtkBuilder` sets the name based on the ID attribute
321+// of the &lt;object&gt; tag used to construct the @buildable.
322+func (x *StatusPage) GetBuildableId() string {
323+
324+ return gtk.XGtkBuildableGetBuildableId(x.GoPointer())
325+
326+}
327+
328+func init() {
329+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
330+ if err != nil {
331+ panic(err)
332+ }
333+
334+ core.PuregoSafeRegister(&xNewStatusPage, lib, "adw_status_page_new")
335+
336+ core.PuregoSafeRegister(&xStatusPageGetChild, lib, "adw_status_page_get_child")
337+ core.PuregoSafeRegister(&xStatusPageGetDescription, lib, "adw_status_page_get_description")
338+ core.PuregoSafeRegister(&xStatusPageGetIconName, lib, "adw_status_page_get_icon_name")
339+ core.PuregoSafeRegister(&xStatusPageGetPaintable, lib, "adw_status_page_get_paintable")
340+ core.PuregoSafeRegister(&xStatusPageGetTitle, lib, "adw_status_page_get_title")
341+ core.PuregoSafeRegister(&xStatusPageSetChild, lib, "adw_status_page_set_child")
342+ core.PuregoSafeRegister(&xStatusPageSetDescription, lib, "adw_status_page_set_description")
343+ core.PuregoSafeRegister(&xStatusPageSetIconName, lib, "adw_status_page_set_icon_name")
344+ core.PuregoSafeRegister(&xStatusPageSetPaintable, lib, "adw_status_page_set_paintable")
345+ core.PuregoSafeRegister(&xStatusPageSetTitle, lib, "adw_status_page_set_title")
346+
347+}
A v4/adw/adw-style-manager.go +180 -0 collapsed to keep the page light
A v4/adw/adw-swipe-tracker.go +258 -0 collapsed to keep the page light
A v4/adw/adw-swipeable.go +109 -0
@@ -0,0 +1,109 @@
1+// Package adw was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package adw
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+ "github.com/jwijenbergh/puregotk/v4/gdk"
8+)
9+
10+// An interface for swipeable widgets.
11+type SwipeableInterface struct {
12+ Parent uintptr
13+
14+ Padding uintptr
15+}
16+
17+// An interface for swipeable widgets.
18+//
19+// The `AdwSwipeable` interface is implemented by all swipeable widgets.
20+//
21+// See [class@SwipeTracker] for details about implementing it.
22+type Swipeable interface {
23+ GoPointer() uintptr
24+ SetGoPointer(uintptr)
25+ GetCancelProgress() float64
26+ GetDistance() float64
27+ GetProgress() float64
28+ GetSnapPoints(NSnapPointsVar int32) uintptr
29+ GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle)
30+}
31+type SwipeableBase struct {
32+ Ptr uintptr
33+}
34+
35+func (x *SwipeableBase) GoPointer() uintptr {
36+ return x.Ptr
37+}
38+
39+func (x *SwipeableBase) SetGoPointer(ptr uintptr) {
40+ x.Ptr = ptr
41+}
42+
43+// Gets the progress @self will snap back to after the gesture is canceled.
44+func (x *SwipeableBase) GetCancelProgress() float64 {
45+
46+ return XAdwSwipeableGetCancelProgress(x.GoPointer())
47+
48+}
49+
50+// Gets the swipe distance of @self.
51+//
52+// This corresponds to how many pixels 1 unit represents.
53+func (x *SwipeableBase) GetDistance() float64 {
54+
55+ return XAdwSwipeableGetDistance(x.GoPointer())
56+
57+}
58+
59+// Gets the current progress of @self.
60+func (x *SwipeableBase) GetProgress() float64 {
61+
62+ return XAdwSwipeableGetProgress(x.GoPointer())
63+
64+}
65+
66+// Gets the snap points of @self.
67+//
68+// Each snap point represents a progress value that is considered acceptable to
69+// end the swipe on.
70+func (x *SwipeableBase) GetSnapPoints(NSnapPointsVar int32) uintptr {
71+
72+ return XAdwSwipeableGetSnapPoints(x.GoPointer(), NSnapPointsVar)
73+
74+}
75+
76+// Gets the area @self can start a swipe from for the given direction and
77+// gesture type.
78+//
79+// This can be used to restrict swipes to only be possible from a certain area,
80+// for example, to only allow edge swipes, or to have a draggable element and
81+// ignore swipes elsewhere.
82+//
83+// If not implemented, the default implementation returns the allocation of
84+// @self, allowing swipes from anywhere.
85+func (x *SwipeableBase) GetSwipeArea(NavigationDirectionVar NavigationDirection, IsDragVar bool, RectVar *gdk.Rectangle) {
86+
87+ XAdwSwipeableGetSwipeArea(x.GoPointer(), NavigationDirectionVar, IsDragVar, RectVar)
88+
89+}
90+
91+var XAdwSwipeableGetCancelProgress func(uintptr) float64
92+var XAdwSwipeableGetDistance func(uintptr) float64
93+var XAdwSwipeableGetProgress func(uintptr) float64
94+var XAdwSwipeableGetSnapPoints func(uintptr, int32) uintptr
95+var XAdwSwipeableGetSwipeArea func(uintptr, NavigationDirection, bool, *gdk.Rectangle)
96+
97+func init() {
98+ lib, err := purego.Dlopen(core.GetPath("ADW"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
99+ if err != nil {
100+ panic(err)
101+ }
102+
103+ core.PuregoSafeRegister(&XAdwSwipeableGetCancelProgress, lib, "adw_swipeable_get_cancel_progress")
104+ core.PuregoSafeRegister(&XAdwSwipeableGetDistance, lib, "adw_swipeable_get_distance")
105+ core.PuregoSafeRegister(&XAdwSwipeableGetProgress, lib, "adw_swipeable_get_progress")
106+ core.PuregoSafeRegister(&XAdwSwipeableGetSnapPoints, lib, "adw_swipeable_get_snap_points")
107+ core.PuregoSafeRegister(&XAdwSwipeableGetSwipeArea, lib, "adw_swipeable_get_swipe_area")
108+
109+}
A v4/adw/adw-tab-bar.go +485 -0 collapsed to keep the page light
A v4/adw/adw-tab-button.go +373 -0 collapsed to keep the page light
A v4/adw/adw-tab-overview.go +601 -0 collapsed to keep the page light
A v4/adw/adw-tab-view.go +1637 -0 collapsed to keep the page light
A v4/adw/adw-timed-animation.go +232 -0 collapsed to keep the page light
A v4/adw/adw-toast-overlay.go +292 -0 collapsed to keep the page light
A v4/adw/adw-toast.go +484 -0 collapsed to keep the page light
A v4/adw/adw-version.go +66 -0 collapsed to keep the page light
A v4/adw/adw-view-stack.go +842 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-bar.go +308 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher-title.go +379 -0 collapsed to keep the page light
A v4/adw/adw-view-switcher.go +290 -0 collapsed to keep the page light
A v4/adw/adw-window-title.go +261 -0 collapsed to keep the page light
A v4/adw/adw-window.go +382 -0 collapsed to keep the page light
A v4/cairo/main.go +510 -0 collapsed to keep the page light
A v4/gdk/gdkapplaunchcontext.go +149 -0 collapsed to keep the page light
A v4/gdk/gdkcairo.go +101 -0 collapsed to keep the page light
A v4/gdk/gdkcairocontext.go +58 -0 collapsed to keep the page light
A v4/gdk/gdkclipboard.go +378 -0 collapsed to keep the page light
A v4/gdk/gdkcontentdeserializer.go +267 -0 collapsed to keep the page light
A v4/gdk/gdkcontentformats.go +54 -0 collapsed to keep the page light
A v4/gdk/gdkcontentprovider.go +231 -0 collapsed to keep the page light
A v4/gdk/gdkcontentserializer.go +268 -0 collapsed to keep the page light
A v4/gdk/gdkcursor.go +205 -0 collapsed to keep the page light
A v4/gdk/gdkdevice.go +375 -0 collapsed to keep the page light
A v4/gdk/gdkdevicepad.go +112 -0 collapsed to keep the page light
A v4/gdk/gdkdevicetool.go +113 -0 collapsed to keep the page light
A v4/gdk/gdkdisplay.go +564 -0 collapsed to keep the page light
A v4/gdk/gdkdisplaymanager.go +196 -0 collapsed to keep the page light
A v4/gdk/gdkdrag.go +274 -0 collapsed to keep the page light
A v4/gdk/gdkdragsurface.go +48 -0
@@ -0,0 +1,48 @@
1+// Package gdk was automatically generated by github.com/jwijenbergh/puregotk DO NOT EDIT
2+package gdk
3+
4+import (
5+ "github.com/jwijenbergh/purego"
6+ "github.com/jwijenbergh/puregotk/internal/core"
7+)
8+
9+// The `GdkDragSurfaceInterface` implementation is private to GDK.
10+type DragSurfaceInterface struct {
11+}
12+
13+// A `GdkDragSurface` is an interface for surfaces used during DND.
14+type DragSurface interface {
15+ GoPointer() uintptr
16+ SetGoPointer(uintptr)
17+ Present(WidthVar int32, HeightVar int32) bool
18+}
19+type DragSurfaceBase struct {
20+ Ptr uintptr
21+}
22+
23+func (x *DragSurfaceBase) GoPointer() uintptr {
24+ return x.Ptr
25+}
26+
27+func (x *DragSurfaceBase) SetGoPointer(ptr uintptr) {
28+ x.Ptr = ptr
29+}
30+
31+// Present @drag_surface.
32+func (x *DragSurfaceBase) Present(WidthVar int32, HeightVar int32) bool {
33+
34+ return XGdkDragSurfacePresent(x.GoPointer(), WidthVar, HeightVar)
35+
36+}
37+
38+var XGdkDragSurfacePresent func(uintptr, int32, int32) bool
39+
40+func init() {
41+ lib, err := purego.Dlopen(core.GetPath("GDK"), purego.RTLD_NOW|purego.RTLD_GLOBAL)
42+ if err != nil {
43+ panic(err)
44+ }
45+
46+ core.PuregoSafeRegister(&XGdkDragSurfacePresent, lib, "gdk_drag_surface_present")
47+
48+}
A v4/gdk/gdkdrawcontext.go +164 -0 collapsed to keep the page light
A v4/gdk/gdkdrop.go +264 -0 collapsed to keep the page light
A v4/gdk/gdkenums.go +255 -0 collapsed to keep the page light
A v4/gdk/gdkevents.go +1222 -0 collapsed to keep the page light
A v4/gdk/gdkframeclock.go +351 -0 collapsed to keep the page light
A v4/gdk/gdkframetimings.go +13 -0 collapsed to keep the page light
A v4/gdk/gdkglcontext.go +399 -0 collapsed to keep the page light
A v4/gdk/gdkgltexture.go +296 -0 collapsed to keep the page light
A v4/gdk/gdkkeys.go +120 -0 collapsed to keep the page light
A v4/gdk/gdkmemorytexture.go +280 -0 collapsed to keep the page light
A v4/gdk/gdkmonitor.go +222 -0 collapsed to keep the page light
A v4/gdk/gdkpaintable.go +301 -0 collapsed to keep the page light
A v4/gdk/gdkpango.go +60 -0 collapsed to keep the page light
A v4/gdk/gdkpixbuf.go +61 -0 collapsed to keep the page light
A v4/gdk/gdkpopup.go +143 -0 collapsed to keep the page light
A v4/gdk/gdkpopuplayout.go +77 -0 collapsed to keep the page light
A v4/gdk/gdkrgba.go +21 -0 collapsed to keep the page light
A v4/gdk/gdkseat.go +202 -0 collapsed to keep the page light
A v4/gdk/gdksnapshot.go +28 -0 collapsed to keep the page light
A v4/gdk/gdksurface.go +566 -0 collapsed to keep the page light
A v4/gdk/gdktexture.go +536 -0 collapsed to keep the page light
A v4/gdk/gdktoplevel.go +399 -0 collapsed to keep the page light
A v4/gdk/gdktoplevellayout.go +14 -0 collapsed to keep the page light
A v4/gdk/gdktoplevelsize.go +29 -0 collapsed to keep the page light
A v4/gdk/gdktypes.go +71 -0 collapsed to keep the page light
A v4/gdk/gdkvulkancontext.go +94 -0 collapsed to keep the page light
A v4/gdk/main.go +53 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-animation.go +405 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-core.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-io.go +245 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-loader.go +359 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-simple-anim.go +86 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf-transform.go +59 -0 collapsed to keep the page light
A v4/gdkpixbuf/gdk-pixbuf.go +1394 -0 collapsed to keep the page light
A v4/gdkpixbuf/main.go +76 -0 collapsed to keep the page light
A v4/gio/gaction.go +276 -0 collapsed to keep the page light
A v4/gio/gactiongroup.go +357 -0 collapsed to keep the page light
A v4/gio/gactionmap.go +168 -0 collapsed to keep the page light
A v4/gio/gappinfo.go +777 -0 collapsed to keep the page light
A v4/gio/gapplication.go +1388 -0 collapsed to keep the page light
A v4/gio/gapplicationcommandline.go +463 -0 collapsed to keep the page light
A v4/gio/gasyncinitable.go +237 -0 collapsed to keep the page light
A v4/gio/gasyncresult.go +186 -0 collapsed to keep the page light
A v4/gio/gbufferedinputstream.go +281 -0 collapsed to keep the page light
A v4/gio/gbufferedoutputstream.go +187 -0 collapsed to keep the page light
A v4/gio/gcancellable.go +362 -0 collapsed to keep the page light
A v4/gio/gcharsetconverter.go +228 -0 collapsed to keep the page light
A v4/gio/gcontenttype.go +240 -0 collapsed to keep the page light
A v4/gio/gconverter.go +150 -0 collapsed to keep the page light
A v4/gio/gconverterinputstream.go +141 -0 collapsed to keep the page light
A v4/gio/gconverteroutputstream.go +167 -0 collapsed to keep the page light
A v4/gio/gcredentials.go +194 -0 collapsed to keep the page light
A v4/gio/gdatagrambased.go +282 -0 collapsed to keep the page light
A v4/gio/gdatainputstream.go +451 -0 collapsed to keep the page light
A v4/gio/gdataoutputstream.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusaddress.go +140 -0 collapsed to keep the page light
A v4/gio/gdbusconnection.go +277 -0 collapsed to keep the page light
A v4/gio/gdbuserror.go +156 -0 collapsed to keep the page light
A v4/gio/gdbusinterface.go +105 -0 collapsed to keep the page light
A v4/gio/gdbusinterfaceskeleton.go +298 -0 collapsed to keep the page light
A v4/gio/gdbusintrospection.go +114 -0 collapsed to keep the page light
A v4/gio/gdbusnameowning.go +134 -0 collapsed to keep the page light
A v4/gio/gdbusnamewatching.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobject.go +81 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanager.go +101 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerclient.go +437 -0 collapsed to keep the page light
A v4/gio/gdbusobjectmanagerserver.go +217 -0 collapsed to keep the page light
A v4/gio/gdbusobjectproxy.go +115 -0 collapsed to keep the page light
A v4/gio/gdbusobjectskeleton.go +176 -0 collapsed to keep the page light
A v4/gio/gdbusproxy.go +712 -0 collapsed to keep the page light
A v4/gio/gdbusutils.go +213 -0 collapsed to keep the page light
A v4/gio/gdebugcontroller.go +73 -0 collapsed to keep the page light
A v4/gio/gdebugcontrollerdbus.go +287 -0 collapsed to keep the page light
A v4/gio/gdesktopappinfo.go +663 -0 collapsed to keep the page light
A v4/gio/gdrive.go +388 -0 collapsed to keep the page light
A v4/gio/gdtlsclientconnection.go +130 -0 collapsed to keep the page light
A v4/gio/gdtlsconnection.go +536 -0 collapsed to keep the page light
A v4/gio/gdtlsserverconnection.go +55 -0 collapsed to keep the page light
A v4/gio/gemblem.go +145 -0 collapsed to keep the page light
A v4/gio/gemblemedicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfile.go +2758 -0 large diff (2758 lines changed): collapsed
A v4/gio/gfileattribute.go +19 -0 collapsed to keep the page light
A v4/gio/gfiledescriptorbased.go +54 -0 collapsed to keep the page light
A v4/gio/gfileenumerator.go +313 -0 collapsed to keep the page light
A v4/gio/gfileicon.go +154 -0 collapsed to keep the page light
A v4/gio/gfileinfo.go +876 -0 collapsed to keep the page light
A v4/gio/gfileinputstream.go +166 -0 collapsed to keep the page light
A v4/gio/gfileiostream.go +197 -0 collapsed to keep the page light
A v4/gio/gfilemonitor.go +142 -0 collapsed to keep the page light
A v4/gio/gfilenamecompleter.go +101 -0 collapsed to keep the page light
A v4/gio/gfileoutputstream.go +191 -0 collapsed to keep the page light
A v4/gio/gfilterinputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gfilteroutputstream.go +83 -0 collapsed to keep the page light
A v4/gio/gicon.go +167 -0 collapsed to keep the page light
A v4/gio/ginetaddress.go +272 -0 collapsed to keep the page light
A v4/gio/ginetaddressmask.go +194 -0 collapsed to keep the page light
A v4/gio/ginetsocketaddress.go +176 -0 collapsed to keep the page light
A v4/gio/ginitable.go +130 -0 collapsed to keep the page light
A v4/gio/ginputstream.go +430 -0 collapsed to keep the page light
A v4/gio/gio-2.0.go +5784 -0 large diff (5784 lines changed): collapsed
A v4/gio/gioenums.go +1790 -0 collapsed to keep the page light
A v4/gio/gioerror.go +31 -0 collapsed to keep the page light
A v4/gio/giomodule.go +248 -0 collapsed to keep the page light
A v4/gio/gioscheduler.go +46 -0 collapsed to keep the page light
A v4/gio/giostream.go +257 -0 collapsed to keep the page light
A v4/gio/giotypes.go +351 -0 collapsed to keep the page light
A v4/gio/glistmodel.go +192 -0 collapsed to keep the page light
A v4/gio/gliststore.go +286 -0 collapsed to keep the page light
A v4/gio/gloadableicon.go +87 -0 collapsed to keep the page light
A v4/gio/gmemoryinputstream.go +228 -0 collapsed to keep the page light
A v4/gio/gmemorymonitor.go +102 -0 collapsed to keep the page light
A v4/gio/gmemoryoutputstream.go +340 -0 collapsed to keep the page light
A v4/gio/gmenumodel.go +534 -0 collapsed to keep the page light
A v4/gio/gmount.go +448 -0 collapsed to keep the page light
A v4/gio/gmountoperation.go +383 -0 collapsed to keep the page light
A v4/gio/gnativesocketaddress.go +104 -0 collapsed to keep the page light
A v4/gio/gnativevolumemonitor.go +24 -0 collapsed to keep the page light
A v4/gio/gnetworkaddress.go +179 -0 collapsed to keep the page light
A v4/gio/gnetworking.go +28 -0 collapsed to keep the page light
A v4/gio/gnetworkmonitor.go +171 -0 collapsed to keep the page light
A v4/gio/gnetworkservice.go +169 -0 collapsed to keep the page light
A v4/gio/goutputstream.go +660 -0 collapsed to keep the page light
A v4/gio/gpermission.go +211 -0 collapsed to keep the page light
A v4/gio/gpollableinputstream.go +122 -0 collapsed to keep the page light
A v4/gio/gpollableoutputstream.go +157 -0 collapsed to keep the page light
A v4/gio/gpollableutils.go +108 -0 collapsed to keep the page light
A v4/gio/gpowerprofilemonitor.go +91 -0 collapsed to keep the page light
A v4/gio/gproxy.go +125 -0 collapsed to keep the page light
A v4/gio/gproxyaddress.go +186 -0 collapsed to keep the page light
A v4/gio/gproxyaddressenumerator.go +37 -0 collapsed to keep the page light
A v4/gio/gproxyresolver.go +124 -0 collapsed to keep the page light
A v4/gio/gremoteactiongroup.go +96 -0 collapsed to keep the page light
A v4/gio/gresolver.go +348 -0 collapsed to keep the page light
A v4/gio/gresource.go +143 -0 collapsed to keep the page light
A v4/gio/gseekable.go +125 -0 collapsed to keep the page light
A v4/gio/gsettings.go +1357 -0 collapsed to keep the page light
A v4/gio/gsettingsbackend.go +310 -0 collapsed to keep the page light
A v4/gio/gsettingsschema.go +146 -0 collapsed to keep the page light
A v4/gio/gsimpleactiongroup.go +441 -0 collapsed to keep the page light
A v4/gio/gsimpleasyncresult.go +576 -0 collapsed to keep the page light
A v4/gio/gsimpleproxyresolver.go +143 -0 collapsed to keep the page light
A v4/gio/gsocket.go +1353 -0 collapsed to keep the page light
A v4/gio/gsocketaddress.go +143 -0 collapsed to keep the page light
A v4/gio/gsocketaddressenumerator.go +117 -0 collapsed to keep the page light
A v4/gio/gsocketclient.go +713 -0 collapsed to keep the page light
A v4/gio/gsocketconnectable.go +155 -0 collapsed to keep the page light
A v4/gio/gsocketconnection.go +166 -0 collapsed to keep the page light
A v4/gio/gsocketcontrolmessage.go +111 -0 collapsed to keep the page light
A v4/gio/gsocketlistener.go +327 -0 collapsed to keep the page light
A v4/gio/gsocketservice.go +162 -0 collapsed to keep the page light
A v4/gio/gsrvtarget.go +26 -0 collapsed to keep the page light
A v4/gio/gtask.go +1138 -0 collapsed to keep the page light
A v4/gio/gtcpconnection.go +72 -0 collapsed to keep the page light
A v4/gio/gtcpwrapperconnection.go +82 -0 collapsed to keep the page light
A v4/gio/gthemedicon.go +183 -0 collapsed to keep the page light
A v4/gio/gthreadedsocketservice.go +88 -0 collapsed to keep the page light
A v4/gio/gtlsbackend.go +175 -0 collapsed to keep the page light
A v4/gio/gtlscertificate.go +357 -0 collapsed to keep the page light
A v4/gio/gtlsclientconnection.go +210 -0 collapsed to keep the page light
A v4/gio/gtlsconnection.go +521 -0 collapsed to keep the page light
A v4/gio/gtlsdatabase.go +339 -0 collapsed to keep the page light
A v4/gio/gtlsfiledatabase.go +61 -0 collapsed to keep the page light
A v4/gio/gtlsinteraction.go +260 -0 collapsed to keep the page light
A v4/gio/gtlspassword.go +175 -0 collapsed to keep the page light
A v4/gio/gtlsserverconnection.go +60 -0 collapsed to keep the page light
A v4/gio/gunixconnection.go +208 -0 collapsed to keep the page light
A v4/gio/gunixcredentialsmessage.go +112 -0 collapsed to keep the page light
A v4/gio/gunixfdlist.go +192 -0 collapsed to keep the page light
A v4/gio/gunixfdmessage.go +151 -0 collapsed to keep the page light
A v4/gio/gunixinputstream.go +160 -0 collapsed to keep the page light
A v4/gio/gunixmounts.go +429 -0 collapsed to keep the page light
A v4/gio/gunixoutputstream.go +186 -0 collapsed to keep the page light
A v4/gio/gunixsocketaddress.go +233 -0 collapsed to keep the page light
A v4/gio/gvfs.go +166 -0 collapsed to keep the page light
A v4/gio/gvolume.go +352 -0 collapsed to keep the page light
A v4/gio/gvolumemonitor.go +271 -0 collapsed to keep the page light
A v4/gio/gzlibcompressor.go +190 -0 collapsed to keep the page light
A v4/gio/gzlibdecompressor.go +177 -0 collapsed to keep the page light
A v4/gio/main.go +25 -0 collapsed to keep the page light
A v4/glib/garray.go +177 -0 collapsed to keep the page light
A v4/glib/gasyncqueue.go +8 -0 collapsed to keep the page light
A v4/glib/gatomic.go +321 -0 collapsed to keep the page light
A v4/glib/gbacktrace.go +96 -0 collapsed to keep the page light
A v4/glib/gbase64.go +110 -0 collapsed to keep the page light
A v4/glib/gbitlock.go +128 -0 collapsed to keep the page light
A v4/glib/gbookmarkfile.go +31 -0 collapsed to keep the page light
A v4/glib/gcharset.go +143 -0 collapsed to keep the page light
A v4/glib/gchecksum.go +93 -0 collapsed to keep the page light
A v4/glib/gconvert.go +356 -0 collapsed to keep the page light
A v4/glib/gdataset.go +261 -0 collapsed to keep the page light
A v4/glib/gdate.go +296 -0 collapsed to keep the page light
A v4/glib/gdatetime.go +9 -0 collapsed to keep the page light
A v4/glib/gdir.go +6 -0 collapsed to keep the page light
A v4/glib/genviron.go +154 -0 collapsed to keep the page light
A v4/glib/gerror.go +143 -0 collapsed to keep the page light
A v4/glib/gfileutils.go +716 -0 collapsed to keep the page light
A v4/glib/ggettext.go +135 -0 collapsed to keep the page light
A v4/glib/ghash.go +441 -0 collapsed to keep the page light
A v4/glib/ghmac.go +61 -0 collapsed to keep the page light
A v4/glib/ghook.go +154 -0 collapsed to keep the page light
A v4/glib/ghostutils.go +89 -0 collapsed to keep the page light
A v4/glib/giochannel.go +237 -0 collapsed to keep the page light
A v4/glib/gkeyfile.go +46 -0 collapsed to keep the page light
A v4/glib/glib-2.0.go +46 -0 collapsed to keep the page light
A v4/glib/glib-types.go +35 -0 collapsed to keep the page light
A v4/glib/glib-unix.go +174 -0 collapsed to keep the page light
A v4/glib/glibconfig.go +11 -0 collapsed to keep the page light
A v4/glib/glist.go +36 -0 collapsed to keep the page light
A v4/glib/gmain.go +826 -0 collapsed to keep the page light
A v4/glib/gmappedfile.go +8 -0 collapsed to keep the page light
A v4/glib/gmarkup.go +228 -0 collapsed to keep the page light
A v4/glib/gmem.go +273 -0 collapsed to keep the page light
A v4/glib/gmessages.go +815 -0 collapsed to keep the page light
A v4/glib/gnode.go +83 -0 collapsed to keep the page light
A v4/glib/goption.go +136 -0 collapsed to keep the page light
A v4/glib/gpattern.go +71 -0 collapsed to keep the page light
A v4/glib/gpoll.go +55 -0 collapsed to keep the page light
A v4/glib/gprimes.go +30 -0 collapsed to keep the page light
A v4/glib/gprintf.go +122 -0 collapsed to keep the page light
A v4/glib/gqsort.go +28 -0 collapsed to keep the page light
A v4/glib/gquark.go +120 -0 collapsed to keep the page light
A v4/glib/gqueue.go +12 -0 collapsed to keep the page light
A v4/glib/grand.go +74 -0 collapsed to keep the page light
A v4/glib/grcbox.go +205 -0 collapsed to keep the page light
A v4/glib/grefcount.go +103 -0 collapsed to keep the page light
A v4/glib/grefstring.go +95 -0 collapsed to keep the page light
A v4/glib/gregex.go +536 -0 collapsed to keep the page light
A v4/glib/gscanner.go +203 -0 collapsed to keep the page light
A v4/glib/gsequence.go +145 -0 collapsed to keep the page light
A v4/glib/gshell.go +110 -0 collapsed to keep the page light
A v4/glib/gslice.go +142 -0 collapsed to keep the page light
A v4/glib/gslist.go +35 -0 collapsed to keep the page light
A v4/glib/gspawn.go +550 -0 collapsed to keep the page light
A v4/glib/gstdio.go +103 -0 collapsed to keep the page light
A v4/glib/gstrfuncs.go +1089 -0 collapsed to keep the page light
A v4/glib/gstring.go +11 -0 collapsed to keep the page light
A v4/glib/gstringchunk.go +7 -0 collapsed to keep the page light
A v4/glib/gstrvbuilder.go +18 -0 collapsed to keep the page light
A v4/glib/gtestutils.go +1164 -0 collapsed to keep the page light
A v4/glib/gthread.go +436 -0 collapsed to keep the page light
A v4/glib/gthreadpool.go +105 -0 collapsed to keep the page light
A v4/glib/gtimer.go +60 -0 collapsed to keep the page light
A v4/glib/gtimezone.go +27 -0 collapsed to keep the page light
A v4/glib/gtrashstack.go +65 -0 collapsed to keep the page light
A v4/glib/gtree.go +24 -0 collapsed to keep the page light
A v4/glib/gtypes.go +106 -0 collapsed to keep the page light
A v4/glib/gunicode.go +1566 -0 collapsed to keep the page light
A v4/glib/guri.go +600 -0 collapsed to keep the page light
A v4/glib/gutils.go +744 -0 collapsed to keep the page light
A v4/glib/guuid.go +44 -0 collapsed to keep the page light
A v4/glib/gvariant.go +582 -0 collapsed to keep the page light
A v4/glib/gvarianttype.go +238 -0 collapsed to keep the page light
A v4/glib/gversion.go +39 -0 collapsed to keep the page light
A v4/glib/main.go +159 -0 collapsed to keep the page light
A v4/gmodule/gmodule.go +106 -0 collapsed to keep the page light
A v4/gmodule/main.go +25 -0 collapsed to keep the page light
A v4/gobject/gbinding.go +38 -0 collapsed to keep the page light
A v4/gobject/gboxed.go +61 -0 collapsed to keep the page light
A v4/gobject/gclosure.go +172 -0 collapsed to keep the page light
A v4/gobject/genums.go +220 -0 collapsed to keep the page light
A v4/gobject/gmarshal.go +260 -0 collapsed to keep the page light
A v4/gobject/gobject-2.0.go +723 -0 collapsed to keep the page light
A v4/gobject/gobject.go +1326 -0 collapsed to keep the page light
A v4/gobject/gparam.go +411 -0 collapsed to keep the page light
A v4/gobject/gparamspecs.go +929 -0 collapsed to keep the page light
A v4/gobject/gsignal.go +765 -0 collapsed to keep the page light
A v4/gobject/gsourceclosure.go +49 -0 collapsed to keep the page light
A v4/gobject/gtype.go +1114 -0 collapsed to keep the page light
A v4/gobject/gtypemodule.go +204 -0 collapsed to keep the page light
A v4/gobject/gtypeplugin.go +29 -0 collapsed to keep the page light
A v4/gobject/gvalue.go +73 -0 collapsed to keep the page light
A v4/gobject/gvaluearray.go +11 -0 collapsed to keep the page light
A v4/gobject/gvaluetypes.go +48 -0 collapsed to keep the page light
A v4/gobject/main.go +4 -0 collapsed to keep the page light
A v4/gobject/more.go +94 -0 collapsed to keep the page light
A v4/graphene/graphene-box.go +98 -0 collapsed to keep the page light
A v4/graphene/graphene-config.go +22 -0 collapsed to keep the page light
A v4/graphene/graphene-euler.go +91 -0 collapsed to keep the page light
A v4/graphene/graphene-frustum.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-matrix.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-plane.go +12 -0 collapsed to keep the page light
A v4/graphene/graphene-point.go +32 -0 collapsed to keep the page light
A v4/graphene/graphene-point3d.go +34 -0 collapsed to keep the page light
A v4/graphene/graphene-quad.go +10 -0 collapsed to keep the page light
A v4/graphene/graphene-quaternion.go +16 -0 collapsed to keep the page light
A v4/graphene/graphene-ray.go +27 -0 collapsed to keep the page light
A v4/graphene/graphene-rect.go +56 -0 collapsed to keep the page light
A v4/graphene/graphene-size.go +33 -0 collapsed to keep the page light
A v4/graphene/graphene-sphere.go +9 -0 collapsed to keep the page light
A v4/graphene/graphene-triangle.go +11 -0 collapsed to keep the page light
A v4/graphene/graphene-vec2.go +63 -0 collapsed to keep the page light
A v4/graphene/graphene-vec3.go +78 -0 collapsed to keep the page light
A v4/graphene/graphene-vec4.go +89 -0 collapsed to keep the page light
A v4/gsk/gskbroadwayrenderer.go +59 -0 collapsed to keep the page light
A v4/gsk/gskcairorenderer.go +63 -0 collapsed to keep the page light
A v4/gsk/gskenums.go +221 -0 collapsed to keep the page light
A v4/gsk/gskglrenderer.go +52 -0 collapsed to keep the page light
A v4/gsk/gskglshader.go +432 -0 collapsed to keep the page light
A v4/gsk/gskrenderer.go +177 -0 collapsed to keep the page light
A v4/gsk/gskrendernode.go +250 -0 collapsed to keep the page light
A v4/gsk/gskrendernodeimpl.go +1884 -0 collapsed to keep the page light
A v4/gsk/gskroundedrect.go +21 -0 collapsed to keep the page light
A v4/gsk/gsktransform.go +32 -0 collapsed to keep the page light
A v4/gsk/gsktypes.go +14 -0 collapsed to keep the page light
A v4/gsk/main.go +59 -0 collapsed to keep the page light
A v4/gtk/gtkaboutdialog.go +819 -0 collapsed to keep the page light
A v4/gtk/gtkaccelgroup.go +161 -0 collapsed to keep the page light
A v4/gtk/gtkaccessible.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkactionable.go +153 -0 collapsed to keep the page light
A v4/gtk/gtkactionbar.go +321 -0 collapsed to keep the page light
A v4/gtk/gtkadjustment.go +299 -0 collapsed to keep the page light
A v4/gtk/gtkappchooser.go +91 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserbutton.go +426 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserdialog.go +413 -0 collapsed to keep the page light
A v4/gtk/gtkappchooserwidget.go +410 -0 collapsed to keep the page light
A v4/gtk/gtkapplication.go +812 -0 collapsed to keep the page light
A v4/gtk/gtkapplicationwindow.go +778 -0 collapsed to keep the page light
A v4/gtk/gtkaspectframe.go +320 -0 collapsed to keep the page light
A v4/gtk/gtkassistant.go +809 -0 collapsed to keep the page light
A v4/gtk/gtkatcontext.go +107 -0 collapsed to keep the page light
A v4/gtk/gtkbinlayout.go +60 -0 collapsed to keep the page light
A v4/gtk/gtkbitset.go +64 -0 collapsed to keep the page light
A v4/gtk/gtkbookmarklist.go +225 -0 collapsed to keep the page light
A v4/gtk/gtkboolfilter.go +110 -0 collapsed to keep the page light
A v4/gtk/gtkborder.go +15 -0 collapsed to keep the page light
A v4/gtk/gtkbox.go +376 -0 collapsed to keep the page light
A v4/gtk/gtkboxlayout.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkbuildable.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkbuilder.go +706 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderlistitemfactory.go +137 -0 collapsed to keep the page light
A v4/gtk/gtkbuilderscope.go +168 -0 collapsed to keep the page light
A v4/gtk/gtkbutton.go +543 -0 collapsed to keep the page light
A v4/gtk/gtkcalendar.go +445 -0 collapsed to keep the page light
A v4/gtk/gtkcellarea.go +1168 -0 collapsed to keep the page light
A v4/gtk/gtkcellareabox.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkcellareacontext.go +236 -0 collapsed to keep the page light
A v4/gtk/gtkcelleditable.go +82 -0 collapsed to keep the page light
A v4/gtk/gtkcelllayout.go +303 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderer.go +483 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendereraccel.go +93 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderercombo.go +92 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererpixbuf.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererprogress.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspin.go +67 -0 collapsed to keep the page light
A v4/gtk/gtkcellrendererspinner.go +65 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertext.go +104 -0 collapsed to keep the page light
A v4/gtk/gtkcellrenderertoggle.go +149 -0 collapsed to keep the page light
A v4/gtk/gtkcellview.go +530 -0 collapsed to keep the page light
A v4/gtk/gtkcenterbox.go +364 -0 collapsed to keep the page light
A v4/gtk/gtkcenterlayout.go +195 -0 collapsed to keep the page light
A v4/gtk/gtkcheckbutton.go +553 -0 collapsed to keep the page light
A v4/gtk/gtkcolorbutton.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooser.go +114 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserdialog.go +371 -0 collapsed to keep the page light
A v4/gtk/gtkcolorchooserwidget.go +271 -0 collapsed to keep the page light
A v4/gtk/gtkcolorutils.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnview.go +627 -0 collapsed to keep the page light
A v4/gtk/gtkcolumnviewcolumn.go +311 -0 collapsed to keep the page light
A v4/gtk/gtkcombobox.go +918 -0 collapsed to keep the page light
A v4/gtk/gtkcomboboxtext.go +538 -0 collapsed to keep the page light
A v4/gtk/gtkconstraint.go +253 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintguide.go +179 -0 collapsed to keep the page light
A v4/gtk/gtkconstraintlayout.go +490 -0 collapsed to keep the page light
A v4/gtk/gtkcssenums.go +40 -0 collapsed to keep the page light
A v4/gtk/gtkcsserror.go +25 -0 collapsed to keep the page light
A v4/gtk/gtkcsslocation.go +26 -0 collapsed to keep the page light
A v4/gtk/gtkcssprovider.go +190 -0 collapsed to keep the page light
A v4/gtk/gtkcsssection.go +9 -0 collapsed to keep the page light
A v4/gtk/gtkcustomfilter.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkcustomlayout.go +72 -0 collapsed to keep the page light
A v4/gtk/gtkcustomsorter.go +78 -0 collapsed to keep the page light
A v4/gtk/gtkdebug.go +89 -0 collapsed to keep the page light
A v4/gtk/gtkdialog.go +741 -0 collapsed to keep the page light
A v4/gtk/gtkdirectorylist.go +317 -0 collapsed to keep the page light
A v4/gtk/gtkdragicon.go +335 -0 collapsed to keep the page light
A v4/gtk/gtkdragsource.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkdrawingarea.go +388 -0 collapsed to keep the page light
A v4/gtk/gtkdropcontrollermotion.go +142 -0 collapsed to keep the page light
A v4/gtk/gtkdropdown.go +489 -0 collapsed to keep the page light
A v4/gtk/gtkdroptarget.go +365 -0 collapsed to keep the page light
A v4/gtk/gtkdroptargetasync.go +237 -0 collapsed to keep the page light
A v4/gtk/gtkeditable.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkeditablelabel.go +508 -0 collapsed to keep the page light
A v4/gtk/gtkemojichooser.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkentry.go +1419 -0 collapsed to keep the page light
A v4/gtk/gtkentrybuffer.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkentrycompletion.go +595 -0 collapsed to keep the page light
A v4/gtk/gtkenums.go +1512 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontroller.go +226 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerfocus.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerkey.go +165 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerlegacy.go +70 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollermotion.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkeventcontrollerscroll.go +203 -0 collapsed to keep the page light
A v4/gtk/gtkexpander.go +507 -0 collapsed to keep the page light
A v4/gtk/gtkexpression.go +711 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooser.go +532 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserdialog.go +820 -0 collapsed to keep the page light
A v4/gtk/gtkfilechoosernative.go +596 -0 collapsed to keep the page light
A v4/gtk/gtkfilechooserwidget.go +783 -0 collapsed to keep the page light
A v4/gtk/gtkfilefilter.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkfilter.go +170 -0 collapsed to keep the page light
A v4/gtk/gtkfilterlistmodel.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkfixed.go +309 -0 collapsed to keep the page light
A v4/gtk/gtkfixedlayout.go +129 -0 collapsed to keep the page light
A v4/gtk/gtkflattenlistmodel.go +200 -0 collapsed to keep the page light
A v4/gtk/gtkflowbox.go +1130 -0 collapsed to keep the page light
A v4/gtk/gtkfontbutton.go +565 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooser.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserdialog.go +539 -0 collapsed to keep the page light
A v4/gtk/gtkfontchooserwidget.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkframe.go +355 -0 collapsed to keep the page light
A v4/gtk/gtkgesture.go +506 -0 collapsed to keep the page light
A v4/gtk/gtkgestureclick.go +119 -0 collapsed to keep the page light
A v4/gtk/gtkgesturedrag.go +127 -0 collapsed to keep the page light
A v4/gtk/gtkgesturelongpress.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkgesturepan.go +100 -0 collapsed to keep the page light
A v4/gtk/gtkgesturerotate.go +85 -0 collapsed to keep the page light
A v4/gtk/gtkgesturesingle.go +152 -0 collapsed to keep the page light
A v4/gtk/gtkgesturestylus.go +183 -0 collapsed to keep the page light
A v4/gtk/gtkgestureswipe.go +94 -0 collapsed to keep the page light
A v4/gtk/gtkgesturezoom.go +87 -0 collapsed to keep the page light
A v4/gtk/gtkglarea.go +592 -0 collapsed to keep the page light
A v4/gtk/gtkgrid.go +577 -0 collapsed to keep the page light
A v4/gtk/gtkgridlayout.go +302 -0 collapsed to keep the page light
A v4/gtk/gtkgridview.go +519 -0 collapsed to keep the page light
A v4/gtk/gtkheaderbar.go +407 -0 collapsed to keep the page light
A v4/gtk/gtkicontheme.go +622 -0 collapsed to keep the page light
A v4/gtk/gtkiconview.go +1373 -0 collapsed to keep the page light
A v4/gtk/gtkimage.go +618 -0 collapsed to keep the page light
A v4/gtk/gtkimcontext.go +384 -0 collapsed to keep the page light
A v4/gtk/gtkimcontextsimple.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkimmulticontext.go +90 -0 collapsed to keep the page light
A v4/gtk/gtkinfobar.go +528 -0 collapsed to keep the page light
A v4/gtk/gtkinscription.go +469 -0 collapsed to keep the page light
A v4/gtk/gtklabel.go +1201 -0 collapsed to keep the page light
A v4/gtk/gtklayoutchild.go +87 -0 collapsed to keep the page light
A v4/gtk/gtklayoutmanager.go +191 -0 collapsed to keep the page light
A v4/gtk/gtklevelbar.go +494 -0 collapsed to keep the page light
A v4/gtk/gtklinkbutton.go +391 -0 collapsed to keep the page light
A v4/gtk/gtklistbase.go +275 -0 collapsed to keep the page light
A v4/gtk/gtklistbox.go +1290 -0 collapsed to keep the page light
A v4/gtk/gtklistitem.go +195 -0 collapsed to keep the page light
A v4/gtk/gtklistitemfactory.go +73 -0 collapsed to keep the page light
A v4/gtk/gtkliststore.go +955 -0 collapsed to keep the page light
A v4/gtk/gtklistview.go +560 -0 collapsed to keep the page light
A v4/gtk/gtklockbutton.go +347 -0 collapsed to keep the page light
A v4/gtk/gtkmain.go +148 -0 collapsed to keep the page light
A v4/gtk/gtkmaplistmodel.go +250 -0 collapsed to keep the page light
A v4/gtk/gtkmediacontrols.go +234 -0 collapsed to keep the page light
A v4/gtk/gtkmediafile.go +385 -0 collapsed to keep the page light
A v4/gtk/gtkmediastream.go +687 -0 collapsed to keep the page light
A v4/gtk/gtkmenubutton.go +607 -0 collapsed to keep the page light
A v4/gtk/gtkmessagedialog.go +526 -0 collapsed to keep the page light
A v4/gtk/gtkmountoperation.go +144 -0 collapsed to keep the page light
A v4/gtk/gtkmultifilter.go +459 -0 collapsed to keep the page light
A v4/gtk/gtkmultiselection.go +305 -0 collapsed to keep the page light
A v4/gtk/gtkmultisorter.go +193 -0 collapsed to keep the page light
A v4/gtk/gtknative.go +148 -0 collapsed to keep the page light
A v4/gtk/gtknativedialog.go +217 -0 collapsed to keep the page light
A v4/gtk/gtknoselection.go +308 -0 collapsed to keep the page light
A v4/gtk/gtknotebook.go +1060 -0 collapsed to keep the page light
A v4/gtk/gtknumericsorter.go +117 -0 collapsed to keep the page light
A v4/gtk/gtkorientable.go +62 -0 collapsed to keep the page light
A v4/gtk/gtkoverlay.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkoverlaylayout.go +124 -0 collapsed to keep the page light
A v4/gtk/gtkpadcontroller.go +173 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetup.go +412 -0 collapsed to keep the page light
A v4/gtk/gtkpagesetupunixdialog.go +377 -0 collapsed to keep the page light
A v4/gtk/gtkpaned.go +561 -0 collapsed to keep the page light
A v4/gtk/gtkpapersize.go +51 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentry.go +545 -0 collapsed to keep the page light
A v4/gtk/gtkpasswordentrybuffer.go +57 -0 collapsed to keep the page light
A v4/gtk/gtkpicture.go +569 -0 collapsed to keep the page light
A v4/gtk/gtkpopover.go +620 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenu.go +471 -0 collapsed to keep the page light
A v4/gtk/gtkpopovermenubar.go +282 -0 collapsed to keep the page light
A v4/gtk/gtkprintcontext.go +264 -0 collapsed to keep the page light
A v4/gtk/gtkprinter.go +399 -0 collapsed to keep the page light
A v4/gtk/gtkprintjob.go +429 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperation.go +1049 -0 collapsed to keep the page light
A v4/gtk/gtkprintoperationpreview.go +86 -0 collapsed to keep the page light
A v4/gtk/gtkprintsettings.go +901 -0 collapsed to keep the page light
A v4/gtk/gtkprintunixdialog.go +579 -0 collapsed to keep the page light
A v4/gtk/gtkprogressbar.go +434 -0 collapsed to keep the page light
A v4/gtk/gtkrange.go +572 -0 collapsed to keep the page light
A v4/gtk/gtkrecentmanager.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkrender.go +187 -0 collapsed to keep the page light
A v4/gtk/gtkrevealer.go +360 -0 collapsed to keep the page light
A v4/gtk/gtkroot.go +111 -0 collapsed to keep the page light
A v4/gtk/gtkscale.go +510 -0 collapsed to keep the page light
A v4/gtk/gtkscalebutton.go +401 -0 collapsed to keep the page light
A v4/gtk/gtkscrollable.go +185 -0 collapsed to keep the page light
A v4/gtk/gtkscrollbar.go +283 -0 collapsed to keep the page light
A v4/gtk/gtkscrolledwindow.go +814 -0 collapsed to keep the page light
A v4/gtk/gtksearchbar.go +373 -0 collapsed to keep the page light
A v4/gtk/gtksearchentry.go +649 -0 collapsed to keep the page light
A v4/gtk/gtkselectionfiltermodel.go +184 -0 collapsed to keep the page light
A v4/gtk/gtkselectionmodel.go +244 -0 collapsed to keep the page light
A v4/gtk/gtkseparator.go +225 -0 collapsed to keep the page light
A v4/gtk/gtksettings.go +75 -0 collapsed to keep the page light
A v4/gtk/gtkshortcut.go +166 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutaction.go +368 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutcontroller.go +307 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutlabel.go +242 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutmanager.go +39 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsgroup.go +188 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutssection.go +209 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutsshortcut.go +201 -0 collapsed to keep the page light
A v4/gtk/gtkshortcutswindow.go +354 -0 collapsed to keep the page light
A v4/gtk/gtkshortcuttrigger.go +437 -0 collapsed to keep the page light
A v4/gtk/gtkshow.go +55 -0 collapsed to keep the page light
A v4/gtk/gtksignallistitemfactory.go +167 -0 collapsed to keep the page light
A v4/gtk/gtksingleselection.go +411 -0 collapsed to keep the page light
A v4/gtk/gtksizegroup.go +194 -0 collapsed to keep the page light
A v4/gtk/gtksizerequest.go +41 -0 collapsed to keep the page light
A v4/gtk/gtkslicelistmodel.go +233 -0 collapsed to keep the page light
A v4/gtk/gtksnapshot.go +688 -0 collapsed to keep the page light
A v4/gtk/gtksorter.go +175 -0 collapsed to keep the page light
A v4/gtk/gtksortlistmodel.go +289 -0 collapsed to keep the page light
A v4/gtk/gtkspinbutton.go +1050 -0 collapsed to keep the page light
A v4/gtk/gtkspinner.go +251 -0 collapsed to keep the page light
A v4/gtk/gtkstack.go +948 -0 collapsed to keep the page light
A v4/gtk/gtkstacksidebar.go +243 -0 collapsed to keep the page light
A v4/gtk/gtkstackswitcher.go +272 -0 collapsed to keep the page light
A v4/gtk/gtkstatusbar.go +316 -0 collapsed to keep the page light
A v4/gtk/gtkstringfilter.go +180 -0 collapsed to keep the page light
A v4/gtk/gtkstringlist.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkstringsorter.go +118 -0 collapsed to keep the page light
A v4/gtk/gtkstylecontext.go +353 -0 collapsed to keep the page light
A v4/gtk/gtkstyleprovider.go +27 -0 collapsed to keep the page light
A v4/gtk/gtkswitch.go +393 -0 collapsed to keep the page light
A v4/gtk/gtksymbolicpaintable.go +65 -0 collapsed to keep the page light
A v4/gtk/gtktestatcontext.go +98 -0 collapsed to keep the page light
A v4/gtk/gtktestutils.go +74 -0 collapsed to keep the page light
A v4/gtk/gtktext.go +1176 -0 collapsed to keep the page light
A v4/gtk/gtktextbuffer.go +1494 -0 collapsed to keep the page light
A v4/gtk/gtktextchild.go +111 -0 collapsed to keep the page light
A v4/gtk/gtktextiter.go +62 -0 collapsed to keep the page light
A v4/gtk/gtktextmark.go +177 -0 collapsed to keep the page light
A v4/gtk/gtktexttag.go +125 -0 collapsed to keep the page light
A v4/gtk/gtktexttagtable.go +201 -0 collapsed to keep the page light
A v4/gtk/gtktextview.go +1722 -0 collapsed to keep the page light
A v4/gtk/gtktogglebutton.go +473 -0 collapsed to keep the page light
A v4/gtk/gtktooltip.go +157 -0 collapsed to keep the page light
A v4/gtk/gtktreednd.go +167 -0 collapsed to keep the page light
A v4/gtk/gtktreeexpander.go +340 -0 collapsed to keep the page light
A v4/gtk/gtktreelistmodel.go +472 -0 collapsed to keep the page light
A v4/gtk/gtktreelistrowsorter.go +104 -0 collapsed to keep the page light
A v4/gtk/gtktreemodel.go +739 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelfilter.go +662 -0 collapsed to keep the page light
A v4/gtk/gtktreemodelsort.go +697 -0 collapsed to keep the page light
A v4/gtk/gtktreeselection.go +323 -0 collapsed to keep the page light
A v4/gtk/gtktreesortable.go +140 -0 collapsed to keep the page light
A v4/gtk/gtktreestore.go +868 -0 collapsed to keep the page light
A v4/gtk/gtktreeview.go +1829 -0 collapsed to keep the page light
A v4/gtk/gtktreeviewcolumn.go +819 -0 collapsed to keep the page light
A v4/gtk/gtktypes.go +23 -0 collapsed to keep the page light
A v4/gtk/gtkversion.go +122 -0 collapsed to keep the page light
A v4/gtk/gtkvideo.go +420 -0 collapsed to keep the page light
A v4/gtk/gtkviewport.go +358 -0 collapsed to keep the page light
A v4/gtk/gtkvolumebutton.go +217 -0 collapsed to keep the page light
A v4/gtk/gtkwidget.go +3604 -0 collapsed to keep the page light
A v4/gtk/gtkwidgetpaintable.go +249 -0 collapsed to keep the page light
A v4/gtk/gtkwindow.go +1301 -0 collapsed to keep the page light
A v4/gtk/gtkwindowcontrols.go +318 -0 collapsed to keep the page light
A v4/gtk/gtkwindowgroup.go +105 -0 collapsed to keep the page light
A v4/gtk/gtkwindowhandle.go +241 -0 collapsed to keep the page light
A v4/gtk/main.go +61 -0 collapsed to keep the page light
A v4/pango/main.go +25 -0 collapsed to keep the page light
A v4/pango/pango-attributes.go +854 -0 collapsed to keep the page light
A v4/pango/pango-bidi-type.go +127 -0 collapsed to keep the page light
A v4/pango/pango-break.go +131 -0 collapsed to keep the page light
A v4/pango/pango-color.go +12 -0 collapsed to keep the page light
A v4/pango/pango-context.go +406 -0 collapsed to keep the page light
A v4/pango/pango-coverage.go +174 -0 collapsed to keep the page light
A v4/pango/pango-direction.go +42 -0 collapsed to keep the page light
A v4/pango/pango-font.go +688 -0 collapsed to keep the page light
A v4/pango/pango-fontmap.go +174 -0 collapsed to keep the page light
A v4/pango/pango-fontset.go +157 -0 collapsed to keep the page light
A v4/pango/pango-glyph-item.go +81 -0 collapsed to keep the page light
A v4/pango/pango-glyph.go +199 -0 collapsed to keep the page light
A v4/pango/pango-gravity.go +132 -0 collapsed to keep the page light
A v4/pango/pango-item.go +105 -0 collapsed to keep the page light
A v4/pango/pango-language.go +96 -0 collapsed to keep the page light
A v4/pango/pango-layout.go +1265 -0 collapsed to keep the page light
A v4/pango/pango-markup.go +88 -0 collapsed to keep the page light
A v4/pango/pango-matrix.go +25 -0 collapsed to keep the page light
A v4/pango/pango-renderer.go +362 -0 collapsed to keep the page light
A v4/pango/pango-script.go +332 -0 collapsed to keep the page light
A v4/pango/pango-tabs.go +59 -0 collapsed to keep the page light
A v4/pango/pango-types.go +92 -0 collapsed to keep the page light
A v4/pango/pango-utils.go +304 -0 collapsed to keep the page light
A v4/pangocairo/pangocairo.go +543 -0 collapsed to keep the page light

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 1

Tags 102

↑↓ moveenter openesc close