source: sources/src/bit2string.cc @ 5

Last change on this file since 5 was 1, checked in by buchmann, 17 years ago

Initial import from CVS repository

File size: 3.1 KB
Line 
1/*------------------------------------------------------------\
2|                                                             |
3| Tool    :                  systemcass                       |
4|                                                             |
5| File    :                 bit2string.cc                     |
6|                                                             |
7| Author  :                 Kingbo Paul-Jerome                |
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 "bit2string.h"
37#include "sc_unit.h"
38#include <string>
39#include <stdarg.h>
40#include <stdio.h>
41#include <stdlib.h>
42#include <iostream>
43       
44using namespace std;
45
46namespace sc_core {
47
48static
49void bit2string_64 (char *buf, tab_t *val,int size)
50{
51        typedef sc_dt::s_uint_type<64>::uint_type data_type;
52  data_type tmp=*((data_type*)val);
53        //cout << "tmp = " << tmp << "\n";     
54        buf[size]='\0';
55        for (int i=size-1; i>=0;--i) 
56        {
57                buf[i]=(tmp&1)?'1':'0';
58                tmp>>=1;
59        }
60#if 0
61  cout << buf << "\n"; 
62#endif
63}
64
65static
66void bit2string_32 (char *buf, tab_t *val,int size)
67{
68        typedef sc_dt::s_uint_type<32>::uint_type data_type;
69  data_type tmp=*((data_type*)val);
70        //cout << "tmp = " << tmp << "\n";     
71        buf[size]='\0';
72        for (int i=size-1; i>=0;--i) 
73        {
74                buf[i]=(tmp&1)?'1':'0';
75                tmp>>=1;
76        }
77#if 0
78  cout << buf << "\n"; 
79#endif
80}
81
82void bit2string(char *buf, tab_t *val,int bit_number)
83{
84  if (bit_number > 32)
85  {
86    bit2string_64 (buf, (tab_t*)val, bit_number);
87    return;
88  } else if (bit_number > 16) 
89  {
90    bit2string_32 (buf, (tab_t*)val, bit_number);
91    return;
92  }
93        tab_t tmp=*((tab_t*)val);
94        //cout << "tmp = " << tmp << "\n";     
95        buf[bit_number]='\0';
96        for (int i=bit_number-1; i>=0;--i) 
97        {
98                buf[i]=(tmp&1)?'1':'0';
99                tmp>>=1;
100        }
101       
102}
103
104char * strip (char * buf)
105{
106        int cpt=0;
107        while ( (buf[cpt] == '0') && (buf[cpt+1] != '\0') ) //tant que bit == 0
108                cpt++;
109        return (buf+cpt);
110}
111
112} // end of sc_core namespace
113
Note: See TracBrowser for help on using the repository browser.