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)
 }));
Exemplo n.º 5
0
 public InterfaceSnippetGen(GenNames names)
 {
     _names = names;
 }
 public CommonSnippetGen(GenNames names)
 {
     _names = names;
 }
Exemplo n.º 7
0
 public DomainClassSnippetGen(GenNames names)
 {
     _names = names;
 }
 public ReaderSnippetGen(GenNames names)
 {
     _names = names;
 }
Exemplo n.º 9
0
 public WriterSnippetGen(GenNames names)
 {
     _names = names;
 }