From b4f6484ddfd9c9011cdff7e04b3d9957536139a0 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Sun, 7 May 2017 16:58:44 +0200 Subject: [PATCH] ENH: use faceTraits for managing differences between face representations --- src/surfMesh/MeshedSurface/MeshedSurface.C | 64 +++++++---- src/surfMesh/MeshedSurface/MeshedSurface.H | 47 ++++---- .../MeshedSurface/MeshedSurfaceCore.C | 6 +- src/surfMesh/MeshedSurface/MeshedSurfaceI.H | 103 ------------------ src/surfMesh/MeshedSurface/MeshedSurfaceIO.C | 7 +- src/surfMesh/MeshedSurface/MeshedSurfaceNew.C | 5 +- .../MeshedSurfaceProxy/MeshedSurfaceProxy.C | 58 +++++----- .../MeshedSurfaceProxy/MeshedSurfaceProxy.H | 30 +++-- .../UnsortedMeshedSurface.C | 7 +- .../UnsortedMeshedSurfaceNew.C | 5 +- .../surfaceFormats/ac3d/AC3DsurfaceFormat.C | 9 +- .../surfaceFormats/gts/GTSsurfaceFormat.C | 12 +- .../surfaceFormats/nas/NASsurfaceFormat.C | 33 +++--- .../surfaceFormats/obj/OBJsurfaceFormat.C | 8 +- .../surfaceFormats/off/OFFsurfaceFormat.C | 10 +- .../starcd/STARCDsurfaceFormat.C | 5 +- .../surfaceFormats/stl/STLsurfaceFormat.C | 4 +- .../surfaceFormats/tri/TRIsurfaceFormat.C | 6 +- .../surfaceFormats/vtk/VTKsurfaceFormat.C | 7 +- 19 files changed, 178 insertions(+), 248 deletions(-) delete mode 100644 src/surfMesh/MeshedSurface/MeshedSurfaceI.H diff --git a/src/surfMesh/MeshedSurface/MeshedSurface.C b/src/surfMesh/MeshedSurface/MeshedSurface.C index 0606860e64..41d0418a3b 100644 --- a/src/surfMesh/MeshedSurface/MeshedSurface.C +++ b/src/surfMesh/MeshedSurface/MeshedSurface.C @@ -33,24 +33,17 @@ License #include "polyMesh.H" #include "surfMesh.H" #include "primitivePatch.H" +#include "faceTraits.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // -template -inline bool Foam::MeshedSurface::isTri() -{ - return false; -} - - template Foam::wordHashSet Foam::MeshedSurface::readTypes() { return wordHashSet(*fileExtensionConstructorTablePtr_); } - template Foam::wordHashSet Foam::MeshedSurface::writeTypes() { @@ -116,25 +109,34 @@ void Foam::MeshedSurface::write const fileName& name, const MeshedSurface& surf ) +{ + write(name, name.ext(), surf); +} + + +template +void Foam::MeshedSurface::write +( + const fileName& name, + const word& ext, + const MeshedSurface& surf +) { if (debug) { InfoInFunction << "Writing to " << name << endl; } - const word ext = name.ext(); + auto mfIter = writefileExtensionMemberFunctionTablePtr_->find(ext); - typename writefileExtensionMemberFunctionTable::iterator mfIter = - writefileExtensionMemberFunctionTablePtr_->find(ext); - - if (mfIter == writefileExtensionMemberFunctionTablePtr_->end()) + if (!mfIter.found()) { // No direct writer, delegate to proxy if possible const wordHashSet& delegate = ProxyType::writeTypes(); if (delegate.found(ext)) { - MeshedSurfaceProxy(surf).write(name); + MeshedSurfaceProxy(surf).write(name, ext); } else { @@ -850,6 +852,11 @@ bool Foam::MeshedSurface::checkFaces template Foam::label Foam::MeshedSurface::nTriangles() const { + if (faceTraits::isTri()) + { + return ParentType::size(); + } + return nTriangles ( const_cast&>(List