Enable export via driver/xinit/xend
[scilab.git] / scilab / modules / graphic_export / src / jni / Driver.cpp
1 #include "Driver.hxx"
2 /* Generated by GIWS (version 1.3.0) */
3 /*
4
5 Copyright 2007-2008 INRIA
6 Copyright 2008-2011 DIGITEO
7
8 Author : Sylvestre Ledru & others
9
10 This is generated code.
11
12 This software is a computer program whose purpose is to hide the complexity
13 of accessing Java objects/methods from C++ code.
14
15 This software is governed by the CeCILL-B license under French law and
16 abiding by the rules of distribution of free software.  You can  use, 
17 modify and/ or redistribute the software under the terms of the CeCILL-B
18 license as circulated by CEA, CNRS and INRIA at the following URL
19 "http://www.cecill.info". 
20
21 As a counterpart to the access to the source code and  rights to copy,
22 modify and redistribute granted by the license, users are provided only
23 with a limited warranty  and the software's author,  the holder of the
24 economic rights,  and the successive licensors  have only  limited
25 liability. 
26
27 In this respect, the user's attention is drawn to the risks associated
28 with loading,  using,  modifying and/or developing or reproducing the
29 software by the user in light of its specific status of free software,
30 that may mean  that it is complicated to manipulate,  and  that  also
31 therefore means  that it is reserved for developers  and  experienced
32 professionals having in-depth computer knowledge. Users are therefore
33 encouraged to load and test the software's suitability as regards their
34 requirements in conditions enabling the security of their systems and/or 
35 data to be ensured and,  more generally, to use and operate it in the 
36 same conditions as regards security. 
37
38 The fact that you are presently reading this means that you have had
39 knowledge of the CeCILL-B license and that you accept its terms.
40 */
41
42 namespace org_scilab_modules_graphic_export {
43
44 // Returns the current env
45
46 JNIEnv * Driver::getCurrentEnv() {
47 JNIEnv * curEnv = NULL;
48 jint res=this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
49 if (res != JNI_OK) {
50 throw GiwsException::JniException(getCurrentEnv());
51 }
52 return curEnv;
53 }
54 // Destructor
55
56 Driver::~Driver() {
57 JNIEnv * curEnv = NULL;
58 this->jvm->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
59
60 curEnv->DeleteGlobalRef(this->instance);
61 curEnv->DeleteGlobalRef(this->instanceClass);
62 }
63 // Constructors
64 Driver::Driver(JavaVM * jvm_) {
65 jmethodID constructObject = NULL ;
66 jobject localInstance ;
67 jclass localClass ;
68 const std::string construct="<init>";
69 const std::string param="()V";
70 jvm=jvm_;
71
72 JNIEnv * curEnv = getCurrentEnv();
73
74 localClass = curEnv->FindClass( this->className().c_str() ) ;
75 if (localClass == NULL) {
76   throw GiwsException::JniClassNotFoundException(curEnv, this->className());
77 }
78
79 this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
80
81 /* localClass is not needed anymore */
82 curEnv->DeleteLocalRef(localClass);
83
84 if (this->instanceClass == NULL) {
85 throw GiwsException::JniObjectCreationException(curEnv, this->className());
86 }
87
88
89 constructObject = curEnv->GetMethodID( this->instanceClass, construct.c_str() , param.c_str() ) ;
90 if(constructObject == NULL){
91 throw GiwsException::JniObjectCreationException(curEnv, this->className());
92 }
93
94 localInstance = curEnv->NewObject( this->instanceClass, constructObject ) ;
95 if(localInstance == NULL){
96 throw GiwsException::JniObjectCreationException(curEnv, this->className());
97 }
98  
99 this->instance = curEnv->NewGlobalRef(localInstance) ;
100 if(this->instance == NULL){
101 throw GiwsException::JniObjectCreationException(curEnv, this->className());
102 }
103 /* localInstance not needed anymore */
104 curEnv->DeleteLocalRef(localInstance);
105
106                 /* Methods ID set to NULL */
107 jbooleansetDriverjstringjava_lang_StringID=NULL;
108 voidsetPathjstringjava_lang_StringID=NULL;
109 voidendjstringjava_lang_StringID=NULL;
110
111
112 }
113
114 Driver::Driver(JavaVM * jvm_, jobject JObj) {
115         jvm=jvm_;
116
117         JNIEnv * curEnv = getCurrentEnv();
118
119 jclass localClass = curEnv->GetObjectClass(JObj);
120         this->instanceClass = static_cast<jclass>(curEnv->NewGlobalRef(localClass));
121         curEnv->DeleteLocalRef(localClass);
122
123         if (this->instanceClass == NULL) {
124 throw GiwsException::JniObjectCreationException(curEnv, this->className());
125         }
126
127         this->instance = curEnv->NewGlobalRef(JObj) ;
128         if(this->instance == NULL){
129 throw GiwsException::JniObjectCreationException(curEnv, this->className());
130         }
131         /* Methods ID set to NULL */
132         jbooleansetDriverjstringjava_lang_StringID=NULL;
133 voidsetPathjstringjava_lang_StringID=NULL;
134 voidendjstringjava_lang_StringID=NULL;
135
136
137 }
138
139 // Generic methods
140
141 void Driver::synchronize() {
142 if (getCurrentEnv()->MonitorEnter(instance) != JNI_OK) {
143 throw GiwsException::JniMonitorException(getCurrentEnv(), "Driver");
144 }
145 }
146
147 void Driver::endSynchronize() {
148 if ( getCurrentEnv()->MonitorExit(instance) != JNI_OK) {
149 throw GiwsException::JniMonitorException(getCurrentEnv(), "Driver");
150 }
151 }
152 // Method(s)
153
154 bool Driver::setDriver (JavaVM * jvm_, char * driver){
155
156 JNIEnv * curEnv = NULL;
157 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
158 jclass cls = curEnv->FindClass( className().c_str() );
159
160 jmethodID jbooleansetDriverjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "setDriver", "(Ljava/lang/String;)Z" ) ;
161 if (jbooleansetDriverjstringjava_lang_StringID == NULL) {
162 throw GiwsException::JniMethodNotFoundException(curEnv, "setDriver");
163 }
164
165 jstring driver_ = curEnv->NewStringUTF( driver );
166 if (driver != NULL && driver_ == NULL)
167 {
168 throw GiwsException::JniBadAllocException(curEnv);
169 }
170
171
172                         jboolean res =  static_cast<jboolean>( curEnv->CallStaticBooleanMethod(cls, jbooleansetDriverjstringjava_lang_StringID ,driver_));
173                         curEnv->DeleteLocalRef(driver_);
174 curEnv->DeleteLocalRef(cls);
175 if (curEnv->ExceptionCheck()) {
176 throw GiwsException::JniCallMethodException(curEnv);
177 }
178 return (res == JNI_TRUE);
179
180 }
181
182 void Driver::setPath (JavaVM * jvm_, char * path){
183
184 JNIEnv * curEnv = NULL;
185 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
186 jclass cls = curEnv->FindClass( className().c_str() );
187
188 jmethodID voidsetPathjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "setPath", "(Ljava/lang/String;)V" ) ;
189 if (voidsetPathjstringjava_lang_StringID == NULL) {
190 throw GiwsException::JniMethodNotFoundException(curEnv, "setPath");
191 }
192
193 jstring path_ = curEnv->NewStringUTF( path );
194 if (path != NULL && path_ == NULL)
195 {
196 throw GiwsException::JniBadAllocException(curEnv);
197 }
198
199
200                          curEnv->CallStaticVoidMethod(cls, voidsetPathjstringjava_lang_StringID ,path_);
201                         curEnv->DeleteLocalRef(path_);
202 curEnv->DeleteLocalRef(cls);
203 if (curEnv->ExceptionCheck()) {
204 throw GiwsException::JniCallMethodException(curEnv);
205 }
206 }
207
208 void Driver::end (JavaVM * jvm_, char * uid){
209
210 JNIEnv * curEnv = NULL;
211 jvm_->AttachCurrentThread(reinterpret_cast<void **>(&curEnv), NULL);
212 jclass cls = curEnv->FindClass( className().c_str() );
213
214 jmethodID voidendjstringjava_lang_StringID = curEnv->GetStaticMethodID(cls, "end", "(Ljava/lang/String;)V" ) ;
215 if (voidendjstringjava_lang_StringID == NULL) {
216 throw GiwsException::JniMethodNotFoundException(curEnv, "end");
217 }
218
219 jstring uid_ = curEnv->NewStringUTF( uid );
220 if (uid != NULL && uid_ == NULL)
221 {
222 throw GiwsException::JniBadAllocException(curEnv);
223 }
224
225
226                          curEnv->CallStaticVoidMethod(cls, voidendjstringjava_lang_StringID ,uid_);
227                         curEnv->DeleteLocalRef(uid_);
228 curEnv->DeleteLocalRef(cls);
229 if (curEnv->ExceptionCheck()) {
230 throw GiwsException::JniCallMethodException(curEnv);
231 }
232 }
233
234 }