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()); }
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()); }
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()); }