本文整理汇总了Golang中C.sourcefunc_info类的典型用法代码示例。如果您正苦于以下问题:Golang sourcefunc_info类的具体用法?Golang sourcefunc_info怎么用?Golang sourcefunc_info使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了sourcefunc_info类的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: _go_glib_sourcefunc
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
context := sourcefunc_contexts[int(sfi.func_no)]
t := context.f.Type()
fargs := make([]reflect.Value, t.NumIn())
if len(fargs) > 0 {
fargs[0] = reflect.ValueOf(context.data)
}
ret := context.f.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = gbool(bret)
}
}
示例2: _go_glib_sourcefunc
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
context := sourcefunc_contexts[int(sfi.func_no)]
rf := reflect.ValueOf(context.f)
t := rf.Type()
fargs := make([]reflect.Value, t.NumIn())
n := 0
if len(fargs) > n && sfi.channel != nil {
fargs[n] = reflect.ValueOf(int(sfi.condition))
n++
}
if len(fargs) > n {
fargs[n] = reflect.ValueOf(context.data)
n++
}
ret := rf.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = bool2gboolean(bret)
}
}
示例3: _go_glib_sourcefunc
//export _go_glib_sourcefunc
func _go_glib_sourcefunc(sfi *C.sourcefunc_info) {
id := int(sfi.func_no)
value, found := sourcefunc_contexts.Get(id)
if !found {
return
}
context := value.(*SourcefuncContext)
t := context.f.Type()
fargs := make([]reflect.Value, t.NumIn())
if len(fargs) > 0 {
fargs[0] = reflect.ValueOf(context.data)
}
ret := context.f.Call(fargs)
if len(ret) > 0 {
bret, _ := ret[0].Interface().(bool)
sfi.ret = gbool(bret)
}
if !gobool(sfi.ret) {
sourcefunc_contexts.Remove(id)
}
}