1/* mpz_init_set_str(string, base) -- Convert the \0-terminated string
2   STRING in base BASE to a multiple precision integer.  Return a MP_INT
3   structure representing the integer.  Allow white space in the
4   string.  If BASE == 0 determine the base in the C standard way,
5   i.e.  0xhh...h means base 16, 0oo...o means base 8, otherwise
6   assume base 10.
7
8Copyright 1991, 1993, 1994, 1995, 2000, 2001, 2002 Free Software Foundation,
9Inc.
10
11This file is part of the GNU MP Library.
12
13The GNU MP Library is free software; you can redistribute it and/or modify
14it under the terms of the GNU Lesser General Public License as published by
15the Free Software Foundation; either version 3 of the License, or (at your
16option) any later version.
17
18The GNU MP Library is distributed in the hope that it will be useful, but
19WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
20or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
21License for more details.
22
23You should have received a copy of the GNU Lesser General Public License
24along with the GNU MP Library.  If not, see http://www.gnu.org/licenses/.  */
25
26#include "gmp.h"
27#include "gmp-impl.h"
28
29int
30mpz_init_set_str (mpz_ptr x, const char *str, int base)
31{
32  x->_mp_alloc = 1;
33  x->_mp_d = (mp_ptr) (*__gmp_allocate_func) (BYTES_PER_MP_LIMB);
34
35  /* if str has no digits mpz_set_str leaves x->_mp_size unset */
36  x->_mp_size = 0;
37
38#ifdef __CHECKER__
39  /* let the low limb look initialized, for the benefit of mpz_get_ui etc */
40  x->_mp_d[0] = 0;
41#endif
42
43  return mpz_set_str (x, str, base);
44}
45