1 /*---------------------------------------------------------------------------*\
3 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
5 \\ / A nd | Copyright held by original author
7 -------------------------------------------------------------------------------
9 This file is part of OpenFOAM.
11 OpenFOAM is free software; you can redistribute it and/or modify it
12 under the terms of the GNU General Public License as published by the
13 Free Software Foundation; either version 2 of the License, or (at your
14 option) any later version.
16 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
17 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
18 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
21 You should have received a copy of the GNU General Public License
22 along with OpenFOAM; if not, write to the Free Software Foundation,
23 Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
26 Reads a long long from an input stream, for a given version
27 number and File format. If an ascii File is being read, then the line
28 numbers are counted and an erroneous read ised.
30 \*---------------------------------------------------------------------------*/
35 #include "IOstreams.H"
39 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
41 Foam::word Foam::name(long long val)
43 std::ostringstream buf;
48 // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
50 Foam::Istream& Foam::operator>>(Istream& is, long long& l)
54 // Check state of Istream
55 is.check("Istream& operator>>(Istream&, long long&)");
61 long long Foam::readLongLong(Istream& is)
63 register long long result = 0;
67 static const label zeroOffset = int('0');
69 // Get next non-whitespace character
70 while (is.read(c) && isspace(c))
75 if (isspace(c) || c == 0) break;
79 FatalIOErrorIn("readLongLong(ISstream& is)", is)
80 << "Illegal digit: \"" << c << "\""
81 << exit(FatalIOError);
84 result *= 10 + int(c) - zeroOffset;
91 Foam::Ostream& Foam::operator<<(Ostream& os, const long long l)
95 long long mask = 1000000000000000000LL;
97 bool printZeroes = false;
101 int d = int(val/mask);
113 os.write(char(d+'0'));
119 os.check("Ostream& operator<<(Ostream&, const long long)");
124 // ************************************************************************* //