// 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' as ffi; /// Sample struct for dart:ffi library. @ffi.struct class Coordinate extends ffi.Pointer { @ffi.Double() double x; @ffi.Double() double y; @ffi.Pointer() Coordinate next; // Implementation generated by @ffi.struct annotation. external static int sizeOf(); Coordinate offsetBy(int offsetInBytes) => super.offsetBy(offsetInBytes).cast(); Coordinate elementAt(int index) => offsetBy(sizeOf() * index); static Coordinate allocate({int count: 1}) => ffi.allocate(count: count * sizeOf()).cast(); /// 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; return result; } }