source: sources/src/bit2string.cc

Last change on this file was 52, checked in by meunier, 11 years ago

Code formatting in all source files.

File size: 3.3 KB
Line 
1/*------------------------------------------------------------\
2  |                                                             |
3  | Tool    :                  systemcass                       |
4  |                                                             |
5  | File    :                 bit2string.cc                     |
6  |                                                             |
7  | Author  :                 Kingbo Paul-Jerome                |
8  |                           Buchmann Richard                  |
9  |                                                             |
10  | Date    :                   09_07_2004                      |
11  |                                                             |
12  \------------------------------------------------------------*/
13
14/*
15 * This file is part of the Disydent Project
16 * Copyright (C) Laboratoire LIP6 - Département ASIM
17 * Universite Pierre et Marie Curie
18 *
19 * Home page          : http://www-asim.lip6.fr/disydent
20 * E-mail             : mailto:richard.buchmann@lip6.fr
21 *
22 * This library is free software; you  can redistribute it and/or modify it
23 * under the terms  of the GNU Library General Public  License as published
24 * by the Free Software Foundation; either version 2 of the License, or (at
25 * your option) any later version.
26 *
27 * Disydent is distributed  in the hope  that it  will be
28 * useful, but WITHOUT  ANY WARRANTY; without even the  implied warranty of
29 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
30 * Public License for more details.
31 *
32 * You should have received a copy  of the GNU General Public License along
33 * with the GNU C Library; see the  file COPYING. If not, write to the Free
34 * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
35 */
36
37#include "bit2string.h"
38#include "sc_unit.h"
39
40#include <cstdarg>
41#include <cstdio>
42#include <cstdlib>
43#include <iostream>
44
45#ifdef HAVE_CONFIG_H
46#include "config.h"
47#endif
48
49using namespace std;
50
51namespace sc_core {
52
53static void bit2string_64(char * buf, tab_t * val, int size) {
54   typedef sc_dt::s_uint_type<64>::uint_type data_type;
55   data_type tmp = *((data_type *) val);
56   buf[size] = '\0';
57   for (int i = size - 1; i >= 0; --i) {
58      buf[i] = (tmp & 1) ? '1' : '0';
59      tmp >>= 1;
60   }
61}
62
63static void bit2string_32(char * buf, tab_t * val, int size) {
64   typedef sc_dt::s_uint_type<32>::uint_type data_type;
65   data_type tmp = *((data_type *) val);
66   buf[size] = '\0';
67   for (int i = size - 1; i >= 0; --i) {
68      buf[i] = (tmp & 1) ? '1' : '0';
69      tmp >>= 1;
70   }
71}
72
73void bit2string(char * buf, tab_t * val, int bit_number) {
74   if (bit_number > 32) {
75      bit2string_64(buf, (tab_t *) val, bit_number);
76      return;
77   }
78   else if (bit_number > 16) {
79      bit2string_32(buf, (tab_t *) val, bit_number);
80      return;
81   }
82   tab_t tmp = *((tab_t *) val);
83   buf[bit_number] = '\0';
84   for (int i = bit_number - 1; i >= 0; --i) {
85      buf[i] = (tmp & 1) ? '1' : '0';
86      tmp >>= 1;
87   }
88
89}
90
91char * strip(char * buf) {
92   int cpt = 0;
93   while ((buf[cpt] == '0') && (buf[cpt + 1] != '\0')) {// tant que bit == 0
94      cpt++;
95   }
96   return (buf + cpt);
97}
98
99} // end of sc_core namespace
100
101
102/*
103# Local Variables:
104# tab-width: 4;
105# c-basic-offset: 4;
106# c-file-offsets:((innamespace . 0)(inline-open . 0));
107# indent-tabs-mode: nil;
108# End:
109#
110# vim: filetype=cpp:expandtab:shiftwidth=4:tabstop=4:softtabstop=4
111*/
112
Note: See TracBrowser for help on using the repository browser.