// Copyright (c) 2021, 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"; /// The supertype of all [Abi]-specific integer types. /// /// [Abi]-specific integers should extend this class and annotate it with /// [AbiSpecificIntegerMapping] to declare the integer size and signedness /// for [Abi.values]. /// /// For example: /// /// ``` /// /// The C `uintptr_t` type. /// /// /// /// The [UintPtr] type is a native type, and should not be constructed in /// /// Dart code. /// /// It occurs only in native type signatures and as annotation on [Struct] /// /// and [Union] fields. /// @AbiSpecificIntegerMapping({ /// Abi.androidArm: Uint32(), /// Abi.androidArm64: Uint64(), /// Abi.androidIA32: Uint32(), /// Abi.androidX64: Uint64(), /// Abi.androidRiscv64: Uint64(), /// Abi.fuchsiaArm64: Uint64(), /// Abi.fuchsiaX64: Uint64(), /// Abi.fuchsiaRiscv64: Uint64(), /// Abi.iosArm: Uint32(), /// Abi.iosArm64: Uint64(), /// Abi.linuxArm: Uint32(), /// Abi.linuxArm64: Uint64(), /// Abi.linuxIA32: Uint32(), /// Abi.linuxX64: Uint64(), /// Abi.linuxRiscv32: Uint32(), /// Abi.linuxRiscv64: Uint64(), /// Abi.macosArm64: Uint64(), /// Abi.macosX64: Uint64(), /// Abi.windowsIA32: Uint32(), /// Abi.windowsX64: Uint64(), /// }) /// final class UintPtr extends AbiSpecificInteger { /// const UintPtr(); /// } /// ``` @Since('2.16') base class AbiSpecificInteger implements SizedNativeType { const AbiSpecificInteger(); } /// Mapping for a subtype of [AbiSpecificInteger]. /// /// See documentation on [AbiSpecificInteger]. @Since('2.16') final class AbiSpecificIntegerMapping { final Map mapping; const AbiSpecificIntegerMapping(this.mapping); }