CLHEP/GenericFunctions/AbsParameter.hh
// -*- C++ -*-
// $Id: AbsParameter.hh,v 1.2 2001/05/16 05:10:28 joeb Exp $
#ifndef _AbsParameter_h_
#define _AbsParameter_h_
#include "CLHEP/config/CLHEP.h"
HEP_BEGIN_NAMESPACE(Genfun)
class Parameter;
class ParameterSum;
class ParameterDifference;
class ParameterProduct;
class ParameterQuotient;
class ParameterNegation;
class ConstPlusParameter;
class ConstMinusParameter;
class ConstTimesParameter;
class ConstOverParameter;
class AbsParameter {
public:
// Default Constructor
AbsParameter();
// Destructor
virtual ~AbsParameter();
// Parameter value
virtual double getValue() const=0;
// Every parameter must override this:
AbsParameter * clone() const;
// Extra lingual type information:
virtual Parameter *parameter() {return 0;}
virtual const Parameter *parameter() const {return 0;}
private:
// Cannot copy an AbsParameter:
AbsParameter(const AbsParameter &);
// Cannot assign an AbsParameter:
AbsParameter & operator= (const AbsParameter &);
virtual AbsParameter *_clone() const=0;
};
// Now for some additional operations:
ConstTimesParameter operator * (double c, const AbsParameter &op2);
ConstPlusParameter operator + (double c, const AbsParameter &op2);
ConstMinusParameter operator - (double c, const AbsParameter &op2);
ConstOverParameter operator / (double c, const AbsParameter &op2);
ConstTimesParameter operator * (const AbsParameter &op2, double c);
ConstPlusParameter operator + (const AbsParameter &op2, double c);
ConstPlusParameter operator - (const AbsParameter &op2, double c);
ConstTimesParameter operator / (const AbsParameter &op2, double c);
ParameterProduct operator * (const AbsParameter &op1, const AbsParameter &op2);
ParameterSum operator + (const AbsParameter &op1, const AbsParameter &op2);
ParameterDifference operator - (const AbsParameter &op1, const AbsParameter &op2);
ParameterQuotient operator / (const AbsParameter &op1, const AbsParameter &op2);
ParameterNegation operator - (const AbsParameter &op1);
typedef const AbsParameter & GENPARAMETER;
HEP_END_NAMESPACE(Genfun)
// Poor man's covariant return type:
#define PARAMETER_OBJECT_DEF(classname) \
public: \
classname *clone() const; \
private: \
virtual AbsParameter* _clone() const;
// Poor man's covariant return type:
#define PARAMETER_OBJECT_IMP(classname) \
classname *classname::clone () const { \
return (classname *) _clone(); \
} \
AbsParameter *classname::_clone () const { \
return new classname(*this); \
}
#include "CLHEP/GenericFunctions/ParameterProduct.hh"
#include "CLHEP/GenericFunctions/ParameterSum.hh"
#include "CLHEP/GenericFunctions/ParameterDifference.hh"
#include "CLHEP/GenericFunctions/ParameterQuotient.hh"
#include "CLHEP/GenericFunctions/ParameterNegation.hh"
#include "CLHEP/GenericFunctions/ConstPlusParameter.hh"
#include "CLHEP/GenericFunctions/ConstMinusParameter.hh"
#include "CLHEP/GenericFunctions/ConstTimesParameter.hh"
#include "CLHEP/GenericFunctions/ConstOverParameter.hh"
#endif
Generated by GNU enscript 1.6.1.