Who has a std.demangle that works with 0.177?

Lionello Lunesu lionello at lunesu.remove.com
Thu Dec 21 14:05:38 PST 2006


Thanks! I'll give it a try..

L.

"Lutger" <lutger.blijdestijn at gmail.com> wrote in message 
news:eme81p$1m6n$1 at digitaldaemon.com...
> Lionello Lunesu wrote:
>> I'm writing a little program that generates a .di file from obj/lib.
>>
>> Needless to say, it makes heavy use of std.demangle, but that module was 
>> not updated for the changed name mangling in 0.177. My program works 
>> 'fine' for 0.176, but not for 0.177 (see results at end of mail).
>>
>> I saw some bugzilla entries related to the name mangling, but they are 
>> all pre-0.176, so not related to my problem.
>>
>> Can anybody tell me what needs to change in std.demangle? A patch 
>> perhaps?
>>
>> Thanks,
>>
>> L.
>
> Try this:
>
> insert the following at around line 200:
>     case 'M':
>     p = parseType();
>     goto L1;
>
> This will take care of types that need a this pointer.
>
> Then for nested types do as in that patch, change the following in 
> std.demangle (line 463-465) from:
>
>     if (ni != name.length)
>         goto Lnot;
>     return result;
>
> to:
>
>     while(ni < name.length)
>     {
>         result ~= " . " ~ parseType(parseQualifiedName());
>     }
>
>     if (ni != name.length)
>         goto Lnot;
>     return result;
>
> I believe that's it, correct me if I'm wrong.
>
> 





More information about the Digitalmars-d mailing list