Dar*_*ius 5 javascript c++ v8 node.js node.js-addon
我正在尝试使用nan来计算附加组件中浮点数组上的某些内容,然后将其作为Float32Array.
但是,虽然 args 具有IsNumber()和NumberValue()功能,但它只有一个IsFloat32Array()功能而没有Float32Array()。
NAN_METHOD(Calc) {
NanScope();
if (args.Length() < 2) {
NanThrowTypeError("Wrong number of arguments");
NanReturnUndefined();
}
if (!args[0]->IsNumber() || !args[1]->IsFloat32Array()) {
NanThrowTypeError("Wrong arguments");
NanReturnUndefined();
}
/* a vector of floats ? */ args[0]-> ???;
double arg1 = args[1]->NumberValue();
// some calculation on the vector
NanReturnValue(/* Return as a Float32Array array */);
}
Run Code Online (Sandbox Code Playgroud)
接受 TypedArray 最好用Nan::TypedArrayContents
Local<TypedArray> ta = args[0].As<TypedArray>();
Nan::TypedArrayContents<float> vfloat(ta);
float firstElement = (*vfloat)[0];
Run Code Online (Sandbox Code Playgroud)
目前还没有用于构造类型化数组的 NAN 帮助器,但我在自己的代码中使用了这个帮助器:
template <typename T> struct V8TypedArrayTraits; // no generic case
template<> struct V8TypedArrayTraits<Float32Array> { typedef float value_type; };
template<> struct V8TypedArrayTraits<Float64Array> { typedef double value_type; };
// etc. v8 doesn't export anything to make this nice.
template <typename T>
Local<T> createTypedArray(size_t size) {
size_t byteLength = size * sizeof(typename V8TypedArrayTraits<T>::value_type);
Local<ArrayBuffer> buffer = ArrayBuffer::New(Isolate::GetCurrent(), byteLength);
Local<T> result = T::New(buffer, 0, size);
return result;
};
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
793 次 |
| 最近记录: |