void detail::net_t::register_con(detail::core_terminal_t &terminal) { terminal.set_net(this); m_core_terms.push_back(&terminal); if (terminal.state() != logic_t::STATE_INP_PASSIVE) m_active++; }
void detail::net_t::remove_terminal(detail::core_terminal_t &terminal) { if (plib::container::contains(m_core_terms, &terminal)) { terminal.set_net(nullptr); plib::container::remove(m_core_terms, &terminal); } else state().log().fatal(MF_REMOVE_TERMINAL_1_FROM_NET_2(terminal.name(), this->name())); }
void device_t::register_subalias(const pstring &name, detail::core_terminal_t &term) { pstring alias = this->name() + "." + name; // everything already fully qualified setup().register_alias_nofqn(alias, term.name()); }
void detail::net_t::add_terminal(detail::core_terminal_t &terminal) { for (auto &t : m_core_terms) if (t == &terminal) state().log().fatal(MF_NET_1_DUPLICATE_TERMINAL_2(name(), t->name())); terminal.set_net(this); m_core_terms.push_back(&terminal); }
/* FIXME: this is only used by solver code since matrix solvers are started in * post_start. */ void device_t::connect_post_start(detail::core_terminal_t &t1, detail::core_terminal_t &t2) { if (!setup().connect(t1, t2)) netlist().log().fatal("Error connecting {1} to {2}\n", t1.name(), t2.name()); }
void device_t::connect_late(detail::core_terminal_t &t1, detail::core_terminal_t &t2) { setup().register_link_fqn(t1.name(), t2.name()); }
/* FIXME: this is only used by solver code since matrix solvers are started in * post_start. */ void device_t::connect_post_start(detail::core_terminal_t &t1, detail::core_terminal_t &t2) { if (!setup().connect(t1, t2)) log().fatal(MF_ERROR_CONNECTING_1_TO_2(t1.name(), t2.name())); }