SharpGen/Generator/DefaultGenerators.cs (49 lines of code) (raw):

using Microsoft.CodeAnalysis.CSharp.Syntax; using SharpGen.Model; namespace SharpGen.Generator { public sealed class DefaultGenerators : IGeneratorRegistry { public DefaultGenerators(GeneratorConfig config, Ioc ioc) { Constant = new ConstantCodeGenerator(ioc); Property = new PropertyCodeGenerator(ioc); Enum = new EnumCodeGenerator(ioc); ExplicitOffsetField = new FieldCodeGenerator(ioc, true); AutoLayoutField = new FieldCodeGenerator(ioc, false); Struct = new StructCodeGenerator(ioc); NativeStruct = new NativeStructCodeGenerator(ioc); NativeInvocation = new NativeInvocationCodeGenerator(ioc); Callable = new CallableCodeGenerator(ioc); Method = new MethodCodeGenerator(ioc); Function = new FunctionCodeGenerator(ioc); Interface = new InterfaceCodeGenerator(ioc); Group = new GroupCodeGenerator(ioc); ShadowCallable = new ShadowCallbackGenerator(ioc); ReverseCallableProlog = new ReverseCallablePrologCodeGenerator(ioc); Vtbl = new VtblGenerator(ioc); Shadow = new ShadowGenerator(ioc); Marshalling = new MarshallingRegistry(ioc); Config = config; } public IMultiCodeGenerator<CsVariable, MemberDeclarationSyntax> Constant { get; } public IMultiCodeGenerator<CsProperty, MemberDeclarationSyntax> Property { get; } public IMultiCodeGenerator<CsEnum, MemberDeclarationSyntax> Enum { get; } public IMultiCodeGenerator<CsStruct, MemberDeclarationSyntax> NativeStruct { get; } public IMultiCodeGenerator<CsField, MemberDeclarationSyntax> ExplicitOffsetField { get; } public IMultiCodeGenerator<CsField, MemberDeclarationSyntax> AutoLayoutField { get; } public IMultiCodeGenerator<CsStruct, MemberDeclarationSyntax> Struct { get; } public INativeCallCodeGenerator NativeInvocation { get; } public IMultiCodeGenerator<CsCallable, MemberDeclarationSyntax> Callable { get; } public IMultiCodeGenerator<CsMethod, MemberDeclarationSyntax> Method { get; } public IMultiCodeGenerator<CsFunction, MemberDeclarationSyntax> Function { get; } public IMultiCodeGenerator<CsInterface, MemberDeclarationSyntax> Interface { get; } public IMultiCodeGenerator<CsGroup, MemberDeclarationSyntax> Group { get; } public ICodeGenerator<CsInterface, MemberDeclarationSyntax> Shadow { get; } public ICodeGenerator<CsInterface, MemberDeclarationSyntax> Vtbl { get; } public IMultiCodeGenerator<CsCallable, MemberDeclarationSyntax> ShadowCallable { get; } public IMultiCodeGenerator<(CsCallable, InteropMethodSignature), StatementSyntax> ReverseCallableProlog { get; } public MarshallingRegistry Marshalling { get; } public GeneratorConfig Config { get; } } }