示例#1
0
文件: nl_base.cpp 项目: rfka01/mame
netlist_t::netlist_t(const pstring &aname, plib::unique_ptr<callbacks_t> callbacks)
	: m_state(plib::make_unique<netlist_state_t>(aname, *this, std::move(callbacks)))
	, m_solver(nullptr)
	, m_time(netlist_time::zero())
	, m_mainclock(nullptr)
	, m_queue(*m_state)
{
	devices::initialize_factory(nlstate().setup().factory());
	NETLIST_NAME(base)(nlstate().setup());
	run_state_manager().save_item(this, static_cast<plib::state_manager_t::callback_t &>(m_queue), "m_queue");
	run_state_manager().save_item(this, m_time, "m_time");
}
示例#2
0
	void load_state(std::vector<char> &buf)
	{
		std::size_t size = 0;
		for (auto const & s : run_state_manager().save_list())
			size += s->m_dt.size * s->m_count;

		if (buf.size() != size)
			throw netlist::nl_exception("Size different during load state.");

		char *p = buf.data();

		for (auto const & s : run_state_manager().save_list())
		{
			std::size_t sz = s->m_dt.size * s->m_count;
			if (s->m_dt.is_float || s->m_dt.is_integral)
				std::copy(p, p + sz, static_cast<char *>(s->m_ptr));
			else
				log().fatal("found unsupported save element {1}\n", s->m_name);
			p += sz;
		}
		run_state_manager().post_load();
		nlstate().rebuild_lists();
	}
示例#3
0
	netlist::setup_t &setup() { return nlstate().setup(); }