Couenne  0.5.8
CouenneExprClone.hpp
Go to the documentation of this file.
1 /* $Id: CouenneExprClone.hpp 645 2011-06-14 10:04:49Z pbelotti $
2  *
3  * Name: exprClone.hpp
4  * Author: Pietro Belotti
5  * Purpose: definition of the clone class (different from exprCopy in
6  * that evaluation is propagated)
7  *
8  * (C) Carnegie-Mellon University, 2006.
9  * This file is licensed under the Eclipse Public License (EPL)
10  */
11 
12 #ifndef COUENNE_EXPRCLONE_HPP
13 #define COUENNE_EXPRCLONE_HPP
14 
15 #include <iostream>
16 
17 #include "CouenneTypes.hpp"
18 #include "CouenneExprCopy.hpp"
19 
20 namespace Couenne {
21 
23 
24 class exprClone: public exprCopy {
25 
26  public:
27 
30  exprCopy (getOriginal (copy)) {}
31 
33  exprClone (const exprClone &e, Domain *d = NULL):
34  //{copy_ = e.copy_;}// d = e.domain_;}
35  exprCopy (e, d) {}
36 
38  expression *clone (Domain *d = NULL) const
39  {return new exprClone (*this, d);}
40  /*{
41  if (copy_ != Original ()) return copy_ -> clone (d);
42  else return new exprClone (*this, d);
43  }*/
44  //{return copy_ -> Original () -> clone (d);}
45 
47  virtual ~exprClone () {
48  //if (copy_ != Original ())
49  //delete copy_;
50  copy_ = NULL; // unlink pointer so that ~exprCopy does nothing
51  }
52 
54  virtual void print (std::ostream &out = std::cout,
55  bool descend = false) const;
56 
58  inline CouNumber Value () const
59  {return copy_ -> Value ();}
60 
63  {return ((*copy_) ());}
64 };
65 
66 }
67 
68 #endif
Couenne::getOriginal
expression * getOriginal(expression *e)
get original expression (can't make it an expression method as I need a non-const,...
Definition: CouenneExpression.hpp:315
Couenne::exprClone::operator()
CouNumber operator()()
null function for evaluating the expression
Definition: CouenneExprClone.hpp:62
Couenne
general include file for different compilers
Definition: CouenneAggrProbing.hpp:24
Couenne::exprClone::exprClone
exprClone(expression *copy)
Constructor.
Definition: CouenneExprClone.hpp:29
Couenne::exprClone::~exprClone
virtual ~exprClone()
Destructor.
Definition: CouenneExprClone.hpp:47
CouenneExprCopy.hpp
Couenne::exprClone::Value
CouNumber Value() const
value
Definition: CouenneExprClone.hpp:58
Couenne::CouNumber
double CouNumber
main number type in Couenne
Definition: CouenneTypes.hpp:100
CouenneTypes.hpp
Couenne::exprCopy
Definition: CouenneExprCopy.hpp:25
Couenne::exprClone::exprClone
exprClone(const exprClone &e, Domain *d=NULL)
copy constructor
Definition: CouenneExprClone.hpp:33
Couenne::exprCopy::copy_
expression * copy_
the expression this object is a (reference) copy of
Definition: CouenneExprCopy.hpp:30
Couenne::exprClone::print
virtual void print(std::ostream &out=std::cout, bool descend=false) const
Printing.
Couenne::exprClone::clone
expression * clone(Domain *d=NULL) const
cloning method
Definition: CouenneExprClone.hpp:38
Couenne::exprClone
expression clone (points to another expression)
Definition: CouenneExprClone.hpp:24
Couenne::expression
Expression base class.
Definition: CouenneExpression.hpp:48
Couenne::Domain
Define a dynamic point+bounds, with a way to save and restore previous points+bounds through a LIFO s...
Definition: CouenneDomain.hpp:104