source: sources/src/sc_interface.cc@ 8

Last change on this file since 8 was 1, checked in by buchmann, 19 years ago

Initial import from CVS repository

File size: 3.4 KB
Line 
1/*------------------------------------------------------------\
2| |
3| Tool : systemcass |
4| |
5| File : sc_interface.cc |
6| |
7| Author : Buchmann Richard |
8| |
9| Date : 09_07_2004 |
10| |
11\------------------------------------------------------------*/
12
13/*
14 * This file is part of the Disydent Project
15 * Copyright (C) Laboratoire LIP6 - Département ASIM
16 * Universite Pierre et Marie Curie
17 *
18 * Home page : http://www-asim.lip6.fr/disydent
19 * E-mail : mailto:richard.buchmann@lip6.fr
20 *
21 * This library is free software; you can redistribute it and/or modify it
22 * under the terms of the GNU Library General Public License as published
23 * by the Free Software Foundation; either version 2 of the License, or (at
24 * your option) any later version.
25 *
26 * Disydent is distributed in the hope that it will be
27 * useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
28 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
29 * Public License for more details.
30 *
31 * You should have received a copy of the GNU General Public License along
32 * with the GNU C Library; see the file COPYING. If not, write to the Free
33 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
34 */
35
36#include"sc_interface.h"
37#include"sc_event.h"
38#include"assert.h"
39#include<iostream>
40#include<map>
41
42using namespace std;
43
44namespace sc_core {
45struct interface_infos_t {
46 size_t data_size_in_bytes;
47 sc_event default_event;
48 interface_infos_t ()
49 {
50 exit(12);
51 }
52 interface_infos_t (size_t s, sc_event e)
53 : data_size_in_bytes(s), default_event (e)
54 {
55 }
56};
57typedef std::map<const sc_interface*,interface_infos_t> interface2infos_t;
58static interface2infos_t interface2infos;
59}
60
61using namespace sc_core;
62
63// ----------------------------------------------------------------------------
64// CLASS : sc_interface
65//
66//
67// ----------------------------------------------------------------------------
68
69#if 0
70static
71ostream&
72operator << (ostream &o,
73 const sc_interface &i)
74{
75 return o << hex << &i;
76}
77#endif
78
79/*
80void
81sc_interface::register_port (sc_port_base & port_, const char *if_typename_)
82{
83}
84*/
85
86sc_interface::~sc_interface ()
87{}
88
89// constructor
90sc_interface::sc_interface ()
91{
92 pointer = NULL; // => not assigned
93}
94
95void
96sc_interface::init (size_t s) const
97{
98 interface2infos_t::value_type pair (this,
99 interface_infos_t (s,sc_event (*this, sc_event::VAL)));
100 interface2infos.insert (pair);
101}
102
103size_t
104sc_interface::data_size_in_bytes () const
105{
106 interface2infos_t::iterator i = interface2infos.find (this);
107#ifdef DEBUG
108 if (i == interface2infos.end ()) {
109 cerr << "Internal error : can't find data size of " << this << "\n";
110 exit (90);
111 }
112#endif
113 return i->second.data_size_in_bytes;
114}
115
116const sc_event &
117sc_interface::default_event () const
118{
119 interface2infos_t::iterator i = interface2infos.find (this);
120#ifdef DEBUG
121 if (i == interface2infos.end ()) {
122 cerr << "Internal error : can't find default event of " << this << "\n";
123 exit (90);
124 }
125#endif
126 return i->second.default_event;
127}
128
Note: See TracBrowser for help on using the repository browser.