Author: Jon Berndt
Date started: August 25 2004
- ------------- Copyright (C) 2001 Jon S. Berndt (jsb@hal-pc.org) -------------
+ ------------- Copyright (C) 2001 Jon S. Berndt (jon@jsbsim.org) -------------
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU Lesser General Public License as published by the Free Software
#include <vector>
#include <string>
#include "FGParameter.h"
-#include <input_output/FGXMLElement.h>
-#include <input_output/FGPropertyManager.h>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
+class FGPropertyManager;
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
- quotient (takes 2 args)
- pow (takes 2 args)
- exp (takes 2 args)
+- log2 (takes 1 arg)
+- ln (takes 1 arg)
+- log10 (takes 1 arg)
- abs (takes n args)
- sin (takes 1 arg)
- cos (takes 1 arg)
- acos (takes 1 arg)
- atan (takes 1 arg)
- atan2 (takes 2 args)
+- min (takes n args)
+- max (takes n args)
+- avg (takes n args)
+- fraction
+- mod
+- random (Gaussian random number)
+- integer
An operation is defined in the configuration file as in the following example:
DECLARATION: FGFunction
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+// Todo: Does this class need a copy constructor, like FGLGear?
+
class FGFunction : public FGParameter
{
public:
@param prefix an optional prefix to prepend to the name given to the property
that represents this function (if given).
*/
- FGFunction(FGPropertyManager* PropertyManager, Element* element, string prefix="");
+ FGFunction(FGPropertyManager* PropertyManager, Element* element, const std::string& prefix="");
/// Destructor.
virtual ~FGFunction();
/** The value that the function evaluates to, as a string.
@return the value of the function as a string. */
- string GetValueAsString(void) const;
+ std::string GetValueAsString(void) const;
/// Retrieves the name of the function.
- string GetName(void) const {return Name;}
+ std::string GetName(void) const {return Name;}
/** Specifies whether to cache the value of the function, so it is calculated only
once per frame.
void cacheValue(bool shouldCache);
private:
- vector <FGParameter*> Parameters;
+ std::vector <FGParameter*> Parameters;
FGPropertyManager* const PropertyManager;
bool cached;
- string Prefix;
+ double invlog2val;
+ std::string Prefix;
+ std::string description_string;
+ std::string property_string;
+ std::string value_string;
+ std::string table_string;
+ std::string p_string;
+ std::string v_string;
+ std::string t_string;
+ std::string function_string;
+ std::string sum_string;
+ std::string difference_string;
+ std::string product_string;
+ std::string quotient_string;
+ std::string pow_string;
+ std::string exp_string;
+ std::string log2_string;
+ std::string ln_string;
+ std::string log10_string;
+ std::string abs_string;
+ std::string sin_string;
+ std::string cos_string;
+ std::string tan_string;
+ std::string asin_string;
+ std::string acos_string;
+ std::string atan_string;
+ std::string atan2_string;
+ std::string min_string;
+ std::string max_string;
+ std::string avg_string;
+ std::string fraction_string;
+ std::string mod_string;
+ std::string random_string;
+ std::string integer_string;
double cachedValue;
enum functionType {eTopLevel=0, eProduct, eDifference, eSum, eQuotient, ePow,
- eExp, eAbs, eSin, eCos, eTan, eASin, eACos, eATan, eATan2} Type;
- string Name;
+ eExp, eAbs, eSin, eCos, eTan, eASin, eACos, eATan, eATan2,
+ eMin, eMax, eAvg, eFrac, eInteger, eMod, eRandom, eLog2, eLn, eLog10} Type;
+ std::string Name;
void bind(void);
void Debug(int from);
};