Как я могу преобразовать в тип SWIGTYPE_p_void в SWIG-генерируемых привязках Java?

Я разрабатываю некоторые сгенерированные SWIG Java-привязки для библиотеки C. Библиотека содержит функции, которые принимают параметры типаvoid *, На стороне C они обычно передаются как указатель на массив типаfloat или жеint приведение кvoid *, В сгенерированных привязках Java это приводит к методам, которые принимают параметры типаSWIGTYPE_p_void.

Каков наилучший способ для создания массива с плавающей точкой / целых в привязках Java, чтобы они могли быть переданы как типSWIGTYPE_p_void к этим методам?

На данный момент я определяю вспомогательную функцию в моем файле example.i:

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

А затем на стороне Java делает что-то вроде этого:

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

// do something with foo

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

Это кажется довольно уродливым, особенно потому, что мне тоже нужноinta_to_voidp() и т.д. в моем файле интерфейса SWIG для каждого преобразования типов, которое я хочу поддерживать.

Есть ли способ сделать это без вспомогательных функций и задействовать меньше дополнительного кода на стороне Java для преобразования типов данных?

UPDATE (17/6/12): дать дополнительные подробности вопроса: что я пытаюсь сделать, это взять набор функций C с прототипомint foo(const float *data, int N, const void *argv, float *result) и сопоставить их с методами на стороне Java, где массив произвольного типа может быть передан какargv, Обратите внимание, чтоargv являетсяconst void * и неvoid *.

Ответы на вопрос(2)

Ваш ответ на вопрос