sc_in.hh (12868:23162a436538) | sc_in.hh (13054:bce8a8124325) |
---|---|
1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 18 unchanged lines hidden (view full) --- 27 * Authors: Gabe Black 28 */ 29 30#ifndef __SYSTEMC_EXT_CHANNEL_SC_IN_HH__ 31#define __SYSTEMC_EXT_CHANNEL_SC_IN_HH__ 32 33#include <string> 34 | 1/* 2 * Copyright 2018 Google, Inc. 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions are 6 * met: redistributions of source code must retain the above copyright 7 * notice, this list of conditions and the following disclaimer; 8 * redistributions in binary form must reproduce the above copyright --- 18 unchanged lines hidden (view full) --- 27 * Authors: Gabe Black 28 */ 29 30#ifndef __SYSTEMC_EXT_CHANNEL_SC_IN_HH__ 31#define __SYSTEMC_EXT_CHANNEL_SC_IN_HH__ 32 33#include <string> 34 |
35#include "../core/sc_event.hh" |
|
35#include "../core/sc_port.hh" 36#include "sc_signal_in_if.hh" 37#include "sc_signal_inout_if.hh" 38#include "warn_unimpl.hh" 39 40namespace sc_core 41{ 42 43class sc_event; | 36#include "../core/sc_port.hh" 37#include "sc_signal_in_if.hh" 38#include "sc_signal_inout_if.hh" 39#include "warn_unimpl.hh" 40 41namespace sc_core 42{ 43 44class sc_event; |
44class sc_event_finder; | |
45class sc_trace_file; 46 47template <class T> 48class sc_in : public sc_port<sc_signal_in_if<T>, 1> 49{ 50 public: | 45class sc_trace_file; 46 47template <class T> 48class sc_in : public sc_port<sc_signal_in_if<T>, 1> 49{ 50 public: |
51 sc_in() : sc_port<sc_signal_in_if<T>, 1>() {} 52 explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name) {} | 51 sc_in() : sc_port<sc_signal_in_if<T>, 1>(), 52 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) 53 {} 54 explicit sc_in(const char *name) : sc_port<sc_signal_in_if<T>, 1>(name), 55 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) 56 {} |
53 virtual ~sc_in() {} 54 55 // Deprecated binding constructors. 56 explicit sc_in(const sc_signal_in_if<T> &interface) : | 57 virtual ~sc_in() {} 58 59 // Deprecated binding constructors. 60 explicit sc_in(const sc_signal_in_if<T> &interface) : |
57 sc_port | 61 sc_port<sc_signal_in_if<T>, 1>(interface), 62 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
58 {} 59 sc_in(const char *name, const sc_signal_in_if<T> &interface) : | 63 {} 64 sc_in(const char *name, const sc_signal_in_if<T> &interface) : |
60 sc_port | 65 sc_port<sc_signal_in_if<T>, 1>(name, interface), 66 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
61 {} 62 explicit sc_in(sc_port_b<sc_signal_in_if<T> > &parent) : | 67 {} 68 explicit sc_in(sc_port_b<sc_signal_in_if<T> > &parent) : |
63 sc_port | 69 sc_port<sc_signal_in_if<T>, 1>(parent), 70 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
64 {} 65 sc_in(const char *name, sc_port_b<sc_signal_in_if<T> > &parent) : | 71 {} 72 sc_in(const char *name, sc_port_b<sc_signal_in_if<T> > &parent) : |
66 sc_port | 73 sc_port<sc_signal_in_if<T>, 1>(name, parent), 74 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
67 {} 68 explicit sc_in(sc_port<sc_signal_in_if<T>, 1> &parent) : | 75 {} 76 explicit sc_in(sc_port<sc_signal_in_if<T>, 1> &parent) : |
69 sc_port | 77 sc_port<sc_signal_in_if<T>, 1>(parent), 78 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
70 {} 71 sc_in(const char *name, sc_port<sc_signal_in_if<T>, 1> &parent) : | 79 {} 80 sc_in(const char *name, sc_port<sc_signal_in_if<T>, 1> &parent) : |
72 sc_port | 81 sc_port<sc_signal_in_if<T>, 1>(name, parent), 82 _valueChangedFinder(*this, &sc_signal_in_if<T>::value_changed_event) |
73 {} 74 75 virtual void | 83 {} 84 85 virtual void |
76 bind(const sc_signal_in_if | 86 bind(const sc_signal_in_if<T> &i) |
77 { | 87 { |
78 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 88 sc_port<sc_signal_in_if<T>, 1>::bind( 89 const_cast<sc_signal_in_if<T> &>(i)); |
79 } | 90 } |
80 void 81 operator () (const sc_signal_in_if<T> &) 82 { 83 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 84 } | 91 void operator () (const sc_signal_in_if<T> &i) { bind(i); } |
85 86 virtual void | 92 93 virtual void |
87 bind(sc_port | 94 bind(sc_port<sc_signal_in_if<T>, 1> &i) |
88 { | 95 { |
89 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 96 sc_port<sc_signal_in_if<T>, 1>::bind(i); |
90 } 91 void | 97 } 98 void |
92 operator () (sc_port | 99 operator () (sc_port<sc_signal_in_if<T>, 1> &p) |
93 { | 100 { |
94 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 101 bind(p); |
95 } 96 97 virtual void | 102 } 103 104 virtual void |
98 bind(sc_port | 105 bind(sc_port<sc_signal_inout_if<T>, 1> &p) |
99 { | 106 { |
100 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 107 sc_port_base::bind(p); |
101 } 102 void | 108 } 109 void |
103 operator () (sc_port | 110 operator () (sc_port<sc_signal_inout_if<T>, 1> &p) |
104 { | 111 { |
105 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 112 bind(p); |
106 } 107 | 113 } 114 |
108 virtual void 109 end_of_elaboration() 110 { 111 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 112 } | 115 virtual void end_of_elaboration() { /* Implementation defined. */ } |
113 | 116 |
114 const T & 115 read() const 116 { 117 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 118 return *(const T *)nullptr; 119 } 120 operator const T& () const 121 { 122 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 123 return *(const T *)nullptr; 124 } | 117 const T &read() const { return (*this)->read(); } 118 operator const T& () const { return (*this)->read(); } |
125 | 119 |
120 const sc_event &default_event() const { return (*this)->default_event(); } |
|
126 const sc_event & | 121 const sc_event & |
127 default_event() const 128 { 129 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 130 return *(const sc_event *)nullptr; 131 } 132 const sc_event & | |
133 value_changed_event() const 134 { | 122 value_changed_event() const 123 { |
135 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 136 return *(const sc_event *)nullptr; | 124 return (*this)->value_changed_event(); |
137 } | 125 } |
138 bool 139 event() const 140 { 141 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 142 return false; 143 } 144 sc_event_finder & 145 value_changed() const 146 { 147 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 148 return *(sc_event_finder *)nullptr; 149 } | 126 bool event() const { return (*this)->event(); } 127 sc_event_finder &value_changed() const { return _valueChangedFinder; } |
150 151 virtual const char *kind() const { return "sc_in"; } 152 153 private: | 128 129 virtual const char *kind() const { return "sc_in"; } 130 131 private: |
132 mutable sc_event_finder_t<sc_signal_in_if<T> > _valueChangedFinder; 133 |
|
154 // Disabled | 134 // Disabled |
155 sc_in(const sc_in<T> &) : sc_port<sc_signal_in_if<T>, 1>() {} 156 sc_in<T> &operator = (const sc_in<T> &) { return *this; } | 135 sc_in(const sc_in<T> &); 136 sc_in<T> &operator = (const sc_in<T> &); |
157}; 158 159template <class T> 160inline void 161sc_trace(sc_trace_file *, const sc_in<T> &, const std::string &) 162{ 163 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 164} 165 166template <> 167class sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1> 168{ 169 public: | 137}; 138 139template <class T> 140inline void 141sc_trace(sc_trace_file *, const sc_in<T> &, const std::string &) 142{ 143 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 144} 145 146template <> 147class sc_in<bool> : public sc_port<sc_signal_in_if<bool>, 1> 148{ 149 public: |
170 sc_in() : sc_port<sc_signal_in_if<bool>, 1>() {} | 150 sc_in() : sc_port<sc_signal_in_if<bool>, 1>(), 151 _valueChangedFinder(*this, 152 &sc_signal_in_if<bool>::value_changed_event), 153 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 154 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) 155 {} |
171 explicit sc_in(const char *name) : | 156 explicit sc_in(const char *name) : |
172 sc_port<sc_signal_in_if<bool>, 1>(name) {} | 157 sc_port<sc_signal_in_if<bool>, 1>(name), 158 _valueChangedFinder(*this, 159 &sc_signal_in_if<bool>::value_changed_event), 160 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 161 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) 162 {} |
173 virtual ~sc_in() {} 174 175 // Deprecated binding constructors. 176 explicit sc_in(const sc_signal_in_if<bool> &interface) : | 163 virtual ~sc_in() {} 164 165 // Deprecated binding constructors. 166 explicit sc_in(const sc_signal_in_if<bool> &interface) : |
177 sc_port | 167 sc_port<sc_signal_in_if<bool>, 1>(interface), 168 _valueChangedFinder(*this, 169 &sc_signal_in_if<bool>::value_changed_event), 170 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 171 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
178 {} 179 sc_in(const char *name, const sc_signal_in_if<bool> &interface) : | 172 {} 173 sc_in(const char *name, const sc_signal_in_if<bool> &interface) : |
180 sc_port | 174 sc_port<sc_signal_in_if<bool>, 1>(name, interface), 175 _valueChangedFinder(*this, 176 &sc_signal_in_if<bool>::value_changed_event), 177 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 178 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
181 {} 182 explicit sc_in(sc_port_b<sc_signal_in_if<bool> > &parent) : | 179 {} 180 explicit sc_in(sc_port_b<sc_signal_in_if<bool> > &parent) : |
183 sc_port | 181 sc_port<sc_signal_in_if<bool>, 1>(parent), 182 _valueChangedFinder(*this, 183 &sc_signal_in_if<bool>::value_changed_event), 184 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 185 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
184 {} 185 sc_in(const char *name, sc_port_b<sc_signal_in_if<bool> > &parent) : | 186 {} 187 sc_in(const char *name, sc_port_b<sc_signal_in_if<bool> > &parent) : |
186 sc_port | 188 sc_port<sc_signal_in_if<bool>, 1>(name, parent), 189 _valueChangedFinder(*this, 190 &sc_signal_in_if<bool>::value_changed_event), 191 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 192 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
187 {} 188 explicit sc_in(sc_port<sc_signal_in_if<bool>, 1> &parent) : | 193 {} 194 explicit sc_in(sc_port<sc_signal_in_if<bool>, 1> &parent) : |
189 sc_port | 195 sc_port<sc_signal_in_if<bool>, 1>(parent), 196 _valueChangedFinder(*this, 197 &sc_signal_in_if<bool>::value_changed_event), 198 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 199 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
190 {} 191 sc_in(const char *name, sc_port<sc_signal_in_if<bool>, 1> &parent) : | 200 {} 201 sc_in(const char *name, sc_port<sc_signal_in_if<bool>, 1> &parent) : |
192 sc_port | 202 sc_port<sc_signal_in_if<bool>, 1>(name, parent), 203 _valueChangedFinder(*this, 204 &sc_signal_in_if<bool>::value_changed_event), 205 _posFinder(*this, &sc_signal_in_if<bool>::posedge_event), 206 _negFinder(*this, &sc_signal_in_if<bool>::negedge_event) |
193 {} 194 195 virtual void | 207 {} 208 209 virtual void |
196 bind(const sc_signal_in_if | 210 bind(const sc_signal_in_if<bool> &i) |
197 { | 211 { |
198 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 212 sc_port<sc_signal_in_if<bool>, 1>::bind( 213 const_cast<sc_signal_in_if<bool> &>(i)); |
199 } | 214 } |
200 void 201 operator () (const sc_signal_in_if<bool> &) 202 { 203 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 204 } | 215 void operator () (const sc_signal_in_if<bool> &i) { bind(i); } |
205 206 virtual void | 216 217 virtual void |
207 bind(sc_port | 218 bind(sc_port<sc_signal_in_if<bool>, 1> &p) |
208 { | 219 { |
209 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 220 sc_port<sc_signal_in_if<bool>, 1>::bind(p); |
210 } 211 void | 221 } 222 void |
212 operator () (sc_port | 223 operator () (sc_port<sc_signal_in_if<bool>, 1> &p) |
213 { | 224 { |
214 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 225 bind(p); |
215 } 216 217 virtual void | 226 } 227 228 virtual void |
218 bind(sc_port | 229 bind(sc_port<sc_signal_inout_if<bool>, 1> &p) |
219 { | 230 { |
220 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 231 sc_port_base::bind(p); |
221 } 222 void | 232 } 233 void |
223 operator () (sc_port | 234 operator () (sc_port<sc_signal_inout_if<bool>, 1> &p) |
224 { | 235 { |
225 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 236 bind(p); |
226 } 227 | 237 } 238 |
228 virtual void 229 end_of_elaboration() 230 { 231 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 232 } | 239 virtual void end_of_elaboration() { /* Implementation defined. */ } |
233 | 240 |
234 const bool & 235 read() const 236 { 237 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 238 return *(const bool *)nullptr; 239 } 240 operator const bool& () const 241 { 242 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 243 return *(const bool *)nullptr; 244 } | 241 const bool &read() const { return (*this)->read(); } 242 operator const bool& () const { return (*this)->read(); } |
245 | 243 |
244 const sc_event &default_event() const { return (*this)->default_event(); } |
|
246 const sc_event & | 245 const sc_event & |
247 default_event() const 248 { 249 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 250 return *(const sc_event *)nullptr; 251 } 252 const sc_event & | |
253 value_changed_event() const 254 { | 246 value_changed_event() const 247 { |
255 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 256 return *(const sc_event *)nullptr; | 248 return (*this)->value_changed_event(); |
257 } 258 const sc_event & 259 posedge_event() const 260 { | 249 } 250 const sc_event & 251 posedge_event() const 252 { |
261 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 262 return *(const sc_event *)nullptr; | 253 return (*this)->posedge_event(); |
263 } 264 const sc_event & 265 negedge_event() const 266 { | 254 } 255 const sc_event & 256 negedge_event() const 257 { |
267 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 268 return *(const sc_event *)nullptr; | 258 return (*this)->negedge_event(); |
269 } 270 | 259 } 260 |
271 bool 272 event() const 273 { 274 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 275 return false; 276 } 277 bool 278 posedge() const 279 { 280 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 281 return false; 282 } 283 bool 284 negedge() const 285 { 286 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 287 return false; 288 } | 261 bool event() const { return (*this)->event(); } 262 bool posedge() const { return (*this)->posedge(); } 263 bool negedge() const { return (*this)->negedge(); } |
289 | 264 |
290 sc_event_finder & 291 value_changed() const 292 { 293 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 294 return *(sc_event_finder *)nullptr; 295 } 296 sc_event_finder & 297 pos() const 298 { 299 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 300 return *(sc_event_finder *)nullptr; 301 } 302 sc_event_finder & 303 neg() const 304 { 305 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 306 return *(sc_event_finder *)nullptr; 307 } | 265 sc_event_finder &value_changed() const { return _valueChangedFinder; } 266 sc_event_finder &pos() const { return _posFinder; } 267 sc_event_finder &neg() const { return _negFinder; } |
308 309 virtual const char *kind() const { return "sc_in"; } 310 311 private: | 268 269 virtual const char *kind() const { return "sc_in"; } 270 271 private: |
272 mutable sc_event_finder_t<sc_signal_in_if<bool> > _valueChangedFinder; 273 mutable sc_event_finder_t<sc_signal_in_if<bool> > _posFinder; 274 mutable sc_event_finder_t<sc_signal_in_if<bool> > _negFinder; 275 |
|
312 // Disabled | 276 // Disabled |
313 sc_in(const sc_in<bool> &) : sc_port<sc_signal_in_if<bool>, 1>() {} 314 sc_in<bool> &operator = (const sc_in<bool> &) { return *this; } | 277 sc_in(const sc_in<bool> &); 278 sc_in<bool> &operator = (const sc_in<bool> &); |
315}; 316 317template <> 318inline void 319sc_trace<bool>(sc_trace_file *, const sc_in<bool> &, const std::string &) 320{ 321 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 322} 323 324template <> 325class sc_in<sc_dt::sc_logic> : 326 public sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> 327{ 328 public: | 279}; 280 281template <> 282inline void 283sc_trace<bool>(sc_trace_file *, const sc_in<bool> &, const std::string &) 284{ 285 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 286} 287 288template <> 289class sc_in<sc_dt::sc_logic> : 290 public sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> 291{ 292 public: |
329 sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() {} | 293 sc_in() : sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(), 294 _valueChangedFinder(*this, 295 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 296 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 297 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) 298 {} |
330 explicit sc_in(const char *name) : | 299 explicit sc_in(const char *name) : |
331 sc_port | 300 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name), 301 _valueChangedFinder(*this, 302 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 303 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 304 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
332 {} 333 virtual ~sc_in() {} 334 335 // Deprecated binding constructors. 336 explicit sc_in(const sc_signal_in_if<sc_dt::sc_logic> &interface) : | 305 {} 306 virtual ~sc_in() {} 307 308 // Deprecated binding constructors. 309 explicit sc_in(const sc_signal_in_if<sc_dt::sc_logic> &interface) : |
337 sc_port | 310 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(interface), 311 _valueChangedFinder(*this, 312 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 313 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 314 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
338 {} 339 sc_in(const char *name, 340 const sc_signal_in_if<sc_dt::sc_logic> &interface) : | 315 {} 316 sc_in(const char *name, 317 const sc_signal_in_if<sc_dt::sc_logic> &interface) : |
341 sc_port | 318 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, interface), 319 _valueChangedFinder(*this, 320 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 321 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 322 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
342 {} 343 explicit sc_in(sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) : | 323 {} 324 explicit sc_in(sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) : |
344 sc_port | 325 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent), 326 _valueChangedFinder(*this, 327 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 328 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 329 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
345 {} 346 sc_in(const char *name, 347 sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) : | 330 {} 331 sc_in(const char *name, 332 sc_port_b<sc_signal_in_if<sc_dt::sc_logic> > &parent) : |
348 sc_port | 333 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent), 334 _valueChangedFinder(*this, 335 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 336 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 337 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
349 {} 350 explicit sc_in(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) : | 338 {} 339 explicit sc_in(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) : |
351 sc_port | 340 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(parent), 341 _valueChangedFinder(*this, 342 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 343 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 344 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
352 {} 353 sc_in(const char *name, 354 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) : | 345 {} 346 sc_in(const char *name, 347 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &parent) : |
355 sc_port | 348 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>(name, parent), 349 _valueChangedFinder(*this, 350 &sc_signal_in_if<sc_dt::sc_logic>::value_changed_event), 351 _posFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::posedge_event), 352 _negFinder(*this, &sc_signal_in_if<sc_dt::sc_logic>::negedge_event) |
356 {} 357 358 virtual void | 353 {} 354 355 virtual void |
359 bind(const sc_signal_in_if | 356 bind(const sc_signal_in_if<sc_dt::sc_logic> &i) |
360 { | 357 { |
361 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 358 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>::bind( 359 const_cast<sc_signal_in_if<sc_dt::sc_logic> &>(i)); |
362 } 363 void | 360 } 361 void |
364 operator () (const sc_signal_in_if<sc_dt::sc_logic> &) 365 { 366 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 367 } | 362 operator () (const sc_signal_in_if<sc_dt::sc_logic> &i) { bind(i); } |
368 369 virtual void | 363 364 virtual void |
370 bind(sc_port | 365 bind(sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &i) |
371 { | 366 { |
372 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 367 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>::bind(i); |
373 } 374 void | 368 } 369 void |
375 operator () (sc_port | 370 operator () (sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1> &p) |
376 { | 371 { |
377 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 372 bind(p); |
378 } 379 380 virtual void | 373 } 374 375 virtual void |
381 bind(sc_port | 376 bind(sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &p) |
382 { | 377 { |
383 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 378 sc_port_base::bind(p); |
384 } 385 void | 379 } 380 void |
386 operator () (sc_port | 381 operator () (sc_port<sc_signal_inout_if<sc_dt::sc_logic>, 1> &p) |
387 { | 382 { |
388 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); | 383 bind(p); |
389 } 390 | 384 } 385 |
391 virtual void 392 end_of_elaboration() 393 { 394 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 395 } | 386 virtual void end_of_elaboration() { /* Implementation defined. */ } |
396 | 387 |
397 const sc_dt::sc_logic & 398 read() const 399 { 400 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 401 return *(const sc_dt::sc_logic *)nullptr; 402 } 403 operator const sc_dt::sc_logic& () const 404 { 405 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 406 return *(const sc_dt::sc_logic *)nullptr; 407 } | 388 const sc_dt::sc_logic &read() const { return (*this)->read(); } 389 operator const sc_dt::sc_logic& () const { return (*this)->read(); } |
408 | 390 |
391 const sc_event &default_event() const { return (*this)->default_event(); } |
|
409 const sc_event & | 392 const sc_event & |
410 default_event() const 411 { 412 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 413 return *(const sc_event *)nullptr; 414 } 415 const sc_event & | |
416 value_changed_event() const 417 { | 393 value_changed_event() const 394 { |
418 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 419 return *(const sc_event *)nullptr; | 395 return (*this)->value_changed_event(); |
420 } | 396 } |
421 const sc_event & 422 posedge_event() const 423 { 424 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 425 return *(const sc_event *)nullptr; 426 } 427 const sc_event & 428 negedge_event() const 429 { 430 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 431 return *(const sc_event *)nullptr; 432 } | 397 const sc_event &posedge_event() const { return (*this)->posedge_event(); } 398 const sc_event &negedge_event() const { return (*this)->negedge_event(); } |
433 | 399 |
434 bool 435 event() const 436 { 437 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 438 return false; 439 } 440 bool 441 posedge() const 442 { 443 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 444 return false; 445 } 446 bool 447 negedge() const 448 { 449 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 450 return false; 451 } | 400 bool event() const { return (*this)->event(); } 401 bool posedge() const { return (*this)->posedge(); } 402 bool negedge() const { return (*this)->negedge(); } |
452 | 403 |
453 sc_event_finder & 454 value_changed() const 455 { 456 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 457 return *(sc_event_finder *)nullptr; 458 } 459 sc_event_finder & 460 pos() const 461 { 462 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 463 return *(sc_event_finder *)nullptr; 464 } 465 sc_event_finder & 466 neg() const 467 { 468 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 469 return *(sc_event_finder *)nullptr; 470 } | 404 sc_event_finder &value_changed() const { return _valueChangedFinder; } 405 sc_event_finder &pos() const { return _posFinder; } 406 sc_event_finder &neg() const { return _negFinder; } |
471 472 virtual const char *kind() const { return "sc_in"; } 473 474 private: | 407 408 virtual const char *kind() const { return "sc_in"; } 409 410 private: |
411 mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > 412 _valueChangedFinder; 413 mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > _posFinder; 414 mutable sc_event_finder_t<sc_signal_in_if<sc_dt::sc_logic> > _negFinder; 415 |
|
475 // Disabled | 416 // Disabled |
476 sc_in(const sc_in<sc_dt::sc_logic> &) : 477 sc_port<sc_signal_in_if<sc_dt::sc_logic>, 1>() 478 {} 479 sc_in<sc_dt::sc_logic> & 480 operator = (const sc_in<sc_dt::sc_logic> &) 481 { 482 return *this; 483 } | 417 sc_in(const sc_in<sc_dt::sc_logic> &); 418 sc_in<sc_dt::sc_logic> &operator = (const sc_in<sc_dt::sc_logic> &); |
484}; 485 486template <> 487inline void 488sc_trace<sc_dt::sc_logic>( 489 sc_trace_file *, const sc_in<sc_dt::sc_logic> &, const std::string &) 490{ 491 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 492} 493 494} // namespace sc_core 495 496#endif //__SYSTEMC_EXT_CHANNEL_SC_IN_HH__ | 419}; 420 421template <> 422inline void 423sc_trace<sc_dt::sc_logic>( 424 sc_trace_file *, const sc_in<sc_dt::sc_logic> &, const std::string &) 425{ 426 sc_channel_warn_unimpl(__PRETTY_FUNCTION__); 427} 428 429} // namespace sc_core 430 431#endif //__SYSTEMC_EXT_CHANNEL_SC_IN_HH__ |