| // Copyright (c) 2019, the Dart project authors. Please see the AUTHORS file |
| // for details. All rights reserved. Use of this source code is governed by a |
| // BSD-style license that can be found in the LICENSE file. |
| |
| library FfiTest; |
| |
| import 'dart:ffi'; |
| |
| import 'package:ffi/ffi.dart' as ffi; |
| |
| /// Sample struct for dart:ffi library. |
| class Coordinate extends Struct { |
| @Double() |
| double x; |
| |
| @Double() |
| double y; |
| |
| Pointer<Coordinate> next; |
| |
| // Implementation generated by @ffi.struct annotation. |
| external static int sizeOf(); |
| |
| Coordinate elementAt(int index) => addressOf.elementAt(index).ref; |
| |
| static Coordinate allocate({int count: 1}) => |
| ffi.allocate<Coordinate>(count: count).ref; |
| |
| /// Allocate a new [Coordinate] in C memory and populate its fields. |
| factory Coordinate(double x, double y, Coordinate next) { |
| Coordinate result = Coordinate.allocate() |
| ..x = x |
| ..y = y |
| ..next = next.addressOf; |
| return result; |
| } |
| } |