LibraryLink 中的 NumericArray
Wolfram 语言中的 NumericArray 和 ByteArray 对象可传入 LibraryFunction,也可从中传出,它们以 MNumericArrary 类型的参数或结果出现。MNumericArray 是数据结构的指针,通过指代传递。MNumericArray 的内存管理与 MTensor 的内存管理非常相似。
MNumericArray 回调函数族位于 WolframLibraryData 的 numericarrayLibraryFunctions 字段中,它们在 WolframNumericArrayLibrary.h 中被声明。
典型用途如下所示。
#include "WolframNumericArrayLibrary.h"
....
MNumericArray na_in = NULL, na_out = NULL;
errcode_t err = 0;
numericarray_data_t type = MNumericArray_Type_Undef;
WolframNumericArrayLibrary_Functions naFuns = libData->numericarrayLibraryFunctions;
...
na_in = MArgument_getMNumericArray(Args[0]);
type = naFuns->MNumericArray_getType(na_in);
if(type != MNumericArray_Type_Real32) {
err = naFuns->MNumericArray_convertType(&na_out, na_in,
MNumericArray_Type_Real32, MNumericArray_Convert_Coerce, 1);
...
}
...
demo_numericarray 库中的范例显示了如何将 Wolfram 语言中的 NumericArray 和 ByteArray 对象与 MNumericArray 类型的参数和结果一起使用。
下面的例子显示了如何计算存储在 NumericArray 中的元素的复共轭。
演示项目中的函数 readBytesFromFile 显示了如何从文件中读取数据并将其存储在 ByteArray 对象中。