OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-dev/] [or1k-gcc/] [libquadmath/] [printf/] [_itoa.h] - Blame information for rev 775

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 740 jeremybenn
/* Internal function for converting integers to ASCII.
2
   Copyright (C) 1994-1999,2002,2003,2007 Free Software Foundation, Inc.
3
   This file is part of the GNU C Library.
4
 
5
   The GNU C Library is free software; you can redistribute it and/or
6
   modify it under the terms of the GNU Lesser General Public
7
   License as published by the Free Software Foundation; either
8
   version 2.1 of the License, or (at your option) any later version.
9
 
10
   The GNU C Library is distributed in the hope that it will be useful,
11
   but WITHOUT ANY WARRANTY; without even the implied warranty of
12
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
   Lesser General Public License for more details.
14
 
15
   You should have received a copy of the GNU Lesser General Public
16
   License along with the GNU C Library; if not, write to the Free
17
   Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA
18
   02111-1307 USA.  */
19
 
20
#ifndef _ITOA_H
21
#define _ITOA_H
22
 
23
/* Convert VALUE into ASCII in base BASE (2..16).
24
   Write backwards starting the character just before BUFLIM.
25
   Return the address of the first (left-to-right) character in the number.
26
   Use upper case letters iff UPPER_CASE is nonzero.  */
27
 
28
static const char _itoa_lower_digits[16] = "0123456789abcdef";
29
static const char _itoa_upper_digits[16] = "0123456789ABCDEF";
30
 
31
static inline char * __attribute__ ((unused, always_inline))
32
_itoa_word (unsigned long value, char *buflim,
33
            unsigned int base, int upper_case)
34
{
35
  const char *digits = (upper_case ? _itoa_upper_digits : _itoa_lower_digits);
36
 
37
  switch (base)
38
    {
39
# define SPECIAL(Base)                                                        \
40
    case Base:                                                                \
41
      do                                                                      \
42
        *--buflim = digits[value % Base];                                     \
43
      while ((value /= Base) != 0);                                            \
44
      break
45
 
46
      SPECIAL (10);
47
      SPECIAL (16);
48
      SPECIAL (8);
49
    default:
50
      do
51
        *--buflim = digits[value % base];
52
      while ((value /= base) != 0);
53
    }
54
  return buflim;
55
}
56
 
57
static inline char * __attribute__ ((unused, always_inline))
58
_itoa (uint64_t value, char *buflim,
59
       unsigned int base, int upper_case)
60
{
61
  const char *digits = (upper_case ? _itoa_upper_digits : _itoa_lower_digits);
62
 
63
  switch (base)
64
    {
65
      SPECIAL (10);
66
      SPECIAL (16);
67
      SPECIAL (8);
68
    default:
69
      do
70
        *--buflim = digits[value % base];
71
      while ((value /= base) != 0);
72
    }
73
  return buflim;
74
}
75
# undef SPECIAL
76
 
77
#endif  /* itoa.h */

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.