[Vala] converting void** to int[]*, or other ways to generically assign arrays



Hi,

In providing a general purpose configuration facility, I register the
address of configured variables in a void*. The description of a configured
item is:
    string key;
    Type type;
    void *loc;
    string? deflt;
    int size;
    ConfigFlags flags;
and an example configuration definition would be:
Conf.ConfItem ("Priority", typeof (int32), &conf.priority, "30", 0, 0)
or
Conf.ConfItem ("Channels", typeof (int32[]), &conf.channels, "", 0, 0)
and an assignment is like:
*((int32*)it.loc) = int.parse (val);
This works fine with single values, but I cannot seem to find a way to
assign arrays.  If I use something like:
void **ptr = it.loc;
*ptr = to_int32_arr (list);
The array pointer is assigned, but the length (and I assume a reference
count) is not.

A problem is that I cannot figure out how to declare a pointer to an array
- declarations like: int32[] *target; don't compile.  Similarly an
assignment like:
*((int32[]*)it.loc) = to_int32_arr (list);
Doesn't compile. ( syntax error, expected identifier).

Surely there is a way to do this sort of thing straightforwardly in vala?
Is there a way to declare a pointer to an array?

Any assistance is welcome.

Regards,

Andrew Lees


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]