0031642: Visualization - crash in Graphic3d_Structure::SetVisual() on redisplaying...
[occt.git] / src / Expr / Expr_NamedConstant.hxx
CommitLineData
42cf5bc1 1// Created on: 1991-01-10
2// Created by: Arnaud BOUZY
3// Copyright (c) 1991-1999 Matra Datavision
4// Copyright (c) 1999-2014 OPEN CASCADE SAS
5//
6// This file is part of Open CASCADE Technology software library.
7//
8// This library is free software; you can redistribute it and/or modify it under
9// the terms of the GNU Lesser General Public License version 2.1 as published
10// by the Free Software Foundation, with special exception defined in the file
11// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
12// distribution for complete text of the license and disclaimer of any warranty.
13//
14// Alternatively, this file may be used under the terms of Open CASCADE
15// commercial license or contractual agreement.
16
17#ifndef _Expr_NamedConstant_HeaderFile
18#define _Expr_NamedConstant_HeaderFile
19
20#include <Standard.hxx>
21#include <Standard_Type.hxx>
22
23#include <Standard_Real.hxx>
24#include <Expr_NamedExpression.hxx>
25#include <Standard_Integer.hxx>
26#include <Standard_Boolean.hxx>
27#include <Expr_Array1OfNamedUnknown.hxx>
28#include <TColStd_Array1OfReal.hxx>
29class Standard_OutOfRange;
30class TCollection_AsciiString;
31class Expr_GeneralExpression;
32class Expr_NamedUnknown;
33
34
35class Expr_NamedConstant;
36DEFINE_STANDARD_HANDLE(Expr_NamedConstant, Expr_NamedExpression)
37
38//! Describes any numeric constant known by a special name
39//! (as PI, e,...).
40class Expr_NamedConstant : public Expr_NamedExpression
41{
42
43public:
44
45
46 //! Creates a constant value of name <name> and value <value>.
47 Standard_EXPORT Expr_NamedConstant(const TCollection_AsciiString& name, const Standard_Real value);
48
49 Standard_Real GetValue() const;
50
51 //! returns the number of sub-expressions contained
52 //! in <me> (always returns zero)
79104795 53 Standard_EXPORT Standard_Integer NbSubExpressions() const Standard_OVERRIDE;
42cf5bc1 54
55 //! returns the <I>-th sub-expression of <me>
56 //! raises OutOfRange
79104795 57 Standard_EXPORT const Handle(Expr_GeneralExpression)& SubExpression (const Standard_Integer I) const Standard_OVERRIDE;
42cf5bc1 58
59 //! returns a GeneralExpression after replacement of
60 //! NamedUnknowns by an associated expression and after
61 //! values computation.
79104795 62 Standard_EXPORT Handle(Expr_GeneralExpression) Simplified() const Standard_OVERRIDE;
42cf5bc1 63
64 //! Returns a GeneralExpression after a simplification
65 //! of the arguments of <me>.
79104795 66 Standard_EXPORT Handle(Expr_GeneralExpression) ShallowSimplified() const Standard_OVERRIDE;
42cf5bc1 67
68 //! Returns a copy of <me> having the same unknowns and functions.
79104795 69 Standard_EXPORT Handle(Expr_GeneralExpression) Copy() const Standard_OVERRIDE;
42cf5bc1 70
71 //! Tests if <me> contains NamedUnknown.
72 //! (returns always False)
79104795 73 Standard_EXPORT Standard_Boolean ContainsUnknowns() const Standard_OVERRIDE;
42cf5bc1 74
75 //! Tests if <exp> is contained in <me>.
79104795 76 Standard_EXPORT Standard_Boolean Contains (const Handle(Expr_GeneralExpression)& exp) const Standard_OVERRIDE;
42cf5bc1 77
79104795 78 Standard_EXPORT Standard_Boolean IsLinear() const Standard_OVERRIDE;
42cf5bc1 79
80 //! Returns the derivative on <X> unknown of <me>
79104795 81 Standard_EXPORT Handle(Expr_GeneralExpression) Derivative (const Handle(Expr_NamedUnknown)& X) const Standard_OVERRIDE;
42cf5bc1 82
83 //! Returns the <N>-th derivative on <X> unknown of <me>.
84 //! Raises OutOfRange if <N> <= 0
85 Standard_EXPORT virtual Handle(Expr_GeneralExpression) NDerivative (const Handle(Expr_NamedUnknown)& X, const Standard_Integer N) const Standard_OVERRIDE;
86
87 //! Replaces all occurences of <var> with <with> in <me>
79104795 88 Standard_EXPORT void Replace (const Handle(Expr_NamedUnknown)& var, const Handle(Expr_GeneralExpression)& with) Standard_OVERRIDE;
42cf5bc1 89
90 //! Returns the value of <me> (as a Real) by
91 //! replacement of <vars> by <vals>.
79104795 92 Standard_EXPORT Standard_Real Evaluate (const Expr_Array1OfNamedUnknown& vars, const TColStd_Array1OfReal& vals) const Standard_OVERRIDE;
42cf5bc1 93
94
95
96
92efcf78 97 DEFINE_STANDARD_RTTIEXT(Expr_NamedConstant,Expr_NamedExpression)
42cf5bc1 98
99protected:
100
101
102
103
104private:
105
106
107 Standard_Real myValue;
108
109
110};
111
112
113#include <Expr_NamedConstant.lxx>
114
115
116
117
118
119#endif // _Expr_NamedConstant_HeaderFile