cutego/androidextras/utils-androidextras_android.go

106 lines
1.9 KiB
Go
Raw Normal View History

2015-12-16 19:18:38 +03:00
package androidextras
import (
"C"
"strings"
"unsafe"
"github.com/therecipe/qt"
)
2016-01-26 19:58:25 +03:00
func assertion(key int, input ...interface{}) (unsafe.Pointer, func()) {
2015-12-16 19:18:38 +03:00
if len(input) > key {
switch deduced := input[key].(type) {
case string:
{
2016-01-26 19:58:25 +03:00
var jObject = QAndroidJniObject_FromString(deduced)
return jObject.Object(), func() { jObject.DestroyQAndroidJniObject() }
2015-12-16 19:18:38 +03:00
}
case []string:
{
2016-01-26 19:58:25 +03:00
var (
jObject = QAndroidJniObject_FromString(strings.Join(deduced, ",,,"))
jObject2 = jObject.CallObjectMethod2("split", "(Ljava/lang/String;)[Ljava/lang/String;", ",,,")
)
jObject.DestroyQAndroidJniObject()
return jObject2.Object(), func() { jObject2.DestroyQAndroidJniObject() }
2015-12-16 19:18:38 +03:00
}
case bool:
{
return unsafe.Pointer(uintptr(C.char(int8(qt.GoBoolToInt(deduced))))), nil
}
case int16:
{
return unsafe.Pointer(uintptr(C.short(deduced))), nil
}
case uint16:
{
return unsafe.Pointer(uintptr(C.ushort(deduced))), nil
}
2015-12-16 19:18:38 +03:00
case int:
{
return unsafe.Pointer(uintptr(C.int(int32(deduced)))), nil
}
case uint:
{
return unsafe.Pointer(uintptr(C.uint(uint32(deduced)))), nil
}
case int32:
2015-12-16 19:18:38 +03:00
{
2016-01-26 19:58:25 +03:00
return unsafe.Pointer(uintptr(C.int(deduced))), nil
2015-12-16 19:18:38 +03:00
}
case uint32:
{
return unsafe.Pointer(uintptr(C.uint(deduced))), nil
}
case int64:
{
return unsafe.Pointer(uintptr(C.longlong(deduced))), nil
}
case uint64:
{
return unsafe.Pointer(uintptr(C.ulonglong(deduced))), nil
}
case float32:
{
return unsafe.Pointer(uintptr(C.float(deduced))), nil
}
case float64:
{
return unsafe.Pointer(uintptr(C.double(deduced))), nil
}
case uintptr:
2015-12-16 19:18:38 +03:00
{
return unsafe.Pointer(deduced), nil
2015-12-16 19:18:38 +03:00
}
case unsafe.Pointer:
{
2016-01-26 19:58:25 +03:00
return deduced, nil
2015-12-16 19:18:38 +03:00
}
case *QAndroidJniObject:
{
2016-01-26 19:58:25 +03:00
return deduced.Object(), nil
2015-12-16 19:18:38 +03:00
}
}
}
2016-01-26 19:58:25 +03:00
return nil, nil
2015-12-16 19:18:38 +03:00
}