From 2f983f3f6f4251e31c9e83951ea2c25b5bec8eb4 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Thu, 18 Jul 2019 10:22:12 +0200 Subject: [PATCH] ENH: imbue input streams with label/scalar sizes (#1378) --- src/OpenFOAM/db/IOobject/IOobjectReadHeader.C | 3 ++ src/OpenFOAM/db/IOstreams/IOstreams/Istream.C | 2 +- src/OpenFOAM/db/IOstreams/IOstreams/Istream.H | 41 +++++++++++++++++-- 3 files changed, 42 insertions(+), 4 deletions(-) diff --git a/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C b/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C index 50a2b380202..942ecab110b 100644 --- a/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C +++ b/src/OpenFOAM/db/IOobject/IOobjectReadHeader.C @@ -108,6 +108,9 @@ bool Foam::IOobject::readHeader(Istream& is) val = foamVersion::scalarByteSize(arch); if (val) scalarByteSize_ = val; } + + is.setLabelByteSize(labelByteSize_); + is.setScalarByteSize(scalarByteSize_); } else { diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.C b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.C index 41da11ba4c6..21961c000aa 100644 --- a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.C +++ b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation diff --git a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H index 12af1ad0e4b..6ed2578ac06 100644 --- a/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H +++ b/src/OpenFOAM/db/IOstreams/IOstreams/Istream.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | + \\ / A nd | Copyright (C) 2017-2019 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- | Copyright (C) 2011-2016 OpenFOAM Foundation @@ -69,6 +69,12 @@ class Istream //- The last token put back on the stream token putBackToken_; + //- The label byte-size (could also be stored as byte) + unsigned short labelByteSize_; + + //- The scalar byte-size (could also be stored as byte) + unsigned short scalarByteSize_; + public: @@ -83,7 +89,9 @@ public: ) : IOstream(format, version, compression), - putBack_(false) + putBack_(false), + labelByteSize_(sizeof(Foam::label)), + scalarByteSize_(sizeof(Foam::scalar)) {} @@ -91,7 +99,34 @@ public: virtual ~Istream() = default; - // Member functions + // Member Functions + + // Characteristics + + //- The label byte-size associated with the stream + inline unsigned labelByteSize() const + { + return labelByteSize_; + } + + //- The scalar byte-size associated with the stream + inline unsigned scalarByteSize() const + { + return scalarByteSize_; + } + + //- Associate a label byte-size with the stream + inline void setLabelByteSize(unsigned val) + { + labelByteSize_ = val; + } + + //- Associate a scalar byte-size with the stream + inline void setScalarByteSize(unsigned val) + { + scalarByteSize_ = val; + } + // Read functions -- GitLab