DD4hep - The AIDA detector description toolkit for high energy physics experiments
DD4hep  Rev:Unversioneddirectory
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Evaluator.h
Go to the documentation of this file.
1 // $Id$
2 //==========================================================================
3 // AIDA Detector description implementation for LCD
4 //--------------------------------------------------------------------------
5 // Copyright (C) Organisation europeenne pour la Recherche nucleaire (CERN)
6 // All rights reserved.
7 //
8 // For the licensing terms see $DD4hepINSTALL/LICENSE.
9 // For the list of contributors see $DD4hepINSTALL/doc/CREDITS.
10 //
11 //==========================================================================
12 // -*- C++ -*-
13 // $Id$
14 // ---------------------------------------------------------------------------
15 
16 #ifndef XMLTOOLS_EVALUATOR_H
17 #define XMLTOOLS_EVALUATOR_H
18 
20 namespace XmlTools {
21 
23 
38  class Evaluator {
39  public:
40 
51  enum {
52  OK,
64  };
65 
69  Evaluator();
70 
74  ~Evaluator();
75 
88  double evaluate(const char * expression);
89 
93  int status() const;
94 
98  int error_position() const;
99 
103  void print_error() const;
104 
111  void setEnviron(const char* name, const char* value);
117  const char* getEnviron(const char* name);
126  void setVariable(const char * name, double value);
127 
137  void setVariable(const char * name, const char * expression);
138 
147  void setFunction(const char * name, double (*fun)());
148 
157  void setFunction(const char * name, double (*fun)(double));
158 
167  void setFunction(const char * name, double (*fun)(double, double));
168 
177  void setFunction(const char * name, double (*fun)(double, double, double));
178 
187  void setFunction(const char * name, double (*fun)(double, double, double, double));
188 
197  void setFunction(const char * name, double (*fun)(double, double, double, double, double));
198 
205  bool findVariable(const char * name) const;
206 
214  bool findFunction(const char * name, int npar) const;
215 
221  void removeVariable(const char * name);
222 
229  void removeFunction(const char * name, int npar);
230 
234  void clear();
235 
239  void setStdMath();
240 
267  void setSystemOfUnits(double meter = 1.0, double kilogram = 1.0, double second = 1.0, double ampere = 1.0, double kelvin =
268  1.0, double mole = 1.0, double candela = 1.0, double radians = 1.0 );
269 
270  private:
271  void * p; // private data
272  Evaluator(const Evaluator &); // copy constructor is not allowed
273  Evaluator & operator=(const Evaluator &); // assignment is not allowed
274  };
275 
276 } // namespace XmlTools
277 
278 #endif /* XMLTOOLS_EVALUATOR_H */
void removeFunction(const char *name, int npar)
Evaluator & operator=(const Evaluator &)
void setFunction(const char *name, double(*fun)())
void setSystemOfUnits(double meter=1.0, double kilogram=1.0, double second=1.0, double ampere=1.0, double kelvin=1.0, double mole=1.0, double candela=1.0, double radians=1.0)
void print_error() const
void removeVariable(const char *name)
static const double meter
Definition: DD4hepUnits.h:44
bool findVariable(const char *name) const
static const double candela
Definition: DD4hepUnits.h:257
static const double mole
Definition: DD4hepUnits.h:238
void setEnviron(const char *name, const char *value)
Evaluator of arithmetic expressions with an extendable dictionary.
Definition: Evaluator.h:38
int status() const
void setVariable(const char *name, double value)
double evaluate(const char *expression)
static const double kelvin
Definition: DD4hepUnits.h:233
static const double second
Definition: DD4hepUnits.h:112
const char * getEnviron(const char *name)
static const double ampere
Definition: DD4hepUnits.h:186
int error_position() const
bool findFunction(const char *name, int npar) const
static const double kilogram
Definition: DD4hepUnits.h:156