Report patch name instead of index in debug
[foam-extend-3.2.git] / src / foam / graph / curve / curve.H
blob17c462e3f9bdb3b7f616120ce9323756ae987131
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::curve
27 Description
28     A single curve in a graph.
30 SourceFiles
31     curve.C
33 \*---------------------------------------------------------------------------*/
35 #ifndef curve_H
36 #define curve_H
38 #include "foamString.H"
39 #include "primitiveFields.H"
40 #include "autoPtr.H"
42 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
44 namespace Foam
47 // Forward declaration of friend functions and operators
49 class curve;
50 Ostream& operator<<(Ostream&, const curve&);
53 /*---------------------------------------------------------------------------*\
54                            Class curve Declaration
55 \*---------------------------------------------------------------------------*/
57 class curve
59     public scalarField
62 public:
64     //- The style (line, symbol, etc) of a curve
65     class curveStyle
66     {
68     public:
70         //- Enumeration definitions
71         enum curveStyleNo
72         {
73             CONTINUOUS,
74             SYMBOL,
75             SYMBOL_CURVE,
76             SYMBOL_WITH_ERROR_BARS,
77             SYMBOL_WITH_VARIABLE_SIZE
78         };
81     private:
83         //- Private data
84         curveStyleNo CurveStyleNo;
87     public:
90         // Constructors
92             //- Construct given a curveStyleNo
93             curveStyle(const curveStyleNo csn)
94             :
95                 CurveStyleNo(csn)
96             {}
98             //- Construct from Istream
99             curveStyle(Istream& is)
100             :
101                 CurveStyleNo(curveStyleNo(readInt(is)))
102             {}
105         // Ostream operator
107             friend Ostream& operator<<(Ostream& os, const curveStyle& cs)
108             {
109                 os << int(cs.CurveStyleNo);
110                 return os;
111             }
112     };
115 private:
117     // private data
119         string name_;
120         curveStyle style_;
123 public:
125     // Constructors
127         //- Construct as interpolation of an existing curve
128         //curve(const curve&, const label);
130         //- Construct from name, style and size
131         curve
132         (
133             const string& name,
134             const curveStyle& style,
135             const label l
136         );
138         //- Construct from the components
139         curve
140         (
141             const string&,
142             const curveStyle&,
143             const scalarField& y
144         );
146         //- Create and return a clone
147         autoPtr<curve> clone() const
148         {
149             return autoPtr<curve>(new curve(*this));
150         }
153     // Member functions
155         // Access
157             const string& name() const
158             {
159                 return name_;
160             }
162             const curveStyle& style() const
163             {
164                 return style_;
165             }
168     // Friend functions
170         //- Gradient of the curve
171         //friend curve grad(const curve&);
174     // Ostream operator
176         friend Ostream& operator<<(Ostream&, const curve&);
180 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
182 } // End namespace Foam
184 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
186 #endif
188 // ************************************************************************* //