D 1.0   D 2.0
About Japanese Translation

Last update Sun Apr 19 16:54:11 2009

std.demangle

Dのマングル化された名前をデマングルします

Source:
std/demangle.d

License:
Boost License 1.0

Authors:
Walter Bright, Thomas Kuehne, Frits van Bommel

string demangle(string name);
Dのマングル化された名前をデマングルします

Dのマングル名でない場合は、引数 name をそのまま返します

Example:
このプログラムは標準入力を読み込み、見つかったDのマングル名を全て 元に戻しながら標準出力へ書き出します。
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;
}