コード例 #1
0
 /// <inheritdoc/>
 protected override void HandleWhile(CodeIterationStatement obj, Context ctx)
 {
     ctx.Writer.Write("while (");
     ctx.HandlerProvider.ExpressionHandler.Handle(obj.TestExpression, ctx);
     ctx.Writer.Write(")");
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx, true, false);
 }
コード例 #2
0
 /// <inheritdoc/>
 protected override void HandleUsing(CodeUsingStatement obj, Context ctx)
 {
     ctx.Writer.Write("using (");
     WriteTypeOrVar(obj.Type, ctx);
     ctx.Writer.Write($" {obj.VariableName.AsCsId()} = ");
     ctx.HandlerProvider.ExpressionHandler.Handle(obj.InitializerExpression, ctx);
     ctx.Writer.Write(")");
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx, true, false);
 }
コード例 #3
0
        /// <inheritdoc/>
        protected override void HandleForEach(CodeForEachStatement obj, Context ctx)
        {
            ctx.Writer.Write("foreach (");
            WriteTypeOrVar(obj.ItemType, ctx);
            ctx.Writer.Write($" {obj.ItemName.AsCsId()} in ");
            ctx.HandlerProvider.ExpressionHandler.Handle(obj.ObjectToIterate, ctx);
            ctx.Writer.Write(")");

            CSharpUtils.HandleStatementCollection(obj.Statements, ctx, true, false);
        }
コード例 #4
0
 /// <inheritdoc/>
 protected override void HandleDoWhile(CodePostTestIterationStatement obj, Context ctx)
 {
     ctx.Writer.WriteLine("do");
     ctx.Writer.IndentAndWriteLine("{", ctx);
     ctx.Indent();
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx, false);
     ctx.Unindent();
     ctx.Writer.IndentAndWrite("} while (", ctx);
     ctx.HandlerProvider.ExpressionHandler.Handle(obj.TestExpression, ctx);
     ctx.Writer.Write(");");
 }
コード例 #5
0
 public bool Handle(CodeCatchClause obj, Context ctx)
 {
     ctx.Writer.Write("catch (");
     ctx.HandlerProvider.TypeReferenceHandler.Handle(obj.CatchExceptionType, ctx);
     if (!string.IsNullOrEmpty(obj.LocalName))
     {
         ctx.Writer.Write($" {obj.LocalName.AsCsId()}");
     }
     ctx.Writer.Write(")");
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx, true, false);
     return(true);
 }
コード例 #6
0
 /// <inheritdoc/>
 protected override void HandleTryCatchFinally(CodeTryCatchFinallyStatement obj, Context ctx)
 {
     ctx.Writer.Write("try");
     CSharpUtils.HandleStatementCollection(obj.TryStatements, ctx);
     GeneralUtils.HandleCollection(obj.CatchClauses.Cast <CodeCatchClause>(), _catchClauseHandler, ctx,
                                   preAction: (c) => c.Writer.Indent(c), postAction: (c) => c.Writer.NewLine(), doPostActionOnLast: false);
     if (obj.FinallyStatements.Count > 0)
     {
         ctx.Writer.Write("finally");
         CSharpUtils.HandleStatementCollection(obj.FinallyStatements, ctx, true, false);
     }
 }
コード例 #7
0
 /// <inheritdoc/>
 protected override void HandleFor(CodeIterationStatement obj, Context ctx)
 {
     ctx.StatementShouldTerminate = false;
     ctx.Writer.Write("for (");
     if (obj.InitStatement != null)
     {
         ctx.HandlerProvider.StatementHandler.Handle(obj.InitStatement, ctx);
     }
     ctx.Writer.Write("; ");
     ctx.HandlerProvider.ExpressionHandler.Handle(obj.TestExpression, ctx);
     ctx.Writer.Write("; ");
     if (obj.IncrementStatement != null)
     {
         ctx.HandlerProvider.StatementHandler.Handle(obj.IncrementStatement, ctx);
     }
     ctx.Writer.Write(")");
     ctx.StatementShouldTerminate = true;
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx, true, false);
 }
コード例 #8
0
 /// <inheritdoc/>
 protected override bool HandleDynamic(CodeLambdaDeclarationExpression obj, Context ctx)
 {
     ctx.Writer.Write("(");
     GeneralUtils.HandleCollectionCommaSeparated(obj.Parameters, ctx.HandlerProvider.ExpressionHandler, ctx);
     ctx.Writer.Write(") =>");
     if (obj.Statements.Count == 1 && obj.Statements[0] is CodeExpressionStatement statement)
     {
         ctx.Writer.Write(" ");
         ctx.HandlerProvider.ExpressionHandler.Handle(statement.Expression, ctx);
     }
     else
     {
         ctx.Writer.NewLine();
         ctx.Writer.IndentAndWriteLine("{", ctx);
         ctx.Indent();
         CSharpUtils.HandleStatementCollection(obj.Statements, ctx, false);
         ctx.Unindent();
         ctx.Writer.IndentAndWrite("}", ctx);
     }
     return(true);
 }
コード例 #9
0
 /// <inheritdoc/>
 protected override void HandleCondition(CodeConditionStatement obj, Context ctx)
 {
     ctx.Writer.Write("if (");
     ctx.HandlerProvider.ExpressionHandler.Handle(obj.Condition, ctx);
     ctx.Writer.Write(")");
     CSharpUtils.HandleStatementCollection(obj.TrueStatements, ctx, true, false);
     if (obj.FalseStatements.Count > 0)
     {
         ctx.Writer.NewLine();
         ctx.Writer.IndentAndWrite("else", ctx);
         if (obj.FalseStatements.Count == 1 && obj.FalseStatements[0] is CodeConditionStatement elseIf)
         {
             ctx.Writer.Write(" ");
             HandleCondition(elseIf, ctx);
         }
         else
         {
             CSharpUtils.HandleStatementCollection(obj.FalseStatements, ctx, true, false);
         }
     }
 }
コード例 #10
0
 /// <inheritdoc/>
 protected override void HandleProperty(CodeMemberProperty obj, Context ctx,
                                        bool isExt, CodeMemberPropertyExt objExt, bool doDefaultImplementation)
 {
     if (obj.PrivateImplementationType == null)
     {
         ctx.HandlerProvider.MemberAttributesHandler.Handle(obj.Attributes, ctx);
     }
     ctx.HandlerProvider.TypeReferenceHandler.Handle(obj.Type, ctx);
     ctx.Writer.Write(" ");
     if (obj.PrivateImplementationType == null)
     {
         ctx.Writer.Write(obj.Name.AsCsId());
     }
     else
     {
         HandlePrivateImplementationTypeMemberName(obj.Name, obj.PrivateImplementationType, ctx);
     }
     ctx.Writer.NewLine();
     ctx.Writer.IndentAndWriteLine("{", ctx);
     ctx.Indent();
     if (obj.HasGet)
     {
         ctx.Writer.Indent(ctx);
         if (isExt && objExt.GetAccessibilityLevel != obj.Attributes.GetAccessibilityLevel() &&
             obj.PrivateImplementationType == null)
         {
             ctx.Writer.Write($"{CSharpKeywordsUtils.AccessibilityLevelKeyword(objExt.GetAccessibilityLevel)} ");
         }
         ctx.Writer.Write("get");
         if (doDefaultImplementation)
         {
             ctx.Writer.WriteLine(";");
         }
         else
         {
             CSharpUtils.HandleStatementCollection(obj.GetStatements, ctx);
         }
     }
     if (obj.HasSet)
     {
         ctx.Writer.Indent(ctx);
         if (isExt && objExt.SetAccessibilityLevel != obj.Attributes.GetAccessibilityLevel() &&
             obj.PrivateImplementationType == null)
         {
             ctx.Writer.Write($"{CSharpKeywordsUtils.AccessibilityLevelKeyword(objExt.SetAccessibilityLevel)} ");
         }
         ctx.Writer.Write("set");
         if (doDefaultImplementation)
         {
             ctx.Writer.WriteLine(";");
         }
         else
         {
             CSharpUtils.HandleStatementCollection(obj.SetStatements, ctx);
         }
     }
     ctx.Unindent();
     ctx.Writer.IndentAndWrite("}", ctx);
     if (isExt && objExt.PropertyInitializer != null)
     {
         ctx.Writer.Write(" = ");
         ctx.HandlerProvider.ExpressionHandler.Handle(objExt.PropertyInitializer, ctx);
         ctx.Writer.Write(";");
     }
     ctx.Writer.NewLine();
 }
コード例 #11
0
 private void HandleMethodStatements(CodeMemberMethod obj, Context ctx)
 {
     CSharpUtils.HandleStatementCollection(obj.Statements, ctx);
 }