On 2010-07-06 07.21, Brad Roberts wrote:
On 7/3/2010 11:34 AM, Jacob Carlborg wrote:
On 2010-07-02 18.17, Ellery Newcomer wrote:
On 07/01/2010 08:16 PM, Adam Ruppe wrote:
http://dpldocs.info/std.demangle
import std.demangle;
import std.stdio;
void main(){
writeln(demangle("_D3std6random156__T11RandomCoverTAiTS3std6random98__T21MersenneTwisterEngineTkVi32Vi624Vi397Vi31Vk2567483615Vi11Vi7Vk2636928640Vi15Vk4022730752Vi18Z21MersenneTwisterEngineZ11RandomCover4saveMFNdZS3std6random156__T11RandomCoverTAiTS3std6random98__T21MersenneTwisterEngineTkVi32Vi624Vi397Vi31Vk2567483615Vi11Vi7Vk2636928640Vi15Vk4022730752Vi18Z21MersenneTwisterEngineZ11RandomCover"));
}
gives
_D3std6random156__T11RandomCoverTAiTS3std6random98__T21MersenneTwisterEngineTkVi32Vi624Vi397Vi31Vk2567483615Vi11Vi7Vk2636928640Vi15Vk4022730752Vi18Z21MersenneTwisterEngineZ11RandomCover4saveMFNdZS3std6random156__T11RandomCoverTAiTS3std6random98__T21MersenneTwisterEngineTkVi32Vi624Vi397Vi31Vk2567483615Vi11Vi7Vk2636928640Vi15Vk4022730752Vi18Z21MersenneTwisterEngineZ11RandomCover
std.demangle is incomplete, missing newer D2 features like return by reference,
and incorrectly handles floating point numbers in tempaltes. If it encounters
something it can't demangle it will just return the original mangled name.
Obviously any failures to demangle symbols produced by the compiler is a bug and
should be treated as such.. so.. please file 'em.
Thanks,
Brad
Already filed, issue 4323 and 3334.
--
Jacob Carlborg