1 //static const char* sccsid = "@(#)Expr_UnaryExpression.cxx 3.2 95/01/10"; // Do not delete this line. Used by sccs.
2 // Copyright: Matra-Datavision 1991
3 // File: Expr_UnaryExpression.cxx
4 // Created: Mon Apr 15 14:24:44 1991
5 // Author: Arnaud BOUZY
8 #include <Expr_UnaryExpression.ixx>
9 #include <Expr_NamedUnknown.hxx>
10 #include <Expr_InvalidOperand.hxx>
11 #include <Standard_OutOfRange.hxx>
13 void Expr_UnaryExpression::SetOperand (const Handle(Expr_GeneralExpression)& exp)
15 Handle(Expr_UnaryExpression) me = this;
17 Expr_InvalidOperand::Raise();
19 if (exp->Contains(me)) {
20 Expr_InvalidOperand::Raise();
25 void Expr_UnaryExpression::CreateOperand (const Handle(Expr_GeneralExpression)& exp)
30 Standard_Integer Expr_UnaryExpression::NbSubExpressions () const
35 const Handle(Expr_GeneralExpression)& Expr_UnaryExpression::SubExpression (const Standard_Integer I) const
38 Standard_OutOfRange::Raise();
43 Standard_Boolean Expr_UnaryExpression::ContainsUnknowns () const
45 if (!myOperand->IsKind(STANDARD_TYPE(Expr_NamedUnknown))) {
46 return myOperand->ContainsUnknowns();
51 Standard_Boolean Expr_UnaryExpression::Contains (const Handle(Expr_GeneralExpression)& exp) const
53 if (myOperand != exp) {
54 return myOperand->Contains(exp);
59 void Expr_UnaryExpression::Replace (const Handle(Expr_NamedUnknown)& var, const Handle(Expr_GeneralExpression)& with)
61 if (myOperand == var) {
65 if (myOperand->Contains(var)) {
66 myOperand->Replace(var,with);
72 Handle(Expr_GeneralExpression) Expr_UnaryExpression::Simplified() const
74 Handle(Expr_UnaryExpression) cop = Handle(Expr_UnaryExpression)::DownCast(Copy());
75 Handle(Expr_GeneralExpression) op = cop->Operand();
76 cop->SetOperand(op->Simplified());
77 return cop->ShallowSimplified();