blob: b1b8638f261a8e6425953c9248f75cf9b700283f [file] [log] [blame]
import 'dart:ffi';
@Native()
external Pointer<Char> aString;
@Native<Int32>()
external int anInt;
@Native<Int>()
external int anotherInt;
final class Vec2d extends Struct {
@Double()
external double x;
@Double()
external double y;
}
final class MyStruct extends Struct {
@Array.variable()
external Array<Uint8> array;
}
final class MyStruct2 extends Struct {
@Array.variableWithVariableDimension(1)
external Array<Uint8> array;
}
final class MyStruct3 extends Struct {
@Array.variableMulti([1, 2])
external Array<Array<Array<Uint8>>> array;
}
final class MyStruct4 extends Struct {
@Array.variableMulti(variableDimension: 1, [1, 2])
external Array<Array<Array<Uint8>>> array;
}
final class MyUnion extends Union {
external Vec2d vector;
external Pointer<Vec2d> indirectVector;
}
@Native()
external final Vec2d vector;
@Native()
external MyUnion union;
@Native()
@Array(1, 2, 3)
external Array<Array<Array<Double>>> manyNumbers;
void main() {
print('first char of string: ${aString.value}');
print('global int: {$anInt}');
aString = nullptr;
anInt++;
final vec = vector;
print('(${vec.x}, ${vec.y})');
union.indirectVector = Native.addressOf(vector);
print(Native.addressOf<Int>(anotherInt));
print(Native.addressOf<Vec2d>(vector));
print(Native.addressOf<MyUnion>(union));
final wholeArray = manyNumbers;
wholeArray[0][1][2] = 123.45;
manyNumbers = wholeArray;
manyNumbers[0][0][0] = 54.321;
}