summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_factory.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/nl_factory.cpp')
-rw-r--r--src/lib/netlist/nl_factory.cpp140
1 files changed, 61 insertions, 79 deletions
diff --git a/src/lib/netlist/nl_factory.cpp b/src/lib/netlist/nl_factory.cpp
index 2bb49590c4b..1f0ac35c6c4 100644
--- a/src/lib/netlist/nl_factory.cpp
+++ b/src/lib/netlist/nl_factory.cpp
@@ -10,102 +10,84 @@
#include "nl_factory.h"
#include "nl_base.h"
+#include "nl_errstr.h"
#include "nl_setup.h"
#include "plib/putil.h"
-#include "nl_errstr.h"
namespace netlist { namespace factory
{
-class NETLIB_NAME(wrapper) : public device_t
-{
-public:
- NETLIB_NAME(wrapper)(netlist_t &anetlist, const pstring &name)
- : device_t(anetlist, name)
+ class NETLIB_NAME(wrapper) : public device_t
+ {
+ public:
+ NETLIB_NAME(wrapper)(netlist_state_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)
-{
-}
-
-list_t::~list_t()
-{
- clear();
-}
-
-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));
-}
+ // ----------------------------------------------------------------------------------------
+ // net_device_t_base_factory
+ // ----------------------------------------------------------------------------------------
-factory::element_t * list_t::factory_by_name(const pstring &devname)
-{
- for (auto & e : *this)
+ list_t::list_t(log_type &alog)
+ : m_log(alog)
{
- if (e->name() == devname)
- return e.get();
}
- m_setup.log().fatal(MF_1_CLASS_1_NOT_FOUND, devname);
- return nullptr; // appease code analysis
-}
-
-// -----------------------------------------------------------------------------
-// factory_lib_entry_t: factory class to wrap macro based chips/elements
-// -----------------------------------------------------------------------------
+ void list_t::register_device(plib::unique_ptr<element_t> &&factory)
+ {
+ for (auto & e : *this)
+ if (e->name() == factory->name())
+ m_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_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_log.fatal(MF_1_CLASS_1_NOT_FOUND, devname);
+ return nullptr; // appease code analysis
+ }
-void library_element_t::macro_actions(netlist_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)
-{
-}
+ pool_owned_ptr<device_t> library_element_t::Create(netlist_state_t &anetlist, const pstring &name)
+ {
+ return pool().make_poolptr<NETLIB_NAME(wrapper)>(anetlist, name);
+ }
-NETLIB_UPDATE(wrapper)
-{
-}
+ void library_element_t::macro_actions(nlparse_t &nparser, const pstring &name)
+ {
+ nparser.namespace_push(name);
+ nparser.include(this->name());
+ nparser.namespace_pop();
+ }
-} }
+} // namespace factory
+ } // namespace netlist