本文整理匯總了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)
}
}