80 py::register_exception<ChimeraTK::logic_error>(m,
"LogicError", PyExc_RuntimeError);
85 py::class_<DataType> mDataType(m,
"DataType");
86 mDataType.def(py::init<DataType::TheType>())
87 .def(
"__str__", &DataType::getAsString)
88 .def(py::self == py::self)
89 .def(
"__repr__", [](
const DataType& type) {
return "DataType." + type.getAsString(); });
90 py::enum_<DataType::TheType>(mDataType,
"TheType")
91 .value(
"none", DataType::none)
92 .value(
"int8", DataType::int8)
93 .value(
"uint8", DataType::uint8)
94 .value(
"int16", DataType::int16)
95 .value(
"uint16", DataType::uint16)
96 .value(
"int32", DataType::int32)
97 .value(
"uint32", DataType::uint32)
98 .value(
"int64", DataType::int64)
99 .value(
"uint64", DataType::uint64)
100 .value(
"float32", DataType::float32)
101 .value(
"float64", DataType::float64)
102 .value(
"string", DataType::string)
103 .value(
"Boolean", DataType::Boolean)
104 .value(
"Void", DataType::Void)
106 py::implicitly_convertible<DataType::TheType, DataType>();
107 py::implicitly_convertible<DataType, DataType::TheType>();
112 py::enum_<DataValidity>(m,
"DataValidity")
113 .value(
"ok", DataValidity::ok)
114 .value(
"faulty", DataValidity::faulty)
120 py::class_<VersionNumber>(m,
"VersionNumber")
122 .def(py::init<std::chrono::system_clock::time_point>())
123 .def(py::init<std::nullptr_t>(), py::arg(
"version").none(
true))
125 .def(py::self == py::self)
126 .def(py::self != py::self)
127 .def(py::self < py::self)
128 .def(py::self <= py::self)
129 .def(py::self > py::self)
130 .def(py::self >= py::self)
132 .def(
"getTime", &VersionNumber::getTime, R
"(Return the time stamp associated with this version number.)")
133 .def("__str__", [](VersionNumber& v) {
return std::string(v); })
134 .def(
"__repr__", [](VersionNumber& v) {
return "VersionNumber(" + std::string(v) +
")"; });
139 py::class_<Boolean>(m,
"Boolean")
141 .def(py::init<bool>())
143 .def(py::self == py::self)
144 .def(py::self != py::self)
146 .def(
"__bool__", [](Boolean& v) {
return bool(v); })
147 .def(
"__repr__", [](Boolean& v) {
return "Boolean(" + std::to_string(
bool(v)) +
")"; })
148 .def(
"__int__", [](Boolean& v) {
return int(
bool(v)); })
149 .def(
"__str__", [](Boolean& v) {
return std::format(
"{}",
bool(v)); });
154 py::class_<TransferElementID>(m,
"TransferElementID")
157 .def(py::self == py::self)
158 .def(py::self != py::self)
160 .def(
"isValid", &TransferElementID::isValid, R
"(Check whether the ID is valid.)")
162 [](TransferElementID&
id) {
163 std::stringstream ss;
167 .def(
"__repr__", [](TransferElementID&
id) {
168 std::stringstream ss;
170 return "TransferElementID(" + ss.str() +
")";
177 py::class_<PyOwnedObject> pwnedObject(m,
"PyOwnedObject");
178 py::class_<PyOwningObject> pwningObject(m,
"PyOwningObject");
251 [m](
const std::unique_ptr<PyModuleGroup>& mainGroup) {
252 m.attr(
"app") = py::cast(mainGroup.get(), py::return_value_policy::reference);
256 registerUnloadHook<PyApplicationCoreUnload>();