internal string Transform(GenFile file) { NameSyntax topNamespace = GenNames.NamespaceName(file.Namespace) ?? _names.TopNamespace; var ns = NamespaceDeclaration(topNamespace); foreach (var def in file.NestedTypes) { ns = ns.AddMembers(Transform(def).ToArray()); } var psc = TransformForPipeliningSupport(file); if (psc != null) { ns = ns.AddMembers(psc); } var cu = CompilationUnit().AddUsings( UsingDirective(ParseName("Capnp")), UsingDirective(ParseName("Capnp.Rpc")), UsingDirective(ParseName("System")), UsingDirective(ParseName("System.Collections.Generic")), UsingDirective(ParseName("System.Threading")), UsingDirective(ParseName("System.Threading.Tasks"))); cu = cu.AddMembers(ns); return(cu.NormalizeWhitespace().ToFullString()); }
public CodeGenerator(SchemaModel model, GeneratorOptions options) { _model = model; _names = new GenNames(options); _commonGen = new CommonSnippetGen(_names); _domClassGen = new DomainClassSnippetGen(_names); _readerGen = new ReaderSnippetGen(_names); _writerGen = new WriterSnippetGen(_names); _interfaceGen = new InterfaceSnippetGen(_names); }
internal string Transform(GenFile file) { _names.NullableEnable = file.NullableEnable ?? _options.NullableEnableDefault; NameSyntax topNamespace = GenNames.NamespaceName(file.Namespace) ?? _names.TopNamespace; var ns = NamespaceDeclaration(topNamespace); if (file.EmitNullableDirective) { ns = ns.WithLeadingTrivia( Trivia( NullableDirectiveTrivia( Token(_names.NullableEnable ? SyntaxKind.EnableKeyword : SyntaxKind.DisableKeyword), true))) .WithTrailingTrivia( Trivia( NullableDirectiveTrivia( Token(SyntaxKind.RestoreKeyword), true))); } foreach (var def in file.NestedTypes) { ns = ns.AddMembers(Transform(def).ToArray()); } var psc = TransformForPipeliningSupport(file); if (psc != null) { ns = ns.AddMembers(psc); } var cu = CompilationUnit().AddUsings( UsingDirective(ParseName("Capnp")), UsingDirective(ParseName("Capnp.Rpc")), UsingDirective(ParseName("System")), UsingDirective(ParseName("System.Collections.Generic"))); if (_names.NullableEnable) { cu = cu.AddUsings( UsingDirective(ParseName("System.Diagnostics.CodeAnalysis"))); } cu = cu.AddUsings( UsingDirective(ParseName("System.Threading")), UsingDirective(ParseName("System.Threading.Tasks"))); cu = cu.AddMembers(ns); return(cu.NormalizeWhitespace(" ", Environment.NewLine).ToFullString()); }
public static FieldDeclarationSyntax MakeTypeIdConst(ulong id, GenNames names) => FieldDeclaration( VariableDeclaration( IdentifierName("UInt64")) .WithVariables( SingletonSeparatedList <VariableDeclaratorSyntax>( VariableDeclarator(names.TypeIdField.Identifier) .WithInitializer( EqualsValueClause(HexLiteral(id)))))) .WithModifiers( TokenList( new[] { Token(SyntaxKind.PublicKeyword), Token(SyntaxKind.ConstKeyword) }));
public InterfaceSnippetGen(GenNames names) { _names = names; }
public CommonSnippetGen(GenNames names) { _names = names; }
public DomainClassSnippetGen(GenNames names) { _names = names; }
public ReaderSnippetGen(GenNames names) { _names = names; }
public WriterSnippetGen(GenNames names) { _names = names; }