X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/6683debe0efeb6371e0cbafb4f0d461325dd59a5..f9e6853d2c5b7b867211700bc12f0ee57f640b30:/src/bindings/java/surf.i diff --git a/src/bindings/java/surf.i b/src/bindings/java/surf.i index 4d69190b74..d860b98256 100644 --- a/src/bindings/java/surf.i +++ b/src/bindings/java/surf.i @@ -1,13 +1,22 @@ /* File : example.i */ %module(directors="1") Surf +%include "arrays_java.i" + %pragma(java) jniclassimports=%{ import org.simgrid.NativeLib; - %} %pragma(java) jniclasscode=%{ static { NativeLib.nativeInit("surf-java"); + Runtime.getRuntime().addShutdownHook( + new Thread() { + public void run() { + Thread.currentThread().setName( "Destroyer" ); + Surf.clean(); + } + } + ); } %} @@ -19,6 +28,24 @@ import org.simgrid.NativeLib; typedef struct lmm_constraint *lmm_constraint_t; %} +/* Handle xbt_dynar_t of NetworkLink */ +JAVA_ARRAYSOFCLASSES(NetworkLink); +%apply NetworkLink[] {NetworkLinkDynar}; +%typemap(jstype) NetworkLinkDynar "NetworkLink[]" +%typemap(javain) NetworkLinkDynar "NetworkLink.cArrayUnwrap($javainput)" + +%typemap(javaout) NetworkLinkDynar { + return NetworkLink.cArrayWrap($jnicall, $owner); +} +%typemap(out) NetworkLinkDynar { + long l = xbt_dynar_length($1); + $result = jenv->NewLongArray(l); + NetworkLink **lout = (NetworkLink **)xbt_dynar_to_array($1); + jenv->SetLongArrayRegion($result, 0, l, (const jlong*)lout); + free(lout); +} + +/* Allow to subclass Plugin and send java object to C++ code */ %feature("director") Plugin; %include "src/bindings/java/surf_swig.hpp" @@ -71,7 +98,6 @@ public: } }; - %rename lmm_constraint LmmConstraint; struct lmm_constraint { %extend { @@ -85,4 +111,3 @@ struct s_xbt_dict { char *getValue(char *key) {return (char*)xbt_dict_get_or_null($self, key);} } }; -