From 6c662b137077d13ed46014ed17ef401a8d52f13b Mon Sep 17 00:00:00 2001 From: Erik Frojdh Date: Wed, 2 Feb 2022 18:35:44 +0100 Subject: [PATCH] bitwise operators for gain caps --- python/scripts/generate_enums.py | 4 ++-- python/src/enums.cpp | 7 +++++-- slsSupportLib/include/sls/sls_detector_defs.h | 15 +++++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/python/scripts/generate_enums.py b/python/scripts/generate_enums.py index 8fcc3d2be..b75062eb4 100644 --- a/python/scripts/generate_enums.py +++ b/python/scripts/generate_enums.py @@ -13,8 +13,8 @@ import subprocess from parse import remove_comments -allow_bitwise_op = ["M3_GainCaps"] -allow_bitwise_op = ["streamingInterface"] + +allow_bitwise_op = ["streamingInterface", "M3_GainCaps"] op_key = {"operator|": "|", "operator&" : "&"} diff --git a/python/src/enums.cpp b/python/src/enums.cpp index feb664882..e5627ac3b 100644 --- a/python/src/enums.cpp +++ b/python/src/enums.cpp @@ -273,14 +273,17 @@ void init_enums(py::module &m) { slsDetectorDefs::timingSourceType::TIMING_EXTERNAL) .export_values(); - py::enum_(Defs, "M3_GainCaps") + py::enum_(Defs, "M3_GainCaps", + py::arithmetic()) .value("M3_C10pre", slsDetectorDefs::M3_GainCaps::M3_C10pre) .value("M3_C15sh", slsDetectorDefs::M3_GainCaps::M3_C15sh) .value("M3_C30sh", slsDetectorDefs::M3_GainCaps::M3_C30sh) .value("M3_C50sh", slsDetectorDefs::M3_GainCaps::M3_C50sh) .value("M3_C225ACsh", slsDetectorDefs::M3_GainCaps::M3_C225ACsh) .value("M3_C15pre", slsDetectorDefs::M3_GainCaps::M3_C15pre) - .export_values(); + .export_values() + .def(py::self | slsDetectorDefs::M3_GainCaps()) + .def(py::self & slsDetectorDefs::M3_GainCaps()); py::enum_(Defs, "portPosition") .value("LEFT", slsDetectorDefs::portPosition::LEFT) diff --git a/slsSupportLib/include/sls/sls_detector_defs.h b/slsSupportLib/include/sls/sls_detector_defs.h index 6feb18c23..c36ee6b71 100644 --- a/slsSupportLib/include/sls/sls_detector_defs.h +++ b/slsSupportLib/include/sls/sls_detector_defs.h @@ -576,6 +576,21 @@ operator&(const slsDetectorDefs::streamingInterface &a, return slsDetectorDefs::streamingInterface(static_cast(a) & static_cast(b)); }; + +inline slsDetectorDefs::M3_GainCaps +operator|(const slsDetectorDefs::M3_GainCaps &a, + const slsDetectorDefs::M3_GainCaps &b) { + return slsDetectorDefs::M3_GainCaps(static_cast(a) | + static_cast(b)); +}; + +inline slsDetectorDefs::M3_GainCaps +operator&(const slsDetectorDefs::M3_GainCaps &a, + const slsDetectorDefs::M3_GainCaps &b) { + return slsDetectorDefs::M3_GainCaps(static_cast(a) & + static_cast(b)); +}; + #endif #ifdef __cplusplus