1 #include "reg_bvpl.h"
2 #include <bprb/bprb_macros.h>
3 #include <bprb/bprb_batch_process_manager.h>
4 
5 // processes
6 #include <bvpl/pro/bvpl_register.h>
7 #include <bvpl/kernels/pro/bvpl_kernels_register.h>
8 #include <bvxm/grid/pro/bvxm_grid_register.h>
9 #include <bvxm/algo/pro/bvxm_algo_register.h>
10 
11 PyObject *
register_processes(PyObject * self,PyObject * args)12 register_processes(PyObject *self, PyObject *args)
13 {
14   bvpl_register::register_process();
15   bvpl_kernels_register::register_process();
16   bvxm_grid_register::register_process();
17   bvxm_algo_register::register_process();
18   Py_INCREF(Py_None);
19   return Py_None;
20 }
21 
22 PyObject *
register_datatypes(PyObject * self,PyObject * args)23 register_datatypes(PyObject *self, PyObject *args)
24 {
25   register_basic_datatypes();
26   bvpl_register::register_datatype();
27   bvpl_kernels_register::register_datatype();
28   bvxm_grid_register::register_datatype();
29   bvxm_algo_register::register_datatype();
30   Py_INCREF(Py_None);
31   return Py_None;
32 }
33 
init_bvpl_batch_methods(void)34 void init_bvpl_batch_methods(void)
35 {
36   PyMethodDef reg_pro;
37   reg_pro.ml_name = "register_processes";
38   reg_pro.ml_meth = register_processes;
39   reg_pro.ml_doc = "register_processes() create instances of each defined process";
40   reg_pro.ml_flags = METH_VARARGS;
41 
42 
43   PyMethodDef reg_data;
44   reg_data.ml_name = "register_datatypes";
45   reg_data.ml_meth = register_datatypes;
46   reg_data.ml_doc = "register_datatypes() insert tables in the database for each type";
47   reg_data.ml_flags = METH_VARARGS;
48 
49   bvpl_batch_methods[0]=reg_pro;
50   bvpl_batch_methods[1]=reg_data;
51 
52   for (int i=0; i<METHOD_NUM; ++i) {
53     bvpl_batch_methods[i+2]=batch_methods[i];
54   }
55 }
56 
57 // python3
58 #if PY_MAJOR_VERSION >= 3
59 PyMODINIT_FUNC
PyInit_bvpl_batch(void)60 PyInit_bvpl_batch(void)
61 {
62   init_bvpl_batch_methods();
63   static struct PyModuleDef bvpl_batch_def = {
64       PyModuleDef_HEAD_INIT,
65       "bvpl_batch",        // m_name
66       "bvpl_batch module", // m_doc
67       -1,                  // m_size
68       bvpl_batch_methods,  // m_methods
69     };
70   return PyModule_Create(&bvpl_batch_def);
71 }
72 
73 // python2
74 #else
75 PyMODINIT_FUNC
initbvpl_batch(void)76 initbvpl_batch(void)
77 {
78   init_bvpl_batch_methods();
79   Py_InitModule("bvpl_batch", bvpl_batch_methods);
80 }
81 
82 #endif
83