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