24#ifndef __YASIMAVR_SIGNAL_H__
25#define __YASIMAVR_SIGNAL_H__
30#include <unordered_map>
80 std::vector<Signal*> m_signals;
106 void connect(
SignalHook& hook,
int hooktag = 0);
127 std::vector<hook_slot_t> m_hooks;
130 int signal_index(
const SignalHook& hook)
const;
141 vardata_t data(
int sigid,
long long index = 0)
const;
142 bool has_data(
int sigid,
long long index = 0)
const;
143 void set_data(
int sigid,
const vardata_t& v,
long long index = 0);
159 size_t operator()(
const key_t& k)
const;
162 std::unordered_map<key_t, vardata_t, keyhash_t> m_data;
175 virtual void raised(
const signal_data_t& sigdata,
int hooktag)
override;
179 size_t add_mux(
DataSignal& signal,
int sigid_filt);
180 size_t add_mux(
DataSignal& signal,
int sigid_filt,
long long ix_filt);
184 void set_selection(
size_t index);
185 size_t selected_index()
const;
186 bool connected()
const;
193 long long index_filt;
200 std::vector<mux_item_t> m_items;
204 size_t add_mux(mux_item_t& item);
220 return (m_sel_index < m_items.size()) ? !!m_items[m_sel_index].signal :
false;
237 (c.*f)(sigdata, hooktag);
Definition sim_signal.h:227
virtual void raised(const signal_data_t &sigdata, int hooktag) override final
Definition sim_signal.h:235
constexpr BoundFunctionSignalHook(C &_c, bound_fct_t _f)
Definition sim_signal.h:233
void(C::*)(const signal_data_t &, int) bound_fct_t
Definition sim_signal.h:231
Definition sim_signal.h:137
Definition sim_signal.h:169
bool connected() const
Definition sim_signal.h:218
size_t selected_index() const
Definition sim_signal.h:213
DataSignal & signal()
Definition sim_signal.h:208
Definition sim_signal.h:55
SignalHook(const SignalHook &&)=delete
SignalHook & operator=(const SignalHook &&)=delete
virtual void raised(const signal_data_t &sigdata, int hooktag)=0
Signalling framework class.
Definition sim_signal.h:97
Signal(const Signal &&)=delete
Signal & operator=(const Signal &&)=delete
virtual void raise(const signal_data_t &sigdata)
Definition sim_signal.cpp:142
Definition sim_types.h:495
#define YASIMAVR_BEGIN_NAMESPACE
Definition sim_globals.h:58
#define AVR_CORE_PUBLIC_API
Definition sim_globals.h:46
#define YASIMAVR_END_NAMESPACE
Definition sim_globals.h:59
constexpr bool operator==(reg_addr_t a, const regmask_t &rm)
Definition sim_types.h:184
Definition sim_signal.h:39
int sigid
Definition sim_signal.h:41
vardata_t data
Definition sim_signal.h:43
long long index
Definition sim_signal.h:42