static SimplePrinterFlags GetFlags(IBreakpointContext ctx) { SimplePrinterFlags flags = 0; if (ctx.ShowModuleNames) { flags |= SimplePrinterFlags.ShowModuleNames; } if (ctx.ShowParameterTypes) { flags |= SimplePrinterFlags.ShowParameterTypes; } if (ctx.ShowParameterNames) { flags |= SimplePrinterFlags.ShowParameterNames; } if (ctx.ShowOwnerTypes) { flags |= SimplePrinterFlags.ShowOwnerTypes; } if (ctx.ShowReturnTypes) { flags |= SimplePrinterFlags.ShowReturnTypes; } if (ctx.ShowNamespaces) { flags |= SimplePrinterFlags.ShowNamespaces; } if (ctx.ShowTypeKeywords) { flags |= SimplePrinterFlags.ShowTypeKeywords; } return(flags); }
public virtual void Write(ITextColorWriter output, IMemberRef member, SimplePrinterFlags flags) => new SimpleCSharpPrinter(output, flags).Write(member);
public virtual void Write(ISyntaxHighlightOutput output, IMemberRef member, SimplePrinterFlags flags) { new SimpleCSharpPrinter(output, flags).Write(member); }
void WriteType(ITypeDefOrRef type, bool useNamespaces, bool useTypeKeywords) { var td = type as TypeDef; if (td == null && type is TypeRef) td = ((TypeRef)type).Resolve(); if (td == null || td.GenericParameters.Count == 0 || (td.DeclaringType != null && td.DeclaringType.GenericParameters.Count >= td.GenericParameters.Count)) { var oldFlags = this.flags; this.flags &= ~(SimplePrinterFlags.ShowNamespaces | SimplePrinterFlags.ShowTypeKeywords); if (useNamespaces) this.flags |= SimplePrinterFlags.ShowNamespaces; if (useTypeKeywords) this.flags |= SimplePrinterFlags.ShowTypeKeywords; Write(type); this.flags = oldFlags; return; } var typeSig = type.ToTypeSig(); int numGenParams = td.GenericParameters.Count; if (type.DeclaringType != null) { var oldFlags = this.flags; this.flags &= ~(SimplePrinterFlags.ShowNamespaces | SimplePrinterFlags.ShowTypeKeywords); if (useNamespaces) this.flags |= SimplePrinterFlags.ShowNamespaces; Write(type.DeclaringType); this.flags = oldFlags; OutputWrite(".", TextTokenKind.Operator); numGenParams = numGenParams - td.DeclaringType.GenericParameters.Count; if (numGenParams < 0) numGenParams = 0; } else if (useNamespaces && !UTF8String.IsNullOrEmpty(td.Namespace)) { foreach (var ns in td.Namespace.String.Split('.')) { WriteIdentifier(ns, TextTokenKind.NamespacePart); OutputWrite(".", TextTokenKind.Operator); } } WriteIdentifier(RemoveGenericTick(td.Name), TextTokenKindUtils.GetTextTokenType(td)); WriteToken(type); var genParams = td.GenericParameters.Skip(td.GenericParameters.Count - numGenParams).ToArray(); WriteGenerics(genParams, TextTokenKind.TypeGenericParameter); }
public SimpleCSharpPrinter(ISyntaxHighlightOutput output, SimplePrinterFlags flags) { this.output = output; this.flags = flags; this.recursionCounter = 0; this.lineLength = 0; this.outputLengthExceeded = false; this.forceWrite = false; }