From cd942db09ab72414193337f2ab001ff39912b796 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Sun, 31 May 2026 00:15:55 +0200 Subject: [PATCH] Fixing build issues --- src/db/db/dbDevice.cc | 2 +- src/db/db/dbDeviceClass.cc | 21 +++++++++++++++++++++ src/db/db/dbDeviceClass.h | 2 +- src/db/db/dbLayoutToNetlistReader.cc | 7 ++++--- src/db/db/dbLayoutToNetlistReader.h | 2 +- 5 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/db/db/dbDevice.cc b/src/db/db/dbDevice.cc index b889e26e8..2c1598000 100644 --- a/src/db/db/dbDevice.cc +++ b/src/db/db/dbDevice.cc @@ -215,7 +215,7 @@ void Device::set_parameter_value (const std::string &name, const tl::Variant &v) void Device::set_parameter_value_create (const std::string &name, const tl::Variant &v, bool primary, const tl::Variant &def_value) { if (device_class ()) { - set_parameter_value (device_class ()->parameter_id_for_name_create (name, primary, def_value), v); + set_parameter_value (mp_device_class->parameter_id_for_name_create (name, primary, def_value), v); } } diff --git a/src/db/db/dbDeviceClass.cc b/src/db/db/dbDeviceClass.cc index 9dc93f930..c616ee4f1 100644 --- a/src/db/db/dbDeviceClass.cc +++ b/src/db/db/dbDeviceClass.cc @@ -308,6 +308,27 @@ size_t DeviceClass::parameter_id_for_name (const std::string &name) const throw tl::Exception (tl::to_string (tr ("Invalid parameter name")) + ": '" + name + "'"); } +size_t DeviceClass::parameter_id_for_name_create (const std::string &name, bool primary, const tl::Variant &default_value) +{ + const std::vector &pd = parameter_definitions (); + for (std::vector::const_iterator i = pd.begin (); i != pd.end (); ++i) { + if (i->name () == name) { + return i->id (); + } + } + + m_parameter_definitions.push_back (db::DeviceParameterDefinition ()); + + db::DeviceParameterDefinition &pdef = m_parameter_definitions.back (); + pdef.set_id (m_parameter_definitions.size () - 1); + + pdef.set_name (name); + pdef.set_default_value (default_value); + pdef.set_is_primary (primary); + + return pdef.id (); +} + bool DeviceClass::has_terminal_with_name (const std::string &name) const { const std::vector &td = terminal_definitions (); diff --git a/src/db/db/dbDeviceClass.h b/src/db/db/dbDeviceClass.h index 035f3cc86..c135c8af7 100644 --- a/src/db/db/dbDeviceClass.h +++ b/src/db/db/dbDeviceClass.h @@ -600,7 +600,7 @@ public: * * The default value also declares the type. */ - size_t parameter_id_for_name_create (const std::string &name, bool primary, const tl::Variant &default_value) const; + size_t parameter_id_for_name_create (const std::string &name, bool primary, const tl::Variant &default_value); /** * @brief Returns true, if the device has a terminal with the given name diff --git a/src/db/db/dbLayoutToNetlistReader.cc b/src/db/db/dbLayoutToNetlistReader.cc index 0925960ad..9ac671ff8 100644 --- a/src/db/db/dbLayoutToNetlistReader.cc +++ b/src/db/db/dbLayoutToNetlistReader.cc @@ -998,12 +998,13 @@ LayoutToNetlistStandardReader::terminal_id (const db::DeviceClass *device_class, throw tl::Exception (tl::to_string (tr ("Not a valid terminal name: ")) + tname + tl::to_string (tr (" for device class: ")) + device_class->name ()); } -std::pair +std::pair LayoutToNetlistStandardReader::device_model_by_name (db::Netlist *netlist, const std::string &dmname) { for (db::Netlist::device_abstract_iterator i = netlist->begin_device_abstracts (); i != netlist->end_device_abstracts (); ++i) { if (i->name () == dmname) { - return std::make_pair (i.operator-> (), i->device_class ()); + // TODO: get rid of the const cast + return std::make_pair (i.operator-> (), const_cast (i->device_class ())); } } @@ -1027,7 +1028,7 @@ LayoutToNetlistStandardReader::read_device (db::Netlist *netlist, db::LayoutToNe std::string dmname; read_word_or_quoted (dmname); - std::pair dm = device_model_by_name (netlist, dmname); + std::pair dm = device_model_by_name (netlist, dmname); std::unique_ptr device (new db::Device ()); device->set_device_class (const_cast (dm.second)); diff --git a/src/db/db/dbLayoutToNetlistReader.h b/src/db/db/dbLayoutToNetlistReader.h index f9c307157..7bd960f35 100644 --- a/src/db/db/dbLayoutToNetlistReader.h +++ b/src/db/db/dbLayoutToNetlistReader.h @@ -108,7 +108,7 @@ protected: void read_netlist (Netlist *netlist, db::LayoutToNetlist *l2n, Brace *nested = 0, std::map *map_per_circuit = 0); static size_t terminal_id (const db::DeviceClass *device_class, const std::string &tname); - static std::pair device_model_by_name (db::Netlist *netlist, const std::string &dmname); + static std::pair device_model_by_name (db::Netlist *netlist, const std::string &dmname); bool read_message (std::string &msg); bool read_severity (Severity &severity);