Example #1
0
 public override void PrintLeft(OutputStream sb)
 {
     prefix.Print(sb);
     sb.Append(" (");
     sb.Append(suffix);
     sb.Append(')');
 }
 public override void PrintLeft(OutputStream sb)
 {
     sb.Append("construction vtable for ");
     firstType.Print(sb);
     sb.Append("-in-");
     secondType.Print(sb);
 }
 public override void PrintLeft(OutputStream sb)
 {
     // FIXME: This should demangle as "vector pixel".
     sb.Append("pixel vector[");
     sb.Append(dimension.AsString());
     sb.Append(']');
 }
Example #4
0
        public override void PrintLeft(OutputStream sb)
        {
            sb.UsingParameterPack(int.MaxValue, int.MaxValue, () => {
                int oldLength = sb.Length;
                child.Print(sb);

                if (sb.CurrentPackMax == int.MaxValue)
                {
                    sb.Append("...");
                    return;
                }

                if (sb.CurrentPackMax == 0)
                {
                    sb.Length = oldLength;
                }

                for (int i = 1, e = sb.CurrentPackMax; i < e; i++)
                {
                    sb.Append(", ");
                    sb.CurrentPackIndex = i;
                    child.Print(sb);
                }
            });
        }
 public override void PrintLeft(OutputStream sb)
 {
     ty.Print(sb);
     sb.Append('<');
     sb.Append(Protocol);
     sb.Append('>');
 }
 public override void PrintLeft(OutputStream sb)
 {
     sb.Append("\'lambda");
     sb.Append(count);
     sb.Append("\'(");
     @params.PrintWithComma(sb);
     sb.Append(')');
 }
Example #7
0
 public override void PrintLeft(OutputStream sb)
 {
     if (isDtor)
     {
         sb.Append('~');
     }
     sb.Append(baseName.BaseName);
 }
        public string GetFunctionDeclContextName(string buf, ref int?n)
        {
            if (!IsFunction)
            {
                return(null);
            }

            Node name = ((FunctionEncoding)RootNode).Name;

            OutputStream sb = new OutputStream();

KeepGoingLocalFunction:
            while (true)
            {
                if (name.Kind == ItaniumDemangleNodeType.AbiTagAttr)
                {
                    name = ((AbiTagAttr)name).BaseNode;
                    continue;
                }
                if (name.Kind == ItaniumDemangleNodeType.NameWithTemplateArgs)
                {
                    name = ((NameWithTemplateArgs)name).Name;
                    continue;
                }
                break;
            }

            switch (name.Kind)
            {
            case ItaniumDemangleNodeType.StdQualifiedName:
                sb.Append("std");
                break;

            case ItaniumDemangleNodeType.NestedName:
                ((NestedName)name).Qual.Print(sb);
                break;

            case ItaniumDemangleNodeType.LocalName:
                LocalName ln = ((LocalName)name);
                ln.Encoding.Print(sb);
                sb.Append("::");
                name = ln.Entity;
                goto KeepGoingLocalFunction;

            default:
                break;
            }

            sb.Append('\0');
            if (n != null)
            {
                n = sb.Length;
            }
            return(sb.ToString());
        }
Example #9
0
 public override void PrintLeft(OutputStream sb)
 {
     baseType.Print(sb);
     sb.Append(" vector[");
     if (dimension.IsNode)
     {
         dimension.AsNode().Print(sb);
     }
     else if (dimension.IsString)
     {
         sb.Append(dimension.AsString());
     }
     sb.Append(']');
 }
 public override void PrintLeft(OutputStream sb)
 {
     MemberType.PrintLeft(sb);
     if (MemberType.HasArray || MemberType.HasFunction)
     {
         sb.Append('(');
     }
     else
     {
         sb.Append(' ');
     }
     ClassType.Print(sb);
     sb.Append("::*");
 }
Example #11
0
		public override void PrintLeft(OutputStream sb) {
			if (printing)
				return;

			SwapAndRestore.Execute(ref printing, true, () => {
				KeyValuePair<ReferenceKind, Node> collapsed = Collapse(sb);
				collapsed.Value.PrintLeft(sb);
				if (collapsed.Value.HasArray)
					sb.Append(' ');
				if (collapsed.Value.HasArray || collapsed.Value.HasFunction)
					sb.Append('(');

				sb.Append((collapsed.Key == ReferenceKind.LValue) ? "&" : "&&");
			});
		}
 public override void PrintRight(OutputStream sb)
 {
     if (MemberType.HasArray || MemberType.HasFunction)
     {
         sb.Append(')');
     }
     MemberType.PrintRight(sb);
 }
Example #13
0
        public void PrintQuals(OutputStream sb)
        {
            if (quals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }

            if (quals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }

            if (quals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }
        }
        public string PrintNode(Node rootNode)
        {
            OutputStream sb = new OutputStream();

            rootNode.Print(sb);
            sb.Append('\0');
            return(sb.ToString());
        }
Example #15
0
 public override void PrintRight(OutputStream sb)
 {
     if (Pointee.Kind != ItaniumDemangleNodeType.ObjCProtoName || !((ObjCProtoName)Pointee).IsObjCObject)
     {
         if (Pointee.HasArray || Pointee.HasFunction)
         {
             sb.Append(')');
             Pointee.PrintRight(sb);
         }
     }
 }
 public override void PrintLeft(OutputStream sb)
 {
     if (ReturnType != null)
     {
         ReturnType.PrintLeft(sb);
         if (!ReturnType.HasRHSComponent)
         {
             sb.Append(' ');
         }
     }
     Name.Print(sb);
 }
Example #17
0
        public string GetFunctionParameters(string buf, ref int?n)
        {
            if (!IsFunction)
            {
                return(null);
            }

            NodeArray Params = ((FunctionEncoding)RootNode).Params;

            OutputStream sb = new OutputStream();

            sb.Append('(');
            Params.PrintWithComma(sb);
            sb.Append(')');

            if (n != null)
            {
                n = sb.Length;
            }
            return(sb.ToString());
        }
        public override void PrintLeft(OutputStream sb)
        {
            switch (SSK)
            {
            case SpecialSubKind.allocator:
                sb.Append("std::allocator");
                break;

            case SpecialSubKind.basic_string:
                sb.Append("std::basic_string");
                break;

            case SpecialSubKind.@string:
                sb.Append("std::basic_string<char, std::char_traits<char>, std::allocator<char> >");
                break;

            case SpecialSubKind.istream:
                sb.Append("std::basic_istream<char, std::char_traits<char> >");
                break;

            case SpecialSubKind.ostream:
                sb.Append("std::basic_ostream<char, std::char_traits<char> >");
                break;

            case SpecialSubKind.iostream:
                sb.Append("std::basic_iostream<char, std::char_traits<char> >");
                break;
            }
        }
        public override void PrintLeft(OutputStream sb)
        {
            switch (SSK)
            {
            case SpecialSubKind.allocator:
                sb.Append("std::allocator");
                break;

            case SpecialSubKind.basic_string:
                sb.Append("std::basic_string");
                break;

            case SpecialSubKind.@string:
                sb.Append("std::string");
                break;

            case SpecialSubKind.istream:
                sb.Append("std::istream");
                break;

            case SpecialSubKind.ostream:
                sb.Append("std::ostream");
                break;

            case SpecialSubKind.iostream:
                sb.Append("std::iostream");
                break;
            }
        }
Example #20
0
        public override void PrintRight(OutputStream sb)
        {
            if (printing)
            {
                return;
            }

            SwapAndRestore.Execute(ref printing, true, () => {
                KeyValuePair <ReferenceKind, Node> collapsed = Collapse(sb);
                if (collapsed.Value.HasArray || collapsed.Value.HasFunction)
                {
                    sb.Append(')');
                }
                collapsed.Value.PrintRight(sb);
            });
        }
Example #21
0
        public override void PrintRight(OutputStream sb)
        {
            sb.Append('(');
            fparams.PrintWithComma(sb);
            sb.Append(')');

            ret.PrintRight(sb);

            if (cvQuals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }

            if (cvQuals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }

            if (cvQuals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }

            switch (refQual)
            {
            case FunctionRefQual.LValue:
                sb.Append(" &");
                break;

            case FunctionRefQual.RValue:
                sb.Append(" &&");
                break;
            }

            if (exceptionSpec != null)
            {
                sb.Append(' ');
                exceptionSpec.Print(sb);
            }
        }
        public string GetFunctionReturnType(string buf, ref int?n)
        {
            if (!IsFunction)
            {
                return(null);
            }

            OutputStream sb  = new OutputStream();
            Node         ret = ((FunctionEncoding)RootNode).ReturnType;

            if (ret != null)
            {
                ret.Print(sb);
            }

            sb.Append('\0');
            if (n != null)
            {
                n = sb.Length;
            }
            return(sb.ToString());
        }
        public override void PrintRight(OutputStream sb)
        {
            sb.Append('(');
            Params.PrintWithComma(sb);
            sb.Append(')');
            if (ReturnType != null)
            {
                ReturnType.PrintRight(sb);
            }

            if (CVQuals.HasFlag(Qualifiers.Const))
            {
                sb.Append(" const");
            }
            if (CVQuals.HasFlag(Qualifiers.Volatile))
            {
                sb.Append(" volatile");
            }
            if (CVQuals.HasFlag(Qualifiers.Restrict))
            {
                sb.Append(" restrict");
            }

            if (RefQual.HasFlag(FunctionRefQual.LValue))
            {
                sb.Append(" &");
            }
            else if (RefQual.HasFlag(FunctionRefQual.RValue))
            {
                sb.Append(" &&");
            }

            if (attrs != null)
            {
                attrs.Print(sb);
            }
        }
Example #24
0
        public override void PrintLeft(OutputStream sb)
        {
            if (Pointee.Kind == ItaniumDemangleNodeType.ObjCProtoName && ((ObjCProtoName)Pointee).IsObjCObject)
            {
                ObjCProtoName objcProto = (ObjCProtoName)Pointee;
                sb.Append("id<");
                sb.Append(objcProto.Protocol);
                sb.Append('>');
            }
            else
            {
                Pointee.PrintLeft(sb);

                if (Pointee.HasArray)
                {
                    sb.Append(' ');
                }
                if (Pointee.HasArray || Pointee.HasFunction)
                {
                    sb.Append('(');
                }
                sb.Append('*');
            }
        }
 public override void PrintLeft(OutputStream sb)
 {
     ty.PrintLeft(sb);
     sb.Append(postfix);
 }
Example #26
0
 public override void PrintLeft(OutputStream sb)
 {
     ty.Print(sb);
     sb.Append(' ');
     sb.Append(ext);
 }
 public override void PrintLeft(OutputStream sb)
 {
     sb.Append('[');
     bindings.PrintWithComma(sb);
     sb.Append(']');
 }
Example #28
0
 public override void PrintLeft(OutputStream sb)
 {
     sb.Append(special);
     child.Print(sb);
 }
Example #29
0
 public override void PrintLeft(OutputStream sb)
 {
     sb.Append(Name);
 }
Example #30
0
 public override void PrintLeft(OutputStream sb)
 {
     Qual.Print(sb);
     sb.Append("::");
     Name.Print(sb);
 }