Line data Source code
1 : /**
2 : * @file module.cpp
3 : *
4 : * This is part of the DUNE DAQ Software Suite, copyright 2020.
5 : * Licensing/copyright details are in the COPYING file that you should have
6 : * received with this code.
7 : */
8 :
9 : #include "oks/kernel.hpp"
10 : #include "pybind11/pybind11.h"
11 : #include "pybind11/stl.h"
12 :
13 : namespace py = pybind11;
14 :
15 : namespace dunedaq::oks::python {
16 :
17 0 : PYBIND11_MODULE(_daq_oks_py, m)
18 : {
19 :
20 0 : using namespace pybind11::literals; // to bring in the `_a` literal
21 :
22 0 : m.doc() = "C++ implementation of the application dal modules";
23 :
24 0 : py::class_<OksFile>(m, "OksFile");
25 : // py::class_<OksFile::Map>(m, "OksFileMap");
26 0 : py::class_<OksClass, std::unique_ptr<OksClass, py::nodelete>>(m, "OksClass")
27 0 : .def("get_name", &OksClass::get_name, py::return_value_policy::reference_internal)
28 0 : .def("get_description", &OksClass::get_description, py::return_value_policy::reference_internal)
29 0 : .def("get_is_abstract", &OksClass::get_is_abstract)
30 0 : .def("all_super_classes", &OksClass::all_super_classes, py::return_value_policy::reference_internal)
31 0 : .def("direct_super_classes", &OksClass::direct_super_classes, py::return_value_policy::reference_internal)
32 0 : .def("all_sub_classes", &OksClass::all_sub_classes, py::return_value_policy::reference_internal);
33 0 : py::class_<OksObject, std::unique_ptr<OksObject, py::nodelete>>(m, "OksObject");
34 :
35 0 : py::class_<OksKernel>(m, "OksKernel")
36 0 : .def(py::init<bool, bool, bool, bool, const char*, std::string>(),
37 0 : "silence_mode"_a = false,
38 0 : "verbose_mode"_a = false,
39 0 : "profiling_mode"_a = false,
40 0 : "allow_repository"_a = true,
41 0 : "version"_a = nullptr,
42 0 : "branch_name"_a = "")
43 0 : .def("get_host_name", &OksKernel::get_host_name)
44 0 : .def("get_domain_name", &OksKernel::get_domain_name)
45 0 : .def("get_user_name", &OksKernel::get_user_name)
46 : // ---
47 : // .def("load_file",&OksKernel::load_file, "name"_a, "bind"_a = true)
48 : // .def("load_schema",&OksKernel::load_schema, "name"_a, "parent"_a = nullptr)
49 : // .def("close_all_schema",&OksKernel::close_all_schema)
50 :
51 : // ---
52 : // .def("load_data",&OksKernel::load_file, "name"_a, "bind"_a = true)
53 : // .def("close_all_data",&OksKernel::close_all_data)
54 : // --
55 : // .def("classes",&OksKernel::classes, py::return_value_policy::reference_internal)
56 : // .def("number_of_classes",&OksKernel::number_of_classes)
57 : // .def("objects",&OksKernel::objects, py::return_value_policy::reference_internal)
58 : // .def("number_of_objects",&OksKernel::number_of_objects)
59 : //
60 : // .def("find_class",&OksKernel::find_class)
61 : // .def("find_object",&OksKernel::find_object, py::return_value_policy::reference_internal)
62 :
63 : //
64 : // .def("get_test_duplicated_objects_via_inheritance_mode",
65 : // &OksKernel::get_test_duplicated_objects_via_inheritance_mode)
66 : // .def("set_test_duplicated_objects_via_inheritance_mode",
67 : // &OksKernel::set_test_duplicated_objects_via_inheritance_mode) .def("get_allow_duplicated_objects_mode",
68 : // &OksKernel::get_allow_duplicated_objects_mode) .def("set_allow_duplicated_objects_mode",
69 : // &OksKernel::set_allow_duplicated_objects_mode)
70 :
71 : // get_verbose_mode
72 : // set_verbose_mode
73 0 : .def("get_verbose_mode", &OksKernel::get_verbose_mode)
74 0 : .def("set_verbose_mode", &OksKernel::set_verbose_mode)
75 :
76 : // get_silence_mode
77 : // set_silence_mode
78 0 : .def("get_silence_mode", &OksKernel::get_silence_mode)
79 0 : .def("set_silence_mode", &OksKernel::set_silence_mode)
80 :
81 : // set_profiling_mode
82 0 : .def("set_profiling_mode", &OksKernel::set_profiling_mode)
83 :
84 : // get_allow_duplicated_classes_mode
85 : // set_allow_duplicated_classes_mode
86 0 : .def("get_allow_duplicated_classes_mode", &OksKernel::get_allow_duplicated_classes_mode)
87 0 : .def("set_allow_duplicated_classes_mode", &OksKernel::set_allow_duplicated_classes_mode)
88 :
89 : // get_allow_duplicated_objects_mode
90 : // set_allow_duplicated_objects_mode
91 0 : .def("get_allow_duplicated_objects_mode", &OksKernel::get_allow_duplicated_objects_mode)
92 0 : .def("set_allow_duplicated_objects_mode", &OksKernel::set_allow_duplicated_objects_mode)
93 :
94 : // get_test_duplicated_objects_via_inheritance_mode
95 : // set_test_duplicated_objects_via_inheritance_mode
96 0 : .def("get_test_duplicated_objects_via_inheritance_mode",
97 0 : &OksKernel::get_test_duplicated_objects_via_inheritance_mode)
98 0 : .def("set_test_duplicated_objects_via_inheritance_mode",
99 0 : &OksKernel::set_test_duplicated_objects_via_inheritance_mode)
100 :
101 : //! get_mutex
102 : // find_schema_file
103 : // find_data_file
104 0 : .def("find_schema_file", &OksKernel::find_schema_file, py::return_value_policy::reference_internal)
105 0 : .def("find_data_file", &OksKernel::find_data_file, py::return_value_policy::reference_internal)
106 :
107 : // create_list_of_schema_classes
108 : // create_list_of_data_objects
109 0 : .def("create_list_of_schema_classes",
110 0 : &OksKernel::create_list_of_schema_classes,
111 0 : py::return_value_policy::reference_internal)
112 0 : .def("create_list_of_data_objects",
113 0 : &OksKernel::create_list_of_data_objects,
114 0 : py::return_value_policy::reference_internal)
115 :
116 : // create_file_info
117 0 : .def("create_file_info", &OksKernel::create_file_info, py::return_value_policy::reference_internal)
118 :
119 : // get_file_path
120 0 : .def("get_file_path", &OksKernel::get_file_path, "path"_a, "parent_file"_a = nullptr, "strict_path"_a = true)
121 :
122 : // get_repository_version
123 0 : .def("get_repository_version", &OksKernel::get_repository_version)
124 :
125 : // is_user_repository_created()
126 0 : .def("is_user_repository_created", &OksKernel::is_user_repository_created)
127 :
128 : // get_user_repository_root
129 : // set_user_repository_root
130 0 : .def("get_user_repository_root", &OksKernel::get_user_repository_root)
131 0 : .def("set_user_repository_root", &OksKernel::set_user_repository_root, "path"_a, "version"_a = true)
132 :
133 : // get_includes
134 0 : .def("get_includes", &OksKernel::get_includes)
135 : // k_close_dangling_includes
136 :
137 : // load_file
138 0 : .def("load_file", &OksKernel::load_file, "name"_a, "bind"_a = true, py::return_value_policy::reference_internal)
139 : // load_schema
140 0 : .def("load_schema",
141 0 : &OksKernel::load_schema,
142 0 : "name"_a,
143 0 : "parent"_a = nullptr,
144 0 : py::return_value_policy::reference_internal)
145 : // new_schema
146 0 : .def("new_schema", &OksKernel::new_schema, "name"_a, py::return_value_policy::reference_internal)
147 : // save_schema
148 : // .def("save_schema",py::overload_cast<OksFile*, bool, OksFile*>(&OksKernel::save_schema), "file_h"_a, "force"_a =
149 : // false, "true_file_h"_a = nullptr) .def("save_schema",py::overload_cast<OksFile*, bool, const
150 : // OksClass::Map&>(&OksKernel::save_schema), "file_h"_a, "force"_a, "classes") backup_schema
151 0 : .def("backup_schema", &OksKernel::backup_schema, "pf"_a, "suffix"_a = ".bak")
152 : // save_as_schema
153 0 : .def("save_as_schema", &OksKernel::save_as_schema, "name"_a, "file_h"_a)
154 : // save_all_schema
155 0 : .def("save_all_schema", &OksKernel::save_all_schema)
156 : // close_schema
157 0 : .def("close_schema", &OksKernel::close_schema, "file_h"_a)
158 : // close_all_schema
159 0 : .def("close_all_schema", &OksKernel::close_all_schema)
160 : // set_active_schema
161 0 : .def("set_active_schema", &OksKernel::set_active_schema, "file_h"_a)
162 : // get_active_schema
163 0 : .def("get_active_schema", &OksKernel::get_active_schema)
164 : // schema_files
165 0 : .def("schema_files", &OksKernel::schema_files, py::return_value_policy::reference_internal)
166 :
167 : //! create_list_of_upsated_schema_file
168 : //! get_updated_repository_files
169 :
170 : // load_data
171 0 : .def("load_data", &OksKernel::load_data, "name"_a, "bind"_a = true, py::return_value_policy::reference_internal)
172 : // reload_data
173 0 : .def("reload_data", &OksKernel::reload_data, "files"_a, "allow_schema_extension"_a = true)
174 :
175 : // new_data
176 0 : .def("new_data",
177 0 : &OksKernel::new_data,
178 0 : "name"_a,
179 0 : "logical_name"_a = "",
180 0 : "type"_a = "",
181 0 : py::return_value_policy::reference_internal)
182 :
183 : // // save_data
184 : // // backup_data
185 : // // save_as_data
186 : // save_all_data
187 0 : .def("save_all_data", &OksKernel::save_all_data, "force_defaults"_a = false)
188 : // // close_data
189 : // close_all_data
190 0 : .def("close_all_data", &OksKernel::close_all_data)
191 :
192 : // set_active_data
193 0 : .def("set_active_data", &OksKernel::set_active_data)
194 : // get_active_daat
195 0 : .def("get_active_data", &OksKernel::get_active_data, py::return_value_policy::reference_internal)
196 : // data_files
197 0 : .def("data_files", &OksKernel::data_files, py::return_value_policy::reference_internal)
198 :
199 : // // create_list_of_updated_data_files
200 : // // get_modified_files
201 : // // get_repository_dirs
202 : // // commit_repository
203 : // // tag_repository
204 : // // get_repository_checkout_ts
205 : // // update_repository
206 : // // get_repository_versions_diff
207 : // // get_repository_unmerged_files
208 : // // get_repository_versions
209 : // // get_repository_versions_by_hash
210 : // // get_repository_versions_by_date
211 : // // read_repository_version
212 :
213 : // insert_repository_dir
214 0 : .def("insert_repository_dir", &OksKernel::insert_repository_dir)
215 : // remove_repository_dir
216 0 : .def("remove_repository_dir", &OksKernel::remove_repository_dir)
217 : // classes
218 0 : .def("classes", &OksKernel::classes, py::return_value_policy::reference_internal)
219 : // number_of_classes
220 0 : .def("number_of_classes", &OksKernel::number_of_classes)
221 : // objects
222 0 : .def("objects", &OksKernel::objects, py::return_value_policy::reference_internal)
223 : // number_of_objects
224 0 : .def("number_of_objects", &OksKernel::number_of_objects)
225 : // find_class
226 0 : .def("find_class",
227 0 : static_cast<OksClass* (OksKernel::*)(const std::string&) const>(&OksKernel::find_class),
228 0 : "class_name"_a)
229 : // // get_all_classes
230 : // registrate_all_classes
231 0 : .def("registrate_all_classes", &OksKernel::registrate_all_classes)
232 : // is_dangling
233 : // Class
234 : // .def("is_dangling",&OksKernel::is_dangling)
235 : // Object
236 : // .def("is_dangling",&OksKernel::is_dangling)
237 : // // subscribe_create_class
238 : // // subscribe_change_class
239 : // // subscribe_create_object
240 : // // subscribe_delete_object
241 : // bind_objects
242 0 : .def("bind_objects", &OksKernel::bind_objects)
243 : // get_bind_objects_status
244 0 : .def("get_bind_objects_status", &OksKernel::get_bind_objects_status)
245 : // get_bind_classes_status
246 0 : .def("get_bind_classes_status", &OksKernel::get_bind_classes_status)
247 : // unset_repository_created
248 0 : .def("unset_repository_created", &OksKernel::unset_repository_created)
249 :
250 : // // GetVersion
251 : // // get_skip_string_range
252 : // // set_skip_string_range
253 : // // check_read_only
254 : // // get_repository_root
255 : // // get_repository_mapping_dir
256 : // // get_tmp_file
257 : // // get_cwd
258 : // // reset_cwd
259 : ;
260 0 : }
261 :
262 : } // namespace dunedaq::oks::python
|