@yuuang/ffi-rs-linux-arm64-musl
Advanced tools
Comparing version 1.0.12 to 1.0.15
{ | ||
"name": "@yuuang/ffi-rs-linux-arm64-musl", | ||
"version": "1.0.12", | ||
"version": "1.0.15", | ||
"os": [ | ||
@@ -5,0 +5,0 @@ "linux" |
@@ -27,7 +27,10 @@ # ffi-rs | ||
- string | ||
- number(i32) | ||
- void | ||
- i32(number) | ||
- void(undefined) | ||
- double | ||
- boolean | ||
- i32Array | ||
- stringArray | ||
- doubleArray | ||
- object | ||
@@ -68,3 +71,12 @@ ## Usage | ||
} | ||
extern "C" double *createArrayDouble(const double *arr, int size) { | ||
double *vec = (double *)malloc((size) * sizeof(double)); | ||
for (int i = 0; i < size; i++) { | ||
vec[i] = arr[i]; | ||
} | ||
return vec; | ||
} | ||
extern "C" bool return_opposite(bool input) { return !input; } | ||
extern "C" char **createArrayString(char **arr, int size) { | ||
@@ -78,2 +90,14 @@ char **vec = (char **)malloc((size) * sizeof(char *)); | ||
typedef struct Person { | ||
const char *name; | ||
int age; | ||
} Person; | ||
extern "C" const Person *getStruct(const Person *person) { | ||
printf("Name: %s\n", person->name); | ||
printf("Age: %d\n", person->age); | ||
return person; | ||
} | ||
``` | ||
@@ -142,2 +166,22 @@ | ||
})[0]) | ||
let bigDoubleArr = new Array(100).fill(1.1) | ||
equal(bigDoubleArr[0], load({ | ||
library: dynamicLib, | ||
funcName: 'createArrayDouble', | ||
retType: RetType.DoubleArray, | ||
paramsType: [ParamsType.DoubleArray, ParamsType.I32], | ||
paramsValue: [bigDoubleArr, bigDoubleArr.length], | ||
retTypeLen: bigDoubleArr.length | ||
})[0]) | ||
const boolVal = false | ||
equal(!boolVal, load({ | ||
library: dynamicLib, | ||
funcName: 'return_opposite', | ||
retType: RetType.Boolean, | ||
paramsType: [ParamsType.Boolean], | ||
paramsValue: [bool_val], | ||
})) | ||
let stringArr = [c, c.repeat(200)] | ||
@@ -152,2 +196,23 @@ equal(stringArr[0], load({ | ||
})[0]) | ||
const person = { | ||
name: 'tom', | ||
age: 23, | ||
} | ||
const personObj = load({ | ||
library: dynamicLib, | ||
funcName: 'getStruct', | ||
retType: RetType.Object, | ||
paramsType: [{ | ||
name: ParamsType.String, | ||
age: ParamsType.I32, | ||
}], | ||
paramsValue: [person], | ||
retFields: { | ||
name: ParamsType.String, | ||
age: ParamsType.I32, | ||
} | ||
}) | ||
equal(person.name, personObj.name) | ||
equal(person.age, personObj.age) | ||
``` |
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
479047
214