15 if (std::filesystem::exists(filename)) {
20 for (
const std::string& folder : folders) {
21 std::filesystem::path fullPath = std::filesystem::path(folder) / filename;
22 if (std::filesystem::exists(fullPath)) {
28 std::string errorMsg =
"LookupTable: CSV file '" + filename +
"' not found in:\n" + std::filesystem::current_path().string();
29 for (
const std::string& folder : folders) {
30 errorMsg +=
"\n" + std::filesystem::absolute(folder).string();
32 throw std::runtime_error(errorMsg);
38 if ( table.empty() ) {
39 throw std::runtime_error(std::format(
"LookupTable: table '{}' with source '{}' is empty",
name, source));
42 for (
size_t j = 1; j < table.size(); j++) {
44 std::vector< double > inputs;
45 size_t columns = row.size();
47 for (
size_t i = 0; i < columns - 1; i++ ) {
49 if ( !std::holds_alternative<BPMNOS::number>(cell) ) {
50 throw std::runtime_error(std::format(
"LookupTable: illegal input in table '{}' at row {}, column {}",
name, j, i));
53 inputs.push_back( (
double)std::get<BPMNOS::number>(cell) );
55 auto& cell = row[columns - 1];
56 if ( !std::holds_alternative<BPMNOS::number>(cell) ) {
57 std::visit([](
auto&& value) { std::cerr <<
"Value: " << value <<
" "; }, cell);
58 throw std::runtime_error(std::format(
"LookupTable: illegal output in table '{}' at row {}, column {}",
name, j, columns - 1));
61 auto result = (double)std::get<BPMNOS::number>(cell);