CSVIO.C
Go to the documentation of this file.
1 /*---------------------------------------------------------------------------*\
2  ========= |
3  \\ / F ield | OpenFOAM: The Open Source CFD Toolbox
4  \\ / O peration |
5  \\ / A nd | Copyright (C) 2011-2015 OpenFOAM Foundation
6  \\/ M anipulation |
7 -------------------------------------------------------------------------------
8 License
9  This file is part of OpenFOAM.
10 
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
13  the Free Software Foundation, either version 3 of the License, or
14  (at your option) any later version.
15 
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
19  for more details.
20 
21  You should have received a copy of the GNU General Public License
22  along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
23 
24 \*---------------------------------------------------------------------------*/
25 
26 #include "DataEntry.H"
27 
28 // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * //
29 
30 template<class Type>
31 Foam::Ostream& Foam::operator<<
32 (
33  Ostream& os,
34  const CSV<Type>& tbl
35 )
36 {
37  if (os.format() == IOstream::ASCII)
38  {
39  os << static_cast<const DataEntry<Type>& >(tbl)
40  << token::SPACE << tbl.nHeaderLine_
41  << token::SPACE << tbl.timeColumn_
42  << token::SPACE << tbl.componentColumns_
43  << token::SPACE << tbl.separator_
44  << token::SPACE << tbl.mergeSeparators_
45  << token::SPACE << tbl.fileName_;
46  }
47  else
48  {
49  os << static_cast<const DataEntry<Type>& >(tbl);
50  }
51 
52  // Check state of Ostream
53  os.check("Ostream& operator<<(Ostream&, const CSV<Type>&)");
54 
55  return os;
56 }
57 
58 
59 template<class Type>
61 {
63  os << token::END_STATEMENT << nl;
64  os << indent << word(this->name() + "Coeffs") << nl;
65  os << indent << token::BEGIN_BLOCK << incrIndent << nl;
66 
67  // Note: for TableBase write the dictionary entries it needs but not
68  // the values themselves
70 
71  os.writeKeyword("nHeaderLine") << nHeaderLine_ << token::END_STATEMENT
72  << nl;
73  os.writeKeyword("refColumn") << refColumn_ << token::END_STATEMENT << nl;
74 
75  // Force writing labelList in ascii
76  os.writeKeyword("componentColumns");
77  if (os.format() == IOstream::BINARY)
78  {
79  os.format(IOstream::ASCII);
80  os << componentColumns_;
81  os.format(IOstream::BINARY);
82  }
83  else
84  {
85  os << componentColumns_;
86  }
87  os << token::END_STATEMENT << nl;
88 
89  os.writeKeyword("separator") << string(separator_)
90  << token::END_STATEMENT << nl;
91  os.writeKeyword("mergeSeparators") << mergeSeparators_
92  << token::END_STATEMENT << nl;
93  os.writeKeyword("fileName") << fName_ << token::END_STATEMENT << nl;
94  os << decrIndent << indent << token::END_BLOCK << endl;
95 }
96 
97 
98 // ************************************************************************* //
Foam::IOstream::format
streamFormat format() const
Return current stream format.
Definition: IOstream.H:377
Foam::word
A class for handling words, derived from string.
Definition: word.H:59
Foam::CSV::writeData
virtual void writeData(Ostream &os) const
Write in dictionary format.
Definition: CSVIO.C:60
Foam::endl
Ostream & endl(Ostream &os)
Add newline and flush stream.
Definition: Ostream.H:251
Foam::string
A class for handling character strings derived from std::string.
Definition: string.H:74
Foam::incrIndent
Ostream & incrIndent(Ostream &os)
Increment the indent level.
Definition: Ostream.H:228
DataEntry.H
Foam::nl
static const char nl
Definition: Ostream.H:260
writeData
const bool writeData(readBool(pdfDictionary.lookup("writeData")))
Foam::IOstream::check
virtual bool check(const char *operation) const
Check IOstream status for given operation.
Definition: IOstream.C:92
Foam::decrIndent
Ostream & decrIndent(Ostream &os)
Decrement the indent level.
Definition: Ostream.H:235
Foam::indent
Ostream & indent(Ostream &os)
Indent stream.
Definition: Ostream.H:221
Foam::Ostream::writeKeyword
Ostream & writeKeyword(const keyType &)
Write the keyword followed by an appropriate indentation.
Definition: Ostream.C:59
Foam::Ostream
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
Definition: Ostream.H:53
Foam::name
word name(const complex &)
Return a string representation of a complex.
Definition: complex.C:47
Foam::TableBase
Base class for table with bounds handling, interpolation and integration.
Definition: TableBase.H:47