public override void Output(OutputStream os, OutputFlags flags)
        {
            switch (sc)
            {
            case StorageClass.PrivateStatic:
                os.Append("private: static ");
                break;

            case StorageClass.PublicStatic:
                os.Append("public: static ");
                break;

            case StorageClass.ProtectedStatic:
                os.Append("protected: static ");
                break;

            default:
                break;
            }

            if (Type != null)
            {
                Type.OutputPre(os, flags);
                OutputSpaceIfNecessary(os);
            }

            Name.Output(os, flags);

            if (Type != null)
            {
                Type.OutputPost(os, flags);
            }
        }
示例#2
0
 /// <summary>
 /// Output handler.
 /// </summary>
 /// <param name="when">When the output occurred.</param>
 /// <param name="flags">The output flags.</param>
 /// <param name="text">The output text.</param>
 public void Output(DateTime when, OutputFlags flags, string text)
 {
     for (int i = 0; i < text.Length; ++i)
     {
         if (text[i] == '\r' || text[i] == '\n')
         {
             if (i + 1 < text.Length && text[i + 1] == '\n')
             {
                 ++i;
             }
             _start = true;
             if (_written == 0)
             {
                 AppendTimestamp(when);
             }
             _sw.WriteLine();
             _written = 0;
         }
         else
         {
             if (_start)
             {
                 _start = false;
                 AppendTimestamp(when);
             }
             _sw.Write(text[i]);
             ++_written;
         }
     }
     _sw.Flush();
 }
 public override void Output(OutputStream os, OutputFlags flags)
 {
     os.Append("operator");
     OutputTemplateParameters(os, flags);
     os.Append(' ');
     TargetType.Output(os, flags);
 }
        public override void Output(OutputStream os, OutputFlags flags)
        {
            switch (Char)
            {
            case CharKind.Wchar:
                os.Append("L\"");
                break;

            case CharKind.Char:
                os.Append("\"");
                break;

            case CharKind.Char16:
                os.Append("u\"");
                break;

            case CharKind.Char32:
                os.Append("U\"");
                break;
            }
            os.Append(DecodedString);
            os.Append("\"");
            if (IsTruncated)
            {
                os.Append("...");
            }
        }
示例#5
0
        public override void OutputPost(OutputStream os, OutputFlags flags)
        {
            os.Append('[');
            OutputDimensionsImpl(os, flags);
            os.Append(']');

            ElementType.OutputPost(os, flags);
        }
示例#6
0
        public override void OutputPre(OutputStream os, OutputFlags flags)
        {
            if (Pointee.Kind == NodeKind.FunctionSignature)
            {
                FunctionSignatureNode sig = (FunctionSignatureNode)Pointee;
                sig.OutputPre(os, OutputFlags.NoCallingConvention);
            }
            else
            {
                Pointee.OutputPre(os, flags);
            }

            OutputSpaceIfNecessary(os);

            if (Quals.HasFlag(Qualifiers.Unaligned))
            {
                os.Append("__unaligned ");
            }

            if (Pointee.Kind == NodeKind.ArrayType)
            {
                os.Append('(');
            }
            else if (Pointee.Kind == NodeKind.FunctionSignature)
            {
                os.Append('(');
                FunctionSignatureNode sig = (FunctionSignatureNode)Pointee;
                OutputCallingConvention(os, sig.CallConvention);
                os.Append(' ');
            }

            if (ClassParent != null)
            {
                ClassParent.Output(os, flags);
                os.Append("::");
            }

            switch (Affinity)
            {
            case PointerAffinity.Pointer:
                os.Append('*');
                break;

            case PointerAffinity.Reference:
                os.Append('&');
                break;

            case PointerAffinity.RValueReference:
                os.Append("&&");
                break;

            default:
                Assert.True(false);
                break;
            }

            OutputQualifiers(os, Quals, false, false);
        }
示例#7
0
        public override void OutputPost(OutputStream os, OutputFlags flags)
        {
            if (Pointee.Kind == NodeKind.ArrayType || Pointee.Kind == NodeKind.FunctionSignature)
            {
                os.Append(')');
            }

            Pointee.OutputPost(os, flags);
        }
示例#8
0
 public override void Output(OutputStream os, OutputFlags flags)
 {
     if (IsDestructor)
     {
         os.Append('~');
     }
     Class.Output(os, flags);
     OutputTemplateParameters(os, flags);
 }
示例#9
0
        private void AssertOutput(Action f, string expectedOutput, OutputFlags flags)
        {
            var error = CompareOutput(f, expectedOutput, flags);

            if (error != null)
            {
                Assert(false, error);
            }
        }
示例#10
0
 public void OutputTest(
     [PexAssumeUnderTest] StreamOutputListener target,
     DateTime when,
     OutputFlags flags,
     string text
     )
 {
     target.Output(when, flags, text);
     // TODO: add assertions to method StreamOutputListenerTest.OutputTest(StreamOutputListener, DateTime, OutputFlags, String)
 }
示例#11
0
        void OutputOneDimension(OutputStream os, OutputFlags flags, Node n)
        {
            Assert.True(n.Kind == NodeKind.IntegerLiteral);
            IntegerLiteralNode iln = (IntegerLiteralNode)n;

            if (iln.Value != 0)
            {
                iln.Output(os, flags);
            }
        }
示例#12
0
 public override void Output(OutputStream os, OutputFlags flags)
 {
     os.Append("`local static guard'");
     if (ScopeIndex > 0)
     {
         os.Append('{');
         os.Append(ScopeIndex);
         os.Append('}');
     }
 }
示例#13
0
 public override void Output(OutputStream os, OutputFlags flags)
 {
     OutputQualifiers(os, Quals, false, true);
     Name.Output(os, flags);
     if (TargetName != null)
     {
         os.Append("{for `");
         TargetName.Output(os, flags);
         os.Append("'}");
     }
 }
 public override void Output(OutputStream os, OutputFlags flags)
 {
     os.Append("`RTTI Base Class Descriptor at (");
     os.Append(NVOffset);
     os.Append(", ");
     os.Append(VBPtrOffset);
     os.Append(", ");
     os.Append(VBTableOffset);
     os.Append(", ");
     os.Append(Flags);
     os.Append(")'");
 }
示例#15
0
        public MemberCompletionData(INode member, OutputFlags flags)
        {
            this.flags = flags;
            SetMember(member);
            DisplayFlags = DisplayFlags.DescriptionHasMarkup;
            IMember m = Member as IMember;

            if (m != null && m.IsObsolete)
            {
                DisplayFlags |= DisplayFlags.Obsolete;
            }
        }
示例#16
0
        void OutputDimensionsImpl(OutputStream os, OutputFlags flags)
        {
            if (Dimensions.Count() == 0)
            {
                return;
            }

            OutputOneDimension(os, flags, Dimensions[0]);
            for (int i = 1; i < Dimensions.Count(); i++)
            {
                os.Append("][");
                OutputOneDimension(os, flags, Dimensions[i]);
            }
        }
示例#17
0
        public override void OutputPre(OutputStream os, OutputFlags flags)
        {
            switch (PrimKind)
            {
            case PrimitiveKind.Void: os.Append("void"); break;

            case PrimitiveKind.Bool: os.Append("bool"); break;

            case PrimitiveKind.Char: os.Append("char"); break;

            case PrimitiveKind.Schar: os.Append("signed char"); break;

            case PrimitiveKind.Uchar: os.Append("unsigned char"); break;

            case PrimitiveKind.Char16: os.Append("char16_t"); break;

            case PrimitiveKind.Char32: os.Append("char32_t"); break;

            case PrimitiveKind.Short: os.Append("short"); break;

            case PrimitiveKind.Ushort: os.Append("unsigned short"); break;

            case PrimitiveKind.Int: os.Append("int"); break;

            case PrimitiveKind.Uint: os.Append("unsigned int"); break;

            case PrimitiveKind.Long: os.Append("long"); break;

            case PrimitiveKind.Ulong: os.Append("unsigned long"); break;

            case PrimitiveKind.Int64: os.Append("__int64"); break;

            case PrimitiveKind.Uint64: os.Append("unsigned __int64"); break;

            case PrimitiveKind.Wchar: os.Append("wchar_t"); break;

            case PrimitiveKind.Float: os.Append("float"); break;

            case PrimitiveKind.Double: os.Append("double"); break;

            case PrimitiveKind.Ldouble: os.Append("long double"); break;

            case PrimitiveKind.Nullptr: os.Append("std::nullptr_t"); break;
            }
            OutputQualifiers(os, Quals, true, false);
        }
        public override void Output(OutputStream os, OutputFlags flags)
        {
            if (ThunkOffsetCount > 0)
            {
                os.Append('{');
            }
            else if (Affinity == PointerAffinity.Pointer)
            {
                os.Append('&');
            }

            if (Symbol != null)
            {
                Symbol.Output(os, flags);
                if (ThunkOffsetCount > 0)
                {
                    os.Append(", ");
                }
            }

            if (ThunkOffsetCount > 0)
            {
                os.Append(ThunkOffsets[0]);
            }

            for (int i = 1; i < ThunkOffsetCount; i++)
            {
                os.Append(", ");
                os.Append(ThunkOffsets[i]);
            }

            if (ThunkOffsetCount > 0)
            {
                os.Append('}');
            }
        }
			public CompletionData Add (object obj, OutputFlags additionalFlags)
			{
				Namespace ns = obj as Namespace;
				if (ns != null) {
					if (!data.ContainsKey (ns.Name))
						data.Add (ns.Name, null);
					if (namespacesInList.Contains (ns.Name)) {
						return null;
					}
					namespacesInList.Add (ns.Name);
					return CompletionList.Add (ns.Name, ns.StockIcon, ns.Documentation);
				}
				
				IReturnType rt = obj as IReturnType;
				if (rt != null) {
					OutputFlags flags = OutputFlags.ClassBrowserEntries | OutputFlags.HideArrayBrackets;
					bool foundNamespace = IsNamespaceInScope (rt.Namespace);
					if (FullyQualify || !foundNamespace && (NamePrefix.Length == 0 || !rt.Namespace.StartsWith (NamePrefix)) && !rt.Namespace.EndsWith ("." + NamePrefix))
						flags |= OutputFlags.UseFullName;
					IType resolvedType = dom.GetType (rt);
					if (inheritanceTree == null && declaringType != null)
						inheritanceTree = new List<IType>(dom.GetInheritanceTree (declaringType));
					if (resolvedType != null && resolvedType.DeclaringType != null && inheritanceTree != null && inheritanceTree.Any (t => resolvedType.DeclaringType.DecoratedFullName == t.DecoratedFullName)) {
						return CompletionList.Add (rt.Name, "md-class");
					}
					string returnTypeString = ambience.GetString (rt, flags);
					
					if (!data.ContainsKey (returnTypeString))
						data.Add (returnTypeString, null);
					return CompletionList.Add (returnTypeString, "md-class");
				}
				
				IMember member = obj as IMember;
				if (member != null && !String.IsNullOrEmpty (member.Name)) {
					OutputFlags flags = OutputFlags.IncludeGenerics | OutputFlags.HideArrayBrackets | additionalFlags;
					
					return AddMemberCompletionData (member, flags);
				}
				if (obj is IParameter || obj is LocalVariable)
					AddMemberCompletionData (obj, OutputFlags.IncludeParameterName);
				
				if (obj is string) {
					string str = (string)obj;
					if (!data.ContainsKey (str))
						data.Add (str, null);
					return CompletionList.Add (str, "md-literal");
				}
				return null;
			}
			MemberCompletionData AddMemberCompletionData (object member, OutputFlags flags)
			{
				MemberCompletionData newData = new MemberCompletionData (member as INode, flags);
				newData.HideExtensionParameter = HideExtensionParameter;
				string memberKey = newData.CompletionText;
				if (member is IMember) {
					newData.CompletionCategory = GetCompletionCategory (((IMember)member).DeclaringType);
				}
				List<MemberCompletionData> existingData;
				data.TryGetValue (memberKey, out existingData);
				
				if (existingData != null) {
					IBaseMember a = member as IBaseMember;
					foreach (MemberCompletionData md in existingData) {
						IBaseMember b = md.Member as IBaseMember;
						if (a == null || b == null || a.MemberType == b.MemberType) {
							md.AddOverload (newData);
							newData = null;
							break;
						} 
					}
					if (newData != null) {
						CompletionList.Add (newData);
						data[memberKey].Add (newData);
					}
				} else {
					CompletionList.Add (newData);
					data[memberKey] = new List<MemberCompletionData> ();
					data[memberKey].Add (newData);
				}
				return newData;
			}
示例#21
0
 public OutputSettings(OutputFlags outputFlags)
 {
     this.OutputFlags = outputFlags;
 }
示例#22
0
		public string GetString (string nameSpace, OutputFlags flags)
		{
			return GetString (nameSpace, new OutputSettings (flags));
		}
示例#23
0
		public string GetString (IParameterizedMember member, IParameter parameter, OutputFlags flags)
		{
			return GetParameterString (member, parameter, new OutputSettings (flags));
		}
示例#24
0
		public string GetString (ITypeDefinition type, OutputFlags flags)
		{
			return GetString ((IEntity)type, new OutputSettings (flags));
		}
示例#25
0
		public string GetString (IType type, OutputFlags flags)
		{
			return GetString (type, new OutputSettings (flags));
		}
示例#26
0
/*		public string GetString (ITypeReference reference, OutputSettings settings)
		{
			var result = GetTypeReferenceString (reference, settings);
			return settings.PostProcess (reference, result);
		}*/
		
		public string GetString (IEntity entity, OutputFlags flags)
		{
			return GetString (entity, new OutputSettings (flags));
		}
		public string GetString (INode domVisitable, OutputFlags flags)
		{
			return GetString (domVisitable, new OutputSettings (flags));
		}
            MemberCompletionData AddMemberCompletionData(object member, OutputFlags flags)
            {
                MemberCompletionData newData = new MemberCompletionData (member as INode, flags);
                newData.HideExtensionParameter = HideExtensionParameter;
                string memberKey = newData.CompletionText;

                MemberCompletionData existingData;
                if (data.TryGetValue (memberKey, out existingData)) {
                    if (existingData == null)
                        return null;
                    existingData.AddOverload (newData);
                } else {
                    CompletionList.Add (newData);
                    data [memberKey] = newData;
                }
                return newData;
            }