英語版
このページの英語版を見る

std.demangle

D の揶揄を解きほぐす。
Authors:
Walter Bright, Thomas Kühne, Frits van Bommel

ソース std/demangle.d

pure nothrow @safe string demangle(string name);
揶揄されるDを解きほぐす。
Parameters:
string name 揶揄された名前
Returns:
string 。Dマングル名でない場合は、引数名を返す。
Examples:
// int b in module a
writeln(demangle("_D1a1bi")); // "int a.b"
// char array foo in module test
writeln(demangle("_D4test3fooAa")); // "char[] test.foo"
Examples:
このプログラムは標準入力を読み込み、標準出力に書き出す、 このプログラムは標準入力を読み込み、標準出力に書き出す。
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);
}