[BACK]Return to set_str.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib / gmp / mpz

Diff for /OpenXM_contrib/gmp/mpz/Attic/set_str.c between version 1.1.1.1 and 1.1.1.2

version 1.1.1.1, 2000/01/10 15:35:27 version 1.1.1.2, 2000/09/09 14:12:57
Line 4 
Line 4 
    the base in the C standard way, i.e.  0xhh...h means base 16,     the base in the C standard way, i.e.  0xhh...h means base 16,
    0oo...o means base 8, otherwise assume base 10.     0oo...o means base 8, otherwise assume base 10.
   
 Copyright (C) 1991, 1993, 1994, Free Software Foundation, Inc.  Copyright (C) 1991, 1993, 1994, 1996, 1997, 1998, 2000 Free Software
   Foundation, Inc.
   
 This file is part of the GNU MP Library.  This file is part of the GNU MP Library.
   
 The GNU MP Library is free software; you can redistribute it and/or modify  The GNU MP Library is free software; you can redistribute it and/or modify
 it under the terms of the GNU Library General Public License as published by  it under the terms of the GNU Lesser General Public License as published by
 the Free Software Foundation; either version 2 of the License, or (at your  the Free Software Foundation; either version 2.1 of the License, or (at your
 option) any later version.  option) any later version.
   
 The GNU MP Library is distributed in the hope that it will be useful, but  The GNU MP Library is distributed in the hope that it will be useful, but
 WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY  WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
 or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public  or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public
 License for more details.  License for more details.
   
 You should have received a copy of the GNU Library General Public License  You should have received a copy of the GNU Lesser General Public License
 along with the GNU MP Library; see the file COPYING.LIB.  If not, write to  along with the GNU MP Library; see the file COPYING.LIB.  If not, write to
 the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,  the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
 MA 02111-1307, USA. */  MA 02111-1307, USA. */
   
   #include <string.h>
 #include <ctype.h>  #include <ctype.h>
 #include "gmp.h"  #include "gmp.h"
 #include "gmp-impl.h"  #include "gmp-impl.h"
 #include "longlong.h"  #include "longlong.h"
   
 static int  static int
   #if __STDC__
   digit_value_in_base (int c, int base)
   #else
 digit_value_in_base (c, base)  digit_value_in_base (c, base)
      int c;       int c;
      int base;       int base;
   #endif
 {  {
   int digit;    int digit;
   
Line 96  mpz_set_str (x, str, base)
Line 102  mpz_set_str (x, str, base)
               base = 16;                base = 16;
               c = *str++;                c = *str++;
             }              }
             else if (c == 'b' || c == 'B')
               {
                 base = 2;
                 c = *str++;
               }
         }          }
     }      }
   
     /* Skip leading zeros.  */
     while (c == '0')
       c = *str++;
     /* Make sure the string does not become empty, mpn_set_str would fail.  */
     if (c == 0)
       {
         x->_mp_size = 0;
         return 0;
       }
   
   TMP_MARK (marker);    TMP_MARK (marker);
   str_size = strlen (str - 1);    str_size = strlen (str - 1);
   s = begs = (char *) TMP_ALLOC (str_size + 1);    s = begs = (char *) TMP_ALLOC (str_size + 1);
   
     /* Remove spaces from the string and convert the result from ASCII to a
        byte array.  */
   for (i = 0; i < str_size; i++)    for (i = 0; i < str_size; i++)
     {      {
       if (!isspace (c))        if (!isspace (c))
Line 120  mpz_set_str (x, str, base)
Line 143  mpz_set_str (x, str, base)
   
   str_size = s - begs;    str_size = s - begs;
   
   xsize = str_size / __mp_bases[base].chars_per_limb + 1;    xsize = (((mp_size_t) (str_size / __mp_bases[base].chars_per_bit_exactly))
              / BITS_PER_MP_LIMB + 2);
   if (x->_mp_alloc < xsize)    if (x->_mp_alloc < xsize)
     _mpz_realloc (x, xsize);      _mpz_realloc (x, xsize);
   
     /* Convert the byte array in base BASE to our bignum format.  */
   xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, base);    xsize = mpn_set_str (x->_mp_d, (unsigned char *) begs, str_size, base);
   x->_mp_size = negative ? -xsize : xsize;    x->_mp_size = negative ? -xsize : xsize;
   

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.1.1.2

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>