Home
Downloads
Documentation
Installation
User Guide
man-pages
API Documentation
README
Release Notes
Changes
License
Support
SourceForge Project
Main Page
Related Pages
Namespaces
Classes
Files
File List
File Members
All
Classes
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Friends
Macros
Pages
src
OpenFOAM
db
IOstreams
Fstreams
IFstream.H
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) 1991-2010 OpenCFD Ltd.
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
Class
25
Foam::IFstream
26
27
Description
28
Input from file stream.
29
30
SourceFiles
31
IFstream.C
32
33
\*---------------------------------------------------------------------------*/
34
35
#ifndef IFstream_H
36
#define IFstream_H
37
38
#include <
OpenFOAM/ISstream.H
>
39
#include <
OpenFOAM/fileName.H
>
40
#include <
OpenFOAM/className.H
>
41
42
#include <fstream>
43
using
std::ifstream;
44
45
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
46
47
namespace
Foam
48
{
49
50
class
IFstream;
51
52
/*---------------------------------------------------------------------------*\
53
Class IFstreamAllocator Declaration
54
\*---------------------------------------------------------------------------*/
55
56
//- A std::istream with ability to handle compressed files
57
class
IFstreamAllocator
58
{
59
friend
class
IFstream
;
60
61
// Private data
62
63
istream* ifPtr_;
64
IOstream::compressionType
compression_;
65
66
67
// Constructors
68
69
//- Construct from pathname
70
IFstreamAllocator
(
const
fileName
& pathname);
71
72
73
// Destructor
74
75
~
IFstreamAllocator
();
76
77
78
public
:
79
80
// Member functions
81
82
//- Access to underlying std::istream (for e.g. lexer)
83
istream&
stdStream
();
84
};
85
86
87
/*---------------------------------------------------------------------------*\
88
Class IFstream Declaration
89
\*---------------------------------------------------------------------------*/
90
91
class
IFstream
92
:
93
public
IFstreamAllocator
,
94
public
ISstream
95
{
96
// Private data
97
98
fileName
pathname_;
99
100
public
:
101
102
// Declare name of the class and its debug switch
103
ClassName
(
"IFstream"
);
104
105
106
// Constructors
107
108
//- Construct from pathname
109
IFstream
110
(
111
const
fileName
& pathname,
112
streamFormat
format
=
ASCII
,
113
versionNumber
version
=
currentVersion
114
);
115
116
117
// Destructor
118
119
~IFstream
();
120
121
122
// Member functions
123
124
// Access
125
126
//- Return the name of the stream
127
const
fileName
&
name
()
const
128
{
129
return
pathname_;
130
}
131
132
//- Return non-const access to the name of the stream
133
fileName
&
name
()
134
{
135
return
pathname_;
136
}
137
138
// Print
139
140
//- Print description of IOstream to Ostream
141
virtual
void
print
(
Ostream
&)
const
;
142
143
144
// Member operators
145
146
//- Return a non-const reference to const IFstream
147
// Needed for read-constructors where the stream argument is temporary:
148
// e.g. thing thisThing(IFstream("thingFileName")());
149
IFstream
&
operator()
()
const
;
150
};
151
152
153
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
154
155
}
// End namespace Foam
156
157
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
158
159
#endif
160
161
// ************************ vim: set sw=4 sts=4 et: ************************ //