writeTypeDef method

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

Writes a TypeDef row, returning the corresponding index.

Implementation

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

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