コード例 #1
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateWhileStatement(ScriptGenerator generator, MemberSymbol symbol, WhileStatement statement)
        {
            if (statement.Body == null)
            {
                return;
            }

            ScriptTextWriter writer = generator.Writer;

            if (statement.PreCondition)
            {
                writer.Write("while (");
                ExpressionGenerator.GenerateExpression(generator, symbol, statement.Condition);
                writer.WriteLine(") {");
            }
            else
            {
                writer.WriteLine("do {");
            }

            writer.Indent++;
            GenerateStatement(generator, symbol, statement.Body);
            writer.Indent--;

            if (statement.PreCondition)
            {
                writer.WriteLine("}");
            }
            else
            {
                writer.Write("} while (");
                ExpressionGenerator.GenerateExpression(generator, symbol, statement.Condition);
                writer.WriteLine(");");
            }
        }
コード例 #2
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateSwitchStatement(ScriptGenerator generator, MemberSymbol symbol, SwitchStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.Write("switch (");
            ExpressionGenerator.GenerateExpression(generator, symbol, statement.Condition);
            writer.WriteLine(") {");
            writer.Indent++;
            foreach (SwitchGroup group in statement.Groups)
            {
                if (group.Cases != null)
                {
                    foreach (Expression caseExpression in group.Cases)
                    {
                        writer.Write("case ");
                        ExpressionGenerator.GenerateExpression(generator, symbol, caseExpression);
                        writer.WriteLine(":");
                    }
                }

                if (group.IncludeDefault)
                {
                    writer.WriteLine("default:");
                }

                writer.Indent++;
                foreach (Statement childStatement in group.Statements)
                {
                    GenerateStatement(generator, symbol, childStatement);
                }
                writer.Indent--;
            }
            writer.Indent--;
            writer.WriteLine("}");
        }
コード例 #3
0
        private static void GenerateResources(ScriptGenerator generator, ResourcesSymbol resourcesSymbol)
        {
            ScriptTextWriter writer        = generator.Writer;
            string           resourcesName = resourcesSymbol.FullGeneratedName;

            writer.Write(resourcesName);
            writer.WriteTrimmed(" = ");
            writer.WriteTrimmed("{ ");
            writer.WriteNewLine();
            writer.Indent++;

            bool firstValue = true;

            foreach (FieldSymbol member in resourcesSymbol.Members)
            {
                Debug.Assert(member.Value is string);

                if (firstValue == false)
                {
                    writer.Write(",");
                    writer.WriteLine();
                }

                writer.Write(member.GeneratedName);
                writer.WriteTrimmed(": ");
                writer.Write(Utility.QuoteString((string)member.Value));

                firstValue = false;
            }

            writer.Indent--;
            writer.WriteLine();
            writer.Write("};");
            writer.WriteNewLine();
        }
コード例 #4
0
        private static void GeneratePropertyGetter(ScriptGenerator generator, string typeName, PropertySymbol propertySymbol, ScriptTextWriter writer, bool instanceMember)
        {
            if (instanceMember)
            {
                writer.Write("$get_");
                writer.Write(propertySymbol.GeneratedName);
                writer.Write(": ");
            }
            else
            {
                writer.Write("ss.createPropertyGet(");
                writer.Write(typeName);
                writer.Write(", '");
                writer.Write(propertySymbol.GeneratedName);
                writer.Write("', ");
            }

            writer.WriteLine("function() {");
            writer.Indent++;

            if (generator.Options.EnableDocComments)
            {
                DocCommentGenerator.GenerateComment(generator, propertySymbol);
            }

            CodeGenerator.GenerateScript(generator, propertySymbol, /* getter */ true);
            writer.Indent--;
            writer.Write("}");

            if (instanceMember == false)
            {
                writer.WriteLine(");");
            }
        }
コード例 #5
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateErrorStatement(ScriptGenerator generator, MemberSymbol symbol, ErrorStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.Write("// ERROR: ");
            writer.Write(statement.Message);
            writer.WriteLine();
            writer.Write("// ERROR: at ");
            writer.Write(statement.Location);
            writer.WriteLine();
        }
コード例 #6
0
        private static void GenerateSummaryComment(ScriptTextWriter writer, Symbol symbol)
        {
            string documentation = symbol.Documentation;

            if (String.IsNullOrEmpty(documentation) == false)
            {
                writer.WriteLine("/// <summary>");
                GenerateFormattedComment(writer, documentation);
                writer.WriteLine("/// </summary>");
            }
        }
コード例 #7
0
        private static void GenerateParameterComment(ScriptTextWriter writer, ParameterSymbol parameterSymbol)
        {
            writer.Write("/// <param name=\"{0}\"", parameterSymbol.GeneratedName);

            GenerateTypeAttributes(writer, parameterSymbol.ValueType);

            writer.WriteLine(">");

            GenerateFormattedComment(writer, parameterSymbol.Documentation);

            writer.WriteLine("/// </param>");
        }
コード例 #8
0
        public static void GenerateScript(ScriptGenerator generator, TypeSymbol typeSymbol)
        {
            Debug.Assert(generator != null);
            Debug.Assert(typeSymbol != null);
            Debug.Assert(typeSymbol.IsApplicationType);

            if ((typeSymbol.Type == SymbolType.Enumeration) && (typeSymbol.IsPublic == false))
            {
                // Internal enums can be skipped since their values have been inlined.
                return;
            }

            ScriptTextWriter writer = generator.Writer;

            if (generator.Options.Minimize == false)
            {
                writer.WriteLine(new String('/', 80));
                writer.WriteLine("// " + typeSymbol.FullGeneratedName);
                writer.WriteLine();
            }

            switch (typeSymbol.Type)
            {
            case SymbolType.Class:
                GenerateClass(generator, (ClassSymbol)typeSymbol);
                break;

            case SymbolType.Interface:
                GenerateInterface(generator, (InterfaceSymbol)typeSymbol);
                break;

            case SymbolType.Enumeration:
                GenerateEnumeration(generator, (EnumerationSymbol)typeSymbol);
                break;

            case SymbolType.Delegate:
                GenerateDelegate(generator, (DelegateSymbol)typeSymbol);
                break;

            case SymbolType.Record:
                GenerateRecord(generator, (RecordSymbol)typeSymbol);
                break;

            case SymbolType.Resources:
                GenerateResources(generator, (ResourcesSymbol)typeSymbol);
                break;
            }

            writer.WriteNewLine();
            writer.WriteNewLine();
        }
コード例 #9
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateReturnStatement(ScriptGenerator generator, MemberSymbol symbol, ReturnStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            if (statement.Value != null)
            {
                writer.Write("return ");
                ExpressionGenerator.GenerateExpression(generator, symbol, statement.Value);
                writer.WriteLine(";");
            }
            else
            {
                writer.WriteLine("return;");
            }
        }
コード例 #10
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateVariableDeclarationStatement(ScriptGenerator generator, MemberSymbol symbol, VariableDeclarationStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            GenerateVariableDeclarations(generator, symbol, statement);
            writer.WriteLine(";");
        }
コード例 #11
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateContinueStatement(ScriptGenerator generator, MemberSymbol symbol, ContinueStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.Write("continue;");
            writer.WriteLine();
        }
コード例 #12
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateBreakStatement(ScriptGenerator generator, MemberSymbol symbol, BreakStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.Write("break;");
            writer.WriteLine();
        }
コード例 #13
0
        private static void GenerateProperty(ScriptGenerator generator, string typeName, PropertySymbol propertySymbol)
        {
            if (propertySymbol.IsAbstract)
            {
                return;
            }

            ScriptTextWriter writer = generator.Writer;

            bool instanceMember = true;

            if ((propertySymbol.Visibility & MemberVisibility.Static) != 0)
            {
                instanceMember = false;
            }
            if (propertySymbol.HasGetter)
            {
                GeneratePropertyGetter(generator, typeName, propertySymbol, writer, instanceMember);
            }
            if (propertySymbol.HasSetter)
            {
                if (instanceMember && propertySymbol.HasGetter)
                {
                    writer.WriteLine(",");
                }

                GeneratePropertySetter(generator, typeName, propertySymbol, writer, instanceMember);
            }
        }
コード例 #14
0
        private static void GenerateField(ScriptGenerator generator, string typeName, FieldSymbol fieldSymbol)
        {
            ScriptTextWriter writer = generator.Writer;

            bool instanceMember = true;

            if ((fieldSymbol.Visibility & MemberVisibility.Static) != 0)
            {
                instanceMember = false;
                writer.Write(typeName);
                writer.Write(".");
            }

            writer.Write(fieldSymbol.GeneratedName);
            if (instanceMember)
            {
                writer.Write(": ");
            }
            else
            {
                writer.Write(" = ");
            }
            CodeGenerator.GenerateScript(generator, fieldSymbol);

            if (instanceMember == false)
            {
                writer.WriteLine(";");
            }
        }
コード例 #15
0
        public static void GenerateClassConstructorScript(ScriptGenerator generator, ClassSymbol classSymbol)
        {
            // NOTE: This is emitted last in the script file, and separate from the initial class definition
            //       because it needs to be emitted after the class registration.

            foreach (MemberSymbol memberSymbol in classSymbol.Members)
            {
                if ((memberSymbol.Type == SymbolType.Field) &&
                    ((memberSymbol.Visibility & MemberVisibility.Static) != 0))
                {
                    FieldSymbol fieldSymbol = (FieldSymbol)memberSymbol;

                    if (fieldSymbol.IsConstant &&
                        ((memberSymbol.Visibility & (MemberVisibility.Public | MemberVisibility.Protected)) == 0))
                    {
                        // PrivateInstance/Internal constant fields are omitted since they have been inlined
                        continue;
                    }

                    if (fieldSymbol.HasInitializer)
                    {
                        MemberGenerator.GenerateScript(generator, memberSymbol);
                    }
                }
            }

            if (classSymbol.StaticConstructor != null)
            {
                ScriptTextWriter writer = generator.Writer;

                SymbolImplementation implementation = classSymbol.StaticConstructor.Implementation;
                bool requiresFunctionScope          = implementation.DeclaresVariables;

                if (requiresFunctionScope)
                {
                    writer.WriteLine("(function() {");
                    writer.Indent++;
                }
                CodeGenerator.GenerateScript(generator, classSymbol.StaticConstructor);
                if (requiresFunctionScope)
                {
                    writer.Indent--;
                    writer.Write("})();");
                    writer.WriteLine();
                }
            }
        }
コード例 #16
0
        private static void GenerateFieldComment(ScriptTextWriter writer, FieldSymbol fieldSymbol)
        {
            writer.Write("/// <field name=\"{0}\"", fieldSymbol.GeneratedName);

            GenerateTypeAttributes(writer, fieldSymbol.AssociatedType);

            if ((fieldSymbol.Visibility & MemberVisibility.Static) != 0)
            {
                writer.Write(" static=\"true\"");
            }

            writer.WriteLine(">");

            GenerateFormattedComment(writer, fieldSymbol.Documentation);

            writer.WriteLine("/// </field>");
        }
コード例 #17
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateThrowStatement(ScriptGenerator generator, MemberSymbol symbol, ThrowStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.Write("throw ");
            ExpressionGenerator.GenerateExpression(generator, symbol, statement.Value);
            writer.WriteLine(";");
        }
コード例 #18
0
        private static void GenerateDelegateExpression(ScriptGenerator generator, MemberSymbol symbol, DelegateExpression expression)
        {
            ScriptTextWriter writer = generator.Writer;

            AnonymousMethodSymbol anonymousMethod = expression.Method as AnonymousMethodSymbol;

            if (anonymousMethod != null)
            {
                writer.Write("function(");
                if ((anonymousMethod.Parameters != null) && (anonymousMethod.Parameters.Count != 0))
                {
                    int paramIndex = 0;
                    foreach (ParameterSymbol parameterSymbol in anonymousMethod.Parameters)
                    {
                        if (paramIndex > 0)
                        {
                            writer.Write(", ");
                        }
                        writer.Write(parameterSymbol.GeneratedName);

                        paramIndex++;
                    }
                }
                writer.WriteLine(") {");
                writer.Indent++;
                CodeGenerator.GenerateScript(generator, anonymousMethod);
                writer.Indent--;
                writer.Write("}");
            }
            else if ((expression.Method.Visibility & MemberVisibility.Static) != 0)
            {
                if (expression.Method.IsExtension)
                {
                    Debug.Assert(expression.Method.Parent.Type == SymbolType.Class);

                    ClassSymbol classSymbol = (ClassSymbol)expression.Method.Parent;
                    Debug.Assert(classSymbol.IsExtenderClass);

                    writer.Write(classSymbol.Extendee);
                    writer.Write(".");
                    writer.Write(expression.Method.GeneratedName);
                }
                else
                {
                    ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                    writer.Write(".");
                    writer.Write(expression.Method.GeneratedName);
                }
            }
            else
            {
                writer.Write("ss.bind('");
                writer.Write(expression.Method.GeneratedName);
                writer.Write("', ");
                ExpressionGenerator.GenerateExpression(generator, symbol, expression.ObjectReference);
                writer.Write(")");
            }
        }
コード例 #19
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateUsingStatement(ScriptGenerator generator, MemberSymbol symbol, UsingStatement statement)
        {
            GenerateVariableDeclarationStatement(generator, symbol, statement.Guard);
            ScriptTextWriter writer = generator.Writer;

            writer.WriteLine("try {");
            writer.Indent++;
            GenerateStatement(generator, symbol, statement.Body);
            writer.Indent--;
            writer.WriteLine("}");
            writer.WriteLine("finally {");
            writer.Indent++;
            foreach (var variable in statement.Guard.Variables)
            {
                writer.Write("if(");
                writer.Write(variable.GeneratedName);
                writer.WriteLine(") {");
                writer.Indent++;
                writer.Write(variable.GeneratedName);
                writer.Write(".");
                writer.Write(variable.ValueType.GetMember("Dispose").GeneratedName);
                writer.WriteLine("();");
                writer.Indent--;
                writer.WriteLine("}");
            }
            writer.Indent--;
            writer.WriteLine("}");
        }
コード例 #20
0
        private static void GenerateInterface(ScriptGenerator generator, InterfaceSymbol interfaceSymbol)
        {
            ScriptTextWriter writer        = generator.Writer;
            string           interfaceName = interfaceSymbol.FullGeneratedName;

            writer.Write("function ");
            writer.Write(interfaceName);
            writer.WriteLine("() { }");
        }
コード例 #21
0
        private static void GenerateInterfaceComment(ScriptTextWriter writer, InterfaceSymbol interfaceSymbol)
        {
            writer.WriteLine();
            writer.Indent++;

            GenerateSummaryComment(writer, interfaceSymbol);

            writer.Indent--;
        }
コード例 #22
0
        private static void GenerateFormattedComment(ScriptTextWriter writer, string text) {
            foreach (string line in text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries)) {
                string trimmedLine = line.Trim();

                if (!String.IsNullOrEmpty(trimmedLine)) {
                    writer.WriteLine("/// {0}", trimmedLine);
                }
            }
        }
コード例 #23
0
        private static void GenerateRecord(ScriptGenerator generator, RecordSymbol recordSymbol)
        {
            ScriptTextWriter writer     = generator.Writer;
            string           recordName = recordSymbol.FullGeneratedName;

            writer.Write("function ");
            writer.Write(recordName);
            writer.Write("(");
            if (recordSymbol.Constructor != null)
            {
                ConstructorSymbol ctorSymbol = recordSymbol.Constructor;

                if (ctorSymbol.Parameters != null)
                {
                    bool firstParameter = true;
                    foreach (ParameterSymbol parameterSymbol in ctorSymbol.Parameters)
                    {
                        if (firstParameter == false)
                        {
                            writer.Write(", ");
                        }
                        writer.Write(parameterSymbol.GeneratedName);
                        firstParameter = false;
                    }
                }
            }
            writer.Write(") {");
            if (recordSymbol.Constructor != null)
            {
                writer.Indent++;
                writer.WriteLine();
                writer.WriteLine("var $o = {};");
                CodeGenerator.GenerateScript(generator, recordSymbol.Constructor);
                writer.Write("return $o;");
                writer.WriteLine();
                writer.Indent--;
            }
            else
            {
                writer.Write(" return {}; ");
            }
            writer.Write("}");
            writer.WriteLine();
        }
コード例 #24
0
        private static void GenerateEnumeration(ScriptGenerator generator, EnumerationSymbol enumSymbol)
        {
            ScriptTextWriter writer   = generator.Writer;
            string           enumName = enumSymbol.FullGeneratedName;

            writer.Write("var ");
            writer.Write(enumSymbol.FullGeneratedName);
            writer.Write(" = {");
            writer.Indent++;

            bool firstValue = true;

            foreach (MemberSymbol memberSymbol in enumSymbol.Members)
            {
                EnumerationFieldSymbol fieldSymbol = memberSymbol as EnumerationFieldSymbol;
                if (fieldSymbol == null)
                {
                    continue;
                }

                if (firstValue == false)
                {
                    writer.Write(", ");
                }

                writer.WriteLine();
                writer.Write(fieldSymbol.GeneratedName);
                writer.Write(": ");
                if (enumSymbol.UseNamedValues)
                {
                    writer.Write(Utility.QuoteString(enumSymbol.CreateNamedValue(fieldSymbol)));
                }
                else
                {
                    writer.Write(fieldSymbol.Value);
                }
                firstValue = false;
            }

            writer.Indent--;
            writer.WriteLine();
            writer.Write("};");
            writer.WriteLine();
        }
コード例 #25
0
        private static void GeneratePropertyComment(ScriptTextWriter writer, PropertySymbol propertySymbol)
        {
            GenerateSummaryComment(writer, propertySymbol);

            writer.Write("/// <value");

            GenerateTypeAttributes(writer, propertySymbol.AssociatedType);

            writer.WriteLine("></value>");
        }
コード例 #26
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateIfElseStatement(ScriptGenerator generator, MemberSymbol symbol, IfElseStatement statement)
        {
            if ((statement.IfStatement == null) && (statement.ElseStatement == null))
            {
                return;
            }

            ScriptTextWriter writer = generator.Writer;

            writer.Write("if (");
            ExpressionGenerator.GenerateExpression(generator, symbol, statement.Condition);
            writer.WriteLine(") {");
            if (statement.IfStatement != null)
            {
                writer.Indent++;
                GenerateStatement(generator, symbol, statement.IfStatement);
                writer.Indent--;
            }
            writer.Write("}");
            writer.WriteLine();
            if (statement.ElseStatement != null)
            {
                bool writeEndBlock = false;

                if (statement.ElseStatement is IfElseStatement)
                {
                    writer.Write("else ");
                }
                else
                {
                    writer.WriteLine("else {");
                    writeEndBlock = true;
                    writer.Indent++;
                }
                GenerateStatement(generator, symbol, statement.ElseStatement);
                if (writeEndBlock)
                {
                    writer.Indent--;
                    writer.WriteLine("}");
                }
            }
        }
コード例 #27
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateExpressionStatement(ScriptGenerator generator, MemberSymbol symbol, ExpressionStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            ExpressionGenerator.GenerateExpression(generator, symbol, statement.Expression);
            if (statement.IsFragment == false)
            {
                writer.Write(";");
                writer.WriteLine();
            }
        }
コード例 #28
0
        private static void GenerateFormattedComment(ScriptTextWriter writer, string text)
        {
            foreach (string line in text.Split(new char[] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries))
            {
                string trimmedLine = line.Trim();

                if (!String.IsNullOrEmpty(trimmedLine))
                {
                    writer.WriteLine("/// {0}", trimmedLine);
                }
            }
        }
コード例 #29
0
ファイル: StatementGenerator.cs プロジェクト: puslmbps/dsharp
        private static void GenerateTryCatchFinallyStatement(ScriptGenerator generator, MemberSymbol symbol, TryCatchFinallyStatement statement)
        {
            ScriptTextWriter writer = generator.Writer;

            writer.WriteLine("try {");
            writer.Indent++;
            GenerateStatement(generator, symbol, statement.Body);
            writer.Indent--;
            writer.WriteLine("}");
            if (statement.Catch != null)
            {
                writer.Write("catch (");
                writer.Write(statement.ExceptionVariable.GeneratedName);
                writer.WriteLine(") {");
                writer.Indent++;
                GenerateStatement(generator, symbol, statement.Catch);
                writer.Indent--;
                writer.WriteLine("}");
            }
            if (statement.Finally != null)
            {
                writer.WriteLine("finally {");
                writer.Indent++;
                GenerateStatement(generator, symbol, statement.Finally);
                writer.Indent--;
                writer.WriteLine("}");
            }
        }
コード例 #30
0
        private static void GenerateReturnsComment(ScriptTextWriter writer, TypeSymbol typeSymbol)
        {
            if (IsVoid(typeSymbol))
            {
                return;
            }

            writer.Write("/// <returns");

            GenerateTypeAttributes(writer, typeSymbol);

            writer.WriteLine("></returns>");
        }
コード例 #31
0
        private static void GenerateImplementationScript(ScriptGenerator generator, MemberSymbol symbol, SymbolImplementation implementation)
        {
            generator.StartImplementation(implementation);
            try {
                bool generateThisCacheStatement = false;

                if ((symbol.Visibility & MemberVisibility.Static) == 0)
                {
                    CodeMemberSymbol codeMemberSymbol = symbol as CodeMemberSymbol;
                    if ((codeMemberSymbol != null) && (codeMemberSymbol.AnonymousMethods != null))
                    {
                        foreach (AnonymousMethodSymbol anonymousMethod in codeMemberSymbol.AnonymousMethods)
                        {
                            if ((anonymousMethod.Visibility & MemberVisibility.Static) == 0)
                            {
                                generateThisCacheStatement = true;
                                break;
                            }
                        }
                    }
                }

                if (generateThisCacheStatement)
                {
                    ScriptTextWriter writer = generator.Writer;

                    writer.WriteLine("var $this = this;");
                    writer.WriteLine();
                }

                foreach (Statement statement in implementation.Statements)
                {
                    StatementGenerator.GenerateStatement(generator, symbol, statement);
                }
            }
            finally {
                generator.EndImplementation();
            }
        }
コード例 #32
0
        private static void GenerateInterfaceComment(ScriptTextWriter writer, InterfaceSymbol interfaceSymbol)
        {
            writer.WriteLine();
            writer.Indent++;

            GenerateSummaryComment(writer, interfaceSymbol);

            writer.Indent--;
        }
コード例 #33
0
        private static void GenerateParameterComment(ScriptTextWriter writer, ParameterSymbol parameterSymbol) {
            writer.Write("/// <param name=\"{0}\"", parameterSymbol.GeneratedName);

            GenerateTypeAttributes(writer, parameterSymbol.ValueType);

            writer.WriteLine(">");

            GenerateFormattedComment(writer, parameterSymbol.Documentation);

            writer.WriteLine("/// </param>");
        }
コード例 #34
0
        private static void GenerateEventComment(ScriptTextWriter writer, EventSymbol eventSymbol) {
            GenerateSummaryComment(writer, eventSymbol);

            writer.WriteLine("/// <param name=\"{0}\" type=\"Function\" />", eventSymbol.Parameters[0].Name);
        }
コード例 #35
0
        private static void GenerateEnumerationComment(ScriptTextWriter writer, EnumerationSymbol enumSymbol) {
            writer.WriteNewLine();
            writer.Indent++;

            GenerateSummaryComment(writer, enumSymbol);

            foreach (MemberSymbol memberSymbol in enumSymbol.Members) {
                EnumerationFieldSymbol fieldSymbol = memberSymbol as EnumerationFieldSymbol;
                if (fieldSymbol != null) {
                    writer.WriteLine(
                        "/// <field name=\"{0}\" type=\"Number\" integer=\"true\" static=\"true\">",
                        fieldSymbol.GeneratedName);

                    GenerateFormattedComment(writer, fieldSymbol.Documentation);

                    writer.WriteLine("/// </field>");
                }
            }

            writer.Indent--;
        }
コード例 #36
0
        private static void GenerateSummaryComment(ScriptTextWriter writer, Symbol symbol) {
            string documentation = symbol.Documentation;

            if (String.IsNullOrEmpty(documentation) == false) {
                writer.WriteLine("/// <summary>");
                GenerateFormattedComment(writer, documentation);
                writer.WriteLine("/// </summary>");
            }
        }
コード例 #37
0
        private static void GenerateReturnsComment(ScriptTextWriter writer, TypeSymbol typeSymbol) {
            if (IsVoid(typeSymbol)) {
                return;
            }

            writer.Write("/// <returns");

            GenerateTypeAttributes(writer, typeSymbol);

            writer.WriteLine("></returns>");
        }
コード例 #38
0
        private static void GeneratePropertyComment(ScriptTextWriter writer, PropertySymbol propertySymbol) {
            GenerateSummaryComment(writer, propertySymbol);

            writer.Write("/// <value");

            GenerateTypeAttributes(writer, propertySymbol.AssociatedType);

            writer.WriteLine("></value>");
        }
コード例 #39
0
        private static void GenerateFieldComment(ScriptTextWriter writer, FieldSymbol fieldSymbol) {
            writer.Write("/// <field name=\"{0}\"", fieldSymbol.GeneratedName);

            GenerateTypeAttributes(writer, fieldSymbol.AssociatedType);

            if ((fieldSymbol.Visibility & MemberVisibility.Static) != 0) {
                writer.Write(" static=\"true\"");
            }

            writer.WriteLine(">");

            GenerateFormattedComment(writer, fieldSymbol.Documentation);

            writer.WriteLine("/// </field>");
        }