Esempio n. 1
0
        protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType)
        {
            generator.GenerateAttributes(ReturnTypeCustomAttributes, "return");

            if (ExplicitImplementationType == null)
            {
                Modifiers.Generate(generator);
            }

            ReturnType.Generate(generator);
            generator.Write(TokenType.Space, ' ');
            if (ExplicitImplementationType != null)
            {
                ExplicitImplementationType.Generate(generator);
                generator.Write(TokenType.Punctuation, '.');
            }
            generator.OutputIdentifier(TokenType.Identifier, Name);

            generator.OutputTypeParameters(TypeParameters);

            generator.Write(TokenType.Punctuation, '(');
            Parameters.GenerateCommaSeparated(generator);
            generator.Write(TokenType.Punctuation, ')');

            foreach (var typeParameter in TypeParameters)
            {
                typeParameter.GenerateConstraints(generator);
            }

            if (enclosingType.IsInterface ||
                (Modifiers & CodeMemberModifiers.ScopeMask) == CodeMemberModifiers.Abstract)
            {
                generator.WriteLine(TokenType.Punctuation, ';');
            }
            else
            {
                if (Statements.Count > 0)
                {
                    generator.WriteOpeningBrace();
                    generator.Indent++;

                    generator.EnterLocalScope();
                    foreach (var parameter in Parameters)
                    {
                        generator.ReserveLocal(parameter.Name);
                    }

                    Statements.Generate(generator, default(CodeStatementEmitOptions));
                    generator.ExitLocalScope();

                    generator.Indent--;
                    generator.WriteClosingBrace();
                }
                else
                {
                    generator.WriteEmptyBlock();
                }
            }
        }
        public void Generate(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType)
        {
            generator.EnterElement(this);

            StartDirectives.Generate(generator);
            Comments.Generate(generator);
            generator.GenerateAttributes(CustomAttributes);
            GenerateInner(generator, enclosingType);
            EndDirectives.Generate(generator);

            generator.ExitElement();
        }
Esempio n. 3
0
        public void Generate(CodeGenerator generator)
        {
            generator.EnterElement(this);

            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");
            generator.WriteLine(TokenType.Comment, @"//              _______      _____      __       ________       ");
            generator.WriteLine(TokenType.Comment, @"//             |  ___  \    /     \    |  |     |___  ___|      ");
            generator.WriteLine(TokenType.Comment, @"//             | |   \  |  /  ___  \   |  |         / /         ");
            generator.WriteLine(TokenType.Comment, @"//             | |___/ /  /  /   \  \  |  |        / /_         ");
            generator.WriteLine(TokenType.Comment, @"//             | |   \ \  \  \___/  /  |  |       /_  /         ");
            generator.WriteLine(TokenType.Comment, @"//             | |___/  |  \       /   |  |____    | /          ");
            generator.WriteLine(TokenType.Comment, @"//             |_______/    \_____/    |_______|   |/           ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"//                 V I S U A L    S C R I P T I N G             ");
            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"// THIS FILE IS AUTO-GENERATED.                                 ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"// ANY CHANGES WILL BE LOST NEXT TIME THIS SCRIPT IS GENERATED. ");
            generator.WriteLine(TokenType.Comment, @"//                                                              ");
            generator.WriteLine(TokenType.Comment, @"//--------------------------------------------------------------");

            StartDirectives.Generate(generator);
            if (StartDirectives.Count > 0)
            {
                generator.WriteLine();
            }

            Usings.Generate(generator);

            if (AssemblyCustomAttributes.Count > 0)
            {
                generator.GenerateAttributes(AssemblyCustomAttributes, "assembly");
                generator.WriteLine();
            }

            generator.PushUsingSet(Usings);
            Namespaces.Generate(generator);
            generator.PopUsingSet();

            if (EndDirectives.Count > 0)
            {
                generator.WriteLine();
            }
            EndDirectives.Generate(generator);

            generator.ExitElement();
        }
Esempio n. 4
0
        public void Generate(CodeGenerator generator)
        {
            generator.EnterElement(this);

            if (CustomAttributes.Count > 0)
            {
                generator.GenerateAttributes(CustomAttributes, null, true);
            }

            Direction.Generate(generator);
            Type.Generate(generator);
            generator.Write(TokenType.Space, ' ');
            generator.OutputIdentifier(TokenType.Identifier, Name);

            generator.ExitElement();
        }
Esempio n. 5
0
        public void Generate(CodeGenerator generator)
        {
            generator.EnterElement(this);

            StartDirectives.Generate(generator);
            Comments.Generate(generator);

            generator.GenerateAttributes(CustomAttributes);
            generator.OutputIdentifier(TokenType.Identifier, Name);
            if (Initializer != null)
            {
                generator.Write(TokenType.Space, ' ');
                generator.Write(TokenType.Punctuation, '=');
                generator.Write(TokenType.Space, ' ');
                Initializer.Generate(generator);
            }
            generator.WriteLine(TokenType.Punctuation, ',');

            EndDirectives.Generate(generator);

            generator.ExitElement();
        }
 public void GenerateDeclaration(CodeGenerator generator)
 {
     generator.GenerateAttributes(CustomAttributes, null, true);
     generator.Write(TokenType.GenericTypeParameter, Name);
 }