www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - AA implementation question

reply "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
I'm playing around with writing an AA implementation that doesn't
require typeinfos to work, using aaA.d as reference. One thing I don't
quite understand: what's binit used for, and why is it necessary? It
seems redundant to me, since D always initializes pointer arrays to
nulls (right?).


T

-- 
There are three kinds of people in the world: those who can count, and those
who can't.
Mar 07 2012
parent reply "Martin Nowak" <dawg dawgfoto.de> writes:
On Thu, 08 Mar 2012 06:12:20 +0100, H. S. Teoh <hsteoh quickfur.ath.cx>  
wrote:

 I'm playing around with writing an AA implementation that doesn't
 require typeinfos to work, using aaA.d as reference. One thing I don't
 quite understand: what's binit used for, and why is it necessary? It
 seems redundant to me, since D always initializes pointer arrays to
 nulls (right?).

It's used to avoid extra allocations when only very few buckets are needed.
Mar 07 2012
next sibling parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Thu, Mar 08, 2012 at 06:37:13AM +0100, Martin Nowak wrote:
 On Thu, 08 Mar 2012 06:12:20 +0100, H. S. Teoh
 <hsteoh quickfur.ath.cx> wrote:
 
I'm playing around with writing an AA implementation that doesn't
require typeinfos to work, using aaA.d as reference. One thing I
don't quite understand: what's binit used for, and why is it
necessary? It seems redundant to me, since D always initializes
pointer arrays to nulls (right?).

It's used to avoid extra allocations when only very few buckets are needed.

Ah, that makes sense. Thanks! T -- It's bad luck to be superstitious. -- YHL
Mar 07 2012
prev sibling next sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
FWIW Steven's dcollections has a hash implementation, you could take a
look (it's Boost-licensed):

http://www.dsource.org/projects/dcollections
Mar 08 2012
prev sibling parent Andrej Mitrovic <andrej.mitrovich gmail.com> writes:
By hash I mean map/AA.
Mar 08 2012