Esempio n. 1
0
        public string PrintNode(Node rootNode)
        {
            OutputStream sb = new OutputStream();

            rootNode.Print(sb);
            return(sb.ToString());
        }
        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());
        }
Esempio n. 3
0
        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);
            }

            if (n != null)
            {
                n = sb.Length;
            }
            return(sb.ToString());
        }
Esempio n. 4
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());
        }