summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/nl_base.h
diff options
context:
space:
mode:
author couriersud <couriersud@arcor.de>2017-01-02 13:56:16 +0100
committer couriersud <couriersud@arcor.de>2017-01-02 17:33:20 +0100
commit9a7b32f29d916e0f70ae934008315b66885f7c4c (patch)
treeeb3ab5c1f77a1ba58d285ef7baf48c9e993cd4e0 /src/lib/netlist/nl_base.h
parenta64328499ca0e94c94bb81e51ff5a7e5c0df4336 (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.h52
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
// -----------------------------------------------------------------------------