Hello julia-users,

I maintain a package that wraps a C++ library. One feature of this library
is called "tables". These tables are a widely used data format in my field
and they can store arrays of ints, floats, doubles, complex<float>s, and
strings (the library defines a custom string type but it can be easily
converted to char*).

My usual procedure for reading these arrays is to query the type and size
of the array and then read them into Julia by ccalling a function

void read_float_array(Table* table, char* name, float* output, int length)
{ ... }

where `table` is the table we are reading from, `name` is the name of the
array we want to read, `output` is a Julia array (with the correct element
type and size because we queried that earlier), and `length` is the total
length of `output`.

Naturally I have to do an extra copy to pack the data into `output`, but it
works nicely enough for ints, floats, doubles, etc. However I haven't
figured out how to get this to work for strings (all of which potentially
have a different length).

So what is the best way to get an array of strings from C back into Julia?
I want Julia to take ownership of the memory. Do I need to query the length
of each string ahead of time?

Thanks,
Michael

Reply via email to