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
|
|
|
}
|
|
|
|
|
2016-08-23 23:51:01 +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:
|
2016-08-23 23:51:01 +03:00
|
|
|
{
|
|
|
|
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
|
|
|
}
|
|
|
|
|
2016-08-23 23:51:01 +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
|
|
|
{
|
2016-08-23 23:51:01 +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
|
|
|
}
|