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 Description 00025 IOdictionary is derived from dictionary and IOobject to give the 00026 dictionary automatic IO functionality via the objectRegistry. To facilitate 00027 IO, IOdictioanry is provided with a constructor from IOobject and writeData 00028 and write functions. 00029 00030 \*---------------------------------------------------------------------------*/ 00031 00032 #include "IOdictionary.H" 00033 #include <OpenFOAM/objectRegistry.H> 00034 00035 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // 00036 00037 defineTypeNameAndDebug(Foam::IOdictionary, 0); 00038 00039 00040 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // 00041 00042 Foam::IOdictionary::IOdictionary(const IOobject& io) 00043 : 00044 regIOobject(io) 00045 { 00046 if 00047 ( 00048 io.readOpt() == IOobject::MUST_READ 00049 || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk()) 00050 ) 00051 { 00052 readStream(typeName) >> *this; 00053 close(); 00054 } 00055 00056 dictionary::name() = IOobject::objectPath(); 00057 } 00058 00059 00060 Foam::IOdictionary::IOdictionary(const IOobject& io, const dictionary& dict) 00061 : 00062 regIOobject(io) 00063 { 00064 if 00065 ( 00066 io.readOpt() == IOobject::MUST_READ 00067 || (io.readOpt() == IOobject::READ_IF_PRESENT && headerOk()) 00068 ) 00069 { 00070 readStream(typeName) >> *this; 00071 close(); 00072 } 00073 else 00074 { 00075 dictionary::operator=(dict); 00076 } 00077 00078 dictionary::name() = IOobject::objectPath(); 00079 } 00080 00081 00082 // * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * * // 00083 00084 Foam::IOdictionary::~IOdictionary() 00085 {} 00086 00087 00088 // * * * * * * * * * * * * * * * Members Functions * * * * * * * * * * * * * // 00089 00090 const Foam::word& Foam::IOdictionary::name() const 00091 { 00092 return regIOobject::name(); 00093 } 00094 00095 00096 // * * * * * * * * * * * * * * * Member Operators * * * * * * * * * * * * * // 00097 00098 void Foam::IOdictionary::operator=(const IOdictionary& rhs) 00099 { 00100 dictionary::operator=(rhs); 00101 } 00102 00103 00104 // ************************ vim: set sw=4 sts=4 et: ************************ //