#ifndef MRT_DEMANGLER_H
#define MRT_DEMANGLER_H
#include <algorithm>
#include "Demangler/Demangler.h"
namespace MapleRuntime {
inline Cangjie::Demangler<MapleRuntime::CString> CreateNativeDemangler(const CString& mangled)
{
#ifdef __APPLE__
return Cangjie::Demangler<MapleRuntime::CString>(mangled, true, "::", [](const CString& str) { return str; });
#else
return Cangjie::Demangler<MapleRuntime::CString>(mangled);
#endif
}
inline Cangjie::Demangler<MapleRuntime::CString> CreateNativeDemangler(const CString& mangled, const CString& scopeRes)
{
#ifdef __APPLE__
return Cangjie::Demangler<MapleRuntime::CString>(mangled, true, scopeRes, [](const CString& str) { return str; });
#else
return Cangjie::Demangler<MapleRuntime::CString>(mangled, scopeRes);
#endif
}
inline Cangjie::Demangler<MapleRuntime::CString> CreateNativeDemangler(const CString& mangled, const CString& scopeRes,
std::function<CString(const CString&)> genericParamFilter)
{
#ifdef __APPLE__
return Cangjie::Demangler<MapleRuntime::CString>(mangled, true, scopeRes, genericParamFilter);
#else
return Cangjie::Demangler<MapleRuntime::CString>(mangled, scopeRes, genericParamFilter);
#endif
}
}
#endif