OpenFOAM logo
Open Source CFD Toolkit

instant.H

Go to the documentation of this file.
00001 /*---------------------------------------------------------------------------*\
00002   =========                 |
00003   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
00004    \\    /   O peration     |
00005     \\  /    A nd           | Copyright (C) 1991-2005 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 the
00013     Free Software Foundation; either version 2 of the License, or (at your
00014     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, write to the Free Software Foundation,
00023     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
00024 
00025 Class
00026     instant
00027 
00028 Description
00029     An instant of time. Contains the time value and name.
00030 
00031 SourceFiles
00032     instant.C
00033 
00034 \*---------------------------------------------------------------------------*/
00035 
00036 #ifndef instant_H
00037 #define instant_H
00038 
00039 #include "word.H"
00040 #include "scalar.H"
00041 
00042 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00043 
00044 namespace Foam
00045 {
00046 
00047 /*---------------------------------------------------------------------------*\
00048                            Class instant Declaration
00049 \*---------------------------------------------------------------------------*/
00050 
00051 class instant
00052 {
00053     // Private data
00054 
00055         scalar value_;
00056         word name_;
00057 
00058 public:
00059 
00060     // Public classes
00061 
00062         //- Less function class used in sorting instants
00063         class less
00064         {
00065         public:
00066 
00067             bool operator()(const instant& one, const instant& two) const
00068             {
00069                 return one.value() < two.value();
00070             }
00071         };
00072 
00073 
00074     // Constructors
00075 
00076         //- Construct null
00077         instant();
00078 
00079         //- Construct from components
00080         instant(const scalar, const word&);
00081 
00082         //- Construct from time value
00083         instant(const scalar);
00084 
00085         //- Construct from word
00086         instant(const word&);
00087 
00088 
00089     // Member Functions
00090 
00091         // Access
00092 
00093             //- Value (const access)
00094             scalar value() const
00095             {
00096                 return value_;
00097             }
00098 
00099             //- Value (non-const access)
00100             scalar& value()
00101             {
00102                 return value_;
00103             }
00104 
00105             //- Name (const access)
00106             const word& name() const
00107             {
00108                 return name_;
00109             }
00110 
00111             //- Name (non-const access)
00112             word& name()
00113             {
00114                 return name_;
00115             }
00116 
00117 
00118     // Friend Operators
00119 
00120         friend int operator==(const instant&, const instant&);
00121         friend int operator!=(const instant&, const instant&);
00122 
00123 
00124     // IOstream Operators
00125 
00126         friend Istream& operator>>(Istream&, instant&);
00127         friend Ostream& operator<<(Ostream&, const instant&);
00128 };
00129 
00130 
00131 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00132 
00133 } // End namespace Foam
00134 
00135 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
00136 
00137 #endif
00138 
00139 // ************************************************************************* //
For further information go to www.openfoam.org