closure

package
Version: v0.6.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 26, 2021 License: ISC Imports: 7 Imported by: 0

Documentation

Index

Constants

View Source
const FrameSize = 3

FrameSize is the number of frames that FuncStack should trace back from.

Variables

This section is empty.

Functions

func Assign

func Assign(closure unsafe.Pointer, fs FuncStack)

Assign assigns the given FuncStack to the given closure.

func Delete

func Delete(closure unsafe.Pointer)

Delete deletes the closure pointer from the registry while also checking for any existing signal handler associated with the given callback ID. If a signal handler is found, then its behavior is similar to DisconnectSignal.

func DisconnectSignal

func DisconnectSignal(handle uint)

DisconnectSignal removes both the signal and the closure associated with it from the internal registry. Since this function will also remove the closure itself from the internal registry, Gtk's disconnect functions should be called first.

func RegisterSignal

func RegisterSignal(handle uint, closure unsafe.Pointer)

RegisterSignal registers the given signal handle to be associated with the closure pointer. This association allows the closure to be removed as well when the signal removal is requested from the user using DisconnectSignal.

Types

type FuncStack

type FuncStack struct {
	Func   reflect.Value
	Frames []uintptr
}

FuncStack wraps a function value and provides function frames containing the caller trace for debugging.

func Get

func Get(closure unsafe.Pointer) FuncStack

Get gets the reflect-value callback from the closure pointer.

func NewFuncStack

func NewFuncStack(fn interface{}, frameSkip int) FuncStack

NewFuncStack creates a new FuncStack. It panics if fn is not a function. The given frameSkip is added 2, meaning the first frame from 0 will start from the caller of NewFuncStack.

func NewIdleFuncStack

func NewIdleFuncStack(fn interface{}, frameSkip int) FuncStack

NewIdleFuncStack works akin to NewFuncStack, but it also validates the given function type for the correct acceptable signatures for SourceFunc while also caching the checks.

func (FuncStack) IsValid

func (fs FuncStack) IsValid() bool

IsValid returns true if the given FuncStack is not a zero-value i.e. valid.

func (FuncStack) Panicf

func (fs FuncStack) Panicf(msgf string, v ...interface{})

Panicf panics with the given FuncStack printed to standard error.

func (FuncStack) TryRepanic

func (fs FuncStack) TryRepanic()

TryRepanic attempts to recover a panic. If successful, it will re-panic with the trace, or none if there is already one.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL