diff options
author | couriersud <couriersud@arcor.de> | 2017-01-02 13:56:16 +0100 |
---|---|---|
committer | couriersud <couriersud@arcor.de> | 2017-01-02 17:33:20 +0100 |
commit | 9a7b32f29d916e0f70ae934008315b66885f7c4c (patch) | |
tree | eb3ab5c1f77a1ba58d285ef7baf48c9e993cd4e0 /src/lib/netlist/nl_base.h | |
parent | a64328499ca0e94c94bb81e51ff5a7e5c0df4336 (diff) |
Simplify code. Introduce consistent approach to loading macro devices.
Changed nltool "listdevices" command accordingly. Fix some bugs which
surfaced by this exercise. (nw)
Diffstat (limited to 'src/lib/netlist/nl_base.h')
-rw-r--r-- | src/lib/netlist/nl_base.h | 52 |
1 files changed, 30 insertions, 22 deletions
diff --git a/src/lib/netlist/nl_base.h b/src/lib/netlist/nl_base.h index 6b515a20c1c..045f7c9b1cb 100644 --- a/src/lib/netlist/nl_base.h +++ b/src/lib/netlist/nl_base.h @@ -960,28 +960,6 @@ namespace netlist virtual void changed() override { } }; - template <typename ST, std::size_t AW, std::size_t DW> - class param_rom_t final: public param_data_t - { - public: - - param_rom_t(device_t &device, const pstring name) - : param_data_t(device, name) - { - stream()->read(&m_data[0],1<<AW); - } - - const ST & operator[] (std::size_t n) { return m_data[n]; } - - protected: - virtual void changed() override - { - stream()->read(&m_data[0],1<<AW); - } - private: - ST m_data[1 << AW]; - }; - // ----------------------------------------------------------------------------- // core_device_t // ----------------------------------------------------------------------------- @@ -1299,6 +1277,36 @@ namespace netlist }; // ----------------------------------------------------------------------------- + // rom parameter + // ----------------------------------------------------------------------------- + + template <typename ST, std::size_t AW, std::size_t DW> + class param_rom_t final: public param_data_t + { + public: + + param_rom_t(device_t &device, const pstring name) + : param_data_t(device, name) + { + auto f = stream(); + if (f != nullptr) + f->read(&m_data[0],1<<AW); + else + device.netlist().log().warning("Rom {1} not found", Value()); + } + + const ST & operator[] (std::size_t n) { return m_data[n]; } + + protected: + virtual void changed() override + { + stream()->read(&m_data[0],1<<AW); + } + private: + ST m_data[1 << AW]; + }; + + // ----------------------------------------------------------------------------- // inline implementations // ----------------------------------------------------------------------------- |