Salome HOME
Porting to Mandrake 10.1 and new products:
[modules/kernel.git] / src / LifeCycleCORBA / Launchers.cxx
1 #include <Launchers.hxx>
2
3 static int Launchers_IsLoaded = 0;
4 static PyObject * Launchers_module = 0;
5 static char * Launchers_name="Launchers";
6
7 PyThreadState *mainThreadState=0;
8
9 PyThreadState * getMainThreadState(){
10   PyInterpreterState *interp;
11   PyThreadState *p;
12   interp=PyInterpreterState_Head();
13   for (interp = PyInterpreterState_Head(); interp != NULL; ){
14     if(interp->next == NULL)break;
15     interp=interp->next;
16   }
17   for (p = interp->tstate_head; p != NULL; ){
18     if(p->next == NULL)break;
19     p=p->next;
20   }
21   return p;
22 }
23 PyThreadState *acquireMainThread(){
24     PyEval_AcquireLock();
25     return  PyThreadState_Swap(mainThreadState);
26 }
27 void releaseMainThread(PyThreadState *tstate){
28     PyThreadState_Swap(tstate);
29     PyEval_ReleaseLock();
30 }
31
32 void Launchers_assertInitialized() {
33    PyThreadState *_save; 
34    if( !Py_IsInitialized() ) {
35          Py_Initialize();
36          PyEval_InitThreads();
37          PyEval_SaveThread();
38    }
39    if( !Launchers_IsLoaded ) {
40       mainThreadState=getMainThreadState();
41       _save=acquireMainThread();
42       Launchers_module=PyImport_ImportModule(Launchers_name);
43       if(!Launchers_module){
44         PyErr_Print();
45         return;
46       }
47       Py_INCREF(Launchers_module);
48       Launchers_IsLoaded = 1;
49       releaseMainThread(_save);
50    }
51 }
52
53 PyObject * getLauncher(char* arg0) {
54     PyObject *v;
55     PyThreadState *_save; 
56     Launchers_assertInitialized();
57     _save=acquireMainThread();
58     v=PyObject_CallMethod(Launchers_module,"getLauncher","s",arg0);
59     if(!v){
60       PyErr_Print();
61       return NULL;
62     }
63     releaseMainThread(_save);
64     Py_INCREF(v);
65     return v;
66 }
67
68 void Launcher_Slaunch(PyObject *self, char* arg1, char* arg2) {
69     PyObject *v;
70     PyThreadState *_save; 
71     Launchers_assertInitialized();
72     _save=acquireMainThread();
73     v=PyObject_CallMethod(self,"Slaunch","ss",arg1,arg2);
74     if(!v){
75       PyErr_Print();
76     }
77     releaseMainThread(_save);
78 }
79