Skip to content

Commit bacda43

Browse files
committed
- added newFloat method
1 parent 88f655a commit bacda43

2 files changed

Lines changed: 26 additions & 0 deletions

File tree

src/java.cpp

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ long my_getThreadId() {
5454
NODE_SET_PROTOTYPE_METHOD(s_ct, "newByte", newByte);
5555
NODE_SET_PROTOTYPE_METHOD(s_ct, "newShort", newShort);
5656
NODE_SET_PROTOTYPE_METHOD(s_ct, "newChar", newChar);
57+
NODE_SET_PROTOTYPE_METHOD(s_ct, "newFloat", newFloat);
5758
NODE_SET_PROTOTYPE_METHOD(s_ct, "getStaticFieldValue", getStaticFieldValue);
5859
NODE_SET_PROTOTYPE_METHOD(s_ct, "setStaticFieldValue", setStaticFieldValue);
5960

@@ -634,6 +635,30 @@ void Java::destroyJVM(JavaVM** jvm, JNIEnv** env) {
634635
return scope.Close(JavaObject::New(self, newObj));
635636
}
636637

638+
/*static*/ v8::Handle<v8::Value> Java::newFloat(const v8::Arguments& args) {
639+
v8::HandleScope scope;
640+
Java* self = node::ObjectWrap::Unwrap<Java>(args.This());
641+
v8::Handle<v8::Value> ensureJvmResults = self->ensureJvm();
642+
if(!ensureJvmResults->IsUndefined()) {
643+
return ensureJvmResults;
644+
}
645+
JNIEnv* env = self->getJavaEnv();
646+
JavaScope javaScope(env);
647+
648+
if(args.Length() != 1) {
649+
return ThrowException(v8::Exception::TypeError(v8::String::New("newShort only takes 1 argument")));
650+
} else if(!args[0]->IsNumber()) {
651+
return ThrowException(v8::Exception::TypeError(v8::String::New("Argument 1 must be a number")));
652+
}
653+
v8::Local<v8::Number> val = args[0]->ToNumber();
654+
655+
jclass clazz = env->FindClass("java/lang/Float");
656+
jmethodID constructor = env->GetMethodID(clazz, "<init>", "(F)V");
657+
jobject newObj = env->NewObject(clazz, constructor, (jfloat)val->Value());
658+
659+
return scope.Close(JavaObject::New(self, newObj));
660+
}
661+
637662
/*static*/ v8::Handle<v8::Value> Java::getStaticFieldValue(const v8::Arguments& args) {
638663
v8::HandleScope scope;
639664
Java* self = node::ObjectWrap::Unwrap<Java>(args.This());

src/java.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@ class Java : public node::ObjectWrap {
3232
static v8::Handle<v8::Value> newByte(const v8::Arguments& args);
3333
static v8::Handle<v8::Value> newChar(const v8::Arguments& args);
3434
static v8::Handle<v8::Value> newShort(const v8::Arguments& args);
35+
static v8::Handle<v8::Value> newFloat(const v8::Arguments& args);
3536
static v8::Handle<v8::Value> getStaticFieldValue(const v8::Arguments& args);
3637
static v8::Handle<v8::Value> setStaticFieldValue(const v8::Arguments& args);
3738
v8::Handle<v8::Value> ensureJvm();

0 commit comments

Comments
 (0)