From 60e481059aace8d7cbca19f1e7809bf481f0742e Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Tue, 8 Jan 2019 13:03:24 +0100 Subject: [PATCH] ENH: remove uniform compact output for FixedList (#1160) - a FixedList is generally small so there is little advantage in a compact output form for uniform content. Eg, "2{-1}" By avoiding this compact form we obtain output that is also consistent with Tuple2, for example. - make FixedList construct from Istream explicit --- .../containers/Lists/FixedList/FixedList.H | 2 +- .../containers/Lists/FixedList/FixedListIO.C | 17 ++++++++--------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H index b56720274c..67e93fcce2 100644 --- a/src/OpenFOAM/containers/Lists/FixedList/FixedList.H +++ b/src/OpenFOAM/containers/Lists/FixedList/FixedList.H @@ -180,7 +180,7 @@ public: inline explicit FixedList(const SLList<T>& list); //- Construct from Istream - FixedList(Istream& is); + explicit FixedList(Istream& is); //- Clone inline autoPtr<FixedList<T, Size>> clone() const; diff --git a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C index a884beb26e..3c310e25a0 100644 --- a/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C +++ b/src/OpenFOAM/containers/Lists/FixedList/FixedListIO.C @@ -29,7 +29,6 @@ License #include "token.H" #include "contiguous.H" - // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // template<class T, unsigned Size> @@ -70,15 +69,14 @@ Foam::Ostream& Foam::FixedList<T, Size>::writeList const FixedList<T, Size>& list = *this; // Write list contents depending on data format + + // Unlike UList, no compact output form (eg, "2{-1}") since a + // FixedList is generally small and we also want the same appearance + // for FixedList<T, 2> as Tuple2<T,T> + if (os.format() == IOstream::ASCII || !contiguous<T>()) { - if (contiguous<T>() && list.uniform()) - { - // Two or more entries, and all entries have identical values. - - os << Size << token::BEGIN_BLOCK << list[0] << token::END_BLOCK; - } - else if + if ( Size <= 1 || !shortListLen || (Size <= unsigned(shortListLen) && contiguous<T>()) @@ -145,7 +143,8 @@ Foam::Istream& Foam::operator>>(Foam::Istream& is, FixedList<T, Size>& list) is.fatalCheck ( - "operator>>(Istream&, FixedList<T, Size>&) : reading first token" + "operator>>(Istream&, FixedList<T, Size>&) : " + "reading first token" ); if (firstToken.isCompound()) -- GitLab