18cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
28cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @file demangle_symbol.h
38cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Demangle a C++ symbol
48cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
58cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Copyright 2002 OProfile authors
68cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @remark Read the file COPYING
78cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
88cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @author John Levon
98cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
108cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
118cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#ifndef DEMANGLE_SYMBOL_H
128cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#define DEMANGLE_SYMBOL_H
138cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
148cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#include <string>
158cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
168cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/// demangle type: specify what demangling we use
178cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddenum demangle_type {
188cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/// no demangling.
198cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	dmt_none,
208cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/// use cplus_demangle()
218cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	dmt_normal,
228cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/// normal plus a pass through the regular expression to simplify
238cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	/// the mangled name
248cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd	dmt_smart
258cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd};
268cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
278cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd/**
288cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * demangle_symbol - demangle a symbol
298cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @param name the mangled symbol name
308cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * @return the demangled name
318cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
328cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * Demangle the symbol name, if the global
338cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * variable demangle is true.
348cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd *
358cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * The demangled name lists the parameters and type
368cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd * qualifiers such as "const".
378cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd */
388cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Doddstd::string const demangle_symbol(std::string const & name);
398cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd
408cfa702f803c5ef6a2b062a489a1b2cf66b45b5eMike Dodd#endif // DEMANGLE_SYMBOL_H
41