Node.js中JavaScript与C++的数据类型转换(node_0.12, node_4.3)

来源:互联网 发布:淘宝云客服培训 编辑:程序博客网 时间:2024/06/06 07:52


args  -> int 


node_0.12

void foo(const FunctionCallbackInfo<value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);if( args[0]->IsUndefined()){std::cerr << "In foo(): parameters undefined." << std::endl;return;}v8::Handle<v8::value> theArg = args[0];if (theArg->IsInt32()) {int value = theArg->Int32Value();}}



node_4.3

void MyClass::foo(const FunctionCallbackInfo<value>& args) {Isolate* isolate = args.GetIsolate();MyClass* obj = ObjectWrap::Unwrap<MyClass>(args.Holder());int value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();        // ... }




返回 int变量


node_0.12

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);//...args.GetReturnValue().Set(v8::Int32::New(isolate, 1));return;}






v8::Handle<v8::Value> -> double



node_0.12

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);if( args[0]->IsUndefined()){std::cerr << "In foo(): parameters undefined." << std::endl;return;}v8::Handle<v8::Value> theArg = args[0];if (theArg->IsNumber()) {double value = theArg->NumberValue();}}


node_4.3

void MyClass::foo(const FunctionCallbackInfo<value>& args) {Isolate* isolate = args.GetIsolate();MyClass* obj = ObjectWrap::Unwrap<MyClass>(args.Holder());double value = args[0]->IsUndefined() ? 0 : args[0]->NumberValue();        // ... }







返回 Number变量

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);//...args.GetReturnValue().Set(v8::Number::New(isolate, 0.0));return;}





v8::Handle<v8::Value> -> string

node_0.12

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);if( args[0]->IsUndefined()){std::cerr << "In foo(): parameters undefined." << std::endl;return;}v8::Handle<v8::Value> theArg = args[0];if (theArg->IsString()) {v8::String::Utf8Value utf8_value(theArg);std::string variableName = *utf8_value;}}


node_4.3

void MyClass::foo(const FunctionCallbackInfo<value>& args) {Isolate* isolate = args.GetIsolate();MyClass* obj = ObjectWrap::Unwrap<MyClass>(args.Holder());if( args[0]->IsUndefined()){             return;         }char *name;  v8::String::Utf8Value str(args[0]->ToString());name = *str;         // ... }





 返回 String变量
void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);std::string name = "foo";//...args.GetReturnValue().Set(v8::String::NewFromUtf8(isolate,name.c_str()));return;}


v8::Handle<v8::Value> -> bool

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);if( args[0]->IsUndefined()){std::cerr << "In foo(): parameters undefined." << std::endl;return;}v8::Handle<v8::Value> theArg = args[0];if (theArg->IsBoolean()) {bool value = theArg->BooleanValue();}}


返回Boolean变量

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);//...args.GetReturnValue().Set(v8::Boolean::New(isolate, true)); return;}

v8::Handle<v8::Array> 参数

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);if( args[0]->IsUndefined()){std::cerr << "In foo(): parameters undefined." << std::endl;return;}v8::Handle<v8::Value> theArg = args[0];if (theArg->IsArray()) {v8::Handle<v8::Array> theArray = v8::Handle<v8::Array>::Cast(theArg);int length = theArray->Length();v8::Handle<v8::Value> arrayItem = theArray->Get(v8::Int32::New(isolate, 0));}}


返回Array变量

void foo(const FunctionCallbackInfo<Value>& args) {Isolate* isolate = Isolate::GetCurrent();HandleScope scope(isolate);//...v8::Handle<v8::Array> resultArray = v8::Array::New(isolate);resultArray->Set(v8::Integer::New(isolate, i), v8::Number::New(isolate, 1.1));args.GetReturnValue().Set(resultArray); return;}


args->char*


    Local<Value> arg1 = args[0];    if (Buffer::HasInstance(arg1)) {       size_t size = Buffer::Length(arg1->ToObject());       char* bufferdata = Buffer::Data(arg1->ToObject());       //to do with size and bufferdata      return scope.Close(Number::New(size));     }   else {      return scope.Close(Number::New(-1));    }



0 0
原创粉丝点击