protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.Indent--; generator.Write(TokenType.Keyword, "case "); Value.Generate(generator); generator.WriteLine(TokenType.Punctuation, ':'); generator.Indent++; if (!Fallthrough) { generator.EnterLocalScope(); Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); } Statements.Generate(generator, default(CodeStatementEmitOptions)); if (!Fallthrough) { bool needsBreak = true; if (Statements.Count > 0) { var lastStatement = Statements[Statements.Count - 1]; needsBreak = !lastStatement.IsTerminator; } if (needsBreak) { generator.Write(TokenType.Keyword, "break"); generator.WriteLine(TokenType.Punctuation, ';'); } generator.ExitLocalScope(); } }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineBeforeEnteringBlock(); generator.WriteLine(TokenType.Keyword, "do"); if (Statements.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; generator.EnterLocalScope(); Statements.ReserveLocals(generator, default(CodeStatementEmitOptions)); Statements.Generate(generator, default(CodeStatementEmitOptions)); generator.EnterLocalScope(); generator.Indent--; generator.WriteMiddleClosingBrace(true); } else { generator.WriteEmptyBlock(true); } generator.Write(TokenType.Keyword, "while"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '('); Condition.Generate(generator); generator.WriteLine(TokenType.Punctuation, ");"); }
protected override void GenerateInner(CodeGenerator generator) { generator.Write(TokenType.Keyword, "new"); generator.Write(TokenType.Space, ' '); CreateType.Generate(generator); generator.Write(TokenType.Punctuation, '('); Arguments.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, ')'); if (CollectionInitializerItems.Count > 0) { generator.Write(TokenType.Space, ' '); generator.WriteLine(TokenType.Punctuation, '{'); generator.Indent++; for (int i = 0; i < CollectionInitializerItems.Count; i++) { var collectionInitializerItem = CollectionInitializerItems[i]; if (collectionInitializerItem.Count != 1) { generator.Write(TokenType.Punctuation, '{'); collectionInitializerItem.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, '}'); } else { collectionInitializerItem.First().Generate(generator); } generator.WriteLine(TokenType.Punctuation, i < CollectionInitializerItems.Count - 1 ? "," : ""); } generator.Indent--; generator.Write(TokenType.Punctuation, '}'); } }
protected override void GenerateInner(CodeGenerator generator) { generator.Write(TokenType.Keyword, "new"); generator.Write(TokenType.Space, ' '); if (CreateType != null) { CreateType.Generate(generator); } generator.Write(TokenType.Space, ' '); generator.WriteLine(TokenType.Punctuation, '{'); generator.Indent++; for (int i = 0; i < Members.Count; i++) { var member = Members[i]; generator.OutputIdentifier(TokenType.Identifier, member.Key); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Operator, '='); generator.Write(TokenType.Space, ' '); member.Value.Generate(generator); generator.WriteLine(TokenType.Punctuation, i < Members.Count - 1 ? "," : ""); } generator.Indent--; generator.Write(TokenType.Punctuation, '}'); }
protected override void GenerateInner(CodeGenerator generator) { if (Warnings != null && Warnings.Any()) { generator.Write(TokenType.Directive, "#pragma warning "); switch (Setting) { case CodePragmaWarningSetting.Disable: generator.Write(TokenType.Directive, "disable "); break; case CodePragmaWarningSetting.Restore: generator.Write(TokenType.Directive, "restore "); break; } bool first = true; foreach (var warning in Warnings) { if (first) { first = false; } else { generator.Write(TokenType.Punctuation, ", "); } generator.Write(TokenType.IntLiteral, warning.ToString(CultureInfo.InvariantCulture)); } generator.WriteLine(); } }
protected override void GenerateInner(CodeGenerator generator, string name, CodeBasicPropertyMember property, CodeCompositeTypeDeclaration enclosingType) { generator.Write(TokenType.Keyword, name); generator.EnterLocalScope(); generator.IsInSetterProperty = name == "set"; if (generator.IsInSetterProperty) { generator.ReserveLocal("value"); } if (property is CodeIndexerMember indexer) { foreach (var parameter in indexer.Parameters) { generator.ReserveLocal(parameter.Name); } } generator.ExitLocalScope(); if (Statements.Count == 1 && Statements[0] is CodeReturnStatement returnStatement && returnStatement.Expression != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Operator, "=>"); generator.Write(TokenType.Space, ' '); returnStatement.Expression.Generate(generator); generator.WriteLine(TokenType.Punctuation, ";"); }
public static void GenerateCommaSeparated(this IEnumerable <CodeParameterDeclaration> parameters, CodeGenerator generator, bool newlineBetweenItems = false) { bool first = true; foreach (var parameter in parameters) { if (first) { first = false; } else { if (newlineBetweenItems) { generator.WriteLine(TokenType.Punctuation, ','); } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } } parameter.Generate(generator); } }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { if (ExplicitImplementationType == null) { Modifiers.Generate(generator); } Type.Generate(generator); generator.Write(TokenType.Space, ' '); if (ExplicitImplementationType != null) { ExplicitImplementationType.Generate(generator); generator.Write(TokenType.Punctuation, '.'); } GeneratePropertyName(generator); if (Getter != null && Setter == null && Getter is CodeUserPropertyAccessor userGetter && userGetter.Statements.Count == 1 && userGetter.Statements[0] is CodeReturnStatement returnStatement && returnStatement.Expression != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Operator, "=>"); generator.Write(TokenType.Space, ' '); returnStatement.Expression.Generate(generator); generator.WriteLine(TokenType.Punctuation, ";"); }
public static void GenerateCommaSeparated(this IEnumerable <CodeExpression> expressions, CodeGenerator generator, bool newlineBetweenItems = false) { bool first = true; //generator.Indent++; foreach (var expression in expressions) { if (first) { first = false; } else { if (newlineBetweenItems) { generator.WriteLine(TokenType.Punctuation, ','); } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } } expression.Generate(generator); } //generator.Indent--; }
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 static void Generate(this IEnumerable <CodeComment> comments, CodeGenerator generator) { foreach (var comment in comments) { comment.Generate(generator); generator.WriteLine(); } }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { if (!generator.JustWroteOpeningBrace && generator.JustWroteVariableDeclaration && (emitOptions & CodeStatementEmitOptions.OmitSemiColon) == 0) { generator.WriteLine(); } generator.WriteBlankLineIfJustExitedBlock(); Expression.Generate(generator); generator.WriteStatementEnd(emitOptions); }
public void GenerateConstraints(CodeGenerator generator) { generator.EnterElement(this); generator.WriteLine(); generator.Indent++; bool first = true; foreach (CodeTypeReference constraint in Constraints) { if (first) { generator.Write(TokenType.Keyword, "where"); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.GenericTypeParameter, Name); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); first = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } constraint.Generate(generator); } if (HasConstructorConstraint) { if (first) { generator.Write(TokenType.Keyword, "where"); generator.Write(TokenType.GenericTypeParameter, Name); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Keyword, "new"); generator.Write(TokenType.Punctuation, "()"); first = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Keyword, "new"); generator.Write(TokenType.Punctuation, "()"); } } generator.Indent--; generator.ExitElement(); }
protected override void GenerateInner(CodeGenerator generator) { generator.Write(TokenType.Keyword, "delegate"); generator.Write(TokenType.Space, ' '); ReturnType.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.TypeIdentifier, Name); generator.Write(TokenType.Punctuation, '('); Parameters.GenerateCommaSeparated(generator); generator.WriteLine(TokenType.Punctuation, ");"); }
public static void Generate(this IEnumerable <CodeUsingImport> usingImports, CodeGenerator generator) { var sortedUniqueUsingImports = new List <CodeUsingImport>(new HashSet <CodeUsingImport>(usingImports)); sortedUniqueUsingImports.Sort((a, b) => string.CompareOrdinal(a.Name, b.Name)); foreach (var usingImport in sortedUniqueUsingImports) { usingImport.Generate(generator); } if (usingImports.Any()) { generator.WriteLine(); } }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { Modifiers.Generate(generator); Type.Generate(generator); generator.Write(TokenType.Space, ' '); 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, ';'); }
protected override void GenerateInner(CodeGenerator generator, CodeCompositeTypeDeclaration enclosingType) { if (ExplicitImplementationType == null) { Modifiers.Generate(generator); } generator.Write(TokenType.Keyword, "event"); generator.Write(TokenType.Space, ' '); Type.Generate(generator); if (ExplicitImplementationType != null) { ExplicitImplementationType.Generate(generator); generator.Write(TokenType.Punctuation, '.'); } generator.OutputIdentifier(TokenType.Identifier, Name); generator.WriteLine(TokenType.Punctuation, ';'); }
public void Generate(CodeGenerator generator) { generator.EnterElement(this); Comments.Generate(generator); generator.Write(TokenType.Keyword, "namespace"); generator.Write(TokenType.Space, ' '); var names = Name.Split('.'); generator.OutputIdentifier(TokenType.Identifier, names[0]); for (int i = 1; i < names.Length; i++) { generator.Write(TokenType.Punctuation, '.'); generator.OutputIdentifier(TokenType.Identifier, names[i]); } generator.WriteOpeningBrace(); generator.Indent++; Usings.Generate(generator); Usings.Add(new CodeUsingImport(Name)); generator.PushUsingSet(Usings); bool needsBlankLine = false; foreach (var type in Types) { if (needsBlankLine) { generator.WriteLine(); } type.Generate(generator); needsBlankLine = true; } generator.PopUsingSet(); generator.Indent--; generator.WriteClosingBrace(); generator.ExitElement(); }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { if (!generator.JustWroteOpeningBrace && !generator.JustWroteVariableDeclaration && (emitOptions & CodeStatementEmitOptions.OmitSemiColon) == 0) { generator.WriteLine(); } generator.WriteBlankLineIfJustExitedBlock(); Type.Generate(generator); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.Identifier, Name); if (InitExpression != null) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, '='); generator.Write(TokenType.Space, ' '); InitExpression.Generate(generator); } generator.WriteStatementEnd(emitOptions); generator.JustWroteVariableDeclaration = true; }
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(); }
protected override void GenerateInner(CodeGenerator generator) { Modifiers.Generate(generator); if (IsPartial) { generator.Write(TokenType.Keyword, "partial"); generator.Write(TokenType.Space, ' '); } generator.Write(TokenType.Keyword, Keyword); generator.Write(TokenType.Space, ' '); generator.OutputIdentifier(TokenType.TypeIdentifier, Name); generator.OutputTypeParameters(TypeParameters); var firstTypeRef = true; foreach (CodeTypeReference typeRef in BaseTypes) { if (firstTypeRef) { generator.Write(TokenType.Space, ' '); generator.Write(TokenType.Punctuation, ':'); generator.Write(TokenType.Space, ' '); firstTypeRef = false; } else { generator.Write(TokenType.Punctuation, ','); generator.Write(TokenType.Space, ' '); } typeRef.Generate(generator); } foreach (var typeParameter in TypeParameters) { typeParameter.GenerateConstraints(generator); } if (Members.Count > 0) { generator.WriteOpeningBrace(); generator.Indent++; CodeCompositeTypeMember previousMember = null; var sortedMembers = GetMembersSortedByCategory(); foreach (var member in sortedMembers) { if (previousMember != null && (previousMember.Category != member.Category || ShouldLineSeparateIndividualMember(previousMember.Category))) { generator.WriteLine(); } member.Generate(generator, this); previousMember = member; } generator.Indent--; generator.WriteClosingBrace(); } else { generator.WriteEmptyBlock(); } }
protected override void GenerateInner(CodeGenerator generator) { generator.WriteLine(TokenType.Punctuation, '{'); Arguments.GenerateCommaSeparated(generator); generator.Write(TokenType.Punctuation, '}'); }
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(); }
protected override void GenerateInner(CodeGenerator generator, CodeStatementEmitOptions emitOptions) { generator.WriteBlankLineIfJustExitedBlock(); Comment.Generate(generator); generator.WriteLine(); }