www.digitalmars.com
Last update Mon Jun 19 20:51:25 2006

std.demangle

Demangle D mangled names.

char[] demangle(char[] name);
Demangle D mangled names.

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

Example:
This program reads standard in and writes it to standard out, pretty-printing any found D mangled names.
import std.stdio;
import std.ctype;
import std.demangle;

int main()
{   char[] buffer;
    bool inword;
    int c;

    while ((c = fgetc(stdin)) != EOF)
    {
	if (inword)
	{
	    if (c == '_' || isalnum(c))
		buffer ~= cast(char) c;
	    else
	    {
		inword = false;
		writef(demangle(buffer), cast(char) c);
	    }
	}
	else
	{   if (c == '_' || isalpha(c))
	    {	inword = true;
		buffer.length = 0;
		buffer ~= cast(char) c;
	    }
	    else
		writef(cast(char) c);
	}
    }
    if (inword)
	writef(demangle(buffer));
    return 0;
}