// 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. part of dart.ffi; class Struct { const Struct(); } /// This Dart class represents a C struct. /// /// Fields in this struct, annotated with a subtype of [NativeType], are /// automatically transformed into wrappers to access the fields of the struct /// in C memory. /// /// Fields without a [NativeType] annotation are not supported. const struct = const Struct(); class DartRepresentationOf { /// Represents the Dart type corresponding to a [NativeType]. /// /// [Int8] -> [int] /// [Int16] -> [int] /// [Int32] -> [int] /// [Int64] -> [int] /// [Uint8] -> [int] /// [Uint16] -> [int] /// [Uint32] -> [int] /// [Uint64] -> [int] /// [IntPtr] -> [int] /// [Double] -> [double] /// [Float] -> [double] /// [Pointer] -> [Pointer] /// T extends [Pointer] -> T /// [NativeFunction] S1 Function(S2, S3) /// where DartRepresentationOf(Tn) -> Sn const DartRepresentationOf(String nativeType); } class Unsized { const Unsized(); } /// This [NativeType] does not have predefined size. /// /// Unsized NativeTypes do not support [sizeOf] because their size is unknown. /// Consequently, [allocate], [Pointer.load], [Pointer.store], and /// [Pointer.elementAt] are not available. const unsized = const Unsized();