On Sunday, 10 June 2018 at 17:59:12 UTC, Joe wrote:
That worked but now I have a more convoluted case: a C array of
pointers to int pointers, e.g.,
int **xs[] = {x1, x2, 0};
int *x1[] = {x1a, 0};
int *x2[] = {x2a, x2b, 0};
...
int x2a[] = { 1, 3, 5, 0};
Only the first line is exposed (and without the
initialization). So I tried:
extern(C) __gshared extern int**[1] xs;
The D compiler accepts that, but just about any manipulation
gets screamed at, usually with Error: only one index allowed to
index int. Note that I'm trying to access the ints, i.e., in C
something like xs[1][0][2] to access the 5 in x2a. Do I have to
mimic the intermediate C arrays?
I don't know why I didn't try this first. It seems that the D
equivalent of C's xs[1][0][2] is simply xs.ptr[[1][0][2].