Re: sc_port, sc_export binding overload and base classes

From: <david.long@doulos.com>
Date: Wed Mar 03 2010 - 05:44:51 PST

Hi Jerome,

>* The various bind() and operator() methods are not declared virtual.
>This means that when someone wants to overload these methods in a user
>class derived from
>sc_port or sc_export, he has to declare and provide implementation for
>all the variants.

I'm afraid that your proposal to make bind and operator() virtual will not
fix that! If you want to override
one version of these methods and still access the inherited overloadeds,
you can add a using declaration
to the derived class (e.g. using port_base_class::bind;), you do not need
to change the LRM.

The bind operator takes a templated port argument (rather than using
sc_port_base) because the port
is used to access the interface methods which are not present in the
generic sc_port_base class: You
cannot call the interface methods using a sc_port_base reference (without
using a dynamic cast) so I
don't think this proposal is realistic either.

Regards,
Dave

-- 
Dr David Long 
Senior Consultant 
Doulos - Developing Design Know-how
VHDL * Verilog * SystemVerilog * SystemC * PSL * Perl * Tcl/Tk * Project 
Services
Doulos Ltd. Church Hatch, 22 Market Place, Ringwood, Hampshire, BH24 1AW, 
UK
Tel:  + 44 (0)1425 471223                       Email: 
david.long@doulos.com 
Fax:  +44 (0)1425 471573                        http://www.doulos.com
--------------------------------------------------------------------------------
This message may contain personal views which are not the views of
Doulos, unless specifically stated.
-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Wed Mar 3 05:45:09 2010

This archive was generated by hypermail 2.1.8 : Wed Mar 03 2010 - 05:45:11 PST