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:
Mark Olesen
2009-01-03 12:52:27 +01:00
parent cf488912bb
commit 1d866d7fe8
48 changed files with 1276 additions and 1757 deletions

View File

@ -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
// ************************************************************************* //

View File

@ -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
// ************************************************************************* //