Класс Struct
Базовый тип всех типов структур FFI.
Типы структур FFI должны расширять этот класс и объявлять поля, соответствующие базовой структуре.
Объявления полей в подклассе Struct автоматически получают реализацию геттеров и сеттеров, которые обращаются к полю структуры в памяти.
Все объявления полей в подклассе Struct должны иметь тип int или double и быть аннотированы с помощью NativeType, представляющим базовый тип, или быть типа Pointer. Например:
typedef struct {
int a;
float b;
void* c;
} my_struct; class MyStruct extends Struct {
@Int32()
external int a;
@Float()
external double b;
external Pointer<Void> c;
} Все объявления полей в подклассе Struct должны быть помечены external. Вы не можете создавать экземпляры класса, только указывать на существующую нативную память, поэтому нет памяти для хранения не-нативных полей. Внешние поля также не могут быть инициализированы конструкторами, так как объект Dart не создается.
Экземпляры подкласса Struct имеют семантику ссылок и поддерживаются нативной памятью или типизированными данными. Они могут быть выделены через выделение памяти или загружены из Pointer, созданы вызовами или обратными вызовами ffi. Они не могут быть созданы конструктором.
- Наследование
-
- Object
- NativeType
- Struct
- Аннотации
-
- @Since('2.12')
Конструкторы
- Struct()
- Создает ссылку на nullptr.
Свойства
- hashCode → int только для чтения, унаследованное
- Код хэша для этого объекта.
- runtimeType → Type только для чтения, унаследованное
- Представление runtime-типа объекта.
Методы
- noSuchMethod(
Invocation invocation) → dynamic унаследованное - Вызывается при обращении к несуществующему методу или свойству.
- toString(
) → String унаследованное - Строковое представление этого объекта.
Операторы
- operator ==(
Object other) → bool унаследованное - Оператор равенства.
© 2012 the Dart project authors
Licensed under the BSD 3-Clause "New" or "Revised" License.
https://api.dart.dev/stable/2.18.5/dart-ffi/Struct-class.html