00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00037 #ifndef RC_RECONFIGURABLE_MODULE_H_
00038 #define RC_RECONFIGURABLE_MODULE_H_
00039
00040 #include "ReChannel/core/rc_reconfigurable.h"
00041 #include "ReChannel/core/rc_process_support.h"
00042
00043 #include <boost/type_traits/is_base_of.hpp>
00044
00045 namespace ReChannel {
00046
00047 #define RC_STATIC_ASSERT_VALID_MODULE(module_type) \
00048 RC_STATIC_ASSERT_T( \
00049 module_type_validity_check, \
00050 (boost::is_base_of<sc_module, module_type >::value \
00051 || boost::is_same<sc_module, module_type>::value) \
00052 )
00053
00054 template<
00055 class Module=sc_module,
00056 bool _rc_resettable=boost::is_base_of<rc_resettable, Module>::value
00057 >
00058 class rc_reconfigurable_module;
00059
00095 template<class Module>
00096 class rc_reconfigurable_module<Module, true>
00097 : public rc_reconfigurable,
00098 private internals::reconfigurable::begin_construction,
00099 public Module
00100 {
00106 RC_STATIC_ASSERT_VALID_MODULE(Module);
00107
00108 private:
00109 typedef typename internals::reconfigurable::begin_construction
00110 begin_construction;
00111 public:
00112
00116 typedef Module module_type;
00117
00118 public:
00122 rc_reconfigurable_module();
00123
00127 rc_reconfigurable_module(sc_module_name module_name);
00128
00129 template<class A1>
00130 rc_reconfigurable_module(A1 a1);
00131
00132 template<class A1, class A2>
00133 rc_reconfigurable_module(A1 a1, A2 a2);
00134
00135 template<class A1, class A2, class A3>
00136 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3);
00137
00138 template<class A1, class A2, class A3, class A4>
00139 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4);
00140
00141 template<class A1, class A2, class A3, class A4, class A5>
00142 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
00143
00144 template<class A1, class A2, class A3, class A4, class A5, class A6>
00145 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6);
00146
00147 template<class A1, class A2, class A3, class A4,
00148 class A5, class A6, class A7>
00149 rc_reconfigurable_module(
00150 A1 a1, A2 a2, A3 a3, A4 a4,
00151 A5 a5, A6 a6, A7 a7);
00152
00153 template<class A1, class A2, class A3, class A4,
00154 class A5, class A6, class A7, class A8>
00155 rc_reconfigurable_module(
00156 A1 a1, A2 a2, A3 a3, A4 a4,
00157 A5 a5, A6 a6, A7 a7, A8 a8);
00158
00159 template<class A1, class A2, class A3, class A4, class A5,
00160 class A6, class A7, class A8, class A9>
00161 rc_reconfigurable_module(
00162 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
00163 A6 a6, A7 a7, A8 a8, A9 a9);
00164
00165 template<class A1, class A2, class A3, class A4, class A5,
00166 class A6, class A7, class A8, class A9, class A10>
00167 rc_reconfigurable_module(
00168 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
00169 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10);
00170
00171 protected:
00172
00183 inline sc_object* rc_find_object(
00184 const char* obj_name, const sc_object* rel_obj=NULL);
00185
00186
00187
00191 inline void next_trigger()
00192 { rc_next_trigger(); }
00193
00194 inline void next_trigger(const sc_event& e)
00195 { rc_next_trigger(e); }
00196
00197 inline void next_trigger(sc_event_or_list& el)
00198 { rc_next_trigger(el); }
00199
00200 inline void next_trigger(sc_event_and_list& el)
00201 { rc_next_trigger(el); }
00202
00203 inline void next_trigger(const sc_time& t)
00204 { rc_next_trigger(t); }
00205
00206 inline void next_trigger(double v, sc_time_unit tu)
00207 { rc_next_trigger(v, tu); }
00208
00209 inline void next_trigger(const sc_time& t, const sc_event& e)
00210 { rc_next_trigger(t, e); }
00211
00212 inline void next_trigger(double v, sc_time_unit tu, const sc_event& e)
00213 { rc_next_trigger(v, tu, e); }
00214
00215 inline void next_trigger(const sc_time& t, sc_event_or_list& el)
00216 { rc_next_trigger(t, el); }
00217
00218 inline void next_trigger(
00219 double v, sc_time_unit t, sc_event_or_list& el)
00220 { rc_next_trigger(v, t, el); }
00221
00222 inline void next_trigger(const sc_time& t, sc_event_and_list& el)
00223 { rc_next_trigger(t, el); }
00224
00225 inline void next_trigger(
00226 double v, sc_time_unit tu, sc_event_and_list& el)
00227 { rc_next_trigger(v, tu, el); }
00228
00229
00230
00234 inline void wait()
00235 { rc_wait(); }
00236
00237 inline void wait(int n)
00238 { rc_wait(n); }
00239
00240 inline void wait(const sc_event& e)
00241 { rc_wait(e); }
00242
00243 inline void wait(sc_event_or_list& el)
00244 { rc_wait(el); }
00245
00246 inline void wait(sc_event_and_list& el)
00247 { rc_wait(el); }
00248
00249 inline void wait(const sc_time& t)
00250 { rc_wait(t); }
00251
00252 inline void wait(double v, sc_time_unit tu)
00253 { rc_wait(v, tu); }
00254
00255 inline void wait(const sc_time& t, const sc_event& e)
00256 { rc_wait(t, e); }
00257
00258 inline void wait(double v, sc_time_unit tu, const sc_event& e)
00259 { rc_wait(v, tu, e); }
00260
00261 inline void wait(const sc_time& t, sc_event_or_list& el)
00262 { rc_wait(t, el); }
00263
00264 inline void wait(double v, sc_time_unit t, sc_event_or_list& el)
00265 { rc_wait(v, t, el); }
00266
00267 inline void wait(const sc_time& t, sc_event_and_list& el)
00268 { rc_wait(t, el); }
00269
00270 inline void wait(double v, sc_time_unit tu, sc_event_and_list& el)
00271 { rc_wait(v, tu, el); }
00272 };
00273
00309 template<class Module>
00310 class rc_reconfigurable_module<Module, false>
00311 : public rc_reconfigurable,
00312 private internals::reconfigurable::begin_construction,
00313 public Module,
00314 virtual public rc_resettable
00315 {
00321 RC_STATIC_ASSERT_VALID_MODULE(Module);
00322
00323 private:
00324 typedef typename internals::reconfigurable::begin_construction
00325 begin_construction;
00326
00327 public:
00331 typedef Module module_type;
00332
00333 public:
00337 rc_reconfigurable_module();
00338
00342 rc_reconfigurable_module(sc_module_name module_name);
00343
00344 template<class A1>
00345 rc_reconfigurable_module(A1 a1);
00346
00347 template<class A1, class A2>
00348 rc_reconfigurable_module(A1 a1, A2 a2);
00349
00350 template<class A1, class A2, class A3>
00351 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3);
00352
00353 template<class A1, class A2, class A3, class A4>
00354 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4);
00355
00356 template<class A1, class A2, class A3, class A4, class A5>
00357 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5);
00358
00359 template<class A1, class A2, class A3, class A4, class A5, class A6>
00360 rc_reconfigurable_module(A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6);
00361
00362 template<class A1, class A2, class A3, class A4,
00363 class A5, class A6, class A7>
00364 rc_reconfigurable_module(
00365 A1 a1, A2 a2, A3 a3, A4 a4,
00366 A5 a5, A6 a6, A7 a7);
00367
00368 template<class A1, class A2, class A3, class A4,
00369 class A5, class A6, class A7, class A8>
00370 rc_reconfigurable_module(
00371 A1 a1, A2 a2, A3 a3, A4 a4,
00372 A5 a5, A6 a6, A7 a7, A8 a8);
00373
00374 template<class A1, class A2, class A3, class A4, class A5,
00375 class A6, class A7, class A8, class A9>
00376 rc_reconfigurable_module(
00377 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
00378 A6 a6, A7 a7, A8 a8, A9 a9);
00379
00380 template<class A1, class A2, class A3, class A4, class A5,
00381 class A6, class A7, class A8, class A9, class A10>
00382 rc_reconfigurable_module(
00383 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5,
00384 A6 a6, A7 a7, A8 a8, A9 a9, A10 a10);
00385
00386 protected:
00387 inline virtual void rc_on_reset() {}
00388
00389 inline virtual void rc_on_init_resettable() {}
00390
00401 inline sc_object* rc_find_object(
00402 const char* obj_name, const sc_object* rel_obj=NULL);
00403
00404
00405
00409 inline void next_trigger()
00410 { rc_next_trigger(); }
00411
00412 inline void next_trigger(const sc_event& e)
00413 { rc_next_trigger(e); }
00414
00415 inline void next_trigger(sc_event_or_list& el)
00416 { rc_next_trigger(el); }
00417
00418 inline void next_trigger(sc_event_and_list& el)
00419 { rc_next_trigger(el); }
00420
00421 inline void next_trigger(const sc_time& t)
00422 { rc_next_trigger(t); }
00423
00424 inline void next_trigger(double v, sc_time_unit tu)
00425 { rc_next_trigger(v, tu); }
00426
00427 inline void next_trigger(const sc_time& t, const sc_event& e)
00428 { rc_next_trigger(t, e); }
00429
00430 inline void next_trigger(double v, sc_time_unit tu, const sc_event& e)
00431 { rc_next_trigger(v, tu, e); }
00432
00433 inline void next_trigger(const sc_time& t, sc_event_or_list& el)
00434 { rc_next_trigger(t, el); }
00435
00436 inline void next_trigger(
00437 double v, sc_time_unit t, sc_event_or_list& el)
00438 { rc_next_trigger(v, t, el); }
00439
00440 inline void next_trigger(const sc_time& t, sc_event_and_list& el)
00441 { rc_next_trigger(t, el); }
00442
00443 inline void next_trigger(
00444 double v, sc_time_unit tu, sc_event_and_list& el)
00445 { rc_next_trigger(v, tu, el); }
00446
00447
00448
00452 inline void wait()
00453 { rc_wait(); }
00454
00455 inline void wait(int n)
00456 { rc_wait(n); }
00457
00458 inline void wait(const sc_event& e)
00459 { rc_wait(e); }
00460
00461 inline void wait(sc_event_or_list& el)
00462 { rc_wait(el); }
00463
00464 inline void wait(sc_event_and_list& el)
00465 { rc_wait(el); }
00466
00467 inline void wait(const sc_time& t)
00468 { rc_wait(t); }
00469
00470 inline void wait(double v, sc_time_unit tu)
00471 { rc_wait(v, tu); }
00472
00473 inline void wait(const sc_time& t, const sc_event& e)
00474 { rc_wait(t, e); }
00475
00476 inline void wait(double v, sc_time_unit tu, const sc_event& e)
00477 { rc_wait(v, tu, e); }
00478
00479 inline void wait(const sc_time& t, sc_event_or_list& el)
00480 { rc_wait(t, el); }
00481
00482 inline void wait(double v, sc_time_unit t, sc_event_or_list& el)
00483 { rc_wait(v, t, el); }
00484
00485 inline void wait(const sc_time& t, sc_event_and_list& el)
00486 { rc_wait(t, el); }
00487
00488 inline void wait(double v, sc_time_unit tu, sc_event_and_list& el)
00489 { rc_wait(v, tu, el); }
00490 };
00491
00492
00493
00494
00495
00496 template<class Module>
00497 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module()
00498 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00499 module_type()
00500 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00501
00502 template<class Module>
00503 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00504 sc_module_name module_name)
00505 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00506 module_type(module_name)
00507 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00508
00509 template<class Module>
00510 template<class A1>
00511 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(A1 a1)
00512 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00513 module_type(a1)
00514 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00515
00516 template<class Module>
00517 template<class A1, class A2>
00518 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00519 A1 a1, A2 a2)
00520 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00521 module_type(a1, a2)
00522 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00523
00524 template<class Module>
00525 template<class A1, class A2, class A3>
00526 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00527 A1 a1, A2 a2, A3 a3)
00528 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00529 module_type(a1, a2, a3)
00530 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00531
00532 template<class Module>
00533 template<class A1, class A2, class A3, class A4>
00534 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00535 A1 a1, A2 a2, A3 a3, A4 a4)
00536 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00537 module_type(a1, a2, a3, a4)
00538 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00539
00540 template<class Module>
00541 template<class A1, class A2, class A3, class A4, class A5>
00542 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00543 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
00544 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00545 module_type(a1, a2, a3, a4, a5)
00546 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00547
00548 template<class Module>
00549 template<class A1, class A2, class A3, class A4, class A5, class A6>
00550 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00551 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
00552 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00553 module_type(a1, a2, a3, a4, a5, a6)
00554 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00555
00556 template<class Module>
00557 template<class A1, class A2, class A3, class A4,
00558 class A5, class A6, class A7>
00559 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00560 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
00561 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00562 module_type(a1, a2, a3, a4, a5, a6, a7)
00563 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00564
00565 template<class Module>
00566 template<class A1, class A2, class A3, class A4,
00567 class A5, class A6, class A7, class A8>
00568 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00569 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
00570 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00571 module_type(a1, a2, a3, a4, a5, a6, a7, a8)
00572 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00573
00574 template<class Module>
00575 template<class A1, class A2, class A3, class A4, class A5,
00576 class A6, class A7, class A8, class A9>
00577 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00578 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
00579 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00580 module_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)
00581 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00582
00583 template<class Module>
00584 template<class A1, class A2, class A3, class A4, class A5,
00585 class A6, class A7, class A8, class A9, class A10>
00586 rc_reconfigurable_module<Module, true>::rc_reconfigurable_module(
00587 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
00588 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00589 module_type(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
00590 { begin_construction::finish(static_cast<sc_module&>(*this)); }
00591
00592
00593
00594 template<class Module>
00595 inline
00596 sc_object* rc_reconfigurable_module<Module, true>::rc_find_object(
00597 const char* obj_name, const sc_object* rel_obj)
00598 {
00599 if (rel_obj == NULL) { rel_obj = this; }
00600 return ::ReChannel::rc_find_object(obj_name, rel_obj);
00601 }
00602
00603
00604
00605 template<class Module>
00606 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module()
00607 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00608 module_type(sc_module_name())
00609 {
00610 rc_reconfigurable::rc_register_resettable(*this);
00611 begin_construction::finish(static_cast<sc_module&>(*this));
00612 }
00613
00614 template<class Module>
00615 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00616 sc_module_name module_name)
00617 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00618 module_type(module_name)
00619 {
00620 rc_reconfigurable::rc_register_resettable(*this);
00621 begin_construction::finish(static_cast<sc_module&>(*this));
00622 }
00623
00624 template<class Module>
00625 template<class A1>
00626 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(A1 a1)
00627 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00628 module_type(a1)
00629 {
00630 rc_reconfigurable::rc_register_resettable(*this);
00631 begin_construction::finish(static_cast<sc_module&>(*this));
00632 }
00633
00634 template<class Module>
00635 template<class A1, class A2>
00636 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00637 A1 a1, A2 a2)
00638 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00639 module_type(a1, a2)
00640 {
00641 rc_reconfigurable::rc_register_resettable(*this);
00642 begin_construction::finish(static_cast<sc_module&>(*this));
00643 }
00644
00645 template<class Module>
00646 template<class A1, class A2, class A3>
00647 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00648 A1 a1, A2 a2, A3 a3)
00649 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00650 module_type(a1, a2, a3)
00651 {
00652 rc_reconfigurable::rc_register_resettable(*this);
00653 begin_construction::finish(static_cast<sc_module&>(*this));
00654 }
00655
00656 template<class Module>
00657 template<class A1, class A2, class A3, class A4>
00658 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00659 A1 a1, A2 a2, A3 a3, A4 a4)
00660 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00661 module_type(a1, a2, a3, a4)
00662 {
00663 rc_reconfigurable::rc_register_resettable(*this);
00664 begin_construction::finish(static_cast<sc_module&>(*this));
00665 }
00666
00667 template<class Module>
00668 template<class A1, class A2, class A3, class A4, class A5>
00669 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00670 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
00671 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00672 module_type(a1, a2, a3, a4, a5)
00673 {
00674 rc_reconfigurable::rc_register_resettable(*this);
00675 begin_construction::finish(static_cast<sc_module&>(*this));
00676 }
00677
00678 template<class Module>
00679 template<class A1, class A2, class A3, class A4, class A5, class A6>
00680 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00681 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
00682 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00683 module_type(a1, a2, a3, a4, a5, a6)
00684 {
00685 rc_reconfigurable::rc_register_resettable(*this);
00686 begin_construction::finish(static_cast<sc_module&>(*this));
00687 }
00688
00689 template<class Module>
00690 template<class A1, class A2, class A3, class A4,
00691 class A5, class A6, class A7>
00692 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00693 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
00694 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00695 module_type(a1, a2, a3, a4, a5, a6, a7)
00696 {
00697 rc_reconfigurable::rc_register_resettable(*this);
00698 begin_construction::finish(static_cast<sc_module&>(*this));
00699 }
00700
00701 template<class Module>
00702 template<class A1, class A2, class A3, class A4,
00703 class A5, class A6, class A7, class A8>
00704 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00705 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
00706 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00707 module_type(a1, a2, a3, a4, a5, a6, a7, a8)
00708 {
00709 rc_reconfigurable::rc_register_resettable(*this);
00710 begin_construction::finish(static_cast<sc_module&>(*this));
00711 }
00712
00713 template<class Module>
00714 template<class A1, class A2, class A3, class A4, class A5,
00715 class A6, class A7, class A8, class A9>
00716 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00717 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
00718 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00719 module_type(a1, a2, a3, a4, a5, a6, a7, a8, a9)
00720 {
00721 rc_reconfigurable::rc_register_resettable(*this);
00722 begin_construction::finish(static_cast<sc_module&>(*this));
00723 }
00724
00725 template<class Module>
00726 template<class A1, class A2, class A3, class A4, class A5,
00727 class A6, class A7, class A8, class A9, class A10>
00728 rc_reconfigurable_module<Module, false>::rc_reconfigurable_module(
00729 A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9, A10 a10)
00730 : begin_construction(static_cast<rc_reconfigurable&>(*this)),
00731 module_type(a1, a2, a3, a4, a5, a6, a7, a8, a9, a10)
00732 {
00733 rc_reconfigurable::rc_register_resettable(*this);
00734 begin_construction::finish(static_cast<sc_module&>(*this));
00735 }
00736
00737
00738
00739 template<class Module>
00740 inline
00741 sc_object* rc_reconfigurable_module<Module, false>::rc_find_object(
00742 const char* obj_name, const sc_object* rel_obj)
00743 {
00744 if (rel_obj == NULL) {
00745 rel_obj = this;
00746 }
00747 return ::ReChannel::rc_find_object(obj_name, rel_obj);
00748 }
00749
00750 }
00751
00752
00753
00763 #define RC_RECONFIGURABLE_MODULE(reconf_module_name) \
00764 struct reconf_module_name \
00765 : public ::ReChannel::rc_reconfigurable_module<>
00766
00776 #define RC_RECONFIGURABLE_CTOR(reconf_module_name) \
00777 RC_HAS_PROCESS(reconf_module_name); \
00778 reconf_module_name(const sc_module_name& name_) \
00779 : rc_reconfigurable_module<>(name_)
00780
00790 #define RC_RECONFIGURABLE_MODULE_DERIVED(reconf_module_name, user_module_name) \
00791 struct reconf_module_name \
00792 : public ::ReChannel::rc_reconfigurable_module<user_module_name >
00793
00803 #define RC_RECONFIGURABLE_CTOR_DERIVED(reconf_module_name, user_module_name) \
00804 RC_HAS_PROCESS(reconf_module_name); \
00805 reconf_module_name(const sc_module_name& name_) \
00806 : rc_reconfigurable_module<user_module_name >(name_)
00807
00808 #endif // RC_RECONFIGURABLE_MODULE_H_
00809
00810
00811
00812
00813