diff options
Diffstat (limited to 'src/lib/netlist/nl_factory.cpp')
-rw-r--r-- | src/lib/netlist/nl_factory.cpp | 140 |
1 files changed, 65 insertions, 75 deletions
diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp index 998f1a5870b..eca8de4d4b2 100644 --- a/src/lib/netlist/nl_factory.cpp +++ b/src/lib/netlist/nl_factory.cpp @@ -17,95 +17,85 @@ namespace netlist { namespace factory { -class NETLIB_NAME(wrapper) : public device_t -{ -public: - NETLIB_NAME(wrapper)(netlist_base_t &anetlist, const pstring &name) - : device_t(anetlist, name) + class NETLIB_NAME(wrapper) : public device_t + { + public: + NETLIB_NAME(wrapper)(netlist_base_t &anetlist, const pstring &name) + : device_t(anetlist, name) + { + } + protected: + NETLIB_RESETI() { } + NETLIB_UPDATEI() { }; + }; + + element_t::element_t(const pstring &name, const pstring &classname, + const pstring &def_param, const pstring &sourcefile) + : m_name(name), m_classname(classname), m_def_param(def_param), + m_sourcefile(sourcefile) { } -protected: - NETLIB_RESETI(); - NETLIB_UPDATEI(); -}; - + element_t::element_t(const pstring &name, const pstring &classname, + const pstring &def_param) + : m_name(name), m_classname(classname), m_def_param(def_param), + m_sourcefile("<unknown>") + { + } -element_t::element_t(const pstring &name, const pstring &classname, - const pstring &def_param, const pstring &sourcefile) - : m_name(name), m_classname(classname), m_def_param(def_param), - m_sourcefile(sourcefile) -{ -} - -element_t::element_t(const pstring &name, const pstring &classname, - const pstring &def_param) - : m_name(name), m_classname(classname), m_def_param(def_param), - m_sourcefile("<unknown>") -{ -} - -element_t::~element_t() -{ -} - -// ---------------------------------------------------------------------------------------- -// net_device_t_base_factory -// ---------------------------------------------------------------------------------------- - -list_t::list_t( setup_t &setup) -: m_setup(setup) -{ -} + element_t::~element_t() + { + } -list_t::~list_t() -{ - clear(); -} + // ---------------------------------------------------------------------------------------- + // net_device_t_base_factory + // ---------------------------------------------------------------------------------------- -void list_t::register_device(std::unique_ptr<element_t> &&factory) -{ - for (auto & e : *this) - if (e->name() == factory->name()) - m_setup.log().fatal(MF_1_FACTORY_ALREADY_CONTAINS_1, factory->name()); - push_back(std::move(factory)); -} - -factory::element_t * list_t::factory_by_name(const pstring &devname) -{ - for (auto & e : *this) + list_t::list_t( setup_t &setup) + : m_setup(setup) { - if (e->name() == devname) - return e.get(); } - m_setup.log().fatal(MF_1_CLASS_1_NOT_FOUND, devname); - return nullptr; // appease code analysis -} + list_t::~list_t() + { + clear(); + } -// ----------------------------------------------------------------------------- -// factory_lib_entry_t: factory class to wrap macro based chips/elements -// ----------------------------------------------------------------------------- + void list_t::register_device(std::unique_ptr<element_t> &&factory) + { + for (auto & e : *this) + if (e->name() == factory->name()) + m_setup.log().fatal(MF_1_FACTORY_ALREADY_CONTAINS_1, factory->name()); + push_back(std::move(factory)); + } -plib::owned_ptr<device_t> library_element_t::Create(netlist_base_t &anetlist, const pstring &name) -{ - return plib::owned_ptr<device_t>::Create<NETLIB_NAME(wrapper)>(anetlist, name); -} + factory::element_t * list_t::factory_by_name(const pstring &devname) + { + for (auto & e : *this) + { + if (e->name() == devname) + return e.get(); + } + + m_setup.log().fatal(MF_1_CLASS_1_NOT_FOUND, devname); + return nullptr; // appease code analysis + } -void library_element_t::macro_actions(netlist_base_t &anetlist, const pstring &name) -{ - anetlist.setup().namespace_push(name); - anetlist.setup().include(this->name()); - anetlist.setup().namespace_pop(); -} + // ----------------------------------------------------------------------------- + // factory_lib_entry_t: factory class to wrap macro based chips/elements + // ----------------------------------------------------------------------------- -NETLIB_RESET(wrapper) -{ -} + plib::owned_ptr<device_t> library_element_t::Create(netlist_base_t &anetlist, const pstring &name) + { + return plib::owned_ptr<device_t>::Create<NETLIB_NAME(wrapper)>(anetlist, name); + } -NETLIB_UPDATE(wrapper) -{ -} + void library_element_t::macro_actions(netlist_base_t &anetlist, const pstring &name) + { + anetlist.setup().namespace_push(name); + anetlist.setup().include(this->name()); + anetlist.setup().namespace_pop(); + } } } |