Spec-Zone.ru › D

std.demangle

Распаковывает D-имена, полученные в результате склейки.

Лицензия:
Boost License 1.0.
Авторы:
Walter Bright, Thomas Kühne, Frits van Bommel
Источник
std/demangle.d
pure nothrow @safe string demangle(string name);

Распаковывает D-имена, полученные в результате склейки.

Параметры:
string name имя, полученное в результате склейки
Возвращает:
Распакованное имя. Если это не имя, полученное в результате склейки D, возвращается исходное имя.
Примеры:
// int b in module a
writeln(demangle("_D1a1bi")); // "int a.b"
// char array foo in module test
writeln(demangle("_D4test3fooAa")); // "char[] test.foo"
Примеры:
Эта программа считывает стандартный ввод и выводит его на стандартный вывод, красиво форматируя любые обнаруженные D-имена, полученные в результате склейки.
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);
}

© 1999–2021 The D Language Foundation
Licensed under the Boost License 1.0.
https://dlang.org/phobos/std_demangle.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API