source: sources/src/sc_interface.cc @ 57

Last change on this file since 57 was 52, checked in by meunier, 12 years ago

Code formatting in all source files.

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 <iostream>
37#include <map>
38#include <cstdlib>  //exit
39
40#include "sc_interface.h"
41#include "sc_event.h"
42#include "assert.h"
43
44#ifdef HAVE_CONFIG_H
45#include "config.h"
46#endif
47
48using namespace std;
49
50namespace sc_core {
51
52struct interface_infos_t {
53    size_t data_size_in_bytes;
54    sc_event default_event;
55    interface_infos_t() {
56        exit(12);
57    }
58    interface_infos_t (size_t s, sc_event e) : data_size_in_bytes(s), default_event(e) {}
59};
60
61typedef std::map<const sc_interface *,interface_infos_t> interface2infos_t;
62static interface2infos_t interface2infos;
63
64}
65
66using namespace sc_core;
67
68// ----------------------------------------------------------------------------
69//  CLASS : sc_interface
70//
71// 
72// ----------------------------------------------------------------------------
73
74sc_interface::~sc_interface() {}
75 
76// constructor
77sc_interface::sc_interface() {
78  pointer = NULL; // => not assigned
79}
80
81
82void sc_interface::init (size_t s) const {
83    interface2infos_t::value_type pair (this, interface_infos_t(s,sc_event (*this, sc_event::VAL)));
84    interface2infos.insert(pair);
85}
86
87size_t sc_interface::data_size_in_bytes () const {
88    interface2infos_t::iterator i = interface2infos.find(this);
89#ifdef CONFIG_DEBUG
90    if (i == interface2infos.end()) {
91        cerr << "Internal error : can't find data size of " << this << "\n";
92        exit (90);
93    }
94#endif
95    return i->second.data_size_in_bytes;
96}
97
98
99const sc_event & sc_interface::default_event () const {
100    interface2infos_t::iterator i = interface2infos.find(this);
101#ifdef CONFIG_DEBUG
102    if (i == interface2infos.end ()) {
103        cerr << "Internal error : can't find default event of " << this << "\n";
104        exit (90);
105    }
106#endif
107    return i->second.default_event;
108}
109
110
111/*
112# Local Variables:
113# tab-width: 4;
114# c-basic-offset: 4;
115# c-file-offsets:((innamespace . 0)(inline-open . 0));
116# indent-tabs-mode: nil;
117# End:
118#
119# vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
120*/
121
Note: See TracBrowser for help on using the repository browser.