summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib/netlist/core/core_device.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/lib/netlist/core/core_device.h')
-rw-r--r--src/lib/netlist/core/core_device.h16
1 files changed, 10 insertions, 6 deletions
diff --git a/src/lib/netlist/core/core_device.h b/src/lib/netlist/core/core_device.h
index 2e511ce6c9b..edfe25b6ec0 100644
--- a/src/lib/netlist/core/core_device.h
+++ b/src/lib/netlist/core/core_device.h
@@ -31,23 +31,27 @@ namespace netlist
void do_inc_active() noexcept
{
- if (m_hint_deactivate)
+ gsl_Expects(m_active_outputs >= 0);
+
+ if (m_activate && m_hint_deactivate)
{
if (++m_active_outputs == 1)
{
if (m_stats)
m_stats->m_stat_inc_active.inc();
- inc_active();
+ m_activate(true);//inc_active();
}
}
}
void do_dec_active() noexcept
{
- if (m_hint_deactivate)
+ gsl_Expects(m_active_outputs >= 1);
+
+ if (m_activate && m_hint_deactivate)
if (--m_active_outputs == 0)
{
- dec_active();
+ m_activate(false); //dec_active();
}
}
@@ -74,9 +78,9 @@ namespace netlist
}
protected:
+ using activate_delegate = plib::pmfp<void, bool>;
- virtual void inc_active() noexcept { }
- virtual void dec_active() noexcept { }
+ activate_delegate m_activate;
log_type & log();