generate method

void generate({
  1. required IOSink fileSink,
  2. Set<String> enumSet = const {},
  3. Set<String> structSet = const {},
  4. Set<String> callbackStructSet = const {},
})

Generates necessary code for a SteamInitializer

Implementation

void generate({
  required IOSink fileSink,
  Set<String> enumSet = const {},
  Set<String> structSet = const {},
  Set<String> callbackStructSet = const {},
}) {
  fileSink.writeln(
    "// ignore_for_file: public_member_api_docs, always_specify_types, avoid_positional_boolean_parameters, avoid_classes_with_only_static_members",
  );
  fileSink.writeImport(
    packageName: "dart:ffi",
  );
  fileSink.writeImport(
    packageName: "package:ffi/ffi.dart",
  );

  methods.generateImport(
    fileSink: fileSink,
    enumSet: enumSet,
    structSet: structSet,
    callbackStructSet: callbackStructSet,
  );

  fileSink.writeImport(
    packageName: "../dl.dart",
  );
  fileSink.writeImport(
    packageName: "../typedefs.dart",
  );

  String correctedName = name.clearSteamNaming().pascalCase;

  methods.generateLookup(
    fileSink: fileSink,
    owner: correctedName,
    isStatic: true,
  );

  fileSink.writeClass(
    className: correctedName,
  );
  fileSink.writeStartBlock();

  methods.generate(
    fileSink: fileSink,
    owner: correctedName,
    isStatic: true,
  );

  fileSink.writeEndBlock();
}