Hello all,
I am having trouble understanding the array usage in the C binding, and I hope
someone can point out the error in my understanding. I am trying to implement a
service method with the signature "void test(byte[][] data)". Unfortunately, I
seem unable to provide a value from a native char** pointer that successfully
passes the validator.
After trying several implementations, I have a naïve implementation which does
the following:
char **s = …; // array of variable length strings, like { "this", "is", "a",
"test" }
int nelts = …; // length of 's'
etch_arrayvalue * av = new_arrayvalue(ETCHTYPEB_BYTE, NULL, 2, nelts, 1, 0, 0);
int i, j;
for (i=0; i < nelts; i++) {
int len = strlen(s[i]);
etch_arrayvalue *elt = new_arrayvalue(ETCHTYPEB_BYTE, NULL, 1, len, 1, 0, 0);
for (j=0; j < len; j++) {
etch_byte *b = new_byte(s[i][j]);
arrayvalue_add(elt, b);
}
arrayvalue_add(av, let);
}
remote->test(remote, av);
I also tried variations on arrayvalue_from with native arrays, etc., but could
not get it to work. The only thing I could get to work was to send a native
array with fixed dimensions, but that does not work for our case.
Thanks for any assistance!
--thomas