Phobos 'collections' question

Steven Schveighoffer schveiguy at yahoo.com
Wed Oct 26 07:00:54 PDT 2011


On Mon, 24 Oct 2011 22:50:33 -0400, Marco Leise <Marco.Leise at gmx.de> wrote:

> Am 14.09.2011, 18:57 Uhr, schrieb Steven Schveighoffer  
> <schveiguy at yahoo.com>:
>
>> On Wed, 14 Sep 2011 12:50:25 -0400, Timon Gehr <timon.gehr at gmx.ch>  
>> wrote:
>>
>>> On 09/14/2011 04:08 PM, Robert McGinley wrote:
>>>> Hey all,
>>>> Mostly as an exercise I'm considering writing an ArrayList, AVL tree,  
>>>> and possible other standard data structures in D.  I have two  
>>>> questions.
>>>> 1.) If completed should I send these around for review and inclusion  
>>>> or do they not belong in phobos?
>>>> 2.) If I'm working on including these in phobos should I put them in  
>>>> container.d (that has RedBlack Trees and a Singlelinked List) or is  
>>>> there a better location?
>>>> Rob
>>>
>>> As far as I know, the reason why std.container is not under active  
>>> development, is that phobos does not have an allocator abstraction  
>>> yet. As soon as there is one, the module will probably undergo some  
>>> breaking changes. But I think the more well implemented standard data  
>>> structures there are in Phobos, the better. I think as soon as the  
>>> standard allocator interface is settled on, your efforts will be  
>>> welcome. Steve can probably answer your question better though.
>>
>> Certainly more containers are welcome.
>>
>> The review for getting things into phobos is done via github.  You do  
>> not need write permission to generate a pull request.  Yes, they should  
>> all be put into std.container for now.
>>
>> I'd recommend doing one pull request per container, that way one  
>> container type does not detract from the inclusion of another.
>>
>> I don't think that lack of allocators should prevent implementing  
>> containers.  My collection package  
>> (www.dsource.org/projects/dcollections) uses allocators, and they're  
>> pretty orthogonal to the operation of the container.
>>
>> BTW, feel free to use any ideas/code from dcollections, it's also boost  
>> licensed.  Note that the red black tree implementation in phobos is  
>> copied verbatim from dcollections.  If you implement a good AVL tree, I  
>> might even steal it for dcollections ;)  (with attribution, of course!)
>>
>> -Steve
>
> I recently had the need for a priority queue and your library was the  
> obvious choice. But it did the same that my code did when I ported it  
> from 32-bit to 64-bit: array.length is no longer a uint, but a ulong, so  
> the code breaks. So my advice is to use size_t when you deal with a  
> natural number that can be up to the amount of addressable memory.

The latest (unreleased) version of dcollections uses size_t and ptrdiff_t  
everywhere instead of uint and int.  See here:  
http://www.dsource.org/projects/dcollections/ticket/14

I have to release a new beta soon, especially when inout works in the  
latest impending compiler release.

-Steve


More information about the Digitalmars-d mailing list