C to D: please help translate this weird macro

Ki Rill rill.ki at yahoo.com
Sat Sep 23 15:20:14 UTC 2023


On Wednesday, 20 September 2023 at 13:53:08 UTC, Ki Rill wrote:
> Here is the macro:
>
> ```C
> #define NK_CONTAINER_OF(ptr,type,member)\
>     (type*)((void*)((char*)(1 ? (ptr): &((type*)0)->member) - 
> NK_OFFSETOF(type, member)))
> ```
>
> I'm trying to translate the Nuklear GUI library to D 
> [here](https://github.com/rillki/nuklear-d/tree/nuklear-d-translation).

I did translate the library. Wow! That was a lot. It successfully 
builds, but does not work for long and crashes if I try to do 
something: it's either an assertion that fails or out of bounds 
array access is thrown by D. The only thing that works is 
pressing a button.

Now I need to somehow find and fix these things. Nuclear uses 
flexible array members in structs and I am a bit puzzled how to 
handle this without a major code refactor.


More information about the Digitalmars-d-learn mailing list