blob: 283cb57190f48ce26fd6a96aed45ca7f0d86e5cd [file] [log] [blame]
// 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();
}