JIMS: plug extraction
[scilab.git] / scilab / modules / external_objects_java / src / cpp / WrapAsDirectBuffer.cpp
1 /*
2  * JIMS ( http://forge.scilab.org/index.php/p/JIMS/ ) - This file is a part of JIMS
3  * Copyright (C) 2010 - 2011 - Calixte DENIZET <calixte@contrib.scilab.org>
4  *
5  * This file must be used under the terms of the CeCILL.
6  * This source file is licensed as described in the file COPYING, which
7  * you should have received as part of this distribution.  The terms
8  * are also available at
9  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
10  *
11  */
12 /*--------------------------------------------------------------------------*/
13 #include <string.h>
14 #ifdef _MSC_VER
15 #include <Windows.h>
16 #endif
17 #include <jni.h>
18 #include "ScilabJavaObject.hxx"
19 //#include "ScilabJavaObjectHelper.hxx"
20 /*--------------------------------------------------------------------------*/
21 #define SCILABJAVAOBJECT "org/scilab/forge/jims/ScilabJavaObject"
22 /*--------------------------------------------------------------------------*/
23 void ScilabJavaObjectHelper::releaseDirectBuffer(JavaVM * jvm_, void** ref, int* javaID, int len)
24 {
25     JNIEnv * curEnv = NULL;
26     jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
27     jclass cls = curEnv->FindClass(SCILABJAVAOBJECT);
28
29     int i = 0;
30     for (; i < len; i++)
31     {
32         curEnv->DeleteGlobalRef((jobject)(ref[i]));
33         org_scilab_modules_external_objects_java::ScilabJavaObject::limitDirectBuffer(jvm_, javaID[i]);
34         org_scilab_modules_external_objects_java::ScilabJavaObject::removeScilabJavaObject(jvm_, javaID[i]);
35     }
36 }
37 /*--------------------------------------------------------------------------*/