blob: 23124eb6dc75ba0e5f87be542b876c826e69ed16 [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.
part of dart.ffi;
/// This class is extended to define structs.
///
/// Fields in a struct, annotated with a subtype of [NativeType], are
/// automatically transformed into wrappers to access the fields of the struct
/// in native memory.
///
/// All fields in a struct must either have a type which extends [NativeType] or
/// else have an annotation indicating the corresponding native type (e.g.
/// "@Int32()" for "int").
///
/// Instances of a subclass of [Struct] have reference semantics and are backed
/// by native memory. The may allocated via [Pointer.allocate] or loaded from a
/// [Pointer], but not by a generative constructor.
abstract class Struct<S extends NativeType> extends NativeType {
/// Returns the address backing the reference.
final Pointer<S> addressOf;
Struct() : addressOf = null;
Struct.fromPointer(this.addressOf);
}