1// Package glib was automatically generated by github.com/bnema/puregotk DO NOT EDIT
2package glib
3
4import (
5 "structs"
6 "unsafe"
7
8 "github.com/ebitengine/purego"
9
10 "github.com/bnema/puregotk/pkg/core"
11 "github.com/bnema/puregotk/v4/gobject/types"
12)
13
14// Specifies the type of function passed to g_main_context_set_poll_func().
15// The semantics of the function should match those of the poll() system call.
16type PollFunc func(*PollFD, uint, int) int
17
18// Represents a file descriptor, which events to poll for, and which events
19// occurred.
20type PollFD struct {
21 _ structs.HostLayout
22
23 Fd int32
24
25 Events uint16
26
27 Revents uint16
28}
29
30var xPollFDGLibType func() types.GType
31
32func PollFDGLibType() types.GType {
33 return xPollFDGLibType()
34}
35
36func (x *PollFD) GoPointer() uintptr {
37 return uintptr(unsafe.Pointer(x))
38}
39
40var xPoll func(*PollFD, uint, int) int
41
42// Polls @fds, as with the poll() system call, but portably. (On
43// systems that don't have poll(), it is emulated using select().)
44// This is used internally by #GMainContext, but it can be called
45// directly if you need to block until a file descriptor is ready, but
46// don't want to run the full main loop.
47//
48// Each element of @fds is a #GPollFD describing a single file
49// descriptor to poll. The @fd field indicates the file descriptor,
50// and the @events field indicates the events to poll for. On return,
51// the @revents fields will be filled with the events that actually
52// occurred.
53//
54// On POSIX systems, the file descriptors in @fds can be any sort of
55// file descriptor, but the situation is much more complicated on
56// Windows. If you need to use g_poll() in code that has to run on
57// Windows, the easiest solution is to construct all of your
58// #GPollFDs with g_io_channel_win32_make_pollfd().
59func Poll(FdsVar *PollFD, NfdsVar uint, TimeoutVar int) int {
60
61 cret := xPoll(FdsVar, NfdsVar, TimeoutVar)
62
63 return cret
64}
65
66func init() {
67 core.SetPackageName("GLIB", "glib-2.0")
68 core.SetSharedLibraries("GLIB", []string{"libgobject-2.0.so.0", "libglib-2.0.so.0"})
69 var libs []uintptr
70 for _, libPath := range core.GetPaths("GLIB") {
71 lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL)
72 if err != nil {
73 panic(err)
74 }
75 libs = append(libs, lib)
76 }
77
78 core.PuregoSafeRegister(&xPoll, libs, "g_poll")
79
80 core.PuregoSafeRegister(&xPollFDGLibType, libs, "g_pollfd_get_type")
81
82}