Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Do not include C files. Instead, add them to the project file. Hopefully, this will...
[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 XBT_LOG_EXTERNAL_DEFAULT_CATEGORY(jmsg);
19
20 jobject
21 jparallel_task_ref(JNIEnv* env, jobject jparallel_task) {
22   jobject newref = (*env)->NewGlobalRef(env,jparallel_task); 
23
24   DEBUG1("jparallel_task_ref(%ld)",(long)newref);
25
26   return newref;
27 }
28
29 void
30 jparallel_task_unref(JNIEnv* env, jobject jparallel_task) {
31   DEBUG1("jparallel_task_unref(%ld)",(long)jparallel_task);
32   (*env)->DeleteGlobalRef(env,jparallel_task);
33 }
34
35 void
36 jparallel_task_bind(jobject jparallel_task,m_task_t task,JNIEnv* env) {
37   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
38         
39   if(!id)
40     return;
41         
42   (*env)->SetLongField(env,jparallel_task,id,(jlong)(long)(task));
43          
44 }
45
46 m_task_t
47 jparallel_task_to_native_parallel_task(jobject jparallel_task,JNIEnv* env) {
48   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
49         
50   if(!id)
51     return NULL;
52     
53   return (m_task_t)(long)(*env)->GetLongField(env,jparallel_task,id);
54 }
55
56 jboolean
57 jparallel_task_is_valid(jobject jparallel_task,JNIEnv* env) {
58   jfieldID id  = jxbt_get_sfield(env,"simgrid/msg/ParallelTask","bind", "J");
59         
60   if(!id)
61     return JNI_FALSE;
62
63   return (*env)->GetLongField(env,jparallel_task,id) ? JNI_TRUE : JNI_FALSE;
64 }