Como eu converto para digitar SWIGTYPE_p_void em ligações Java geradas por SWIG?

Estou desenvolvendo algumas ligações Java geradas por SWIG para uma biblioteca C. A biblioteca contém funções que usam parâmetros do tipovoid *. No lado C, estes normalmente seriam passados ​​como um ponteiro para uma matriz do tipofloat ouint lançar paravoid *. Nas ligações Java geradas, isso resulta em métodos que usam parâmetros do tipoSWIGTYPE_p_void.

Qual é a melhor maneira de construir uma matriz de floats / ints nas ligações Java para que elas possam ser passadas como tipoSWIGTYPE_p_void para esses métodos?

No momento estou definindo uma função auxiliar no meu arquivo example.i:

void *floata_to_voidp(float f[])
{
    return (void *)f;
}

E então no lado do Java fazendo algo assim:

float foo[] = new float[2];
SWIGTYPE_p_void av = null;

// do something with foo

av = example.floata_to_voidp(foo);
example.myfunction(av);

Isso parece um pouco feio, especialmente porque eu também precisaria de uminta_to_voidp() etc no meu arquivo de interface SWIG para cada conversão de tipo que eu quero suportar.

Existe uma maneira de fazer isso sem funções auxiliares e envolvendo menos código extra no lado do Java para converter tipos de dados?

ATUALIZAÇÃO (17/6/12): para dar detalhes adicionais à questão: o que eu estou tentando fazer é pegar um conjunto de funções C, com protótipoint foo(const float *data, int N, const void *argv, float *result) e mapeá-los para métodos no lado Java, onde uma matriz de tipo arbitrário pode ser passada comoargv. Observe queargv éconst void * e nãovoid *.

questionAnswers(2)

yourAnswerToTheQuestion