mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
reworked IOstreams
- Istream and Ostream now retain backslashes when reading/writing strings.
The previous implementation simply discarded them, except when used to
escape a double-quote or a newline. It is now vitally important to retain
them, eg for quoting regular expression meta-characters.
The backslash continues to be used as an escape character for double-quote
and newline, but otherwise get passed through "as-is" without any other
special meaning (ie, they are *NOT* C-style strings). This helps avoid
'backslash hell'!
For example,
string: "match real dots \.+, question mark \? or any char .*"
C-style: "match real dots \\.+, question mark \\? or any char .*"
- combined subfiles in db/IOstreams, some had more copyright info than code
- OPstreamI.H contained only private methods, moved into OPstream.C
Are these really correct?
IOstreams/Istream.H:# include "HashTable.C"
token/token.H:#define NoHashTableC
This commit is contained in:
@ -28,18 +28,16 @@ License
|
||||
#include "OSspecific.H"
|
||||
#include "gzstream.h"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
defineTypeNameAndDebug(IFstream, 0);
|
||||
defineTypeNameAndDebug(IFstream, 0);
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
|
||||
Foam::IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
|
||||
:
|
||||
ifPtr_(NULL),
|
||||
compression_(IOstream::UNCOMPRESSED)
|
||||
@ -48,10 +46,8 @@ IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
|
||||
{
|
||||
if (IFstream::debug)
|
||||
{
|
||||
Info<< "IFstreamAllocator::IFstreamAllocator"
|
||||
"(const fileName& pathname) : "
|
||||
"can't open null file "
|
||||
<< endl;
|
||||
Info<< "IFstreamAllocator::IFstreamAllocator(const fileName&) : "
|
||||
"cannot open null file " << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -62,10 +58,8 @@ IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
|
||||
{
|
||||
if (IFstream::debug)
|
||||
{
|
||||
Info<< "IFstreamAllocator::IFstreamAllocator"
|
||||
"(const fileName& pathname) : "
|
||||
"decompressing " << pathname + ".gz"
|
||||
<< endl;
|
||||
Info<< "IFstreamAllocator::IFstreamAllocator(const fileName&) : "
|
||||
"decompressing " << pathname + ".gz" << endl;
|
||||
}
|
||||
|
||||
delete ifPtr_;
|
||||
@ -80,18 +74,18 @@ IFstreamAllocator::IFstreamAllocator(const fileName& pathname)
|
||||
}
|
||||
|
||||
|
||||
IFstreamAllocator::~IFstreamAllocator()
|
||||
Foam::IFstreamAllocator::~IFstreamAllocator()
|
||||
{
|
||||
delete ifPtr_;
|
||||
}
|
||||
|
||||
|
||||
istream& IFstreamAllocator::stdStream()
|
||||
std::istream& Foam::IFstreamAllocator::stdStream()
|
||||
{
|
||||
if (!ifPtr_)
|
||||
{
|
||||
FatalErrorIn("IFstreamAllocator::stdStream()")
|
||||
<< "No stream allocated." << abort(FatalError);
|
||||
<< "No stream allocated" << abort(FatalError);
|
||||
}
|
||||
return *ifPtr_;
|
||||
}
|
||||
@ -99,7 +93,7 @@ istream& IFstreamAllocator::stdStream()
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
IFstream::IFstream
|
||||
Foam::IFstream::IFstream
|
||||
(
|
||||
const fileName& pathname,
|
||||
streamFormat format,
|
||||
@ -120,15 +114,15 @@ IFstream::IFstream
|
||||
setClosed();
|
||||
|
||||
setState(ifPtr_->rdstate());
|
||||
|
||||
|
||||
if (!good())
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info<< "IFstream::IFstream(const fileName& pathname,"
|
||||
Info<< "IFstream::IFstream(const fileName&,"
|
||||
"streamFormat format=ASCII,"
|
||||
"versionNumber version=currentVersion) : "
|
||||
"couldn't open File for input"
|
||||
"could not open file for input"
|
||||
<< endl << info() << endl;
|
||||
}
|
||||
|
||||
@ -138,20 +132,20 @@ IFstream::IFstream
|
||||
{
|
||||
setOpened();
|
||||
}
|
||||
|
||||
|
||||
lineNumber_ = 1;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
IFstream::~IFstream()
|
||||
Foam::IFstream::~IFstream()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void IFstream::print(Ostream& os) const
|
||||
void Foam::IFstream::print(Ostream& os) const
|
||||
{
|
||||
// Print File data
|
||||
os << "IFstream: ";
|
||||
@ -159,10 +153,9 @@ void IFstream::print(Ostream& os) const
|
||||
}
|
||||
|
||||
|
||||
//- Return a non-const reference to const Istream
|
||||
// Needed for read-constructors where the stream argument is temporary:
|
||||
// e.g. thing thisThing(IFstream("thingFileName")());
|
||||
IFstream& IFstream::operator()() const
|
||||
// * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * * //
|
||||
|
||||
Foam::IFstream& Foam::IFstream::operator()() const
|
||||
{
|
||||
if (!good())
|
||||
{
|
||||
@ -183,8 +176,4 @@ IFstream& IFstream::operator()() const
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
@ -28,18 +28,17 @@ License
|
||||
#include "OSspecific.H"
|
||||
#include "gzstream.h"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
defineTypeNameAndDebug(OFstream, 0);
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
|
||||
|
||||
defineTypeNameAndDebug(OFstream, 0);
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
OFstreamAllocator::OFstreamAllocator
|
||||
Foam::OFstreamAllocator::OFstreamAllocator
|
||||
(
|
||||
const fileName& pathname,
|
||||
IOstream::compressionType compression
|
||||
@ -51,11 +50,8 @@ OFstreamAllocator::OFstreamAllocator
|
||||
{
|
||||
if (OFstream::debug)
|
||||
{
|
||||
Info
|
||||
<< "OFstreamAllocator::OFstreamAllocator"
|
||||
"(const fileName& pathname) : "
|
||||
"can't open null file "
|
||||
<< endl;
|
||||
Info<< "OFstreamAllocator::OFstreamAllocator(const fileName&) : "
|
||||
"cannot open null file " << endl;
|
||||
}
|
||||
}
|
||||
|
||||
@ -80,13 +76,13 @@ OFstreamAllocator::OFstreamAllocator
|
||||
}
|
||||
|
||||
|
||||
OFstreamAllocator::~OFstreamAllocator()
|
||||
Foam::OFstreamAllocator::~OFstreamAllocator()
|
||||
{
|
||||
delete ofPtr_;
|
||||
}
|
||||
|
||||
|
||||
ostream& OFstreamAllocator::stdStream()
|
||||
std::ostream& Foam::OFstreamAllocator::stdStream()
|
||||
{
|
||||
if (!ofPtr_)
|
||||
{
|
||||
@ -99,7 +95,7 @@ ostream& OFstreamAllocator::stdStream()
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
OFstream::OFstream
|
||||
Foam::OFstream::OFstream
|
||||
(
|
||||
const fileName& pathname,
|
||||
streamFormat format,
|
||||
@ -112,17 +108,16 @@ OFstream::OFstream
|
||||
pathname_(pathname)
|
||||
{
|
||||
setClosed();
|
||||
|
||||
setState(ofPtr_->rdstate());
|
||||
|
||||
|
||||
if (!good())
|
||||
{
|
||||
if (debug)
|
||||
{
|
||||
Info<< "IFstream::IFstream(const fileName& pathname,"
|
||||
Info<< "IFstream::IFstream(const fileName&,"
|
||||
"streamFormat format=ASCII,"
|
||||
"versionNumber version=currentVersion) : "
|
||||
"couldn't open File for input\n"
|
||||
"could not open file for input\n"
|
||||
"in stream " << info() << Foam::endl;
|
||||
}
|
||||
|
||||
@ -132,29 +127,24 @@ OFstream::OFstream
|
||||
{
|
||||
setOpened();
|
||||
}
|
||||
|
||||
|
||||
lineNumber_ = 1;
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
|
||||
|
||||
OFstream::~OFstream()
|
||||
Foam::OFstream::~OFstream()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
void OFstream::print(Ostream& os) const
|
||||
void Foam::OFstream::print(Ostream& os) const
|
||||
{
|
||||
// Print File data
|
||||
os << " OFstream: ";
|
||||
OSstream::print(os);
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// ************************************************************************* //
|
||||
|
||||
Reference in New Issue
Block a user