mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-06-13 13:27:14 +02:00
update function and enum generation
This commit is contained in:
@ -11,6 +11,10 @@ import subprocess
|
|||||||
|
|
||||||
from parse import remove_comments
|
from parse import remove_comments
|
||||||
|
|
||||||
|
def single_line_enum(line):
|
||||||
|
sub = line[line.find('{')+1:line.find('}')]
|
||||||
|
return sub.strip().split(',')
|
||||||
|
|
||||||
def extract_enums(lines):
|
def extract_enums(lines):
|
||||||
line_iter = iter(lines)
|
line_iter = iter(lines)
|
||||||
enums = {}
|
enums = {}
|
||||||
@ -18,19 +22,26 @@ def extract_enums(lines):
|
|||||||
m = re.search("(?<=enum )\w+(?= {)", line)
|
m = re.search("(?<=enum )\w+(?= {)", line)
|
||||||
if m:
|
if m:
|
||||||
enum_name = m.group()
|
enum_name = m.group()
|
||||||
# print(enum_name)
|
print(enum_name)
|
||||||
|
# print(line)
|
||||||
fields = []
|
fields = []
|
||||||
while True:
|
|
||||||
l = next(line_iter)
|
|
||||||
if '};' in l:
|
|
||||||
break
|
|
||||||
m = re.search("\w+", l)
|
|
||||||
try:
|
|
||||||
# print('\t', m.group())
|
|
||||||
fields.append(m.group())
|
|
||||||
|
|
||||||
except:
|
#deal with single line enums
|
||||||
pass
|
if '};' in line:
|
||||||
|
fields = single_line_enum(line)
|
||||||
|
else:
|
||||||
|
#deal with multi line enums
|
||||||
|
while True:
|
||||||
|
l = next(line_iter)
|
||||||
|
if '};' in l:
|
||||||
|
break
|
||||||
|
m = re.search("\w+", l)
|
||||||
|
try:
|
||||||
|
# print('\t', m.group())
|
||||||
|
fields.append(m.group())
|
||||||
|
|
||||||
|
except:
|
||||||
|
pass
|
||||||
enums[enum_name] = fields
|
enums[enum_name] = fields
|
||||||
return enums
|
return enums
|
||||||
|
|
||||||
|
@ -47,6 +47,8 @@ lines = []
|
|||||||
|
|
||||||
ag2 = []
|
ag2 = []
|
||||||
|
|
||||||
|
cn = []
|
||||||
|
|
||||||
def get_arguments(node):
|
def get_arguments(node):
|
||||||
args = [a.type.spelling for a in node.get_arguments()]
|
args = [a.type.spelling for a in node.get_arguments()]
|
||||||
args = [
|
args = [
|
||||||
@ -66,8 +68,12 @@ def get_fdec(node):
|
|||||||
else:
|
else:
|
||||||
return_type = 'void'
|
return_type = 'void'
|
||||||
|
|
||||||
|
if node.is_const_method():
|
||||||
|
const = 'const'
|
||||||
|
else:
|
||||||
|
const = ''
|
||||||
args = ", ".join(args)
|
args = ", ".join(args)
|
||||||
args = f'({return_type}(Detector::*)({args}))'
|
args = f'({return_type}(Detector::*)({args}){const})'
|
||||||
return args
|
return args
|
||||||
|
|
||||||
|
|
||||||
@ -85,6 +91,7 @@ def visit(node):
|
|||||||
lines.append(
|
lines.append(
|
||||||
f'.def("{child.spelling}",{fs} &Detector::{child.spelling}{args})'
|
f'.def("{child.spelling}",{fs} &Detector::{child.spelling}{args})'
|
||||||
)
|
)
|
||||||
|
cn.append(child)
|
||||||
for child in node.get_children():
|
for child in node.get_children():
|
||||||
visit(child)
|
visit(child)
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -8,12 +8,17 @@
|
|||||||
#include "network_utils.h"
|
#include "network_utils.h"
|
||||||
#include "sls_detector_defs.h"
|
#include "sls_detector_defs.h"
|
||||||
#include "typecaster.h"
|
#include "typecaster.h"
|
||||||
|
|
||||||
|
#include "TimeHelper.h"
|
||||||
|
#include <array>
|
||||||
|
#include <chrono>
|
||||||
namespace py = pybind11;
|
namespace py = pybind11;
|
||||||
void init_det(py::module &m) {
|
void init_det(py::module &m) {
|
||||||
using sls::Detector;
|
using sls::Detector;
|
||||||
using sls::Positions;
|
using sls::Positions;
|
||||||
using sls::Result;
|
using sls::Result;
|
||||||
using sls::defs;
|
using sls::defs;
|
||||||
|
using sls::ns;
|
||||||
|
|
||||||
py::class_<Detector> CppDetectorApi(m, "CppDetectorApi");
|
py::class_<Detector> CppDetectorApi(m, "CppDetectorApi");
|
||||||
CppDetectorApi
|
CppDetectorApi
|
||||||
|
@ -65,38 +65,14 @@ void init_enums(py::module &m) {
|
|||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::externalSignalFlag>(Defs, "externalSignalFlag")
|
py::enum_<slsDetectorDefs::externalSignalFlag>(Defs, "externalSignalFlag")
|
||||||
.value("GET_EXTERNAL_SIGNAL_FLAG",
|
|
||||||
slsDetectorDefs::externalSignalFlag::GET_EXTERNAL_SIGNAL_FLAG)
|
|
||||||
.value("SIGNAL_OFF", slsDetectorDefs::externalSignalFlag::SIGNAL_OFF)
|
|
||||||
.value("GATE_IN_ACTIVE_HIGH",
|
|
||||||
slsDetectorDefs::externalSignalFlag::GATE_IN_ACTIVE_HIGH)
|
|
||||||
.value("GATE_IN_ACTIVE_LOW",
|
|
||||||
slsDetectorDefs::externalSignalFlag::GATE_IN_ACTIVE_LOW)
|
|
||||||
.value("TRIGGER_IN_RISING_EDGE",
|
.value("TRIGGER_IN_RISING_EDGE",
|
||||||
slsDetectorDefs::externalSignalFlag::TRIGGER_IN_RISING_EDGE)
|
slsDetectorDefs::externalSignalFlag::TRIGGER_IN_RISING_EDGE)
|
||||||
.value("TRIGGER_IN_FALLING_EDGE",
|
.value("TRIGGER_IN_FALLING_EDGE",
|
||||||
slsDetectorDefs::externalSignalFlag::TRIGGER_IN_FALLING_EDGE)
|
slsDetectorDefs::externalSignalFlag::TRIGGER_IN_FALLING_EDGE)
|
||||||
.value("RO_TRIGGER_IN_RISING_EDGE",
|
.value("INVERSION_ON",
|
||||||
slsDetectorDefs::externalSignalFlag::RO_TRIGGER_IN_RISING_EDGE)
|
slsDetectorDefs::externalSignalFlag::INVERSION_ON)
|
||||||
.value("RO_TRIGGER_IN_FALLING_EDGE",
|
.value("INVERSION_OFF",
|
||||||
slsDetectorDefs::externalSignalFlag::RO_TRIGGER_IN_FALLING_EDGE)
|
slsDetectorDefs::externalSignalFlag::INVERSION_OFF)
|
||||||
.value("GATE_OUT_ACTIVE_HIGH",
|
|
||||||
slsDetectorDefs::externalSignalFlag::GATE_OUT_ACTIVE_HIGH)
|
|
||||||
.value("GATE_OUT_ACTIVE_LOW",
|
|
||||||
slsDetectorDefs::externalSignalFlag::GATE_OUT_ACTIVE_LOW)
|
|
||||||
.value("TRIGGER_OUT_RISING_EDGE",
|
|
||||||
slsDetectorDefs::externalSignalFlag::TRIGGER_OUT_RISING_EDGE)
|
|
||||||
.value("TRIGGER_OUT_FALLING_EDGE",
|
|
||||||
slsDetectorDefs::externalSignalFlag::TRIGGER_OUT_FALLING_EDGE)
|
|
||||||
.value("RO_TRIGGER_OUT_RISING_EDGE",
|
|
||||||
slsDetectorDefs::externalSignalFlag::RO_TRIGGER_OUT_RISING_EDGE)
|
|
||||||
.value("RO_TRIGGER_OUT_FALLING_EDGE",
|
|
||||||
slsDetectorDefs::externalSignalFlag::RO_TRIGGER_OUT_FALLING_EDGE)
|
|
||||||
.value("OUTPUT_LOW", slsDetectorDefs::externalSignalFlag::OUTPUT_LOW)
|
|
||||||
.value("OUTPUT_HIGH", slsDetectorDefs::externalSignalFlag::OUTPUT_HIGH)
|
|
||||||
.value(
|
|
||||||
"MASTER_SLAVE_SYNCHRONIZATION",
|
|
||||||
slsDetectorDefs::externalSignalFlag::MASTER_SLAVE_SYNCHRONIZATION)
|
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::timingMode>(Defs, "timingMode")
|
py::enum_<slsDetectorDefs::timingMode>(Defs, "timingMode")
|
||||||
@ -106,6 +82,9 @@ void init_enums(py::module &m) {
|
|||||||
slsDetectorDefs::timingMode::TRIGGER_EXPOSURE)
|
slsDetectorDefs::timingMode::TRIGGER_EXPOSURE)
|
||||||
.value("GATED", slsDetectorDefs::timingMode::GATED)
|
.value("GATED", slsDetectorDefs::timingMode::GATED)
|
||||||
.value("BURST_TRIGGER", slsDetectorDefs::timingMode::BURST_TRIGGER)
|
.value("BURST_TRIGGER", slsDetectorDefs::timingMode::BURST_TRIGGER)
|
||||||
|
.value("TRIGGER_GATED", slsDetectorDefs::timingMode::TRIGGER_GATED)
|
||||||
|
.value("NUM_TIMING_MODES",
|
||||||
|
slsDetectorDefs::timingMode::NUM_TIMING_MODES)
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::dacIndex>(Defs, "dacIndex")
|
py::enum_<slsDetectorDefs::dacIndex>(Defs, "dacIndex")
|
||||||
@ -248,22 +227,22 @@ void init_enums(py::module &m) {
|
|||||||
|
|
||||||
py::enum_<slsDetectorDefs::clockIndex>(Defs, "clockIndex")
|
py::enum_<slsDetectorDefs::clockIndex>(Defs, "clockIndex")
|
||||||
.value("ADC_CLOCK", slsDetectorDefs::clockIndex::ADC_CLOCK)
|
.value("ADC_CLOCK", slsDetectorDefs::clockIndex::ADC_CLOCK)
|
||||||
.value("DBIT_CLOCK", slsDetectorDefs::clockIndex::DBIT_CLOCK)
|
.value(" DBIT_CLOCK", slsDetectorDefs::clockIndex::DBIT_CLOCK)
|
||||||
.value("RUN_CLOCK", slsDetectorDefs::clockIndex::RUN_CLOCK)
|
.value(" RUN_CLOCK", slsDetectorDefs::clockIndex::RUN_CLOCK)
|
||||||
.value("SYNC_CLOCK", slsDetectorDefs::clockIndex::SYNC_CLOCK)
|
.value(" SYNC_CLOCK", slsDetectorDefs::clockIndex::SYNC_CLOCK)
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::readoutMode>(Defs, "readoutMode")
|
py::enum_<slsDetectorDefs::readoutMode>(Defs, "readoutMode")
|
||||||
.value("ANALOG_ONLY", slsDetectorDefs::readoutMode::ANALOG_ONLY)
|
.value("ANALOG_ONLY", slsDetectorDefs::readoutMode::ANALOG_ONLY)
|
||||||
.value("DIGITAL_ONLY", slsDetectorDefs::readoutMode::DIGITAL_ONLY)
|
.value(" DIGITAL_ONLY", slsDetectorDefs::readoutMode::DIGITAL_ONLY)
|
||||||
.value("ANALOG_AND_DIGITAL",
|
.value(" ANALOG_AND_DIGITAL",
|
||||||
slsDetectorDefs::readoutMode::ANALOG_AND_DIGITAL)
|
slsDetectorDefs::readoutMode::ANALOG_AND_DIGITAL)
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::speedLevel>(Defs, "speedLevel")
|
py::enum_<slsDetectorDefs::speedLevel>(Defs, "speedLevel")
|
||||||
.value("FULL_SPEED", slsDetectorDefs::speedLevel::FULL_SPEED)
|
.value("FULL_SPEED", slsDetectorDefs::speedLevel::FULL_SPEED)
|
||||||
.value("HALF_SPEED", slsDetectorDefs::speedLevel::HALF_SPEED)
|
.value(" HALF_SPEED", slsDetectorDefs::speedLevel::HALF_SPEED)
|
||||||
.value("QUARTER_SPEED", slsDetectorDefs::speedLevel::QUARTER_SPEED)
|
.value(" QUARTER_SPEED", slsDetectorDefs::speedLevel::QUARTER_SPEED)
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::portType>(Defs, "portType")
|
py::enum_<slsDetectorDefs::portType>(Defs, "portType")
|
||||||
@ -300,12 +279,13 @@ void init_enums(py::module &m) {
|
|||||||
.value("BURST_OFF", slsDetectorDefs::burstMode::BURST_OFF)
|
.value("BURST_OFF", slsDetectorDefs::burstMode::BURST_OFF)
|
||||||
.value("BURST_INTERNAL", slsDetectorDefs::burstMode::BURST_INTERNAL)
|
.value("BURST_INTERNAL", slsDetectorDefs::burstMode::BURST_INTERNAL)
|
||||||
.value("BURST_EXTERNAL", slsDetectorDefs::burstMode::BURST_EXTERNAL)
|
.value("BURST_EXTERNAL", slsDetectorDefs::burstMode::BURST_EXTERNAL)
|
||||||
|
.value("NUM_BURST_MODES", slsDetectorDefs::burstMode::NUM_BURST_MODES)
|
||||||
.export_values();
|
.export_values();
|
||||||
|
|
||||||
py::enum_<slsDetectorDefs::timingSourceType>(Defs, "timingSourceType")
|
py::enum_<slsDetectorDefs::timingSourceType>(Defs, "timingSourceType")
|
||||||
.value("TIMING_INTERNAL",
|
.value("TIMING_INTERNAL",
|
||||||
slsDetectorDefs::timingSourceType::TIMING_INTERNAL)
|
slsDetectorDefs::timingSourceType::TIMING_INTERNAL)
|
||||||
.value("TIMING_EXTERNAL",
|
.value(" TIMING_EXTERNAL",
|
||||||
slsDetectorDefs::timingSourceType::TIMING_EXTERNAL)
|
slsDetectorDefs::timingSourceType::TIMING_EXTERNAL)
|
||||||
.export_values();
|
.export_values();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user