// Package gio was automatically generated by github.com/bnema/puregotk DO NOT EDIT package gio import ( "structs" "unsafe" "github.com/ebitengine/purego" "github.com/bnema/puregotk/pkg/core" "github.com/bnema/puregotk/v4/glib" "github.com/bnema/puregotk/v4/gobject" "github.com/bnema/puregotk/v4/gobject/types" ) type ConverterOutputStreamClass struct { _ structs.HostLayout ParentClass FilterOutputStreamClass xGReserved1 uintptr xGReserved2 uintptr xGReserved3 uintptr xGReserved4 uintptr xGReserved5 uintptr } func (x *ConverterOutputStreamClass) GoPointer() uintptr { return uintptr(unsafe.Pointer(x)) } // OverrideGReserved1 sets the "_g_reserved1" callback function. func (x *ConverterOutputStreamClass) OverrideGReserved1(cb func()) { if cb == nil { x.xGReserved1 = 0 } else { x.xGReserved1 = purego.NewCallback(func() { cb() }) } } // GetGReserved1 gets the "_g_reserved1" callback function. func (x *ConverterOutputStreamClass) GetGReserved1() func() { if x.xGReserved1 == 0 { return nil } var rawCallback func() purego.RegisterFunc(&rawCallback, x.xGReserved1) return func() { rawCallback() } } // OverrideGReserved2 sets the "_g_reserved2" callback function. func (x *ConverterOutputStreamClass) OverrideGReserved2(cb func()) { if cb == nil { x.xGReserved2 = 0 } else { x.xGReserved2 = purego.NewCallback(func() { cb() }) } } // GetGReserved2 gets the "_g_reserved2" callback function. func (x *ConverterOutputStreamClass) GetGReserved2() func() { if x.xGReserved2 == 0 { return nil } var rawCallback func() purego.RegisterFunc(&rawCallback, x.xGReserved2) return func() { rawCallback() } } // OverrideGReserved3 sets the "_g_reserved3" callback function. func (x *ConverterOutputStreamClass) OverrideGReserved3(cb func()) { if cb == nil { x.xGReserved3 = 0 } else { x.xGReserved3 = purego.NewCallback(func() { cb() }) } } // GetGReserved3 gets the "_g_reserved3" callback function. func (x *ConverterOutputStreamClass) GetGReserved3() func() { if x.xGReserved3 == 0 { return nil } var rawCallback func() purego.RegisterFunc(&rawCallback, x.xGReserved3) return func() { rawCallback() } } // OverrideGReserved4 sets the "_g_reserved4" callback function. func (x *ConverterOutputStreamClass) OverrideGReserved4(cb func()) { if cb == nil { x.xGReserved4 = 0 } else { x.xGReserved4 = purego.NewCallback(func() { cb() }) } } // GetGReserved4 gets the "_g_reserved4" callback function. func (x *ConverterOutputStreamClass) GetGReserved4() func() { if x.xGReserved4 == 0 { return nil } var rawCallback func() purego.RegisterFunc(&rawCallback, x.xGReserved4) return func() { rawCallback() } } // OverrideGReserved5 sets the "_g_reserved5" callback function. func (x *ConverterOutputStreamClass) OverrideGReserved5(cb func()) { if cb == nil { x.xGReserved5 = 0 } else { x.xGReserved5 = purego.NewCallback(func() { cb() }) } } // GetGReserved5 gets the "_g_reserved5" callback function. func (x *ConverterOutputStreamClass) GetGReserved5() func() { if x.xGReserved5 == 0 { return nil } var rawCallback func() purego.RegisterFunc(&rawCallback, x.xGReserved5) return func() { rawCallback() } } type ConverterOutputStreamPrivate struct { _ structs.HostLayout } func (x *ConverterOutputStreamPrivate) GoPointer() uintptr { return uintptr(unsafe.Pointer(x)) } // Converter output stream implements [class@Gio.OutputStream] and allows // conversion of data of various types during reading. // // As of GLib 2.34, `GConverterOutputStream` implements // [iface@Gio.PollableOutputStream]. type ConverterOutputStream struct { FilterOutputStream } var xConverterOutputStreamGLibType func() types.GType func ConverterOutputStreamGLibType() types.GType { return xConverterOutputStreamGLibType() } func ConverterOutputStreamNewFromInternalPtr(ptr uintptr) *ConverterOutputStream { cls := &ConverterOutputStream{} cls.Ptr = ptr return cls } var xNewConverterOutputStream func(uintptr, uintptr) uintptr // Creates a new converter output stream for the @base_stream. func NewConverterOutputStream(BaseStreamVar *OutputStream, ConverterVar Converter) *ConverterOutputStream { var cls *ConverterOutputStream cret := xNewConverterOutputStream(BaseStreamVar.GoPointer(), ConverterVar.GoPointer()) if cret == 0 { return nil } cls = &ConverterOutputStream{} cls.Ptr = cret return cls } var xConverterOutputStreamGetConverter func(uintptr) uintptr // Gets the #GConverter that is used by @converter_stream. func (x *ConverterOutputStream) GetConverter() *ConverterBase { var cls *ConverterBase cret := xConverterOutputStreamGetConverter(x.GoPointer()) if cret == 0 { return nil } gobject.IncreaseRef(cret) cls = &ConverterBase{} cls.Ptr = cret return cls } func (c *ConverterOutputStream) GoPointer() uintptr { if c == nil { return 0 } return c.Ptr } func (c *ConverterOutputStream) SetGoPointer(ptr uintptr) { c.Ptr = ptr } // Checks if @stream is actually pollable. Some classes may implement // #GPollableOutputStream but have only certain instances of that // class be pollable. If this method returns %FALSE, then the behavior // of other #GPollableOutputStream methods is undefined. // // For any given stream, the value returned by this method is constant; // a stream cannot switch from pollable to non-pollable or vice versa. func (x *ConverterOutputStream) CanPoll() bool { cret := XGPollableOutputStreamCanPoll(x.GoPointer()) return cret } // Creates a #GSource that triggers when @stream can be written, or // @cancellable is triggered or an error occurs. The callback on the // source is of the #GPollableSourceFunc type. // // As with g_pollable_output_stream_is_writable(), it is possible that // the stream may not actually be writable even after the source // triggers, so you should use g_pollable_output_stream_write_nonblocking() // rather than g_output_stream_write() from the callback. // // The behaviour of this method is undefined if // g_pollable_output_stream_can_poll() returns %FALSE for @stream. func (x *ConverterOutputStream) CreateSource(CancellableVar *Cancellable) *glib.Source { cret := XGPollableOutputStreamCreateSource(x.GoPointer(), CancellableVar.GoPointer()) return cret } // Checks if @stream can be written. // // Note that some stream types may not be able to implement this 100% // reliably, and it is possible that a call to g_output_stream_write() // after this returns %TRUE would still block. To guarantee // non-blocking behavior, you should always use // g_pollable_output_stream_write_nonblocking(), which will return a // %G_IO_ERROR_WOULD_BLOCK error rather than blocking. // // The behaviour of this method is undefined if // g_pollable_output_stream_can_poll() returns %FALSE for @stream. func (x *ConverterOutputStream) IsWritable() bool { cret := XGPollableOutputStreamIsWritable(x.GoPointer()) return cret } // Attempts to write up to @count bytes from @buffer to @stream, as // with g_output_stream_write(). If @stream is not currently writable, // this will immediately return %G_IO_ERROR_WOULD_BLOCK, and you can // use g_pollable_output_stream_create_source() to create a #GSource // that will be triggered when @stream is writable. // // Note that since this method never blocks, you cannot actually // use @cancellable to cancel it. However, it will return an error // if @cancellable has already been cancelled when you call, which // may happen if you call this method after a source triggers due // to having been cancelled. // // Also note that if %G_IO_ERROR_WOULD_BLOCK is returned some underlying // transports like D/TLS require that you re-send the same @buffer and // @count in the next write call. // // The behaviour of this method is undefined if // g_pollable_output_stream_can_poll() returns %FALSE for @stream. func (x *ConverterOutputStream) WriteNonblocking(BufferVar []byte, CountVar uint, CancellableVar *Cancellable) (int, error) { var cerr *glib.Error cret := XGPollableOutputStreamWriteNonblocking(x.GoPointer(), BufferVar, CountVar, CancellableVar.GoPointer(), &cerr) if cerr == nil { return cret, nil } return cret, cerr } // Attempts to write the bytes contained in the @n_vectors @vectors to @stream, // as with g_output_stream_writev(). If @stream is not currently writable, // this will immediately return %@G_POLLABLE_RETURN_WOULD_BLOCK, and you can // use g_pollable_output_stream_create_source() to create a #GSource // that will be triggered when @stream is writable. @error will *not* be // set in that case. // // Note that since this method never blocks, you cannot actually // use @cancellable to cancel it. However, it will return an error // if @cancellable has already been cancelled when you call, which // may happen if you call this method after a source triggers due // to having been cancelled. // // Also note that if %G_POLLABLE_RETURN_WOULD_BLOCK is returned some underlying // transports like D/TLS require that you re-send the same @vectors and // @n_vectors in the next write call. // // The behaviour of this method is undefined if // g_pollable_output_stream_can_poll() returns %FALSE for @stream. func (x *ConverterOutputStream) WritevNonblocking(VectorsVar []OutputVector, NVectorsVar uint, BytesWrittenVar *uint, CancellableVar *Cancellable) (PollableReturn, error) { var cerr *glib.Error cret := XGPollableOutputStreamWritevNonblocking(x.GoPointer(), VectorsVar, NVectorsVar, BytesWrittenVar, CancellableVar.GoPointer(), &cerr) if cerr == nil { return cret, nil } return cret, cerr } func init() { core.SetPackageName("GIO", "gio-2.0") core.SetSharedLibraries("GIO", []string{"libgio-2.0.so.0"}) var libs []uintptr for _, libPath := range core.GetPaths("GIO") { lib, err := purego.Dlopen(libPath, purego.RTLD_NOW|purego.RTLD_GLOBAL) if err != nil { panic(err) } libs = append(libs, lib) } core.PuregoSafeRegister(&xConverterOutputStreamGLibType, libs, "g_converter_output_stream_get_type") core.PuregoSafeRegister(&xNewConverterOutputStream, libs, "g_converter_output_stream_new") core.PuregoSafeRegister(&xConverterOutputStreamGetConverter, libs, "g_converter_output_stream_get_converter") }