示例#1
0
        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);
        }
示例#2
0
		public virtual void Write(ITextColorWriter output, IMemberRef member, SimplePrinterFlags flags) =>
			new SimpleCSharpPrinter(output, flags).Write(member);
示例#3
0
 public virtual void Write(ITextColorWriter output, IMemberRef member, SimplePrinterFlags flags) =>
 new SimpleCSharpPrinter(output, flags).Write(member);
示例#4
0
		public virtual void Write(ISyntaxHighlightOutput output, IMemberRef member, SimplePrinterFlags flags) {
			new SimpleCSharpPrinter(output, flags).Write(member);
		}
示例#5
0
		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);
		}
示例#6
0
		public SimpleCSharpPrinter(ISyntaxHighlightOutput output, SimplePrinterFlags flags) {
			this.output = output;
			this.flags = flags;
			this.recursionCounter = 0;
			this.lineLength = 0;
			this.outputLengthExceeded = false;
			this.forceWrite = false;
		}
示例#7
0
 public virtual void Write(ISyntaxHighlightOutput output, IMemberRef member, SimplePrinterFlags flags)
 {
     new SimpleCSharpPrinter(output, flags).Write(member);
 }