/
niceSOFT
/
swig
Обзор
Документация
Войти
/
niceSOFT
/
swig
Код
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
Examples/test-suite/java_lib_arrays.i
69 строк
2 KB
William S Fulton
Marshalling char[] and char[ANY] to Java byte[] is now a bit easier
17 июн 2011, 10:41
17 июн 2011, 10:41
8a6e006
Код
Авторство
О чём код?
/* Testcase for the Java array typemaps which are not used by default. */ %module java_lib_arrays %include "enumtypeunsafe.swg" /* Use the Java library typemaps */ %include "arrays_java.i" JAVA_ARRAYSOFCLASSES(SimpleStruct) %apply ARRAYSOFENUMS[ANY] { finger[ANY] } //%apply signed char[ANY] { char array_c2[ANY] } %include "arrays.i" // This will test the %typemap(javacode) in the JAVA_ARRAYSOFCLASSES works with C structs amongst other things JAVA_ARRAYSOFCLASSES(struct AnotherStruct) %inline %{ struct AnotherStruct { SimpleStruct simple; }; double extract(struct AnotherStruct as[], int index) { return as[index].simple.double_field; } double extract2(struct AnotherStruct as[5], int index) { return as[index].simple.double_field; } %} // Test %apply to pointers JAVA_ARRAYSOFCLASSES(struct YetAnotherStruct) %apply struct YetAnotherStruct[] { struct YetAnotherStruct *yas } //%apply struct YetAnotherStruct[] { struct YetAnotherStruct * } // Note: Does not work unless this is put after the YetAnotherStruct definition %inline %{ struct YetAnotherStruct { SimpleStruct simple; }; double extract_ptr(struct YetAnotherStruct *yas, int index) { return yas[index].simple.double_field; } void modifyYAS(struct YetAnotherStruct yas[], int size) { int i; for (i=0; i<size; ++i) { SimpleStruct ss; ss.double_field = yas[i].simple.double_field * 10.0; yas[i].simple = ss; } } %} %apply ARRAYSOFENUMS[ANY] { toe[ANY] } %apply ARRAYSOFENUMS[] { toe[] } %apply ARRAYSOFENUMS[] { toe* } %inline %{ typedef enum { Big, Little } toe; void toestest(toe *t, toe tt[], toe ttt[2]) {} %} JAVA_ARRAYS_IMPL(char, jbyte, Byte, Char) JAVA_ARRAYS_TYPEMAPS(char, byte, jbyte, Char, "[B") %typecheck(SWIG_TYPECHECK_INT8_ARRAY) /* Java byte[] */ signed char[ANY], signed char[] "" %inline %{ struct ArrayStructExtra { char array_c2[ARRAY_LEN]; }; %}