On Sunday, 24 May 2015 at 14:13:26 UTC, Martin Nowak wrote:
Would be interesting to get some opinions on this.

https://github.com/D-Programming-Language/druntime/pull/1282

BTW, I have one idea. We may declare the AA ABI:
AA is a pointer to the next layout:

__vtbl
N bytes of data

and __vtbl is a pointer to a struct:
struct AAVTBL
{
size_t function() size; //returns the size of AA object: N + (AABTBL*).sizeof
    void* get(void* aa, @somefields@)
    //another function
}

And it we teach compiler to use this ABI, we may say that any type which follows this ABI is a correct associative array. At the first stage, we may adapt the existing AA implementation to follow this ABI, and adapt the compiler to use it. After that, we will adble to write library AA (which also follows this ABI), which may be constructed as general D type, and casted to AA later.


Reply via email to