Пример #1
0
        public static void Demangle(this IEnumerable <IParsingResult> elements, DemanglingContext context, string separator = ", ")
        {
            bool needSeparator = false;

            foreach (IParsingResult element in elements)
            {
                if (needSeparator)
                {
                    context.Writer.Append(separator);
                }
                element.Demangle(context);
                needSeparator = true;
            }
        }
Пример #2
0
        /// <summary>
        /// Demangles the specified C++ linker symbol input.
        /// </summary>
        /// <param name="input">C++ linker symbol input</param>
        /// <param name="gccCompatibleDemangle">if set to <c>true</c> result will be GCC compatible.</param>
        /// <returns>
        /// Demangled C++ linker symbol input.
        /// </returns>
        /// <remarks>
        /// If input is not in correct format, original input is returned.
        /// </remarks>
        public static string Demangle(string input, bool gccCompatibleDemangle = true)
        {
            ParsingContext parsingContext = CreateContext(input);
            IParsingResult result         = Parse(parsingContext);

            if (result != null)
            {
                DemanglingContext demanglingContext = DemanglingContext.Create(parsingContext, gccCompatibleDemangle);

                result.Demangle(demanglingContext);
                return(demanglingContext.Writer.Text);
            }

            return(input);
        }