예제 #1
0
            //~queue_base() noexcept override = default;

            //queue_base(const queue_base &) = delete;
            //queue_base(queue_base &&) = delete;
            //queue_base &operator=(const queue_base &) = delete;
            //queue_base &operator=(queue_base &&) = delete;


            public void register_state(plib.state_manager_t manager, string module)
            {
                throw new emu_unimplemented();
#if false
                manager.save_item(this, m_qsize, module + "." + "qsize");
                manager.save_item(this, &m_times[0], module + "." + "times", m_times.size());
                manager.save_item(this, &m_net_ids[0], module + "." + "names", m_net_ids.size());
#endif
            }
예제 #2
0
        public void netlist_state_t_after_ctor(string name, plib.plog_delegate logger)
        {
            m_log           = new log_type(logger);
            m_dummy_version = 1;

            m_setup = new setup_t(this);           //m_setup = plib::make_unique<setup_t, host_arena>(*this);
            // create the run interface
            m_netlist = new netlist_t(this, name); //m_netlist = plib::make_unique<netlist_t>(m_pool, *this, name);

            // Make sure save states are invalidated when a new version is deployed

            m_state.save_item(this, m_dummy_version, "V" + version());

            // Initialize factory
            netlist.devices.net_lib_global.initialize_factory(m_setup.parser().factory_());

            // Add default include file
            string content =
                "#define RES_R(res) (res)            \n" +
                "#define RES_K(res) ((res) * 1e3)    \n" +
                "#define RES_M(res) ((res) * 1e6)    \n" +
                "#define CAP_U(cap) ((cap) * 1e-6)   \n" +
                "#define CAP_N(cap) ((cap) * 1e-9)   \n" +
                "#define CAP_P(cap) ((cap) * 1e-12)  \n" +
                "#define IND_U(ind) ((ind) * 1e-6)   \n" +
                "#define IND_N(ind) ((ind) * 1e-9)   \n" +
                "#define IND_P(ind) ((ind) * 1e-12)  \n";

            m_setup.parser().add_include(new plib.psource_str_t("netlist/devices/net_lib.h", content));  //m_setup->parser().add_include<plib::psource_str_t>("netlist/devices/net_lib.h", content);

            // This is for core macro libraries
            m_setup.parser().add_include(new plib.psource_str_t("devices/net_lib.h", content)); //m_setup->parser().add_include<plib::psource_str_t>("devices/net_lib.h", content);

            netlist_base_lib(m_setup.parser());                                                 //NETLIST_NAME(base_lib)(m_setup->parser());

            //throw new emu_unimplemented();
#if false
            m_setup->parser().register_source <source_pattern_t>("src/lib/netlist/macro/nlm_{1}.cpp", true);
            m_setup->parser().register_source <source_pattern_t>("src/lib/netlist/generated/nlm_{1}.cpp", true);
            m_setup->parser().register_source <source_pattern_t>("src/lib/netlist/macro/modules/nlmod_{1}.cpp", true);
            m_setup->parser().include("base_lib");
#endif
        }