View source code
Display the source code in std/demangle.d from which this page was generated on github.
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 local clone.

Function std.demangle.demangle

Demangle D mangled names.

string demangle (
  string name
) pure nothrow @safe;

Parameters

NameDescription
name the mangled name

Returns

A string. If it is not a D mangled name, it returns its argument name.

Example

// int b in module a
writeln(demangle("_D1a1bi")); // "int a.b"
// char array foo in module test
writeln(demangle("_D4test3fooAa")); // "char[] test.foo"

Example

This program reads standard in and writes it to standard out, pretty-printing any found D mangled names.

import std.ascii : isAlphaNum;
import std.algorithm.iteration : chunkBy, joiner, map;
import std.algorithm.mutation : copy;
import std.conv : to;
import std.demangle : demangle;
import std.functional : pipe;
import std.stdio : stdin, stdout;

void main()
{
    stdin.byLineCopy
        .map!(
            l => l.chunkBy!(a => isAlphaNum(a) || a == '_')
                  .map!(a => a[1].pipe!(to!string, demangle)).joiner
        )
        .copy(stdout.lockingTextWriter);
}

Authors

Walter Bright, Thomas Kühne, Frits van Bommel

License

Boost License 1.0.