Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(490)

Unified Diff: gcc/gmp/cxx/ismpf.cc

Issue 3050029: [gcc] GCC 4.5.0=>4.5.1 (Closed) Base URL: ssh://git@gitrw.chromium.org:9222/nacl-toolchain.git
Patch Set: Created 10 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « gcc/gmp/cxx/dummy.cc ('k') | gcc/gmp/cxx/ismpq.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: gcc/gmp/cxx/ismpf.cc
diff --git a/gcc/gmp/cxx/ismpf.cc b/gcc/gmp/cxx/ismpf.cc
deleted file mode 100644
index bfe4dc8b919d917f76bbc8dd3d99c40056457790..0000000000000000000000000000000000000000
--- a/gcc/gmp/cxx/ismpf.cc
+++ /dev/null
@@ -1,134 +0,0 @@
-/* operator>> -- C++-style input of mpf_t.
-
-Copyright 2001, 2003 Free Software Foundation, Inc.
-
-This file is part of the GNU MP Library.
-
-The GNU MP Library is free software; you can redistribute it and/or modify
-it under the terms of the GNU Lesser General Public License as published by
-the Free Software Foundation; either version 3 of the License, or (at your
-option) any later version.
-
-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
-or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public
-License for more details.
-
-You should have received a copy of the GNU Lesser General Public License
-along with the GNU MP Library. If not, see http://www.gnu.org/licenses/. */
-
-#include <cctype>
-#include <iostream>
-#include <string>
-#include <clocale> // for localeconv
-
-#include "gmp.h"
-#include "gmp-impl.h"
-
-using namespace std;
-
-
-// For g++ libstdc++ parsing see num_get<chartype,initer>::_M_extract_float
-// in include/bits/locale_facets.tcc.
-//
-// There are no plans to accept hex or octal floats, not unless the standard
-// C++ library does so. Although such formats might be of use, it's
-// considered more important to be compatible with what the normal
-// operator>> does on "double"s etc.
-
-istream &
-operator>> (istream &i, mpf_ptr f)
-{
- int base;
- char c = 0;
- string s;
- bool ok = false;
-
- // C decimal point, as expected by mpf_set_str
- const char *lconv_point = localeconv()->decimal_point;
-
- // C++ decimal point
-#if HAVE_STD__LOCALE
- const locale& loc = i.getloc();
- char point_char = use_facet< numpunct<char> >(loc).decimal_point();
-#else
- const char *point = lconv_point;
- char point_char = *point;
-#endif
-
- i.get(c); // start reading
-
- if (i.flags() & ios::skipws) // skip initial whitespace
- {
- // C++ isspace
-#if HAVE_STD__LOCALE
- const ctype<char>& ct = use_facet< ctype<char> >(loc);
-#define cxx_isspace(c) (ct.is(ctype_base::space,(c)))
-#else
-#define cxx_isspace(c) isspace(c)
-#endif
-
- while (cxx_isspace(c) && i.get(c))
- ;
- }
-
- if (c == '-' || c == '+') // sign
- {
- if (c == '-')
- s = "-";
- i.get(c);
- }
-
- base = 10;
- __gmp_istream_set_digits(s, i, c, ok, base); // read the number
-
- // look for the C++ radix point, but put the C one in for mpf_set_str
- if (c == point_char)
- {
-#if HAVE_STD__LOCALE
- i.get(c);
-#else // lconv point can be multi-char
- for (;;)
- {
- i.get(c);
- point++;
- if (*point == '\0')
- break;
- if (c != *point)
- goto fail;
- }
-#endif
- s += lconv_point;
- __gmp_istream_set_digits(s, i, c, ok, base); // read the mantissa
- }
-
- if (ok && (c == 'e' || c == 'E')) // exponent
- {
- s += c;
- i.get(c);
- ok = false; // exponent is mandatory
-
- if (c == '-' || c == '+') // sign
- {
- s += c;
- i.get(c);
- }
-
- __gmp_istream_set_digits(s, i, c, ok, base); // read the exponent
- }
-
- if (i.good()) // last character read was non-numeric
- i.putback(c);
- else if (i.eof() && ok) // stopped just before eof
- i.clear();
-
- if (ok)
- ASSERT_NOCARRY (mpf_set_str(f, s.c_str(), base)); // extract the number
- else
- {
- fail:
- i.setstate(ios::failbit); // read failed
- }
-
- return i;
-}
« no previous file with comments | « gcc/gmp/cxx/dummy.cc ('k') | gcc/gmp/cxx/ismpq.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698