Report a bug
If you spot a problem with this page, click here to create a Bugzilla issue.
Improve this page
Quickly fork, edit online, and submit a pull request for this page. Requires a signed-in GitHub account. This works well for small changes. If you'd like to make larger changes you may want to consider using a local clone.

core.demangle

The demangle module converts mangled D symbols to a representation similar to what would have existed in code.
License:
Distributed under the Boost Software License 1.0. (See accompanying file LICENSE)
Authors:
Sean Kelly
pure nothrow @safe char[] demangle(return scope const(char)[] buf, return scope char[] dst = null, CXX_DEMANGLER __cxa_demangle = null);
Demangles D/C++ mangled names. If it is not a D/C++ mangled name, it returns its argument name.
Parameters:
const(char)[] buf The string to demangle.
char[] dst An optional destination buffer.
CXX_DEMANGLER __cxa_demangle optional C++ demangler
Returns:
The demangled name or the original string if the name is not a mangled D/C++ name.
pure nothrow @safe char[] demangleType(const(char)[] buf, char[] dst = null);
Demangles a D mangled type.
Parameters:
const(char)[] buf The string to demangle.
char[] dst An optional destination buffer.
Returns:
The demangled type name or the original string if the name is not a mangled D type.
pure nothrow @safe char[] reencodeMangled(return scope const(char)[] mangled);
reencode a mangled symbol name that might include duplicate occurrences of the same identifier by replacing all but the first occurence with a back reference.
Parameters:
const(char)[] mangled The mangled string representing the type
Returns:
The mangled name with deduplicated identifiers
pure nothrow @safe char[] mangle(T)(return scope const(char)[] fqn, return scope char[] dst = null);
Mangles a D symbol.
Parameters:
T The type of the symbol.
const(char)[] fqn The fully qualified name of the symbol.
char[] dst An optional destination buffer.
Returns:
The mangled name for a symbols of type T and the given fully qualified name.
Examples:
assert(mangle!int("a.b") == "_D1a1bi");
assert(mangle!(char[])("test.foo") == "_D4test3fooAa");
assert(mangle!(int function(int))("a.b") == "_D1a1bPFiZi");
pure nothrow @safe char[] mangleFunc(T : FT*, FT)(return scope const(char)[] fqn, return scope char[] dst = null)
if (is(FT == function));
Mangles a D function.
Parameters:
T function pointer type.
const(char)[] fqn The fully qualified name of the symbol.
char[] dst An optional destination buffer.
Returns:
The mangled name for a function with function pointer type T and the given fully qualified name.
enum string cPrefix;
C name mangling is done by adding a prefix on some platforms.
nothrow @trusted CXX_DEMANGLER getCXXDemangler();
Returns:
a CXX_DEMANGLER if a C++ stdlib is loaded