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 "dimensionSet.H" 00027 #include <OpenFOAM/IOstreams.H> 00028 00029 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // 00030 00031 Foam::dimensionSet::dimensionSet(Istream& is) 00032 { 00033 is >> *this; 00034 } 00035 00036 00037 // * * * * * * * * * * * * * * * IOstream Operators * * * * * * * * * * * * // 00038 00039 Foam::Istream& Foam::operator>>(Istream& is, dimensionSet& dset) 00040 { 00041 // Read begining of dimensionSet 00042 if (token(is) != token::BEGIN_SQR) 00043 { 00044 Info<< "expected a " << token::BEGIN_SQR << " in dimensionSet" 00045 << endl << "in stream " << is.info() << endl; 00046 } 00047 00048 // Read first five dimensions 00049 for (int Dimension=0; Dimension<dimensionSet::CURRENT; Dimension++) 00050 { 00051 is >> dset.exponents_[Dimension]; 00052 } 00053 00054 // Read next token 00055 token nextToken(is); 00056 00057 // If next token is another number 00058 // read last two dimensions 00059 // and then read another token for the end of the dimensionSet 00060 if (nextToken.isNumber()) 00061 { 00062 dset.exponents_[dimensionSet::CURRENT] = nextToken.number(); 00063 is >> dset.exponents_[dimensionSet::LUMINOUS_INTENSITY]; 00064 is >> nextToken; 00065 } 00066 else 00067 { 00068 dset.exponents_[dimensionSet::CURRENT] = 0; 00069 dset.exponents_[dimensionSet::LUMINOUS_INTENSITY] = 0; 00070 } 00071 00072 // Check end of dimensionSet 00073 if (nextToken != token::END_SQR) 00074 { 00075 Info<< "expected a " << token::END_SQR << " in dimensionSet" 00076 << endl << "in stream " << is.info() << endl; 00077 } 00078 00079 // Check state of Istream 00080 is.check("Istream& operator>>(Istream&, dimensionSet&)"); 00081 00082 return is; 00083 } 00084 00085 00086 Foam::Ostream& Foam::operator<<(Ostream& os, const dimensionSet& dset) 00087 { 00088 os << token::BEGIN_SQR; 00089 00090 for (int Dimension=0; Dimension<dimensionSet::nDimensions-1; Dimension++) 00091 { 00092 os << dset.exponents_[Dimension] << token::SPACE; 00093 } 00094 os << dset.exponents_[dimensionSet::nDimensions-1] << token::END_SQR; 00095 00096 // Check state of Ostream 00097 os.check("Ostream& operator<<(Ostream&, const dimensionSet&)"); 00098 00099 return os; 00100 } 00101 00102 00103 // ************************ vim: set sw=4 sts=4 et: ************************ //