| // 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 FfiTestCoordinateBare; |
| |
| import 'dart:ffi' as ffi; |
| |
| /// Large sample struct for dart:ffi library. |
| @ffi.struct |
| class VeryLargeStruct extends ffi.Pointer<ffi.Void> { |
| @ffi.Int8() |
| int a; |
| |
| @ffi.Int16() |
| int b; |
| |
| @ffi.Int32() |
| int c; |
| |
| @ffi.Int64() |
| int d; |
| |
| @ffi.Uint8() |
| int e; |
| |
| @ffi.Uint16() |
| int f; |
| |
| @ffi.Uint32() |
| int g; |
| |
| @ffi.Uint64() |
| int h; |
| |
| @ffi.IntPtr() |
| int i; |
| |
| @ffi.Float() |
| double j; |
| |
| @ffi.Double() |
| double k; |
| |
| @ffi.Pointer() |
| VeryLargeStruct parent; |
| |
| @ffi.IntPtr() |
| int numChidlren; |
| |
| @ffi.Pointer() |
| VeryLargeStruct children; |
| |
| @ffi.Int8() |
| int smallLastField; |
| |
| // generated by @ffi.struct annotation |
| external static int sizeOf(); |
| |
| VeryLargeStruct offsetBy(int offsetInBytes) => |
| super.offsetBy(offsetInBytes).cast(); |
| |
| VeryLargeStruct elementAt(int index) => offsetBy(sizeOf() * index); |
| |
| static VeryLargeStruct allocate({int count: 1}) => |
| ffi.allocate<ffi.Uint8>(count: count * sizeOf()).cast(); |
| } |