X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/blobdiff_plain/8bf3d06d49fcd7061f0a08dd4bfed74a7eeae7d0..9f2c934f46bee72ce2b2831b6132dd938b551fff:/src/jmsg.c diff --git a/src/jmsg.c b/src/jmsg.c index d359c1d24f..61d916b6db 100644 --- a/src/jmsg.c +++ b/src/jmsg.c @@ -20,6 +20,15 @@ #include "jmsg.h" +/* Shut up some errors in eclipse online compiler. I wish such a pimple wouldn't be needed */ +#ifndef JNIEXPORT +#define JNIEXPORT +#endif +#ifndef JNICALL +#define JNICALL +#endif +/* end of eclipse-mandated pimple */ + XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg); static JavaVM *__java_vm = NULL; @@ -340,7 +349,7 @@ Java_org_simgrid_msg_MsgNative_hostGetByName(JNIEnv * env, jclass cls, if (!MSG_host_get_data(host)) { /* native host not associated yet with java host */ - /* instanciate a new java host */ + /* Instantiate a new java host */ jhost = jhost_new_instance(env); if (!jhost) { @@ -386,7 +395,10 @@ Java_org_simgrid_msg_MsgNative_hostGetName(JNIEnv * env, jclass cls, JNIEXPORT jint JNICALL Java_org_simgrid_msg_MsgNative_hostGetNumber(JNIEnv * env, jclass cls) { - return (jint) MSG_get_host_number(); + xbt_dynar_t hosts = MSG_hosts_as_dynar(); + int nb_host = xbt_dynar_length(hosts); + xbt_dynar_free(&hosts); + return (jint) nb_host; } JNIEXPORT jobject JNICALL @@ -778,7 +790,7 @@ Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) argc = (int) (*env)->GetArrayLength(env, jargs); argc++; - argv = xbt_new0(char *, argc); + argv = xbt_new(char *, argc + 1); argv[0] = strdup("java"); for (index = 0; index < argc - 1; index++) { @@ -787,6 +799,7 @@ Java_org_simgrid_msg_Msg_init(JNIEnv * env, jclass cls, jobjectArray jargs) argv[index + 1] = strdup(tmp); (*env)->ReleaseStringUTFChars(env, jval, tmp); } + argv[argc] = NULL; MSG_global_init(&argc, argv); @@ -803,7 +816,7 @@ JNIEXPORT void JNICALL { MSG_error_t rv; int index; - m_host_t *hosts; + xbt_dynar_t hosts; jobject jhost; /* Run everything */ @@ -818,14 +831,14 @@ JNIEXPORT void JNICALL XBT_INFO("Clean java world"); /* Cleanup java hosts */ - hosts = MSG_get_host_table(); - for (index = 0; index < MSG_get_host_number() - 1; index++) { - jhost = (jobject) hosts[index]->data; + hosts = MSG_hosts_as_dynar(); + for (index = 0; index < xbt_dynar_length(hosts) - 1; index++) { + jhost = (jobject) xbt_dynar_get_as(hosts,index,m_host_t)->data; if (jhost) jhost_unref(env, jhost); } - + xbt_dynar_free(&hosts); XBT_INFO("Clean native world"); } JNIEXPORT void JNICALL @@ -890,8 +903,8 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) jstring jname; m_host_t host; - int count = MSG_get_host_number(); - m_host_t *table = MSG_get_host_table(); + xbt_dynar_t table = MSG_hosts_as_dynar(); + int count = xbt_dynar_length(table); jclass cls = jxbt_get_class(env, "org/simgrid/msg/Host"); @@ -907,7 +920,7 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) } for (index = 0; index < count; index++) { - host = table[index]; + host = xbt_dynar_get_as(table,index,m_host_t); jhost = (jobject) (MSG_host_get_data(host)); if (!jhost) { @@ -920,7 +933,7 @@ Java_org_simgrid_msg_MsgNative_allHosts(JNIEnv * env, jclass cls_arg) (*env)->SetObjectArrayElement(env, jtable, index, jhost); } - + xbt_dynar_free(&table); return jtable; }