Associative Arrays max length? 32bit/64bit

Steven Schveighoffer via Digitalmars-d digitalmars-d at puremagic.com
Sat May 24 18:05:49 PDT 2014


On Sat, 24 May 2014 02:54:01 -0700, FG <home at fgda.pl> wrote:

> Bloody Thunderbird. I think I pressed Reply instead of Followup.  Sorry,  
> Steven.

It's OK, it went into my spam folder anyway ;)

> On 2014-05-19 15:31, Steven Schveighoffer wrote:
>> No, in that DMD file, the bucket is a tree, not a doubly-linked list.
>
> Silly me. A look at the body of delnodes should have made it clear that  
> it's a binary tree.
>
>> opCmp is not used in D's AA.
>
> Really? Then what does TypeInfo.compare(void*, void*) use? For example  
> here:
>
>      auto key_hash = keyti.getHash(pkey); Entry *e;
>      /* ... */
>      if (key_hash == e.hash) {
>          auto c = keyti.compare(pkey, e + 1);
>          if (c == 0) goto Lret;
>      }

You know what, you are right. I assumed it used keyti.equals. This is a  
bug imo, since opCmp will be used, and opEquals will be ignored. Just  
checking for opCmp == 0 is identical to opEquals, except some types can  
define opEquals but not opCmp.

But I don't know if it will get fixed. The whole AA runtime has to be  
redone at some point.

-Steve


More information about the Digitalmars-d mailing list