From c9373ba12fe77051aeebee183c5d9c0c5c11f668 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Wed, 19 Nov 2008 01:08:27 +0100 Subject: [PATCH] surfMesh - reader delegation between MeshedSurface <-> UnsortedMeshedSurface --- src/surfMesh/MeshedSurface/MeshedSurface.C | 71 ++++++++------ src/surfMesh/MeshedSurface/MeshedSurface.H | 20 ++-- src/surfMesh/MeshedSurface/MeshedSurfaceNew.C | 35 ++++++- .../UnsortedMeshedSurface.C | 95 +++++++++---------- .../UnsortedMeshedSurface.H | 9 +- .../UnsortedMeshedSurfaceNew.C | 25 ++++- .../surfaceFormats/nas/NASsurfaceFormat.C | 19 +--- .../surfaceFormats/off/OFFsurfaceFormat.C | 6 +- .../surfaceFormats/off/OFFsurfaceFormat.H | 40 ++++---- .../off/OFFsurfaceFormatRunTime.C | 44 ++++----- .../surfaceFormats/surfaceFormatsCore.C | 34 +++++++ .../surfaceFormats/surfaceFormatsCore.H | 9 ++ .../surfaceFormats/tri/TRIsurfaceFormat.C | 9 +- 13 files changed, 252 insertions(+), 164 deletions(-) diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.C b/src/surfMesh/MeshedSurface/MeshedSurface.C index c105fea511..65561dfcb7 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -39,6 +39,43 @@ License // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // +template +Foam::wordHashSet Foam::MeshedSurface::readTypes() +{ + wordHashSet known(2*fileExtensionConstructorTablePtr_->size()); + + forAllIter + ( + typename fileExtensionConstructorTable::iterator, + *fileExtensionConstructorTablePtr_, + iter + ) + { + known.insert(iter.key()); + } + + return known; +} + + +template +Foam::wordHashSet Foam::MeshedSurface::writeTypes() +{ + wordHashSet supported(2*writefileExtensionMemberFunctionTablePtr_->size()); + + forAllIter + ( + typename writefileExtensionMemberFunctionTable::iterator, + *writefileExtensionMemberFunctionTablePtr_, + iter + ) + { + supported.insert(iter.key()); + } + + return supported; +} + // * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * // @@ -55,7 +92,10 @@ bool Foam::MeshedSurface::canReadType return true; } - return UnsortedMeshedSurface::canReadType(ext, verbose); + wordHashSet available = readTypes(); + available += SiblingType::readTypes(); + + return checkSupport(available, ext, verbose, "reading"); } @@ -72,32 +112,7 @@ bool Foam::MeshedSurface::canWriteType return true; } - typename writefileExtensionMemberFunctionTable::iterator mfIter = - writefileExtensionMemberFunctionTablePtr_->find(ext); - - if (mfIter == writefileExtensionMemberFunctionTablePtr_->end()) - { - if (verbose) - { - SortableList known - ( - writefileExtensionMemberFunctionTablePtr_->toc() - ); - - Info<<"Unknown file extension for writing: " << ext << nl; - // compact output: - Info<<"Valid types: ( " << nativeExt; - forAll(known, i) - { - Info<<" " << known[i]; - } - Info<<" )" << endl; - } - - return false; - } - - return true; + return checkSupport(writeTypes(), ext, verbose, "writing"); } @@ -150,7 +165,7 @@ void Foam::MeshedSurface::write "MeshedSurface::write(const fileName&)" ) << "Unknown file extension " << ext << nl << nl << "Valid types are :" << endl - << writefileExtensionMemberFunctionTablePtr_->toc() + << writeTypes() << exit(FatalError); } diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.H b/src/surfMesh/MeshedSurface/MeshedSurface.H index 3d00d370c8..e6665a2845 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.H +++ b/src/surfMesh/MeshedSurface/MeshedSurface.H @@ -49,6 +49,7 @@ SourceFiles #include "surfaceFormatsCore.H" #include "runTimeSelectionTables.H" #include "memberFunctionSelectionTables.H" +#include "HashSet.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -83,6 +84,7 @@ private: //- Private typedefs for convenience typedef PrimitiveMeshedSurface ParentType; + typedef UnsortedMeshedSurface SiblingType; // Private Member Data @@ -92,12 +94,6 @@ private: // Private member functions - //- set a single patch - void onePatch(); - - //- basic sanity check on patches - void checkPatches(); - //- Sort faces by regionIds and set patches void sortFacesByRegion(const UList