SystemC  Recoding Infrastructure for SystemC v0.6.2 derived from Accellera SystemC 2.3.1
Accellera SystemC proof-of-concept library
sc_interface.h
Go to the documentation of this file.
1 /*****************************************************************************
2 
3  The following code is derived, directly or indirectly, from the SystemC
4  source code Copyright (c) 1996-2014 by all Contributors.
5  All Rights reserved.
6 
7  The contents of this file are subject to the restrictions and limitations
8  set forth in the SystemC Open Source License (the "License");
9  You may not use this file except in compliance with such restrictions and
10  limitations. You may obtain instructions on how to receive a copy of the
11  License at http://www.accellera.org/. Software distributed by Contributors
12  under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
13  ANY KIND, either express or implied. See the License for the specific
14  language governing rights and limitations under the License.
15 
16  *****************************************************************************/
17 
18 /*****************************************************************************
19 
20  sc_interface.h -- Abstract base class of all interface classes.
21 
22  Original Author: Martin Janssen, Synopsys, Inc., 2001-05-21
23 
24  CHANGE LOG IS AT THE END OF THE FILE
25  *****************************************************************************/
26 
27 #ifndef SC_INTERFACE_H
28 #define SC_INTERFACE_H
29 
30 namespace sc_core {
31 
32 class sc_event;
33 class sc_port_base;
34 
35 
36 /**************************************************************************/
45 {
46 public:
47 
48  // register a port with this interface (does nothing by default)
49  virtual void register_port( sc_port_base& port_,
50  const char* if_typename_ );
51 
52  // get the default event
53  virtual const sc_event& default_event() const;
54 
55  // destructor (does nothing)
56  virtual ~sc_interface();
57 
58 protected:
59 
60  // constructor (does nothing)
61  sc_interface();
62 
63 private:
64 
65  // disabled
66  sc_interface( const sc_interface& );
67  sc_interface& operator = ( const sc_interface& );
68 
69 private:
70 
71  static sc_event m_never_notified;
72 
73 #if defined(__SUNPRO_CC) && (__SUNPRO_CC == 0x520)
74  // Workaround for a bug in the Sun WorkShop 6 update 2 compiler.
75  // An empty virtual base class can cause the optimizer to
76  // generate wrong code.
77  char dummy;
78 #endif
79 };
80 
81 } // namespace sc_core
82 
83 //$Log: sc_interface.h,v $
84 //Revision 1.3 2011/08/26 20:45:40 acg
85 // Andy Goodrich: moved the modification log to the end of the file to
86 // eliminate source line number skew when check-ins are done.
87 //
88 //Revision 1.2 2011/02/18 20:23:45 acg
89 // Andy Goodrich: Copyright update.
90 //
91 //Revision 1.1.1.1 2006/12/15 20:20:04 acg
92 //SystemC 2.3
93 //
94 //Revision 1.2 2006/01/03 23:18:26 acg
95 //Changed copyright to include 2006.
96 //
97 //Revision 1.1.1.1 2005/12/19 23:16:43 acg
98 //First check in of SystemC 2.1 into its own archive.
99 //
100 //Revision 1.7 2005/06/10 22:43:55 acg
101 //Added CVS change log annotation.
102 //
103 
104 #endif
105 
106 // Taf!
virtual const sc_event & default_event() const
The event class.
Definition: sc_event.h:260
Abstract base class of all interface classes.
Definition: sc_interface.h:44
virtual void register_port(sc_port_base &port_, const char *if_typename_)
Abstract base class for class sc_port_b.
Definition: sc_port.h:69