| library; |
| import self as self; |
| import "dart:core" as core; |
| import "dart:ffi" as ffi; |
| import "dart:typed_data" as typ; |
| import "package:ffi/src/allocation.dart" as all; |
| |
| import "dart:ffi"; |
| import "package:ffi/ffi.dart"; |
| |
| @#C8 |
| final class StructInlineArrayMultiDimensional extends ffi::Struct { |
| synthetic constructor •() → self::StructInlineArrayMultiDimensional |
| : super ffi::Struct::•() |
| ; |
| constructor #fromTypedDataBase(synthesized core::Object #typedDataBase, synthesized core::int #offsetInBytes) → self::StructInlineArrayMultiDimensional |
| : super ffi::Struct::_fromTypedDataBase(#typedDataBase, #offsetInBytes) |
| ; |
| constructor #fromTypedData(synthesized typ::TypedData #typedData, synthesized core::int #offset, synthesized core::int #sizeInBytes) → self::StructInlineArrayMultiDimensional |
| : super ffi::Struct::_fromTypedData(#typedData, #offset, #sizeInBytes) |
| ; |
| @#C10 |
| get a0() → ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> |
| return new ffi::Array::_<ffi::Array<ffi::Array<ffi::Uint8>>>(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #C9, #C11); |
| @#C10 |
| set a0(synthesized ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> #externalFieldValue) → void |
| return ffi::_memCopy(this.{ffi::_Compound::_typedDataBase}{core::Object}, self::StructInlineArrayMultiDimensional::a0#offsetOf.{core::num::+}(this.{ffi::_Compound::_offsetInBytes}{core::int}){(core::num) → core::num}, #externalFieldValue.{ffi::_Compound::_typedDataBase}{core::Object}, #externalFieldValue.{ffi::_Compound::_offsetInBytes}{core::int}, #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}); |
| @#C14 |
| static get a0#offsetOf() → core::int |
| return #C16.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}; |
| @#C14 |
| static get #sizeOf() → core::int* |
| return #C12.{core::List::[]}(ffi::_abi()){(core::int) → core::int*}; |
| } |
| static method main() → dynamic { |
| final ffi::Pointer<self::StructInlineArrayMultiDimensional> pointer = #C17.{ffi::Allocator::allocate}<self::StructInlineArrayMultiDimensional>(self::StructInlineArrayMultiDimensional::#sizeOf){(core::int, {alignment: core::int?}) → ffi::Pointer<self::StructInlineArrayMultiDimensional>}; |
| final self::StructInlineArrayMultiDimensional struct = new self::StructInlineArrayMultiDimensional::#fromTypedDataBase(pointer!, #C15); |
| final ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>> array = struct.{self::StructInlineArrayMultiDimensional::a0}{ffi::Array<ffi::Array<ffi::Array<ffi::Uint8>>>}; |
| final ffi::Array<ffi::Array<ffi::Uint8>> subArray = block { |
| synthesized ffi::Array<dynamic> #array = array!; |
| synthesized core::int #index = 0!; |
| #array.{ffi::Array::_checkIndex}(#index){(core::int) → void}; |
| synthesized core::int #singleElementSize = #C18; |
| synthesized core::int #elementSize = #singleElementSize.{core::num::*}(#array.{ffi::Array::_nestedDimensionsFlattened}{core::int}){(core::num) → core::num}; |
| synthesized core::int #offset = #elementSize.{core::num::*}(#index){(core::num) → core::num}; |
| } =>new ffi::Array::_<ffi::Array<ffi::Uint8>>(#array.{ffi::_Compound::_typedDataBase}{core::Object}, #array.{ffi::_Compound::_offsetInBytes}{core::int}.{core::num::+}(#offset){(core::num) → core::num}, #array.{ffi::Array::_nestedDimensionsFirst}{core::int}, #array.{ffi::Array::_nestedDimensionsRest}{core::List<core::int>}); |
| block { |
| synthesized ffi::Array<dynamic> #array = array!; |
| synthesized core::int #index = 1!; |
| #array.{ffi::Array::_checkIndex}(#index){(core::int) → void}; |
| synthesized core::int #singleElementSize = #C18; |
| synthesized core::int #elementSize = #singleElementSize.{core::num::*}(#array.{ffi::Array::_nestedDimensionsFlattened}{core::int}){(core::num) → core::num}; |
| synthesized core::int #offset = #elementSize.{core::num::*}(#index){(core::num) → core::num}; |
| synthesized ffi::Array<dynamic> #value = subArray!; |
| } =>ffi::_memCopy(#array.{ffi::_Compound::_typedDataBase}{core::Object}, #array.{ffi::_Compound::_offsetInBytes}{core::int}.{core::num::+}(#offset){(core::num) → core::num}, #value.{ffi::_Compound::_typedDataBase}{core::Object}, #value.{ffi::_Compound::_offsetInBytes}{core::int}, #elementSize); |
| #C17.{all::CallocAllocator::free}(pointer){(ffi::Pointer<ffi::NativeType>) → void}; |
| } |
| |
| constants { |
| #C1 = "vm:ffi:struct-fields" |
| #C2 = TypeLiteralConstant(ffi::Uint8) |
| #C3 = 8 |
| #C4 = ffi::_FfiInlineArray {elementType:#C2, length:#C3} |
| #C5 = <core::Type>[#C4] |
| #C6 = null |
| #C7 = ffi::_FfiStructLayout {fieldTypes:#C5, packing:#C6} |
| #C8 = core::pragma {name:#C1, options:#C7} |
| #C9 = 2 |
| #C10 = ffi::_ArraySize<ffi::NativeType> {dimension1:#C9, dimension2:#C9, dimension3:#C9, dimension4:#C6, dimension5:#C6, dimensions:#C6} |
| #C11 = <core::int*>[#C9, #C9] |
| #C12 = <core::int*>[#C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3, #C3] |
| #C13 = "vm:prefer-inline" |
| #C14 = core::pragma {name:#C13, options:#C6} |
| #C15 = 0 |
| #C16 = <core::int*>[#C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15, #C15] |
| #C17 = all::CallocAllocator {} |
| #C18 = 1 |
| } |
| |
| Extra constant evaluation status: |
| Evaluated: NullCheck @ org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:18:25 -> IntConstant(0) |
| Evaluated: NullCheck @ org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart:19:8 -> IntConstant(1) |
| Extra constant evaluation: evaluated: 91, effectively constant: 2 |
| |
| |
| Constructor coverage from constants: |
| org-dartlang-testcase:///ffi_struct_inline_array_multi_dimensional.dart: |
| - _ArraySize. (from org-dartlang-sdk:///sdk/lib/ffi/ffi.dart) |
| - Object. (from org-dartlang-sdk:///sdk/lib/core/object.dart) |