For cases where a void * -> void * collection is unacceptable, an included program could generate a type-safe wrapper. Boxing the pointer to the skiparray in a type-specific struct would have no runtime overhead, but allow static checking.
This should probably still be a pointer -- the implementation would need some rework to support storing larger struct keys or values directly, and that would probably hurt reuse.
For cases where a
void * -> void *
collection is unacceptable, an included program could generate a type-safe wrapper. Boxing the pointer to the skiparray in a type-specific struct would have no runtime overhead, but allow static checking.This should probably still be a pointer -- the implementation would need some rework to support storing larger struct keys or values directly, and that would probably hurt reuse.