content: // generated by diplomat-tool
  // dart format off
  
  part of 'lib.g.dart';
  
  final class OpaqueThinVec with core.Iterable<OpaqueThin> implements ffi.Finalizable {
    final ffi.Pointer<ffi.Opaque> _ffi;
  
    // These are "used" in the sense that they keep dependencies alive
    // ignore: unused_field
    final core.List<Object> _selfEdge;
  
    // This takes in a list of lifetime edges (including for &self borrows)
    // corresponding to data this may borrow from. These should be flat arrays containing
    // references to objects, and this object will hold on to them to keep them alive and
    // maintain borrow validity.
    OpaqueThinVec._fromFfi(this._ffi, this._selfEdge) {
      if (_selfEdge.isEmpty) {
        _finalizer.attach(this, _ffi.cast());
      }
    }
  
    @_DiplomatFfiUse('OpaqueThinVec_destroy')
    static final _finalizer = ffi.NativeFinalizer(ffi.Native.addressOf(_OpaqueThinVec_destroy));
  
    factory OpaqueThinVec(core.List<int> a, core.List<double> b, String c) {
      final temp = _FinalizedArena();
      final result = _OpaqueThinVec_create(a._int32AllocIn(temp.arena), b._float32AllocIn(temp.arena), c._utf8AllocIn(temp.arena));
      return OpaqueThinVec._fromFfi(result, []);
    }
  
    OpaqueThinIter get iterator {
      // This lifetime edge depends on lifetimes: 'a
      core.List<Object> aEdges = [this];
      final result = _OpaqueThinVec_iter(_ffi);
      return OpaqueThinIter._fromFfi(result, [], aEdges);
    }
  
    int len() {
      final result = _OpaqueThinVec_len(_ffi);
      return result;
    }
  
    OpaqueThin? operator [](int idx) {
      // This lifetime edge depends on lifetimes: 'a
      core.List<Object> aEdges = [this];
      final result = _OpaqueThinVec_get(_ffi, idx);
      return result.address == 0 ? null : OpaqueThin._fromFfi(result, aEdges);
    }
  
    OpaqueThin? get firstelement {
      // This lifetime edge depends on lifetimes: 'a
      core.List<Object> aEdges = [this];
      final result = _OpaqueThinVec_first(_ffi);
      return result.address == 0 ? null : OpaqueThin._fromFfi(result, aEdges);
    }
  
  }
  
  @_DiplomatFfiUse('OpaqueThinVec_destroy')
  @ffi.Native<ffi.Void Function(ffi.Pointer<ffi.Void>)>(isLeaf: true, symbol: 'OpaqueThinVec_destroy')
  // ignore: non_constant_identifier_names
  external void _OpaqueThinVec_destroy(ffi.Pointer<ffi.Void> self);
  
  @_DiplomatFfiUse('OpaqueThinVec_create')
  @ffi.Native<ffi.Pointer<ffi.Opaque> Function(_SliceInt32, _SliceFloat, _SliceUtf8)>(isLeaf: true, symbol: 'OpaqueThinVec_create')
  // ignore: non_constant_identifier_names
  external ffi.Pointer<ffi.Opaque> _OpaqueThinVec_create(_SliceInt32 a, _SliceFloat b, _SliceUtf8 c);
  
  @_DiplomatFfiUse('OpaqueThinVec_iter')
  @ffi.Native<ffi.Pointer<ffi.Opaque> Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'OpaqueThinVec_iter')
  // ignore: non_constant_identifier_names
  external ffi.Pointer<ffi.Opaque> _OpaqueThinVec_iter(ffi.Pointer<ffi.Opaque> self);
  
  @_DiplomatFfiUse('OpaqueThinVec_len')
  @ffi.Native<ffi.Size Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'OpaqueThinVec_len')
  // ignore: non_constant_identifier_names
  external int _OpaqueThinVec_len(ffi.Pointer<ffi.Opaque> self);
  
  @_DiplomatFfiUse('OpaqueThinVec_get')
  @ffi.Native<ffi.Pointer<ffi.Opaque> Function(ffi.Pointer<ffi.Opaque>, ffi.Size)>(isLeaf: true, symbol: 'OpaqueThinVec_get')
  // ignore: non_constant_identifier_names
  external ffi.Pointer<ffi.Opaque> _OpaqueThinVec_get(ffi.Pointer<ffi.Opaque> self, int idx);
  
  @_DiplomatFfiUse('OpaqueThinVec_first')
  @ffi.Native<ffi.Pointer<ffi.Opaque> Function(ffi.Pointer<ffi.Opaque>)>(isLeaf: true, symbol: 'OpaqueThinVec_first')
  // ignore: non_constant_identifier_names
  external ffi.Pointer<ffi.Opaque> _OpaqueThinVec_first(ffi.Pointer<ffi.Opaque> self);
  
  // dart format on
  