Jak przekonwertować do typu SWIGTYPE_p_void w SWIG wygenerowanych powiązaniach Java?

Zajmuję się tworzeniem powiązań Java generowanych przez SWIG dla biblioteki C. Biblioteka zawiera funkcje, które pobierają parametry typuvoid *. Po stronie C zazwyczaj byłyby przekazywane jako wskaźnik do tablicy typufloat lubint rzucić navoid *. W wygenerowanych powiązaniach Java skutkuje to metodami, które pobierają parametry typuSWIGTYPE_p_void.

Jaki jest najlepszy sposób na skonstruowanie tablicy floatów / int w powiązaniach Java, aby mogły być przekazywane jako typSWIGTYPE_p_void do tych metod?

W tej chwili definiuję funkcję pomocnika w moim pliku example.i:

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

A potem po stronie Java robi coś takiego:

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

// do something with foo

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

Wydaje się to dość brzydkie, zwłaszcza że potrzebowałbym takżeinta_to_voidp() etc w moim pliku interfejsu SWIG dla każdej konwersji typu, którą chcę wspierać.

Czy można to zrobić bez funkcji pomocniczych i angażując mniej dodatkowego kodu po stronie Java do konwersji typów danych?

UPDATE (17/6/12): aby dać dodatkowe szczegóły na pytanie: próbuję wykonać zestaw funkcji C z prototypemint foo(const float *data, int N, const void *argv, float *result) i odwzoruj je na metody po stronie Java, gdzie tablica dowolnego typu może być przekazana jakoargv. Zauważ, żeargv jestconst void * i nievoid *.

questionAnswers(2)

yourAnswerToTheQuestion