mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2026-05-03 16:04:12 +02:00
allow ints, doubles, implicit conversions
This commit is contained in:
@@ -35,6 +35,8 @@ currentSrcParameters = _slsdet.currentSrcParameters
|
||||
DurationWrapper = _slsdet.DurationWrapper
|
||||
pedestalParameters = _slsdet.pedestalParameters
|
||||
Hz = _slsdet.Hz
|
||||
kHz = _slsdet.kHz
|
||||
MHz = _slsdet.MHz
|
||||
|
||||
import os
|
||||
def read_version():
|
||||
|
||||
@@ -4,23 +4,38 @@
|
||||
This file contains Python bindings for the Hz and for conversion to other units from and to string.
|
||||
*/
|
||||
#include "py_headers.h"
|
||||
#include <cmath>
|
||||
|
||||
#include "sls/ToString.h"
|
||||
#include "sls/sls_detector_defs.h"
|
||||
|
||||
namespace py = pybind11;
|
||||
|
||||
constexpr double kHz = 1e3;
|
||||
constexpr double MHz = 1e6;
|
||||
|
||||
void init_freq(py::module &m) {
|
||||
|
||||
py::class_<slsDetectorDefs::Hz> Hz(m, "Hz");
|
||||
Hz.def(py::init<int v) {
|
||||
return slsDetectorDefs::Hz(v * 1000000);
|
||||
}));
|
||||
Hz.def(py::init([](const std::string &s) {
|
||||
return sls::StringTo<slsDetectorDefs::Hz>(s);
|
||||
Hz.def(py::init<int>());
|
||||
Hz.def(py::init([](double v) {
|
||||
return slsDetectorDefs::Hz(static_cast<int>(std::round(v)));
|
||||
}));
|
||||
Hz.def_readwrite("value", &slsDetectorDefs::Hz::value);
|
||||
Hz.def("__repr__", [](const slsDetectorDefs::Hz &f) { return sls::ToString(f); });
|
||||
Hz.def("__str__", [](const slsDetectorDefs::Hz &f) { return sls::ToString(f); });
|
||||
Hz.def("__repr__", [](const slsDetectorDefs::Hz &f) {
|
||||
return sls::ToString(f);
|
||||
});
|
||||
Hz.def("__str__", [](const slsDetectorDefs::Hz &f) {
|
||||
return sls::ToString(f);
|
||||
});
|
||||
Hz.def(py::self == py::self);
|
||||
py::implicitly_convertible<std::string, slsDetectorDefs::Hz>();
|
||||
m.def("kHz", [](double v) {
|
||||
return slsDetectorDefs::Hz(static_cast<int>(std::round(v * kHz)));
|
||||
});
|
||||
|
||||
m.def("MHz", [](double v) {
|
||||
return slsDetectorDefs::Hz(static_cast<int>(std::round(v * MHz)));
|
||||
});
|
||||
py::implicitly_convertible<int, slsDetectorDefs::Hz>();
|
||||
py::implicitly_convertible<double, slsDetectorDefs::Hz>();
|
||||
}
|
||||
Reference in New Issue
Block a user