rc_abstract_exportal Class Template Reference

#include <rc_abstract_exportal.h>

Inheritance diagram for rc_abstract_exportal:

rc_exportal_base rc_abstract_switch rc_switch wrapper_factory rc_abstract_switch_b rc_switch rc_exportal

List of all members.


Detailed Description

template<class IF>
class ReChannel::rc_abstract_exportal< IF >

Class of an abstract exportal switch.

Definition at line 200 of file rc_abstract_exportal.h.


Public Types

typedef IF if_type
typedef rc_accessor< IF > accessor_type

Public Member Functions

virtual std::string get_switch_kind () const
 returns the kind of this portal
virtual std::string get_switch_name () const
 returns the name of this portal
virtual sc_interface * get_static_interface () const
 returns the static interface
sc_export< IF > & static_export ()
 returns the static sc_export (creates it if not exists)
 o ()
 returns the static sc_export (creates it if not exists)
IF * operator-> ()
 provides access to the export (creates accessor if not exists)
void static_export (sc_port< IF > &port_)
 bind a static port to this exportal
void bind_static (sc_port< IF > &port_)
 bind a static port to this exportal
void bind_static (sc_export< IF > &export_)
 bind a static export to this exportal
void bind_dynamic (sc_export< IF > &export_)
 bind a dynamic export to this exportal
void bind_dynamic (IF &dynamic_if_)
 bind a dynamic interface to this exportal
rc_interface_wrapper
< IF > & 
bind_exclusively (IF &dynamic_if_)
 exclusively bind an interface to this exportal
void dynamic_export (sc_export< IF > &export_)
 alias for bind_dynamic()

Protected Types

typedef
rc_exportal_base::wrapper_factory 
wrapper_factory

Protected Member Functions

 rc_abstract_exportal (const sc_module_name &module_name)
 constructor
virtual void bind_static_object (const rc_object_handle &obj_to_bind)
 Instructs the switch to bind itself to the given static object.
virtual void bind_dynamic_object (const rc_object_handle &obj_to_bind)
 Instructs the switch to bind itself to the given dynamic object.
virtual void rc_on_refresh_notify ()
 this method is called when the exportal refreshes its event notif.
virtual void register_reconfigurable (rc_reconfigurable &module, sc_interface &dyn_interface)
 registers the given reconfigurable module/interface pair
virtual void unregister_reconfigurable (rc_reconfigurable &module)
 unregisters the given reconfigurable module from this switch
void add_event_forwarder (event_getter_type event_getter, const std::string &event_name=NULL)
 declares an event forwarder for the specified event getter method
rc_interface_wrapper
< IF > * 
get_interface_wrapper () const
 returns least recently active dynamic interface wrapper
IF * get_interface () const
 returns least recently active dynamic interface
virtual
rc_interface_wrapper_base
create_interface_wrapper (sc_interface &wrapped_if)
 interface wrapper factory
virtual accessor_typecreate_accessor () const
 creates an unconnected accessor
virtual void before_end_of_elaboration ()

Private Types

typedef
rc_abstract_exportal
< IF > 
this_type
typedef rc_exportal_base base_type
typedef
rc_abstract_switch
< IF > 
switch_parent_type
typedef
rc_switch::state_type 
state_type
 The three possible states of a switch.
typedef
base_type::accessor_base_type 
accessor_base_type
typedef
rc_interface_wrapper
< IF >::accessor 
accessor_b_type
typedef
boost::function
< const sc_event
&(IF *) 
event_getter_type )
typedef std::pair
< std::string,
event_getter_type
ef_decl_type
typedef std::vector
< ef_decl_type
ef_decl_vector
typedef
internals::exportal::wrapper_pool 
wrapper_pool

Private Member Functions

 RC_STATIC_ASSERT_VALID_INTERFACE (IF)
accessor_typeget_static_accessor () const
 returns the static accessor (creates it if not exists)
virtual
accessor_base_type
_rc_get_static_accessor ()
virtual bool _rc_check_interface_type (sc_interface *dyn_if) const
virtual bool _rc_check_accessor_if_type (accessor_base_type *accessor) const
virtual void _rc_set_interface_wrapper_owner (rc_interface_wrapper_base *wrapper)
 set this exportal as the new owner of the interface wrapper (this requires the interface wrapper to be of the internal interface wrapper type)

Private Attributes

sc_export< IF > * p_static_export
 the sc_export for the static side
accessor_typep_static_accessor
 the static accessor
ef_decl_vector p_ef_decl_vector
 list of event forwarder declarations

Static Private Attributes

static wrapper_pool s_wrapper_pool
 the static interface wrapper pool

Classes

class  interface_wrapper
 Interface wrapper within an exportal switch. More...

Member Typedef Documentation

typedef rc_abstract_exportal<IF> this_type [private]

Definition at line 207 of file rc_abstract_exportal.h.

typedef rc_exportal_base base_type [private]

Reimplemented from rc_abstract_switch.

Definition at line 208 of file rc_abstract_exportal.h.

typedef rc_abstract_switch<IF> switch_parent_type [private]

Definition at line 209 of file rc_abstract_exportal.h.

typedef rc_switch::state_type state_type [private]

The three possible states of a switch.

Reimplemented from rc_exportal_base.

Definition at line 210 of file rc_abstract_exportal.h.

typedef base_type::accessor_base_type accessor_base_type [private]

Reimplemented from rc_exportal_base.

Definition at line 212 of file rc_abstract_exportal.h.

typedef rc_interface_wrapper<IF>::accessor accessor_b_type [private]

Definition at line 213 of file rc_abstract_exportal.h.

typedef boost::function<const sc_event& (IF*) event_getter_type) [private]

Definition at line 215 of file rc_abstract_exportal.h.

typedef std::pair<std::string, event_getter_type> ef_decl_type [private]

Definition at line 216 of file rc_abstract_exportal.h.

typedef std::vector<ef_decl_type> ef_decl_vector [private]

Definition at line 217 of file rc_abstract_exportal.h.

typedef internals::exportal::wrapper_pool wrapper_pool [private]

Reimplemented from rc_exportal_base.

Definition at line 219 of file rc_abstract_exportal.h.

typedef rc_exportal_base::wrapper_factory wrapper_factory [protected]

Reimplemented from rc_exportal_base.

Definition at line 222 of file rc_abstract_exportal.h.

typedef IF if_type

Reimplemented in rc_exportal, rc_exportal< if_type >, rc_exportal< sc_fifo_out_if< T > >, and rc_exportal< sc_fifo_in_if< T > >.

Definition at line 228 of file rc_abstract_exportal.h.

typedef rc_accessor<IF> accessor_type

Reimplemented in rc_exportal, rc_exportal< if_type >, rc_exportal< sc_fifo_out_if< T > >, and rc_exportal< sc_fifo_in_if< T > >.

Definition at line 229 of file rc_abstract_exportal.h.


Constructor & Destructor Documentation

rc_abstract_exportal ( const sc_module_name &  module_name  )  [inline, explicit, protected]

constructor

Definition at line 468 of file rc_abstract_exportal.h.


Member Function Documentation

RC_STATIC_ASSERT_VALID_INTERFACE ( IF   )  [private]

Reimplemented from rc_abstract_switch.

virtual std::string get_switch_kind (  )  const [inline, virtual]

returns the kind of this portal

Reimplemented from rc_abstract_switch_b.

Definition at line 237 of file rc_abstract_exportal.h.

virtual std::string get_switch_name (  )  const [inline, virtual]

returns the name of this portal

Reimplemented from rc_abstract_switch_b.

Definition at line 241 of file rc_abstract_exportal.h.

virtual sc_interface* get_static_interface (  )  const [inline, virtual]

returns the static interface

Implements rc_switch.

Definition at line 245 of file rc_abstract_exportal.h.

sc_export< IF > & static_export (  )  [inline]

returns the static sc_export (creates it if not exists)

Definition at line 534 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::before_end_of_elaboration(), rc_abstract_exportal< sc_fifo_in_if< T > >::o(), rc_abstract_exportal< sc_fifo_in_if< T > >::operator->(), rc_sc_fifo::rc_sc_fifo(), and rc_sc_signal_b::rc_sc_signal_b().

o (  )  [inline]

returns the static sc_export (creates it if not exists)

Definition at line 252 of file rc_abstract_exportal.h.

IF* operator-> (  )  [inline]

provides access to the export (creates accessor if not exists)

Definition at line 256 of file rc_abstract_exportal.h.

void static_export ( sc_port< IF > &  port_  )  [inline]

bind a static port to this exportal

Definition at line 260 of file rc_abstract_exportal.h.

void bind_static ( sc_port< IF > &  port_  )  [inline]

bind a static port to this exportal

Definition at line 264 of file rc_abstract_exportal.h.

void bind_static ( sc_export< IF > &  export_  )  [inline]

bind a static export to this exportal

Definition at line 268 of file rc_abstract_exportal.h.

void bind_dynamic ( sc_export< IF > &  export_  )  [inline]

bind a dynamic export to this exportal

Definition at line 272 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::bind_dynamic_object().

void bind_dynamic ( IF &  dynamic_if_  )  [inline]

bind a dynamic interface to this exportal

Definition at line 276 of file rc_abstract_exportal.h.

rc_interface_wrapper< IF > & bind_exclusively ( IF &  dynamic_if_  )  [inline]

exclusively bind an interface to this exportal

Definition at line 525 of file rc_abstract_exportal.h.

Referenced by rc_sc_fifo::rc_sc_fifo(), and rc_sc_signal_b::rc_sc_signal_b().

void dynamic_export ( sc_export< IF > &  export_  )  [inline]

alias for bind_dynamic()

Definition at line 283 of file rc_abstract_exportal.h.

void bind_static_object ( const rc_object_handle obj_to_bind  )  [inline, protected, virtual]

Instructs the switch to bind itself to the given static object.

Remarks:
An error shall be reported if binding is impossible.

Implements rc_switch.

Definition at line 475 of file rc_abstract_exportal.h.

void bind_dynamic_object ( const rc_object_handle obj_to_bind  )  [inline, protected, virtual]

Instructs the switch to bind itself to the given dynamic object.

Remarks:
An error shall be reported if binding is impossible.

Implements rc_switch.

Definition at line 500 of file rc_abstract_exportal.h.

virtual void rc_on_refresh_notify (  )  [inline, protected, virtual]

this method is called when the exportal refreshes its event notif.

Implements rc_exportal_base.

Definition at line 296 of file rc_abstract_exportal.h.

void register_reconfigurable ( rc_reconfigurable module,
sc_interface &  dyn_interface 
) [inline, protected, virtual]

registers the given reconfigurable module/interface pair

Reimplemented from rc_exportal_base.

Definition at line 547 of file rc_abstract_exportal.h.

void unregister_reconfigurable ( rc_reconfigurable module  )  [inline, protected, virtual]

unregisters the given reconfigurable module from this switch

Reimplemented from rc_exportal_base.

Definition at line 555 of file rc_abstract_exportal.h.

void add_event_forwarder ( event_getter_type  event_getter,
const std::string &  event_name = NULL 
) [inline, protected]

declares an event forwarder for the specified event getter method

Definition at line 563 of file rc_abstract_exportal.h.

rc_interface_wrapper< IF > * get_interface_wrapper (  )  const [inline, protected]

returns least recently active dynamic interface wrapper

Definition at line 576 of file rc_abstract_exportal.h.

IF * get_interface (  )  const [inline, protected]

returns least recently active dynamic interface

Definition at line 583 of file rc_abstract_exportal.h.

rc_interface_wrapper_base * create_interface_wrapper ( sc_interface &  wrapped_if  )  [inline, protected, virtual]

interface wrapper factory

Implements wrapper_factory.

Definition at line 596 of file rc_abstract_exportal.h.

virtual accessor_type* create_accessor (  )  const [inline, protected, virtual]

creates an unconnected accessor

Definition at line 321 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::get_static_accessor().

void before_end_of_elaboration (  )  [inline, protected, virtual]

Definition at line 618 of file rc_abstract_exportal.h.

rc_abstract_exportal< IF >::accessor_type & get_static_accessor (  )  const [inline, private]

returns the static accessor (creates it if not exists)

Definition at line 609 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal< sc_fifo_in_if< T > >::_rc_get_static_accessor(), and rc_abstract_exportal< sc_fifo_in_if< T > >::get_static_interface().

virtual accessor_base_type& _rc_get_static_accessor (  )  [inline, private, virtual]

Implements rc_exportal_base.

Definition at line 335 of file rc_abstract_exportal.h.

virtual bool _rc_check_interface_type ( sc_interface *  dyn_if  )  const [inline, private, virtual]

Implements rc_exportal_base.

Definition at line 338 of file rc_abstract_exportal.h.

virtual bool _rc_check_accessor_if_type ( accessor_base_type accessor  )  const [inline, private, virtual]

Implements rc_exportal_base.

Definition at line 341 of file rc_abstract_exportal.h.

void _rc_set_interface_wrapper_owner ( rc_interface_wrapper_base wrapper  )  [inline, private, virtual]

set this exportal as the new owner of the interface wrapper (this requires the interface wrapper to be of the internal interface wrapper type)

Implements rc_exportal_base.

Definition at line 642 of file rc_abstract_exportal.h.


Member Data Documentation

sc_export<IF>* p_static_export [private]

the sc_export for the static side

Note:
p_static_export cannot be created directly, because of a bug in OSCI's-SystemC (v2.2.0) concerning binding checks before the call of before_end_of_elaboration(). This is not in compliance with the IEEE standard. Solution: The creation of the object is delayed until a call to static_export() or before_end_of_elaboration() alternatively (depends on which one is called first).

Definition at line 364 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::static_export().

accessor_type* p_static_accessor [mutable, private]

the static accessor

Note:
The concrete accessor cannot be created when the exportal's constructor is executed. Thus, to get around this, the point of creation is located at the get_static_accessor() method. p_static_accessor is declared as 'mutable' to allow its creation from out of a 'const' context.

Definition at line 374 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::get_static_accessor().

ef_decl_vector p_ef_decl_vector [private]

list of event forwarder declarations

Definition at line 377 of file rc_abstract_exportal.h.

Referenced by rc_abstract_exportal::add_event_forwarder(), and rc_abstract_exportal::interface_wrapper::interface_wrapper().

rc_abstract_exportal< IF >::wrapper_pool s_wrapper_pool [inline, static, private]

the static interface wrapper pool

Reimplemented from rc_exportal_base.

Definition at line 381 of file rc_abstract_exportal.h.


The documentation for this class was generated from the following file:
Generated on Tue Jan 1 23:14:09 2008 for ReChannel by  doxygen 1.5.3