68 int sz = values_.size();
73 result_ = *values_[0];
77 for(
int j = result_.
length() - 1; j >= 0; -- j ) {
79 for(
int i = sz - 1; i > 0 && res != 3; -- i ) {
95:
public sc_signal<sc_dt::sc_lv<W>, SC_MANY_WRITERS>
137 virtual const char*
kind()
const
138 {
return "sc_signal_rv"; }
142 using base_type::operator=;
171 for(
int i = m_val_vec.size() - 1; i >= 0; -- i ) {
186 bool value_changed =
false;
189 for(
int i = m_proc_vec.size() - 1; i >= 0; -- i ) {
190 if( cur_proc == m_proc_vec[i] ) {
191 if( value_ != *m_val_vec[i] ) {
192 *m_val_vec[i] = value_;
193 value_changed =
true;
201 m_proc_vec.push_back( cur_proc );
202 m_val_vec.push_back(
new value_type( value_ ) );
203 value_changed =
true;
206 if( value_changed ) {
207 this->request_update();
SC_API const char * sc_gen_unique_name(const char *, bool preserve_first)
SC_API const sc_dt::sc_logic_value_t sc_logic_resolution_tbl[4][4]
sc_process_b * sc_get_current_process_b()
@ SC_MANY_WRITERS
allow multiple writers (with different ports)
sc_core::sc_signal_in_if< T > & value(const T &val)
this_type & operator=(const this_type &a)
static void resolve(sc_dt::sc_lv< W > &, const std::vector< sc_dt::sc_lv< W > * > &)
std::vector< sc_process_b * > m_proc_vec
sc_signal_rv(const char *name_, const value_type &initial_value_)
sc_signal_rv< W > this_type
virtual void register_port(sc_port_base &, const char *)
sc_signal_rv(const char *name_)
this_type & operator=(const this_type &a)
sc_signal< sc_dt::sc_lv< W >, SC_MANY_WRITERS > base_type
std::vector< value_type * > m_val_vec
sc_dt::sc_lv< W > value_type
virtual const char * kind() const
virtual void write(const value_type &)