writeTypeDef method

TypeDefIndex writeTypeDef({
  1. required String namespace,
  2. required String name,
  3. TypeAttributes flags = const .new(0),
  4. TypeDefOrRef extends$ = .none,
})

Writes a TypeDef row, returning the corresponding index.

Implementation

TypeDefIndex writeTypeDef({
  required String namespace,
  required String name,
  TypeAttributes flags = const .new(0),
  TypeDefOrRef extends$ = .none,
}) {
  // Track root namespaces like "Windows.Foundation".
  if (namespace.contains('.')) {
    _levelTwoNamespaces.add(namespace.split('.').take(2).join('.'));
  }

  final table = _tableStream[.typeDef];
  final index = TypeDefIndex(table.length);
  table.add(
    TypeDef(
      flags: flags,
      name: _stringHeap.insert(name),
      namespace: _stringHeap.insert(namespace),
      extends$: extends$,
      fieldList: .new(_tableStream[.field].length),
      methodList: .new(_tableStream[.methodDef].length),
    ),
  );
  return index;
}