Skip to content

Commit 7af5ceb

Browse files
committed
support for float
1 parent 22b5168 commit 7af5ceb

2 files changed

Lines changed: 11 additions & 1 deletion

File tree

src/utils.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,8 @@ jvalueType javaGetType(JNIEnv *env, jclass type) {
9797
return TYPE_INT;
9898
} else if(strcmp(typeStr, "double") == 0 || strcmp(typeStr, "class java.lang.Double") == 0) {
9999
return TYPE_DOUBLE;
100+
} else if(strcmp(typeStr, "float") == 0 || strcmp(typeStr, "class java.lang.Float") == 0) {
101+
return TYPE_FLOAT;
100102
} else if(strcmp(typeStr, "long") == 0 || strcmp(typeStr, "class java.lang.Long") == 0) {
101103
return TYPE_LONG;
102104
} else if(strcmp(typeStr, "boolean") == 0 || strcmp(typeStr, "class java.lang.Boolean") == 0) {
@@ -389,6 +391,13 @@ v8::Handle<v8::Value> javaToV8(Java* java, JNIEnv* env, jobject obj) {
389391
jdouble result = env->CallDoubleMethod(obj, double_doubleValue);
390392
POP_LOCAL_JAVA_FRAME_AND_RETURN(scope.Close(v8::Number::New(result)));
391393
}
394+
case TYPE_FLOAT:
395+
{
396+
jclass floatClazz = env->FindClass("java/lang/Float");
397+
jmethodID float_floatValue = env->GetMethodID(floatClazz, "floatValue", "()F");
398+
jfloat result = env->CallFloatMethod(obj, float_floatValue);
399+
POP_LOCAL_JAVA_FRAME_AND_RETURN(scope.Close(v8::Number::New(result)));
400+
}
392401
case TYPE_STRING:
393402
POP_LOCAL_JAVA_FRAME_AND_RETURN(scope.Close(v8::String::New(javaObjectToString(env, obj).c_str())));
394403
case TYPE_OBJECT:

src/utils.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,8 @@ typedef enum _jvalueType {
2121
TYPE_BOOLEAN = 6,
2222
TYPE_BYTE = 7,
2323
TYPE_DOUBLE = 8,
24-
TYPE_ARRAY = 9
24+
TYPE_FLOAT = 9,
25+
TYPE_ARRAY = 10
2526
} jvalueType;
2627

2728
struct DynamicProxyData {

0 commit comments

Comments
 (0)