| version 1.1.1.2, 2000/09/09 14:13:17 |
version 1.1.1.3, 2003/08/25 16:06:37 |
|
|
| /* xtom -- convert a hexadecimal string to a MINT, and return a pointer to |
/* xtom -- convert a hexadecimal string to a MINT, and return a pointer to |
| the MINT. |
the MINT. |
| |
|
| Copyright (C) 1991, 1994, 1995, 1996, 2000 Free Software Foundation, Inc. |
Copyright 1991, 1994, 1995, 1996, 2000, 2001 Free Software Foundation, Inc. |
| |
|
| This file is part of the GNU MP Library. |
This file is part of the GNU MP Library. |
| |
|
| Line 27 MA 02111-1307, USA. */ |
|
| Line 27 MA 02111-1307, USA. */ |
|
| #include "gmp-impl.h" |
#include "gmp-impl.h" |
| |
|
| static int |
static int |
| #if __STDC__ |
|
| digit_value_in_base (int c, int base) |
digit_value_in_base (int c, int base) |
| #else |
|
| digit_value_in_base (c, base) |
|
| int c; |
|
| int base; |
|
| #endif |
|
| { |
{ |
| int digit; |
int digit; |
| |
|
| Line 52 digit_value_in_base (c, base) |
|
| Line 46 digit_value_in_base (c, base) |
|
| } |
} |
| |
|
| MINT * |
MINT * |
| #if __STDC__ |
|
| xtom (const char *str) |
xtom (const char *str) |
| #else |
|
| xtom (str) |
|
| const char *str; |
|
| #endif |
|
| { |
{ |
| size_t str_size; |
size_t str_size; |
| char *s, *begs; |
char *s, *begs; |
|
|
| mp_size_t xsize; |
mp_size_t xsize; |
| int c; |
int c; |
| int negative; |
int negative; |
| MINT *x = (MINT *) (*_mp_allocate_func) (sizeof (MINT)); |
MINT *x = (MINT *) (*__gmp_allocate_func) (sizeof (MINT)); |
| TMP_DECL (marker); |
TMP_DECL (marker); |
| |
|
| /* Skip whitespace. */ |
/* Skip whitespace. */ |
|
|
| |
|
| xsize = str_size / __mp_bases[16].chars_per_limb + 1; |
xsize = str_size / __mp_bases[16].chars_per_limb + 1; |
| x->_mp_alloc = xsize; |
x->_mp_alloc = xsize; |
| x->_mp_d = (mp_ptr) (*_mp_allocate_func) (xsize * BYTES_PER_MP_LIMB); |
x->_mp_d = (mp_ptr) (*__gmp_allocate_func) (xsize * BYTES_PER_MP_LIMB); |
| |
|
| xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, 16); |
xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, 16); |
| x->_mp_size = negative ? -xsize : xsize; |
x->_mp_size = negative ? -xsize : xsize; |