Merge branch 'master' of ssh://git.code.sf.net/p/foam-extend/foam-extend-3.2
[foam-extend-3.2.git] / src / foam / db / Time / instant / instant.H
blob19924e039e0454f612fe15f29769bc0b500ceecb
1 /*---------------------------------------------------------------------------*\
2   =========                 |
3   \\      /  F ield         | foam-extend: Open Source CFD
4    \\    /   O peration     | Version:     3.2
5     \\  /    A nd           | Web:         http://www.foam-extend.org
6      \\/     M anipulation  | For copyright notice see file Copyright
7 -------------------------------------------------------------------------------
8 License
9     This file is part of foam-extend.
11     foam-extend is free software: you can redistribute it and/or modify it
12     under the terms of the GNU General Public License as published by the
13     Free Software Foundation, either version 3 of the License, or (at your
14     option) any later version.
16     foam-extend is distributed in the hope that it will be useful, but
17     WITHOUT ANY WARRANTY; without even the implied warranty of
18     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19     General Public License for more details.
21     You should have received a copy of the GNU General Public License
22     along with foam-extend.  If not, see <http://www.gnu.org/licenses/>.
24 Class
25     Foam::instant
27 Description
28     An instant of time. Contains the time value and name.
30 SourceFiles
31     instant.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef instant_H
36 #define instant_H
38 #include "word.H"
39 #include "scalar.H"
41 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
43 namespace Foam
46 // Forward declaration of friend functions and operators
48 class instant;
50 // Friend Operators
52 bool operator==(const instant&, const instant&);
53 bool operator!=(const instant&, const instant&);
55 // IOstream Operators
57 Istream& operator>>(Istream&, instant&);
58 Ostream& operator<<(Ostream&, const instant&);
61 /*---------------------------------------------------------------------------*\
62                            Class instant Declaration
63 \*---------------------------------------------------------------------------*/
65 class instant
67     // Private data
69         scalar value_;
70         word name_;
72 public:
74     // Public classes
76         //- Less function class used in sorting instants
77         class less
78         {
79         public:
81             bool operator()(const instant& a, const instant& b) const
82             {
83                 return a.value() < b.value();
84             }
85         };
88     // Static data members
90         static const char* const typeName;
93     // Constructors
95         //- Construct null
96         instant();
98         //- Construct from components
99         instant(const scalar, const word&);
101         //- Construct from time value
102         instant(const scalar);
104         //- Construct from word
105         instant(const word&);
108     // Member Functions
110         // Access
112             //- Value (const access)
113             scalar value() const
114             {
115                 return value_;
116             }
118             //- Value (non-const access)
119             scalar& value()
120             {
121                 return value_;
122             }
124             //- Name (const access)
125             const word& name() const
126             {
127                 return name_;
128             }
130             //- Name (non-const access)
131             word& name()
132             {
133                 return name_;
134             }
137     // Friend Operators
139         friend bool operator==(const instant&, const instant&);
140         friend bool operator!=(const instant&, const instant&);
143     // IOstream Operators
145         friend Istream& operator>>(Istream&, instant&);
146         friend Ostream& operator<<(Ostream&, const instant&);
150 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
152 } // End namespace Foam
154 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
156 #endif
158 // ************************************************************************* //