PyLucene 3.4.0-1 import
[pylucene.git] / jcc / _jcc / boot.cpp
1 /*
2  *   Licensed under the Apache License, Version 2.0 (the "License");
3  *   you may not use this file except in compliance with the License.
4  *   You may obtain a copy of the License at
5  *
6  *       http://www.apache.org/licenses/LICENSE-2.0
7  *
8  *   Unless required by applicable law or agreed to in writing, software
9  *   distributed under the License is distributed on an "AS IS" BASIS,
10  *   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11  *   See the License for the specific language governing permissions and
12  *   limitations under the License.
13  */
14
15 #include <jni.h>
16 #include <Python.h>
17 #include "java/lang/Class.h"
18 #include "java/lang/RuntimeException.h"
19 #include "macros.h"
20
21 extern PyTypeObject PY_TYPE(JObject), PY_TYPE(ConstVariableDescriptor);
22
23 PyObject *initJCC(PyObject *module);
24 PyObject *initVM(PyObject *self, PyObject *args, PyObject *kwds);
25
26 namespace java {
27     namespace lang {
28         void __install__(PyObject *m);
29     }
30     namespace io {
31         void __install__(PyObject *m);
32     }
33 }
34
35 PyObject *__initialize__(PyObject *module, PyObject *args, PyObject *kwds)
36 {
37     PyObject *env = initVM(module, args, kwds);
38
39     if (env == NULL)
40         return NULL;
41
42     java::lang::Class::initializeClass();
43     java::lang::RuntimeException::initializeClass();
44
45     return env;
46 }
47
48 #include "jccfuncs.h"
49
50 extern "C" {
51
52     void init_jcc(void)
53     {
54         PyObject *m = Py_InitModule3("_jcc", jcc_funcs, "_jcc");
55
56         initJCC(m);
57
58         INSTALL_TYPE(JObject, m);
59         INSTALL_TYPE(ConstVariableDescriptor, m);
60         java::lang::__install__(m);
61         java::io::__install__(m);
62     }
63 }