00001 /*---------------------------------------------------------------------------*\ 00002 ========= | 00003 \\ / F ield | OpenFOAM: The Open Source CFD Toolbox 00004 \\ / O peration | 00005 \\ / A nd | Copyright (C) 1991-2010 OpenCFD Ltd. 00006 \\/ M anipulation | 00007 ------------------------------------------------------------------------------- 00008 License 00009 This file is part of OpenFOAM. 00010 00011 OpenFOAM is free software: you can redistribute it and/or modify it 00012 under the terms of the GNU General Public License as published by 00013 the Free Software Foundation, either version 3 of the License, or 00014 (at your option) any later version. 00015 00016 OpenFOAM is distributed in the hope that it will be useful, but WITHOUT 00017 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or 00018 FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 00019 for more details. 00020 00021 You should have received a copy of the GNU General Public License 00022 along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. 00023 00024 \*---------------------------------------------------------------------------*/ 00025 00026 #include "UnsortedMeshedSurface.H" 00027 00028 // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // 00029 00030 template<class Face> 00031 Foam::autoPtr< Foam::UnsortedMeshedSurface<Face> > 00032 Foam::UnsortedMeshedSurface<Face>::New(const fileName& name, const word& ext) 00033 { 00034 if (debug) 00035 { 00036 Info<< "UnsortedMeshedSurface::New(const fileName&, const word&) : " 00037 "constructing UnsortedMeshedSurface" 00038 << endl; 00039 } 00040 00041 typename fileExtensionConstructorTable::iterator cstrIter = 00042 fileExtensionConstructorTablePtr_->find(ext); 00043 00044 if (cstrIter == fileExtensionConstructorTablePtr_->end()) 00045 { 00046 // no direct reader, use the parent if possible 00047 wordHashSet supported = ParentType::readTypes(); 00048 if (supported.found(ext)) 00049 { 00050 // create indirectly 00051 autoPtr<UnsortedMeshedSurface<Face> > surf 00052 ( 00053 new UnsortedMeshedSurface<Face> 00054 ); 00055 surf().transfer(ParentType::New(name, ext)()); 00056 00057 return surf; 00058 } 00059 00060 // nothing left but to issue an error 00061 supported += readTypes(); 00062 00063 FatalErrorIn 00064 ( 00065 "UnsortedMeshedSurface<Face>::New" 00066 "(const fileName&, const word&) : " 00067 "constructing UnsortedMeshedSurface" 00068 ) << "Unknown file extension " << ext << nl << nl 00069 << "Valid types are:" << nl 00070 << supported 00071 << exit(FatalError); 00072 } 00073 00074 return autoPtr<UnsortedMeshedSurface<Face> >(cstrIter()(name)); 00075 } 00076 00077 00078 template<class Face> 00079 Foam::autoPtr< Foam::UnsortedMeshedSurface<Face> > 00080 Foam::UnsortedMeshedSurface<Face>::New(const fileName& name) 00081 { 00082 word ext = name.ext(); 00083 if (ext == "gz") 00084 { 00085 ext = name.lessExt().ext(); 00086 } 00087 00088 return New(name, ext); 00089 } 00090 00091 00092 // ************************ vim: set sw=4 sts=4 et: ************************ //