source: sources/src/sc_interface.cc @ 28

Last change on this file since 28 was 27, checked in by buchmann, 16 years ago

SystemCASS now uses autoconf/automake to build the API. Regression tests still
use the old Makefiles.
(thanks to Nicolas Pouillon)

The library directory no longer is "lib-arch-system". The directory now is "lib-linux". Everyone needs to pay attention about SYSTEMCASS environment variable.

Changes:

  • system header includes
  • Add includes to config.h (generated by autoconf/automake)
  • test:
    • linux preprocessor macro instead of _WIN32
    • CONFIG_DEBUG instead of DEBUG

Removes:

  • Makefile
  • guess_endianness.cc
  • guess_os.sh
  • assert.h (we now use standard assert.h)
  • Options.def
File size: 3.6 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#ifdef HAVE_CONFIG_H
42#include "config.h"
43#endif
44#include <cstdlib>  //exit
45#include<cstdlib>  //exit
46
47using namespace std;
48
49namespace sc_core {
50struct interface_infos_t {
51        size_t data_size_in_bytes;
52        sc_event default_event;
53        interface_infos_t ()
54        {
55                exit(12);
56        }
57        interface_infos_t (size_t s, sc_event e) 
58                : data_size_in_bytes(s), default_event (e)
59        {
60        }
61};
62typedef std::map<const sc_interface*,interface_infos_t> interface2infos_t;
63static interface2infos_t interface2infos;
64}
65
66using namespace sc_core;
67
68// ----------------------------------------------------------------------------
69//  CLASS : sc_interface
70//
71// 
72// ----------------------------------------------------------------------------
73
74#if 0
75static
76ostream&
77operator << (ostream &o,
78             const sc_interface &i)
79{
80        return o << hex << &i;
81}
82#endif
83
84/*
85void
86sc_interface::register_port (sc_port_base & port_, const char *if_typename_)
87{
88}
89*/
90
91sc_interface::~sc_interface ()
92{}
93 
94// constructor
95sc_interface::sc_interface ()
96{
97  pointer = NULL; // => not assigned
98}
99
100void
101sc_interface::init (size_t s) const
102{
103        interface2infos_t::value_type pair (this, 
104                        interface_infos_t (s,sc_event (*this, sc_event::VAL)));
105        interface2infos.insert (pair);
106}
107
108size_t
109sc_interface::data_size_in_bytes () const
110{
111        interface2infos_t::iterator i = interface2infos.find (this);
112#ifdef CONFIG_DEBUG
113        if (i == interface2infos.end ()) {
114                cerr << "Internal error : can't find data size of " << this << "\n";
115                exit (90);
116        }
117#endif
118        return i->second.data_size_in_bytes;
119}
120
121const sc_event &
122sc_interface::default_event () const
123{
124        interface2infos_t::iterator i = interface2infos.find (this);
125#ifdef CONFIG_DEBUG
126        if (i == interface2infos.end ()) {
127                cerr << "Internal error : can't find default event of " << this << "\n";
128                exit (90);
129        }
130#endif
131        return i->second.default_event;
132}
133
Note: See TracBrowser for help on using the repository browser.