Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Visual C++ project :
[simgrid.git] / src / java / jmsg_parallel_task.c
1 /*
2  * $Id$
3  *
4  * Copyright 2006,2007 Martin Quinson, Malek Cherier All right reserved. 
5  *
6  * This program is free software; you can redistribute it and/or modify it 
7  * under the terms of the license (GNU LGPL) which comes with this package.
8  *
9  * This contains the implementation of the functions in relation with the java
10  * process instance. 
11  */
12
13 #include "xbt/log.h" 
14 #include "jmsg.h"
15 #include "jmsg_parallel_task.h"
16 #include "jxbt_utilities.h"
17
18 jobject
19 jparallel_task_ref(JNIEnv* env, jobject jparallel_task) {
20   jobject newref = (*env)->NewGlobalRef(env,jparallel_task); 
21
22   DEBUG1("jparallel_task_ref(%ld)",(long)newref);
23
24   return newref;
25 }
26
27 void
28 jparallel_task_unref(JNIEnv* env, jobject jparallel_task) {
29   DEBUG1("jparallel_task_unref(%ld)",(long)jparallel_task);
30   (*env)->DeleteGlobalRef(env,jparallel_task);
31 }
32
33 void
34 jparallel_task_bind(jobject jparallel_task,m_task_t task,JNIEnv* env) {
35   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
36         
37   if(!id)
38     return;
39         
40   (*env)->SetLongField(env,jparallel_task,id,(jlong)(long)(task));
41          
42 }
43
44 m_task_t
45 jparallel_task_to_native_parallel_task(jobject jparallel_task,JNIEnv* env) {
46   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
47         
48   if(!id)
49     return NULL;
50     
51   return (m_task_t)(long)(*env)->GetLongField(env,jparallel_task,id);
52 }
53
54 jboolean
55 jparallel_task_is_valid(jobject jparallel_task,JNIEnv* env) {
56   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
57         
58   if(!id)
59     return JNI_FALSE;
60
61   return (*env)->GetLongField(env,jparallel_task,id) ? JNI_TRUE : JNI_FALSE;
62 }