Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

sc_interface.h

Go to the documentation of this file.
00001 /*****************************************************************************
00002 
00003   The following code is derived, directly or indirectly, from the SystemC
00004   source code Copyright (c) 1996-2004 by all Contributors.
00005   All Rights reserved.
00006 
00007   The contents of this file are subject to the restrictions and limitations
00008   set forth in the SystemC Open Source License Version 2.3 (the "License");
00009   You may not use this file except in compliance with such restrictions and
00010   limitations. You may obtain instructions on how to receive a copy of the
00011   License at http://www.systemc.org/. Software distributed by Contributors
00012   under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
00013   ANY KIND, either express or implied. See the License for the specific
00014   language governing rights and limitations under the License.
00015 
00016  *****************************************************************************/
00017 
00018 /*****************************************************************************
00019 
00020   sc_interface.h -- Abstract base class of all interface classes.
00021 
00022   Original Author: Martin Janssen, Synopsys, Inc., 2001-05-21
00023 
00024  *****************************************************************************/
00025 
00026 /*****************************************************************************
00027 
00028   MODIFICATION LOG - modifiers, enter your name, affiliation, date and
00029   changes you are making here.
00030 
00031       Name, Affiliation, Date:
00032   Description of Modification:
00033     
00034  *****************************************************************************/
00035 
00036 #ifndef SC_INTERFACE_H
00037 #define SC_INTERFACE_H
00038 
00039 class sc_event;
00040 class sc_port_base;
00041 
00042 
00043 // ----------------------------------------------------------------------------
00044 //  CLASS : sc_interface
00045 //
00046 //  Abstract base class of all interface classes.
00047 //  BEWARE: Direct inheritance from this class must be done virtual.
00048 // ----------------------------------------------------------------------------
00049 
00050 class sc_interface
00051 {
00052 public:
00053 
00054     // register a port with this interface (does nothing by default)
00055     virtual void register_port( sc_port_base& port_,
00056         const char*    if_typename_ );
00057 
00058     // get the default event
00059     virtual const sc_event& default_event() const;
00060 
00061     // destructor (does nothing)
00062     virtual ~sc_interface();
00063 
00064 protected:
00065 
00066     // constructor (does nothing)
00067     sc_interface();
00068 
00069 private:
00070 
00071     // disabled
00072     sc_interface( const sc_interface& );
00073     sc_interface& operator = ( const sc_interface& );
00074 
00075 private:
00076 
00077     static sc_event m_never_notified;
00078 
00079 #if __SUNPRO_CC == 0x520
00080     // Workaround for a bug in the Sun WorkShop 6 update 2 compiler.
00081     // An empty virtual base class can cause the optimizer to
00082     // generate wrong code.
00083     char dummy;
00084 #endif
00085 };
00086 
00087 
00088 #endif
00089 
00090 // Taf!

Generated on Fri Jan 14 08:29:03 2005 for SystemC2.1beta11(excludingMSLib)(IncludingSCV)\nProvidedby:www.openverificationfoundation.org by doxygen1.2.18