SERiF 0.0.1a
3+1D Stellar Structure and Evolution
Loading...
Searching...
No Matches
bindings.cpp
Go to the documentation of this file.
1#include <pybind11/pybind11.h>
2#include <pybind11/stl.h> // Needed for vectors, maps, sets, strings
3#include <pybind11/stl_bind.h> // Needed for binding std::vector, std::map etc if needed directly
4
5#include <string>
6#include "bindings.h"
7
8#include "config.h"
9
10namespace py = pybind11;
11
12// Helper function template for binding Config::get
13template <typename T>
14void def_config_get(py::module &m) {
15 m.def("get",
16 [](const std::string &key, T defaultValue) {
17 return serif::config::Config::getInstance().get<T>(key, defaultValue);
18 },
19 py::arg("key"), py::arg("defaultValue"),
20 "Get configuration value (type inferred from default)");
21}
22
23void register_config_bindings(pybind11::module &config_submodule) {
24 def_config_get<int>(config_submodule);
25 def_config_get<double>(config_submodule);
26 def_config_get<std::string>(config_submodule);
27 def_config_get<bool>(config_submodule);
28
29 config_submodule.def("loadConfig",
30 [](const std::string& configFilePath) {
31 return serif::config::Config::getInstance().loadConfig(configFilePath);
32 },
33 py::arg("configFilePath"),
34 "Load configuration from a YAML file.");
35
36 config_submodule.def("has",
37 [](const std::string &key) {
38 return serif::config::Config::getInstance().has(key);
39 },
40 py::arg("key"),
41 "Check if a key exists in the configuration.");
42
43 config_submodule.def("keys",
44 []() {
45 return py::cast(serif::config::Config::getInstance().keys());
46 },
47 "Get a list of all configuration keys.");
48
49 config_submodule.def("__repr__",
50 []() {
51 std::ostringstream oss;
52 oss << serif::config::Config::getInstance(); // Use the existing operator<<
53 return std::string("<fourdsse_bindings.config module accessing C++ Singleton>\n") + oss.str();
54 });
55}
void register_config_bindings(pybind11::module &config_submodule)
Definition bindings.cpp:23
void def_config_get(py::module &m)
Definition bindings.cpp:14