"Phango" container classes
Bill Baxter
dnewsgroup at billbaxter.com
Mon Oct 1 12:29:29 PDT 2007
Bruce Adams wrote:
> Bill Baxter Wrote:
>
>> I just decided to do a little experiment to see how hard it would be to
>> make Tango's containers work with Phobos.
>>
>> Answer: less than an hour's work.
>>
>> Here's all it takes:
>> - Copy tango/util/collections/* to phango/util/collections/*.
>> - Copy tango/core/Exception.di to phango/core/Exception.d
>> - Replace all instances of 'tango' with 'phango'.
>> - Replace all instances of 'toUtf8' with 'toString'
>> - Comment out the IReader,IWriter imports in LinkMap.d
>> - Comment out all function prototypes in Exception.d.
>> - Make TracedException a simple subclass of Exception in Exception.d.
>> - Comment out anything else in Exception.d that gives compiler errors.
>>
>> Then voila! You have a set of container classes for Phobos.
>>
>> I did some rudimentary testing by copying all the unittests from the
>> containers to one big containers.d test program. After changing Cout's
>> to writefln's, all seems to work like a charm.
>>
>> So this is a possible option for anyone who would like a set of
>> Java-esque container classes to use with Phobos. Certainly a heck of a
>> lot easier than trying to port any implementation of C++ std::map to D. :-)
>>
>> --bb
>
> Good stuff. Have you posted the source anywhere?
No I mostly wanted to point out that the Tango containers are 95%
independent of the Tango-specific runtime features, and easy to port to
Phobos. And I wanted to suggest the cool name "Phango, evil twin
brother of Tangobos". :-) Maybe "Phandango" would be a better name,
though.
> I see tango uses Red-black trees in some places so in those its STL
> equivalent or better anyway.
Yes, the TreeSet and TreeMap should have same asymptotic performance
characteristics as STL std::set and std::map.
> I guess we will get all this stuff as
> soon as the tango / phobos incompatability is resolved.
That's what I'm thinking too. But I wanted to point out that anyone who
is desperate for containers today can extract them from Tango with less
than an hour's work of mostly mindless search and replace.
> Out of
> interest, if you just throw the all incompatibles out of tango what
> kind of phango are we left with? Does it look like a worthwhile job?
I suspect you'd still have most of it. Far easier than porting C++ code
anyway. Maybe the threading stuff is too dependent on tango's Object to
port easily. I'm not sure.
--bb
More information about the Digitalmars-d
mailing list