#include <iostream>
#include <iterator>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
{
struct PropertyCatalogStructure* pcsNew = new struct PropertyCatalogStructure;
int node_idx = 0;
- char int_buf[10];
for (int i=0; i<pcs->node->nChildren(); i++) {
pcsNew->base_string = pcs->base_string + "/" + pcs->node->getChild(i)->getName();
node_idx = pcs->node->getChild(i)->getIndex();
- sprintf(int_buf, "[%d]", node_idx);
- if (node_idx != 0) pcsNew->base_string += string(int_buf);
+ if (node_idx != 0) {
+ pcsNew->base_string = CreateIndexedPropertyName(pcsNew->base_string, node_idx);
+ }
if (pcs->node->getChild(i)->nChildren() == 0) {
if (pcsNew->base_string.substr(0,11) == string("/fdm/jsbsim")) {
pcsNew->base_string = pcsNew->base_string.erase(0,12);
#include "FGJSBBase.h"
#include <iostream>
+#include <sstream>
+#include <cstdlib>
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+string FGJSBBase::CreateIndexedPropertyName(const string& Property, int index)
+{
+ std::ostringstream buf;
+ buf << Property << '[' << index << ']';
+ return buf.str();
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+double FGJSBBase::GaussianRandomNumber(void)
+{
+ static double V1, V2, S;
+ static int phase = 0;
+ double X;
+
+ if (phase == 0) {
+ V1 = V2 = S = X = 0.0;
+
+ do {
+ double U1 = (double)rand() / RAND_MAX;
+ double U2 = (double)rand() / RAND_MAX;
+
+ V1 = 2 * U1 - 1;
+ V2 = 2 * U2 - 1;
+ S = V1 * V1 + V2 * V2;
+ } while(S >= 1 || S == 0);
+
+ X = V1 * sqrt(-2 * log(S) / S);
+ } else
+ X = V2 * sqrt(-2 * log(S) / S);
+
+ phase = 1 - phase;
+
+ return X;
+}
+
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
} // namespace JSBSim
#include <float.h>
#include <queue>
#include <string>
-#include <sstream>
#include <cmath>
-#include <cstdlib>
#include "input_output/string_utilities.h"
-using std::fabs;
-using std::string;
-
#ifndef M_PI
# define M_PI 3.14159265358979323846
#endif
-#if !defined(WIN32) || defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 1300))
- using std::max;
+#if defined(_MSC_VER) && (_MSC_VER < 1300)
+namespace std
+{
+ template <class T> inline T max(const T& a, const T& b)
+ {
+ return (a > b) ? a : b;
+ }
+}
#endif
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
public:
unsigned int fdmId;
unsigned int messageId;
- string text;
- string subsystem;
+ std::string text;
+ std::string subsystem;
enum mType {eText, eInteger, eDouble, eBool} type;
bool bVal;
int iVal;
/** Creates a message with the given text and places it on the queue.
@param text message text
@return pointer to a Message structure */
- void PutMessage(const string& text);
+ void PutMessage(const std::string& text);
/** Creates a message with the given text and boolean value and places it on the queue.
@param text message text
@param bVal boolean value associated with the message
@return pointer to a Message structure */
- void PutMessage(const string& text, bool bVal);
+ void PutMessage(const std::string& text, bool bVal);
/** Creates a message with the given text and integer value and places it on the queue.
@param text message text
@param iVal integer value associated with the message
@return pointer to a Message structure */
- void PutMessage(const string& text, int iVal);
+ void PutMessage(const std::string& text, int iVal);
/** Creates a message with the given text and double value and places it on the queue.
@param text message text
@param dVal double value associated with the message
@return pointer to a Message structure */
- void PutMessage(const string& text, double dVal);
+ void PutMessage(const std::string& text, double dVal);
/** Reads the message on the queue (but does not delete it).
@return 1 if some messages */
int SomeMessages(void);
/** Returns the version number of JSBSim.
* @return The version number of JSBSim. */
- string GetVersion(void) {return JSBSim_version;}
+ std::string GetVersion(void) {return JSBSim_version;}
/// Disables highlighting in the console output.
void disableHighLighting(void);
@return if the two values can be considered equal up to roundoff */
static bool EqualToRoundoff(double a, double b) {
double eps = 2.0*DBL_EPSILON;
- return fabs(a - b) <= eps*max(fabs(a), fabs(b));
+ return std::fabs(a - b) <= eps*std::max(std::fabs(a), std::fabs(b));
}
/** Finite precision comparison.
@return if the two values can be considered equal up to roundoff */
static bool EqualToRoundoff(float a, float b) {
float eps = 2.0*FLT_EPSILON;
- return fabs(a - b) <= eps*max(fabs(a), fabs(b));
+ return std::fabs(a - b) <= eps*std::max(std::fabs(a), std::fabs(b));
}
/** Finite precision comparison.
static const double slugtolb;
static const double kgtolb;
static const double kgtoslug;
- static const string needed_cfg_version;
- static const string JSBSim_version;
-
- static string CreateIndexedPropertyName(string Property, int index)
- {
- std::stringstream str;
- str << index;
- string tmp;
- str >> tmp;
- return Property + "[" + tmp + "]";
- }
+ static const std::string needed_cfg_version;
+ static const std::string JSBSim_version;
- static double GaussianRandomNumber(void)
- {
- static double V1, V2, S;
- static int phase = 0;
- double X;
-
- if (phase == 0) {
- V1 = V2 = S = X = 0.0;
-
- do {
- double U1 = (double)rand() / RAND_MAX;
- double U2 = (double)rand() / RAND_MAX;
-
- V1 = 2 * U1 - 1;
- V2 = 2 * U2 - 1;
- S = V1 * V1 + V2 * V2;
- } while(S >= 1 || S == 0);
+ static std::string CreateIndexedPropertyName(const std::string& Property, int index);
- X = V1 * sqrt(-2 * log(S) / S);
- } else
- X = V2 * sqrt(-2 * log(S) / S);
-
- phase = 1 - phase;
-
- return X;
- }
+ static double GaussianRandomNumber(void);
public:
/// Moments L, M, N
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cmath>
+#include <iostream>
#include "FGState.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
// Copy the engine values from JSBSim.
for ( i=0; i < Propulsion->GetNumEngines(); i++ ) {
SGPropertyNode * node = fgGetNode("engines/engine", i, true);
- char buf[30];
- sprintf(buf, "engines/engine[%d]/thruster", i);
- SGPropertyNode * tnode = fgGetNode(buf, true);
+ SGPropertyNode * tnode = node->getChild("thruster", 0, true);
FGThruster * thruster = Propulsion->GetEngine(i)->GetThruster();
switch (Propulsion->GetEngine(i)->GetType()) {
#include "models/FGAerodynamics.h"
#include "models/FGPropagate.h"
#include "input_output/FGPropertyManager.h"
+#include "input_output/FGXMLElement.h"
#include "models/FGPropulsion.h"
#include "input_output/FGXMLParse.h"
#include "math/FGQuaternion.h"
+#include <iostream>
#include <fstream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
#pragma warning (disable : 4786 4788)
#endif
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
#include <string>
#include <cstdlib>
+#include <iomanip>
#include "FGFDMExec.h"
#include "models/FGAtmosphere.h"
#include "FGInitialCondition.h"
#include "models/FGAircraft.h"
#include "models/FGPropulsion.h"
#include "models/FGAerodynamics.h"
+#include "models/FGFCS.h"
+#include "models/propulsion/FGEngine.h"
+#include "models/FGAuxiliary.h"
+#include "models/FGGroundReactions.h"
+
+using namespace std;
namespace JSBSim {
/*****************************************************************************/
void FGTrimAxis::AxisReport(void) {
-
- char out[80];
-
- sprintf(out," %20s: %6.2f %5s: %9.2e Tolerance: %3.0e",
- GetControlName().c_str(), GetControl()*control_convert,
- GetStateName().c_str(), GetState()+state_target, GetTolerance());
- cout << out;
+ cout << " " << setw(20) << GetControlName() << ": ";
+ cout << setw(6) << setprecision(2) << GetControl()*control_convert << ' ';
+ cout << setw(5) << GetStateName() << ": ";
+ cout << setw(9) << setprecision(2) << scientific << GetState()+state_target;
+ cout << " Tolerance: " << setw(3) << setprecision(0) << scientific << GetTolerance();
if( fabs(GetState()+state_target) < fabs(GetTolerance()) )
cout << " Passed" << endl;
#endif
#include <string>
-#include <iostream>
#include "simgear/props/props.hxx"
#if !PROPS_STANDALONE
# include "simgear/math/SGMath.hxx"
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-using namespace std;
-
namespace JSBSim {
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
* NOTE: this function changes its argument and thus relies
* on pass by value
*/
- string mkPropertyName(string name, bool lowercase);
+ std::string mkPropertyName(std::string name, bool lowercase);
/**
* Get a property node.
* @return The node, or 0 if none exists and none was created.
*/
FGPropertyManager*
- GetNode (const string &path, bool create = false);
+ GetNode (const std::string &path, bool create = false);
FGPropertyManager*
- GetNode (const string &relpath, int index, bool create = false);
+ GetNode (const std::string &relpath, int index, bool create = false);
/**
* Test whether a given node exists.
* @param path The path of the node, relative to root.
* @return true if the node exists, false otherwise.
*/
- bool HasNode (const string &path);
+ bool HasNode (const std::string &path);
/**
* Get the name of a node
*/
- string GetName( void );
+ std::string GetName( void );
/**
* Get the name of a node without underscores, etc.
*/
- string GetPrintableName( void );
+ std::string GetPrintableName( void );
/**
* Get the fully qualified name of a node
* This function is very slow, so is probably useful for debugging only.
*/
- string GetFullyQualifiedName(void);
+ std::string GetFullyQualifiedName(void);
/**
* Get a bool value for a property.
* does not exist.
* @return The property's value as a bool, or the default value provided.
*/
- bool GetBool (const string &name, bool defaultValue = false);
+ bool GetBool (const std::string &name, bool defaultValue = false);
/**
* does not exist.
* @return The property's value as an int, or the default value provided.
*/
- int GetInt (const string &name, int defaultValue = 0);
+ int GetInt (const std::string &name, int defaultValue = 0);
/**
* does not exist.
* @return The property's value as a long, or the default value provided.
*/
- int GetLong (const string &name, long defaultValue = 0L);
+ int GetLong (const std::string &name, long defaultValue = 0L);
/**
* does not exist.
* @return The property's value as a float, or the default value provided.
*/
- float GetFloat (const string &name, float defaultValue = 0.0);
+ float GetFloat (const std::string &name, float defaultValue = 0.0);
/**
* does not exist.
* @return The property's value as a double, or the default value provided.
*/
- double GetDouble (const string &name, double defaultValue = 0.0);
+ double GetDouble (const std::string &name, double defaultValue = 0.0);
/**
* does not exist.
* @return The property's value as a string, or the default value provided.
*/
- string GetString (const string &name, string defaultValue = "");
+ std::string GetString (const std::string &name, std::string defaultValue = "");
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetBool (const string &name, bool val);
+ bool SetBool (const std::string &name, bool val);
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetInt (const string &name, int val);
+ bool SetInt (const std::string &name, int val);
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetLong (const string &name, long val);
+ bool SetLong (const std::string &name, long val);
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetFloat (const string &name, float val);
+ bool SetFloat (const std::string &name, float val);
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetDouble (const string &name, double val);
+ bool SetDouble (const std::string &name, double val);
/**
* @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise.
*/
- bool SetString (const string &name, const string &val);
+ bool SetString (const std::string &name, const std::string &val);
////////////////////////////////////////////////////////////////////////
* @param name The property name.
* @param state The state of the archive attribute (defaults to true).
*/
- void SetArchivable (const string &name, bool state = true);
+ void SetArchivable (const std::string &name, bool state = true);
/**
* @param name The property name.
* @param state The state of the read attribute (defaults to true).
*/
- void SetReadable (const string &name, bool state = true);
+ void SetReadable (const std::string &name, bool state = true);
/**
* @param name The property name.
* @param state The state of the write attribute (defaults to true).
*/
- void SetWritable (const string &name, bool state = true);
+ void SetWritable (const std::string &name, bool state = true);
////////////////////////////////////////////////////////////////////////
* Classes should use this function to release control of any
* properties they are managing.
*/
- void Untie (const string &name);
+ void Untie (const std::string &name);
// Templates cause ambiguity here
* be modified; defaults to true.
*/
void
- Tie (const string &name, bool *pointer, bool useDefault = true);
+ Tie (const std::string &name, bool *pointer, bool useDefault = true);
/**
* be modified; defaults to true.
*/
void
- Tie (const string &name, int *pointer, bool useDefault = true);
+ Tie (const std::string &name, int *pointer, bool useDefault = true);
/**
* be modified; defaults to true.
*/
void
- Tie (const string &name, long *pointer, bool useDefault = true);
+ Tie (const std::string &name, long *pointer, bool useDefault = true);
/**
* be modified; defaults to true.
*/
void
- Tie (const string &name, float *pointer, bool useDefault = true);
+ Tie (const std::string &name, float *pointer, bool useDefault = true);
/**
* Tie a property to an external double variable.
* be modified; defaults to true.
*/
void
- Tie (const string &name, double *pointer, bool useDefault = true);
+ Tie (const std::string &name, double *pointer, bool useDefault = true);
//============================================================================
//
//============================================================================
/* template <class V> void
- Tie (const string &name, V (*getter)(), void (*setter)(V) = 0,
+ Tie (const std::string &name, V (*getter)(), void (*setter)(V) = 0,
bool useDefault = true);
template <class V> void
- Tie (const string &name, int index, V (*getter)(int),
+ Tie (const std::string &name, int index, V (*getter)(int),
void (*setter)(int, V) = 0, bool useDefault = true);
template <class T, class V> void
- Tie (const string &name, T * obj, V (T::*getter)() const,
+ Tie (const std::string &name, T * obj, V (T::*getter)() const,
void (T::*setter)(V) = 0, bool useDefault = true);
template <class T, class V> void
- Tie (const string &name, T * obj, int index,
+ Tie (const std::string &name, T * obj, int index,
V (T::*getter)(int) const, void (T::*setter)(int, V) = 0,
bool useDefault = true); */
*/
template <class V> inline void
- Tie (const string &name, V (*getter)(), void (*setter)(V) = 0, bool useDefault = true)
+ Tie (const std::string &name, V (*getter)(), void (*setter)(V) = 0, bool useDefault = true)
{
if (!tie(name.c_str(), SGRawValueFunctions<V>(getter, setter), useDefault))
- cout << "Failed to tie property " << name << " to functions" << endl;
+ std::cout << "Failed to tie property " << name << " to functions" << std::endl;
else if (debug_lvl & 0x20)
- cout << name << endl;
+ std::cout << name << std::endl;
}
* property value should there be one; false if the old value should be
* discarded; defaults to true.
*/
- template <class V> inline void Tie (const string &name, int index, V (*getter)(int),
+ template <class V> inline void Tie (const std::string &name, int index, V (*getter)(int),
void (*setter)(int, V) = 0, bool useDefault = true)
{
if (!tie(name.c_str(), SGRawValueFunctionsIndexed<V>(index, getter, setter), useDefault))
- cout << "Failed to tie property " << name << " to indexed functions" << endl;
+ std::cout << "Failed to tie property " << name << " to indexed functions" << std::endl;
else if (debug_lvl & 0x20)
- cout << name << endl;
+ std::cout << name << std::endl;
}
* discarded; defaults to true.
*/
template <class T, class V> inline void
- Tie (const string &name, T * obj, V (T::*getter)() const,
+ Tie (const std::string &name, T * obj, V (T::*getter)() const,
void (T::*setter)(V) = 0, bool useDefault = true)
{
if (!tie(name.c_str(), SGRawValueMethods<T,V>(*obj, getter, setter), useDefault))
- cout << "Failed to tie property " << name << " to object methods" << endl;
+ std::cout << "Failed to tie property " << name << " to object methods" << std::endl;
else if (debug_lvl & 0x20)
- cout << name << endl;
+ std::cout << name << std::endl;
}
/**
* discarded; defaults to true.
*/
template <class T, class V> inline void
- Tie (const string &name, T * obj, int index, V (T::*getter)(int) const,
+ Tie (const std::string &name, T * obj, int index, V (T::*getter)(int) const,
void (T::*setter)(int, V) = 0, bool useDefault = true)
{
if (!tie(name.c_str(), SGRawValueMethodsIndexed<T,V>(*obj, index, getter, setter), useDefault))
- cout << "Failed to tie property " << name << " to indexed object methods" << endl;
+ std::cout << "Failed to tie property " << name << " to indexed object methods" << std::endl;
else if (debug_lvl & 0x20)
- cout << name << endl;
+ std::cout << name << std::endl;
}
};
}
#include "initialization/FGTrim.h"
#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
#include <cmath>
#include <cstdlib>
+#include <iostream>
+
+using namespace std;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-Element::Element(string nm)
+Element::Element(const string& nm)
{
name = nm;
parent = 0L;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string Element::GetAttributeValue(string attr)
+string Element::GetAttributeValue(const string& attr)
{
int select=-1;
for (unsigned int i=0; i<attribute_key.size(); i++) {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double Element::GetAttributeValueAsNumber(string attr)
+double Element::GetAttributeValueAsNumber(const string& attr)
{
string attribute = GetAttributeValue(attr);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-unsigned int Element::GetNumElements(string element_name)
+unsigned int Element::GetNumElements(const string& element_name)
{
unsigned int number_of_elements=0;
Element* el=FindElement(element_name);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Element* Element::FindElement(string el)
+Element* Element::FindElement(const string& el)
{
if (el.empty() && children.size() >= 1) {
element_index = 1;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-Element* Element::FindNextElement(string el)
+Element* Element::FindNextElement(const string& el)
{
if (el.empty()) {
if (element_index < children.size()) {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double Element::FindElementValueAsNumber(string el)
+double Element::FindElementValueAsNumber(const string& el)
{
Element* element = FindElement(el);
if (element) {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string Element::FindElementValue(string el)
+string Element::FindElementValue(const string& el)
{
Element* element = FindElement(el);
if (element) {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double Element::FindElementValueAsNumberConvertTo(string el, string target_units)
+double Element::FindElementValueAsNumberConvertTo(const string& el, const string& target_units)
{
Element* element = FindElement(el);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-double Element::FindElementValueAsNumberConvertFromTo( string el,
- string supplied_units,
- string target_units)
+double Element::FindElementValueAsNumberConvertFromTo( const string& el,
+ const string& supplied_units,
+ const string& target_units)
{
Element* element = FindElement(el);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-FGColumnVector3 Element::FindElementTripletConvertTo( string target_units)
+FGColumnVector3 Element::FindElementTripletConvertTo( const string& target_units)
{
FGColumnVector3 triplet;
Element* item;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void Element::AddAttribute(string name, string value)
+void Element::AddAttribute(const string& name, const string& value)
{
attribute_key.push_back(name);
attributes[name] = value;
void Element::AddData(string d)
{
- unsigned int string_start = (unsigned int)d.find_first_not_of(" \t");
- if (string_start > 0) {
+ string::size_type string_start = d.find_first_not_of(" \t");
+ if (string_start != string::npos && string_start > 0) {
d.erase(0,string_start);
}
data_lines.push_back(d);
#include <string>
#include <map>
-#include <iostream>
#include <vector>
-using std::string;
-using std::map;
-using std::vector;
-using std::cout;
-using std::endl;
-
#include "math/FGColumnVector3.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/** Constructor
@param nm the name of this element (if given)
*/
- Element(string nm);
+ Element(const std::string& nm);
/// Destructor
~Element(void);
@param key specifies the attribute key to retrieve the value of.
@return the key value (as a string), or the empty string if no such
attribute exists. */
- string GetAttributeValue(string key);
+ std::string GetAttributeValue(const std::string& key);
/** Retrieves an attribute value as a double precision real number.
@param key specifies the attribute key to retrieve the value of.
@return the key value (as a number), or the HUGE_VAL if no such
attribute exists. */
- double GetAttributeValueAsNumber(string key);
+ double GetAttributeValueAsNumber(const std::string& key);
/** Retrieves the element name.
@return the element name, or the empty string if no name has been set.*/
- string GetName(void) {return name;}
+ const std::string& GetName(void) const {return name;}
/** Gets a line of data belonging to an element.
@param i the index of the data line to return (0 by default).
@return a string representing the data line requested, or the empty string
if none exists.*/
- string GetDataLine(unsigned int i=0);
+ std::string GetDataLine(unsigned int i=0);
/// Returns the number of lines of data stored
unsigned int GetNumDataLines(void) {return (unsigned int)data_lines.size();}
unsigned int GetNumElements(void) {return (unsigned int)children.size();}
/// Returns the number of named child elements for this element.
- unsigned int GetNumElements(string);
+ unsigned int GetNumElements(const std::string& element_name);
/** Converts the element data to a number.
This function attempts to convert the first (and presumably only) line of
element counter to the first element.
@param el the search string (empty string by default).
@return a pointer to the first element that matches the supplied search string. */
- Element* FindElement(string el="");
+ Element* FindElement(const std::string& el="");
/** Searches for the next element as specified.
This function would be called after FindElement() is first called (in order to
@param el the name of the next element to find.
@return the pointer to the found element, or 0 if no appropriate element us
found.*/
- Element* FindNextElement(string el="");
+ Element* FindNextElement(const std::string& el="");
/** Searches for the named element and returns the string data belonging to it.
This function allows the data belonging to a named element to be returned
default)
@return the data value for the named element as a string, or the empty
string if the element cannot be found. */
- string FindElementValue(string el="");
+ std::string FindElementValue(const std::string& el="");
/** Searches for the named element and returns the data belonging to it as a number.
This function allows the data belonging to a named element to be returned
default)
@return the data value for the named element as a double, or HUGE_VAL if the
data is missing. */
- double FindElementValueAsNumber(string el="");
+ double FindElementValueAsNumber(const std::string& el="");
/** Searches for the named element and converts and returns the data belonging to it.
This function allows the data belonging to a named element to be returned
to which the value returned will be converted.
@return the unit-converted data value for the named element as a double,
or HUGE_VAL if the data is missing. */
- double FindElementValueAsNumberConvertTo(string el, string target_units);
+ double FindElementValueAsNumberConvertTo(const std::string& el, const std::string& target_units);
/** Searches for the named element and converts and returns the data belonging to it.
This function allows the data belonging to a named element to be returned
to which the value returned will be converted.
@return the unit-converted data value for the named element as a double,
or HUGE_VAL if the data is missing. */
- double FindElementValueAsNumberConvertFromTo( string el,
- string supplied_units,
- string target_units);
+ double FindElementValueAsNumberConvertFromTo( const std::string& el,
+ const std::string& supplied_units,
+ const std::string& target_units);
/** Composes a 3-element column vector for the supplied location or orientation.
This function processes a LOCATION or ORIENTATION construct, returning a
@param target_units the string representing the native units used by JSBSim
to which the value returned will be converted.
@return a column vector object built from the LOCATION or ORIENT components. */
- FGColumnVector3 FindElementTripletConvertTo( string target_units);
+ FGColumnVector3 FindElementTripletConvertTo( const std::string& target_units);
/** This function sets the value of the parent class attribute to the supplied
Element pointer.
/** Stores an attribute belonging to this element.
* @param name The string name of the attribute.
* @param value The string value of the attribute. */
- void AddAttribute(string name, string value);
+ void AddAttribute(const std::string& name, const std::string& value);
/** Stores data belonging to this element.
* @param d the data to store. */
- void AddData(string d);
+ void AddData(std::string d);
/** Prints the element.
* Prints this element and calls the Print routine for child elements.
void Print(unsigned int level=0);
private:
- string name;
- map <string, string> attributes;
- vector <string> data_lines;
- vector <Element*> children;
- vector <string> attribute_key;
+ std::string name;
+ std::map <std::string, std::string> attributes;
+ std::vector <std::string> data_lines;
+ std::vector <Element*> children;
+ std::vector <std::string> attribute_key;
Element *parent;
unsigned int element_index;
- typedef map <string, map <string, double> > tMapConvert;
+ typedef std::map <std::string, std::map <std::string, double> > tMapConvert;
static tMapConvert convert;
static bool converterIsInitialized;
};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "input_output/FGXMLParse.h"
+#include <iostream>
+#include <fstream>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
protected:
Element* document;
- Element* LoadXMLDocument(string XML_filename)
+ Element* LoadXMLDocument(std::string XML_filename)
{
- ifstream infile;
+ std::ifstream infile;
if ( !XML_filename.empty() ) {
- if (XML_filename.find(".xml") == string::npos) XML_filename += ".xml";
+ if (XML_filename.find(".xml") == std::string::npos) XML_filename += ".xml";
infile.open(XML_filename.c_str());
if ( !infile.is_open()) {
- cerr << "Could not open file: " << XML_filename << endl;
+ std::cerr << "Could not open file: " << XML_filename << std::endl;
return 0L;
}
} else {
- cerr << "No filename given." << endl;
+ std::cerr << "No filename given." << std::endl;
return 0L;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGXMLParse.h"
+#include "FGXMLElement.h"
+#include <string>
+#include <iostream>
#include <cstdlib>
#include "input_output/string_utilities.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <string>
-#include <iostream>
-
-using std::string;
-using std::cout;
-using std::cerr;
-using std::endl;
-
-#include "FGXMLElement.h"
#include "simgear/xml/easyxml.hxx"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
namespace JSBSim {
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include "FGfdmSocket.h"
+#include <iostream>
+#include <iomanip>
#include <cstring>
+#include "FGfdmSocket.h"
+#include "string_utilities.h"
+
+using std::cout;
+using std::cerr;
+using std::endl;
+using std::string;
namespace JSBSim {
CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-FGfdmSocket::FGfdmSocket(string address, int port, int protocol)
+FGfdmSocket::FGfdmSocket(const string& address, int port, int protocol)
{
- sckt = sckt_in = size = 0;
+ sckt = sckt_in = 0;
connected = false;
#if defined(_MSC_VER) || defined(__MINGW32__)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-FGfdmSocket::FGfdmSocket(string address, int port)
+FGfdmSocket::FGfdmSocket(const string& address, int port)
{
- sckt = sckt_in = size = 0;
+ sckt = sckt_in = 0;
connected = false;
#if defined(_MSC_VER) || defined(__MINGW32__)
FGfdmSocket::FGfdmSocket(int port)
{
- size = 0;
connected = false;
unsigned long NoBlock = true;
char buf[1024];
int len = sizeof(struct sockaddr_in);
int num_chars=0;
- int total_chars = 0;
unsigned long NoBlock = true;
- string data = ""; // todo: should allocate this with a standard size as a
+ string data; // todo: should allocate this with a standard size as a
// class attribute and pass as a reference?
if (sckt_in <= 0) {
}
if (sckt_in > 0) {
- while ((num_chars = recv(sckt_in, buf, 1024, 0)) > 0) {
- data += string(buf).substr(0,num_chars);
- total_chars += num_chars;
+ while ((num_chars = recv(sckt_in, buf, sizeof buf, 0)) > 0) {
+ data.append(buf, num_chars);
}
#if defined(_MSC_VER)
#endif
}
- return data.substr(0, total_chars);
+ return data;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-int FGfdmSocket::Reply(string text)
+int FGfdmSocket::Reply(const string& text)
{
int num_chars_sent=0;
void FGfdmSocket::Clear(void)
{
- buffer = "";
- size = 0;
+ buffer.str(string());
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGfdmSocket::Clear(string s)
+void FGfdmSocket::Clear(const string& s)
{
- buffer = s + " ";
- size = buffer.size();
+ Clear();
+ buffer << s << ' ';
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(const char* item)
{
- if (size == 0) buffer += string(item);
- else buffer += string(",") + string(item);
- size++;
+ if (buffer.tellp() > 0) buffer << ',';
+ buffer << item;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(double item)
{
- char s[25];
-
- sprintf(s,"%12.7f",item);
-
- if (size == 0) buffer += string(s);
- else buffer += string(",") + string(s);
- size++;
+ if (buffer.tellp() > 0) buffer << ',';
+ buffer << std::setw(12) << std::setprecision(7) << item;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(long item)
{
- char s[25];
-
- sprintf(s,"%12ld",item);
-
- if (size == 0) buffer += string(s);
- else buffer += string(",") + string(s);
- size++;
+ if (buffer.tellp() > 0) buffer << ',';
+ buffer << std::setw(12) << item;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Send(void)
{
- buffer += string("\n");
- if ((send(sckt,buffer.c_str(),buffer.size(),0)) <= 0) {
+ buffer << '\n';
+ string str = buffer.str();
+ if ((send(sckt,str.c_str(),str.size(),0)) <= 0) {
perror("send");
- } else {
}
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGfdmSocket::Send(char *data, int length)
+void FGfdmSocket::Send(const char *data, int length)
{
if ((send(sckt,data,length,0)) <= 0) {
perror("send");
- } else {
}
}
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <cstdio>
#include <string>
-#include <iostream>
-#include <fstream>
+#include <sstream>
#include <sys/types.h>
#include "FGJSBBase.h"
-using std::cout;
-using std::endl;
-
#if defined(_MSC_VER) || defined(__MINGW32__)
#include <winsock.h>
#include <io.h>
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-using std::string;
-using std::cerr;
-
class FGfdmSocket : public FGJSBBase
{
public:
- FGfdmSocket(string, int);
- FGfdmSocket(string, int, int);
+ FGfdmSocket(const std::string&, int);
+ FGfdmSocket(const std::string&, int, int);
FGfdmSocket(int);
~FGfdmSocket();
void Send(void);
- void Send(char *data, int length);
+ void Send(const char *data, int length);
- string Receive(void);
- int Reply(string text);
- void Append(const string s) {Append(s.c_str());}
+ std::string Receive(void);
+ int Reply(const std::string& text);
+ void Append(const std::string& s) {Append(s.c_str());}
void Append(const char*);
void Append(double);
void Append(long);
void Clear(void);
- void Clear(string s);
+ void Clear(const std::string& s);
void Close(void);
bool GetConnectStatus(void) {return connected;}
private:
int sckt;
int sckt_in;
- int size;
struct sockaddr_in scktName;
struct hostent *host;
- string buffer;
+ std::ostringstream buffer;
bool connected;
void Debug(int from);
};
Author: Jon S. Berndt
Date started: 06/01/09
- ------------- Copyright (C) 2009 Jon S. Berndt (jsb@hal-pc.org) -------------
+ ------------- Copyright (C) 2009 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
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <string>
#include <vector>
-#include <ctype.h>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-using namespace std;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#if !defined(BASE)
- extern string& trim_left(string& str);
- extern string& trim_right(string& str);
- extern string& trim(string& str);
- extern string& to_upper(string& str);
- extern string& to_lower(string& str);
- extern bool is_number(string& str);
- vector <string> split(string str, char d);
+ extern std::string& trim_left(std::string& str);
+ extern std::string& trim_right(std::string& str);
+ extern std::string& trim(std::string& str);
+ extern std::string& to_upper(std::string& str);
+ extern std::string& to_lower(std::string& str);
+ extern bool is_number(const std::string& str);
+ std::vector <std::string> split(std::string str, char d);
#else
+ #include <ctype.h>
+
+ using namespace std;
string& trim_left(string& str)
{
- while ( !isgraph(str[0]) ) {
+ while (str.size() && !isgraph(str[0])) {
str = str.erase(0,1);
- if (str.size() == 0) break;
}
return str;
}
string& trim_right(string& str)
{
- while (!isgraph(str[str.size()-1])) {
+ while (str.size() && !isgraph(str[str.size()-1])) {
str = str.erase(str.size()-1,1);
- if (str.size() == 0) break;
}
return str;
}
string& to_upper(string& str)
{
- for (int i=0; i<str.size(); i++) str[i] = toupper(str[i]);
+ for (size_t i=0; i<str.size(); i++) str[i] = toupper(str[i]);
return str;
}
string& to_lower(string& str)
{
- for (int i=0; i<str.size(); i++) str[i] = tolower(str[i]);
+ for (size_t i=0; i<str.size(); i++) str[i] = tolower(str[i]);
return str;
}
- bool is_number(string& str)
+ bool is_number(const string& str)
{
return (str.find_first_not_of("+-.0123456789Ee") == string::npos);
}
vector <string> split(string str, char d)
{
vector <string> str_array;
- int index=0;
+ size_t index=0;
string temp = "";
trim(str);
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGColumnVector3.h"
-#include <cstdio>
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include <cmath>
+
+using namespace std;
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGColumnVector3::Dump(string delimeter) const
+string FGColumnVector3::Dump(const string& delimiter) const
{
- char buffer[256];
- sprintf(buffer, "%18.16f%s%18.16f%s%18.16f", Entry(1), delimeter.c_str(), Entry(2), delimeter.c_str(), Entry(3));
- return string(buffer);
+ ostringstream buffer;
+ buffer << std::setw(18) << std::setprecision(16) << Entry(1) << delimiter;
+ buffer << std::setw(18) << std::setprecision(16) << Entry(2) << delimiter;
+ buffer << std::setw(18) << std::setprecision(16) << Entry(3);
+ return buffer.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <cstdlib>
+#include <iosfwd>
#include <string>
-#include <fstream>
-#include <iostream>
-#include <cmath>
-
-using std::ostream;
-using std::istream;
-using std::cerr;
-using std::cout;
-using std::endl;
-using std::sqrt;
-using std::string;
-
#include "FGJSBBase.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
/** Prints the contents of the vector
@param delimeter the item separator (tab or comma)
@return a string with the delimeter-separated contents of the vector */
- string Dump(string delimeter) const;
+ std::string Dump(const std::string& delimeter) const;
/** Assignment operator.
@param b source vector.
@param os Stream to write to.
@param M Matrix to write.
Write the matrix to a stream.*/
-ostream& operator<<(ostream& os, const FGColumnVector3& col);
+std::ostream& operator<<(std::ostream& os, const FGColumnVector3& col);
} // namespace JSBSim
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGCondition.h"
-#include <vector>
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
// This constructor is called when there are no nested test groups inside the
// condition
-FGCondition::FGCondition(string test, FGPropertyManager* PropertyManager) :
+FGCondition::FGCondition(const string& test, FGPropertyManager* PropertyManager) :
PropertyManager(PropertyManager), isGroup(false)
{
string property1, property2, compare_string;
#include <map>
#include "FGJSBBase.h"
-#include "input_output/FGXMLElement.h"
-#include "input_output/FGPropertyManager.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
+class FGPropertyManager;
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
{
public:
FGCondition(Element* element, FGPropertyManager* PropertyManager);
- FGCondition(string test, FGPropertyManager* PropertyManager);
+ FGCondition(const std::string& test, FGPropertyManager* PropertyManager);
~FGCondition(void);
bool Evaluate(void);
private:
enum eComparison {ecUndef=0, eEQ, eNE, eGT, eGE, eLT, eLE};
enum eLogic {elUndef=0, eAND, eOR};
- map <string, eComparison> mComparison;
+ std::map <std::string, eComparison> mComparison;
eLogic Logic;
FGPropertyManager *TestParam1, *TestParam2, *PropertyManager;
double TestValue;
eComparison Comparison;
bool isGroup;
- string conditional;
+ std::string conditional;
- static string indent;
+ static std::string indent;
- vector <FGCondition*> conditions;
+ std::vector <FGCondition*> conditions;
void InitializeConditionals(void);
void Debug(int from);
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <stdio.h>
-
+#include <sstream>
+#include <iomanip>
+#include <cstdlib>
#include "FGFunction.h"
#include "FGTable.h"
#include "FGPropertyValue.h"
#include "FGRealValue.h"
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+
+using namespace std;
namespace JSBSim {
CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-FGFunction::FGFunction(FGPropertyManager* propMan, Element* el, string prefix)
+FGFunction::FGFunction(FGPropertyManager* propMan, Element* el, const string& prefix)
: PropertyManager(propMan), Prefix(prefix)
{
Element* element;
string FGFunction::GetValueAsString(void) const
{
- char buffer[20];
- string value;
+ ostringstream buffer;
- sprintf(buffer,"%9.6f",GetValue());
- value = string(buffer);
- return value;
+ buffer << setw(9) << setprecision(6) << GetValue();
+ return buffer.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#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
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@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;
- string description_string;
- string property_string;
- string value_string;
- string table_string;
- string p_string;
- string v_string;
- string t_string;
- string function_string;
- string sum_string;
- string difference_string;
- string product_string;
- string quotient_string;
- string pow_string;
- string exp_string;
- string abs_string;
- string sin_string;
- string cos_string;
- string tan_string;
- string asin_string;
- string acos_string;
- string atan_string;
- string atan2_string;
- string min_string;
- string max_string;
- string avg_string;
- string fraction_string;
- string mod_string;
- string random_string;
- string integer_string;
+ 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 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,
eMin, eMax, eAvg, eFrac, eInteger, eMod, eRandom} Type;
- string Name;
+ std::string Name;
void bind(void);
void Debug(int from);
};
#include "FGMatrix33.h"
#include "FGColumnVector3.h"
+#include <iostream>
+
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <cstdlib>
#include <string>
-#include <fstream>
-#include <iostream>
-#include <cmath>
-
-using std::ostream;
-using std::istream;
-using std::cerr;
-using std::cout;
-using std::endl;
-using std::string;
+#include <iosfwd>
#include "FGColumnVector3.h"
#include "FGJSBBase.h"
class MatrixException : public FGJSBBase
{
public:
- string Message;
+ std::string Message;
};
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Write the matrix to a stream.
*/
-ostream& operator<<(ostream& os, const FGMatrix33& M);
+std::ostream& operator<<(std::ostream& os, const FGMatrix33& M);
/** Read matrix from a stream.
Read matrix from a stream.
*/
-istream& operator>>(istream& is, FGMatrix33& M);
+std::istream& operator>>(std::istream& is, FGMatrix33& M);
} // namespace JSBSim
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGTable.h"
-#include <iomanip>
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <sstream>
+#include <cstdlib>
using namespace std;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-unsigned int FGTable::FindNumColumns(string test_line)
+unsigned int FGTable::FindNumColumns(const string& test_line)
{
// determine number of data columns in table (first column is row lookup - don't count)
size_t position=0;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGTable::operator<<(stringstream& in_stream)
+void FGTable::operator<<(istream& in_stream)
{
int startRow=0;
int startCol=0;
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include "input_output/FGXMLElement.h"
#include "FGParameter.h"
-#include "input_output/FGPropertyManager.h"
-#include <sstream>
+#include <iosfwd>
#include <vector>
+#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-using std::vector;
-using std::stringstream;
-
namespace JSBSim {
+class FGPropertyManager;
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
</pre>
*/
- void operator<<(stringstream&);
+ void operator<<(std::istream&);
FGTable& operator<<(const double n);
FGTable& operator<<(const int n);
bool internal;
FGPropertyManager *lookupProperty[3];
double** Data;
- vector <FGTable*> Tables;
- unsigned int FindNumColumns(string);
+ std::vector <FGTable*> Tables;
unsigned int nRows, nCols, nTables, dimension;
int colCounter, rowCounter, tableCounter;
mutable int lastRowIndex, lastColumnIndex, lastTableIndex;
double** Allocate(void);
FGPropertyManager* const PropertyManager;
- string Name;
+ std::string Name;
void bind(void);
+ unsigned int FindNumColumns(const std::string&);
void Debug(int from);
};
}
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iostream>
+#include <sstream>
+#include <iomanip>
+#include <cstdlib>
#include <FGFDMExec.h>
#include "FGAerodynamics.h"
#include "FGPropagate.h"
#include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGAerodynamics::GetCoefficientStrings(string delimeter)
+string FGAerodynamics::GetCoefficientStrings(const string& delimeter) const
{
string CoeffStrings = "";
bool firstime = true;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGAerodynamics::GetCoefficientValues(string delimeter)
+string FGAerodynamics::GetCoefficientValues(const string& delimeter) const
{
- string SDValues = "";
- bool firstime = true;
- unsigned int sd;
+ ostringstream buf;
- for (sd = 0; sd < variables.size(); sd++) {
- if (firstime) {
- firstime = false;
- } else {
- SDValues += delimeter;
- }
- SDValues += variables[sd]->GetValueAsString();
+ buf.precision(6);
+ for (unsigned int sd = 0; sd < variables.size(); sd++) {
+ if (buf.tellp() > 0) buf << delimeter;
+ buf << setw(9) << variables[sd]->GetValue();
}
for (unsigned int axis = 0; axis < 6; axis++) {
for (unsigned int sd = 0; sd < Coeff[axis].size(); sd++) {
- if (firstime) {
- firstime = false;
- } else {
- SDValues += delimeter;
- }
- SDValues += Coeff[axis][sd]->GetValueAsString();
+ if (buf.tellp() > 0) buf << delimeter;
+ buf << setw(9) << Coeff[axis][sd]->GetValue();
}
}
- return SDValues;
+ return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <string>
#include <vector>
#include <map>
/** Gets the strings for the current set of coefficients.
@param delimeter either a tab or comma string depending on output type
@return a string containing the descriptive names for all coefficients */
- string GetCoefficientStrings(string delimeter);
+ std::string GetCoefficientStrings(const std::string& delimeter) const;
/** Gets the coefficient values.
@param delimeter either a tab or comma string depending on output type
@return a string containing the numeric values for the current set of
coefficients */
- string GetCoefficientValues(string delimeter);
+ std::string GetCoefficientValues(const std::string& delimeter) const;
/** Calculates and returns the wind-to-body axis transformation matrix.
@return a reference to the wind-to-body transformation matrix.
*/
FGMatrix33& GetTb2w(void);
- vector <FGFunction*> * GetCoeff(void) const { return Coeff; }
+ std::vector <FGFunction*> * GetCoeff(void) const { return Coeff; }
private:
enum eAxisType {atNone, atLiftDrag, atAxialNormal, atBodyXYZ} axisType;
- typedef map<string,int> AxisIndex;
+ typedef std::map<std::string,int> AxisIndex;
AxisIndex AxisIdx;
FGFunction* AeroRPShift;
- vector <FGFunction*> variables;
+ std::vector <FGFunction*> variables;
typedef vector <FGFunction*> CoeffArray;
CoeffArray* Coeff;
FGColumnVector3 vFnative;
#include "FGAerodynamics.h"
#include "FGFDMExec.h"
#include "FGPropagate.h"
+#include "FGPropulsion.h"
#include "input_output/FGPropertyManager.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <string>
#include <vector>
#include "FGModel.h"
/** Gets the aircraft name
@return the name of the aircraft as a string type */
- inline string GetAircraftName(void) { return AircraftName; }
+ const std::string& GetAircraftName(void) const { return AircraftName; }
/// Gets the wing area
double GetWingArea(void) const { return WingArea; }
inline double GetXYZrp(int idx) const { return vXYZrp(idx); }
inline double GetXYZvrp(int idx) const { return vXYZvrp(idx); }
inline double GetXYZep(int idx) const { return vXYZep(idx); }
- inline void SetAircraftName(string name) {AircraftName = name;}
+ inline void SetAircraftName(const std::string& name) {AircraftName = name;}
inline void SetHoldDown(int hd) {HoldDown = hd;}
inline int GetHoldDown(void) const {return HoldDown;}
double HTailArea, VTailArea, HTailArm, VTailArm;
double lbarh,lbarv,vbarh,vbarv;
int HoldDown;
- string AircraftName;
+ std::string AircraftName;
void Debug(int from);
};
#include "FGPropagate.h"
#include "FGInertial.h"
#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
#include "FGBuoyantForces.h"
#include "FGGroundReactions.h"
#include "FGPropulsion.h"
+#include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
relative_position = sqrt(lat_relative_position*lat_relative_position + lon_relative_position*lon_relative_position);
};
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+double FGAuxiliary::BadUnits(void) const
+{
+ cerr << "Bad units" << endl; return 0.0;
+}
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGModel.h"
-#include "FGFDMExec.h"
#include "math/FGColumnVector3.h"
#include "math/FGLocation.h"
#include "FGPropagate.h"
double GetMagBeta (void) const { return fabs(beta); }
double Getalpha (int unit) const { if (unit == inDegrees) return alpha*radtodeg;
- else cerr << "Bad units" << endl; return 0.0;}
+ else return BadUnits(); }
double Getbeta (int unit) const { if (unit == inDegrees) return beta*radtodeg;
- else cerr << "Bad units" << endl; return 0.0;}
+ else return BadUnits(); }
double Getadot (int unit) const { if (unit == inDegrees) return adot*radtodeg;
- else cerr << "Bad units" << endl; return 0.0;}
+ else return BadUnits(); }
double Getbdot (int unit) const { if (unit == inDegrees) return bdot*radtodeg;
- else cerr << "Bad units" << endl; return 0.0;}
+ else return BadUnits(); }
double GetMagBeta (int unit) const { if (unit == inDegrees) return fabs(beta)*radtodeg;
- else cerr << "Bad units" << endl; return 0.0;}
+ else return BadUnits(); }
double Getqbar (void) const { return qbar; }
double GetqbarUW (void) const { return qbarUW; }
void CalculateRelativePosition(void);
void bind(void);
+ double BadUnits(void) const;
void Debug(int from);
};
#include "FGBuoyantForces.h"
#include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h" // Need?
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
*/
#include "FGExternalForce.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGExternalReactions.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
#include <string>
+using namespace std;
+
namespace JSBSim {
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "FGModel.h"
#include "FGExternalForce.h"
-#include "input_output/FGXMLElement.h"
+#include <vector>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
private:
- vector <FGExternalForce*> Forces;
+ std::vector <FGExternalForce*> Forces;
unsigned int numForces;
FGColumnVector3 vTotalForces;
FGColumnVector3 vTotalMoments;
#include "FGFCS.h"
#include "FGFDMExec.h"
+#include "FGGroundReactions.h"
#include "input_output/FGPropertyManager.h"
#include <fstream>
#include <sstream>
#include "models/flight_control/FGMagnetometer.h"
#include "models/flight_control/FGGyro.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGFCS::FindSystemFullPathname(string system_filename)
+string FGFCS::FindSystemFullPathname(const string& system_filename)
{
string fullpath, localpath;
string systemPath = FDMExec->GetSystemsPath();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-ifstream* FGFCS::FindSystemFile(string system_filename)
+ifstream* FGFCS::FindSystemFile(const string& system_filename)
{
string fullpath, localpath;
string systemPath = FDMExec->GetSystemsPath();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGFCS::GetComponentStrings(string delimeter)
+string FGFCS::GetComponentStrings(const string& delimiter)
{
unsigned int comp;
string CompStrings = "";
for (unsigned int i=0; i<Systems.size(); i++) {
if (firstime) firstime = false;
- else CompStrings += delimeter;
+ else CompStrings += delimiter;
CompStrings += Systems[i]->GetName();
total_count++;
for (comp = 0; comp < APComponents.size(); comp++)
{
if (firstime) firstime = false;
- else CompStrings += delimeter;
+ else CompStrings += delimiter;
CompStrings += APComponents[comp]->GetName();
total_count++;
for (comp = 0; comp < FCSComponents.size(); comp++) {
if (firstime) firstime = false;
- else CompStrings += delimeter;
+ else CompStrings += delimiter;
CompStrings += FCSComponents[comp]->GetName();
total_count++;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGFCS::GetComponentValues(string delimeter)
+string FGFCS::GetComponentValues(const string& delimiter)
{
std::ostringstream buf;
for (unsigned int i=0; i<Systems.size(); i++) {
if (firstime) firstime = false;
- else buf << delimeter;
+ else buf << delimiter;
buf << setprecision(9) << Systems[i]->GetOutput();
total_count++;
for (comp = 0; comp < APComponents.size(); comp++) {
if (firstime) firstime = false;
- else buf << delimeter;
+ else buf << delimiter;
buf << setprecision(9) << APComponents[comp]->GetOutput();
total_count++;
for (comp = 0; comp < FCSComponents.size(); comp++) {
if (firstime) firstime = false;
- else buf << delimeter;
+ else buf << delimiter;
buf << setprecision(9) << FCSComponents[comp]->GetOutput();
total_count++;
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iosfwd>
#include <vector>
#include <string>
FGState* GetState(void) { return State; }
/** Retrieves all component names for inclusion in output stream
- @param delimeter either a tab or comma string depending on output type
+ @param delimiter either a tab or comma string depending on output type
@return a string containing the descriptive names for all components */
- string GetComponentStrings(string delimeter);
+ std::string GetComponentStrings(const std::string& delimiter);
/** Retrieves all component outputs for inclusion in output stream
- @param delimeter either a tab or comma string depending on output type
+ @param delimiter either a tab or comma string depending on output type
@return a string containing the numeric values for the current set of
component outputs */
- string GetComponentValues(string delimeter);
+ std::string GetComponentValues(const std::string& delimiter);
/// @name Pilot input command setting
//@{
@return true if succesful */
bool Load(Element* el, SystemType systype);
- ifstream* FindSystemFile(string system_filename);
- string FindSystemFullPathname(string system_filename);
+ std::ifstream* FindSystemFile(const std::string& system_filename);
+ std::string FindSystemFullPathname(const std::string& system_filename);
void AddThrottle(void);
void AddGear(void);
double DePos[NForms], DaLPos[NForms], DaRPos[NForms], DrPos[NForms];
double DfPos[NForms], DsbPos[NForms], DspPos[NForms];
double PTrimCmd, YTrimCmd, RTrimCmd;
- vector <double> ThrottleCmd;
- vector <double> ThrottlePos;
- vector <double> MixtureCmd;
- vector <double> MixturePos;
- vector <double> PropAdvanceCmd;
- vector <double> PropAdvance;
- vector <bool> PropFeatherCmd;
- vector <bool> PropFeather;
- vector <double> SteerPosDeg;
+ std::vector <double> ThrottleCmd;
+ std::vector <double> ThrottlePos;
+ std::vector <double> MixtureCmd;
+ std::vector <double> MixturePos;
+ std::vector <double> PropAdvanceCmd;
+ std::vector <double> PropAdvance;
+ std::vector <bool> PropFeatherCmd;
+ std::vector <bool> PropFeather;
+ std::vector <double> SteerPosDeg;
double LeftBrake, RightBrake, CenterBrake; // Brake settings
double GearCmd,GearPos;
double TailhookPos, WingFoldPos;
- typedef vector <FGFCSComponent*> FCSCompVec;
+ typedef std::vector <FGFCSComponent*> FCSCompVec;
FCSCompVec Systems;
FCSCompVec FCSComponents;
FCSCompVec APComponents;
#include "models/FGInertial.h"
#include "models/FGMassBalance.h"
#include "FGGasCell.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+#include <cstdlib>
using std::cerr;
using std::endl;
using std::cout;
+using std::string;
+using std::max;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h"
-#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h"
#include "models/propulsion/FGForce.h"
#include "math/FGFunction.h"
#include <string>
-using std::string;
-using std::cerr;
-using std::endl;
-using std::cout;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
class FGBallonet;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
enum GasType {ttUNKNOWN, ttHYDROGEN, ttHELIUM, ttAIR};
GasType Type;
- string type;
+ std::string type;
int CellNum;
// Structural constants
double MaxVolume; // [ft�]
#include <iomanip>
#include "FGGroundReactions.h"
+#include "FGFCS.h"
#include "input_output/FGPropertyManager.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
#include "FGPropagate.h"
#include "FGState.h"
#include "FGMassBalance.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
#include "FGState.h"
#include "FGFDMExec.h"
-#include <fstream>
+#include "input_output/FGfdmSocket.h"
+#include "input_output/FGXMLElement.h"
+
+#include <sstream>
#include <iomanip>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
bool FGInput::Run(void)
{
- string line, token, info_string;
+ string line, token;
size_t start=0, string_start=0, string_end=0;
- char buf[100];
double value=0;
FGPropertyManager* node=0;
socket->Reply("Must be in HOLD to search properties\n");
}
} else if (node > 0) {
- sprintf(buf, "%s = %12.6f\n", argument.c_str(), node->getDoubleValue());
- socket->Reply(buf);
+ ostringstream buf;
+ buf << argument << " = " << setw(12) << setprecision(6) << node->getDoubleValue() << endl;
+ socket->Reply(buf.str());
}
} else if (command == "hold") { // PAUSE
} else if (command == "info") { // INFO
// get info about the sim run and/or aircraft, etc.
- sprintf(buf, "%8.3f", State->Getsim_time());
- info_string = "JSBSim version: " + JSBSim_version + "\n";
- info_string += "Config File version: " + needed_cfg_version + "\n";
- info_string += "Aircraft simulated: " + Aircraft->GetAircraftName() + "\n";
- info_string += "Simulation time: " + string(buf) + "\n";
- socket->Reply(info_string);
+ ostringstream info;
+ info << "JSBSim version: " << JSBSim_version << endl;
+ info << "Config File version: " << needed_cfg_version << endl;
+ info << "Aircraft simulated: " << Aircraft->GetAircraftName() << endl;
+ info << "Simulation time: " << setw(8) << setprecision(3) << State->Getsim_time() << endl;
+ socket->Reply(info.str());
} else if (command == "help") { // HELP
#include "FGModel.h"
-#include <iostream>
-#include <fstream>
-
-#include "input_output/FGfdmSocket.h"
-#include "input_output/FGXMLElement.h"
+#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
+class FGFDMExec;
+class Element;
+class FGfdmSocket;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
bool InitModel(void);
bool Run(void);
- void SetType(string);
inline void Enable(void) { enabled = true; }
inline void Disable(void) { enabled = false; }
inline bool Toggle(void) {enabled = !enabled; return enabled;}
bool sFirstPass, dFirstPass, enabled;
unsigned int port;
FGfdmSocket* socket;
- string data;
+ std::string data;
void Debug(int from);
};
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGLGear.h"
+#include "FGState.h"
+#include "FGGroundReactions.h"
+#include "FGFCS.h"
+#include "FGAuxiliary.h"
+#include "FGAtmosphere.h"
+#include "FGMassBalance.h"
+#include "math/FGTable.h"
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include "FGFDMExec.h"
#include "models/propulsion/FGForce.h"
-#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h"
-#include "math/FGTable.h"
#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
class FGState;
class FGMassBalance;
class FGAuxiliary;
+class FGTable;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
bool isRetractable;
bool GearUp, GearDown;
bool Servicable;
- string name;
- string sSteerType;
- string sBrakeGroup;
- string sRetractable;
- string sContactType;
+ std::string name;
+ std::string sSteerType;
+ std::string sBrakeGroup;
+ std::string sRetractable;
+ std::string sContactType;
BrakeGroup eBrakeGrp;
ContactType eContactType;
void Debug(int from);
};
}
-#include "FGAircraft.h"
-#include "FGPropagate.h"
-#include "FGAuxiliary.h"
-#include "FGFCS.h"
-#include "FGMassBalance.h"
-#include "FGState.h"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "FGPropulsion.h"
#include "FGBuoyantForces.h"
#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
(PMF)&FGMassBalance::GetXYZcg);
}
+//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+void FGMassBalance::PointMass::bind(FGPropertyManager* PropertyManager, int num) {
+ string tmp = CreateIndexedPropertyName("inertia/pointmass-weight-lbs", num);
+ PropertyManager->Tie( tmp.c_str(), this, &PointMass::GetPointMassWeight,
+ &PointMass::SetPointMassWeight);
+
+ tmp = CreateIndexedPropertyName("inertia/pointmass-location-X-inches", num);
+ PropertyManager->Tie( tmp.c_str(), this, eX, &PointMass::GetPointMassLocation,
+ &PointMass::SetPointMassLocation);
+ tmp = CreateIndexedPropertyName("inertia/pointmass-location-Y-inches", num);
+ PropertyManager->Tie( tmp.c_str(), this, eY, &PointMass::GetPointMassLocation,
+ &PointMass::SetPointMassLocation);
+ tmp = CreateIndexedPropertyName("inertia/pointmass-location-Z-inches", num);
+ PropertyManager->Tie( tmp.c_str(), this, eZ, &PointMass::GetPointMassLocation,
+ &PointMass::SetPointMassLocation);
+}
+
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
// The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print
void SetPointMassWeight(double wt) {Weight = wt;}
double GetPointMassWeight(void) const {return Weight;}
- void bind(FGPropertyManager* PropertyManager, int num) {
- string tmp = CreateIndexedPropertyName("inertia/pointmass-weight-lbs", num);
- PropertyManager->Tie( tmp.c_str(), this, &PointMass::GetPointMassWeight,
- &PointMass::SetPointMassWeight);
-
- tmp = CreateIndexedPropertyName("inertia/pointmass-location-X-inches", num);
- PropertyManager->Tie( tmp.c_str(), this, eX, &PointMass::GetPointMassLocation,
- &PointMass::SetPointMassLocation);
- tmp = CreateIndexedPropertyName("inertia/pointmass-location-Y-inches", num);
- PropertyManager->Tie( tmp.c_str(), this, eY, &PointMass::GetPointMassLocation,
- &PointMass::SetPointMassLocation);
- tmp = CreateIndexedPropertyName("inertia/pointmass-location-Z-inches", num);
- PropertyManager->Tie( tmp.c_str(), this, eZ, &PointMass::GetPointMassLocation,
- &PointMass::SetPointMassLocation);
- }
+ void bind(FGPropertyManager* PropertyManager, int num);
};
- vector <struct PointMass*> PointMasses;
+ std::vector <struct PointMass*> PointMasses;
void bind(void);
void Debug(int from);
#include "FGAircraft.h"
#include "FGPropagate.h"
#include "FGAuxiliary.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h"
-#include "input_output/FGPropertyManager.h"
-#include "input_output/FGXMLElement.h"
-#include <iostream>
#include <string>
#include <vector>
#define ID_MODEL "$Id$"
-using namespace std;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
class FGAircraft;
class FGPropagate;
class FGAuxiliary;
+class Element;
+class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
virtual bool Load(Element* el);
FGModel* NextModel;
- string Name;
+ std::string Name;
/** Runs the model; called by the Executive
@see JSBSim.cpp documentation
FGAuxiliary* Auxiliary;
FGPropertyManager* PropertyManager;
- vector <double*> interface_properties;
+ std::vector <double*> interface_properties;
};
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#include "FGPropagate.h"
#include "FGAuxiliary.h"
#include "FGInertial.h"
-#include "FGPropulsion.h" //access to FGEngine, FGTank
+#include "models/propulsion/FGEngine.h"
+#include "models/propulsion/FGTank.h"
#include "models/propulsion/FGPiston.h"
-#include <fstream>
+#include <sstream>
#include <iomanip>
#include <cstring>
+#include <cstdlib>
#include "input_output/net_fdm.hxx"
+#include "input_output/FGfdmSocket.h"
#if defined(WIN32) && !defined(__CYGWIN__)
# include <windows.h>
static const int endianTest = 1;
#define isLittleEndian (*((char *) &endianTest ) != 0)
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
bool FGOutput::InitModel(void)
{
- char fname[1000] = "";
-
if (!FGModel::InitModel()) return false;
if (Filename.size() > 0 && StartNewFile) {
- size_t idx = BaseFilename.find_last_of(".");
- size_t len = BaseFilename.length();
- string extension = "";
- if (idx != string::npos) {
- extension = BaseFilename.substr(idx, len-idx);
- len -= extension.length();
+ ostringstream buf;
+ string::size_type dot = BaseFilename.find_last_of('.');
+ if (dot != string::npos) {
+ buf << BaseFilename.substr(0, dot) << '_' << runID_postfix++ << BaseFilename.substr(dot);
+ } else {
+ buf << BaseFilename << '_' << runID_postfix++;
}
- sprintf(fname, "%s_%d%s", BaseFilename.substr(0,len).c_str(), runID_postfix++, extension.c_str());
- Filename = string(fname);
+ Filename = buf.str();
datafile.close();
StartNewFile = false;
dFirstPass = true;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGOutput::SetType(string type)
+void FGOutput::SetType(const string& type)
{
if (type == "CSV") {
Type = otCSV;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGOutput::DelimitedOutput(string fname)
+void FGOutput::DelimitedOutput(const string& fname)
{
streambuf* buffer;
string scratch = "";
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-void FGOutput::SocketStatusOutput(string out_str)
+void FGOutput::SocketStatusOutput(const string& out_str)
{
string asciiData;
#include "FGModel.h"
-#include <iostream>
#include <fstream>
-#include "input_output/FGfdmSocket.h"
#include "input_output/FGXMLFileRead.h"
#include "input_output/net_fdm.hxx"
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
+class FGfdmSocket;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
bool InitModel(void);
bool Run(void);
- void DelimitedOutput(string);
+ void DelimitedOutput(const std::string&);
void SocketOutput(void);
void FlightGearSocketOutput(void);
- void SocketStatusOutput(string);
+ void SocketStatusOutput(const std::string&);
void SocketDataFill(FGNetFDM* net);
- void SetType(string);
+ void SetType(const std::string& type);
void SetStartNewFile(bool tt) {StartNewFile = tt;}
void SetSubsystems(int tt) {SubSystems = tt;}
void Enable(void) { enabled = true; }
void Disable(void) { enabled = false; }
bool Toggle(void) {enabled = !enabled; return enabled;}
bool Load(Element* el);
- void SetOutputFileName(string fname) {Filename = fname;}
- void SetDirectivesFile(string fname) {DirectivesFile = fname;}
+ void SetOutputFileName(const std::string& fname) {Filename = fname;}
+ void SetDirectivesFile(const std::string& fname) {DirectivesFile = fname;}
void SetRate(int rt);
string GetOutputFileName(void) const {return Filename;}
int SubSystems;
int runID_postfix;
bool StartNewFile;
- string output_file_name, delimeter, BaseFilename, Filename, DirectivesFile;
- ofstream datafile;
+ std::string output_file_name, delimeter, BaseFilename, Filename, DirectivesFile;
+ std::ofstream datafile;
FGfdmSocket* socket;
FGfdmSocket* flightGearSocket;
- vector <FGPropertyManager*> OutputProperties;
+ std::vector <FGPropertyManager*> OutputProperties;
void Debug(int from);
};
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cmath>
-#include <iomanip>
+#include <cstdlib>
+#include <iostream>
#include "FGPropagate.h"
#include "FGFDMExec.h"
#include "FGInertial.h"
#include "input_output/FGPropertyManager.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGPropulsion.h"
+#include "FGState.h"
+#include "models/FGFCS.h"
+#include "models/FGMassBalance.h"
+#include "models/propulsion/FGThruster.h"
#include "models/propulsion/FGRocket.h"
#include "models/propulsion/FGTurbine.h"
#include "models/propulsion/FGPiston.h"
#include "models/propulsion/FGElectric.h"
#include "models/propulsion/FGTurboProp.h"
+#include "models/propulsion/FGTank.h"
#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLParse.h"
#include "math/FGColumnVector3.h"
+#include <iostream>
#include <sstream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGPropulsion::FindEngineFullPathname(string engine_filename)
+string FGPropulsion::FindEngineFullPathname(const string& engine_filename)
{
string fullpath, localpath;
string enginePath = FDMExec->GetEnginePath();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-ifstream* FGPropulsion::FindEngineFile(string engine_filename)
+ifstream* FGPropulsion::FindEngineFile(const string& engine_filename)
{
string fullpath, localpath;
string enginePath = FDMExec->GetEnginePath();
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGPropulsion::GetPropulsionStrings(string delimeter)
+string FGPropulsion::GetPropulsionStrings(const string& delimiter)
{
unsigned int i;
for (i=0; i<Engines.size(); i++) {
if (firstime) firstime = false;
- else PropulsionStrings += delimeter;
+ else PropulsionStrings += delimiter;
- PropulsionStrings += Engines[i]->GetEngineLabels(delimeter);
+ PropulsionStrings += Engines[i]->GetEngineLabels(delimiter);
}
for (i=0; i<Tanks.size(); i++) {
- if (Tanks[i]->GetType() == FGTank::ttFUEL) buf << delimeter << "Fuel Tank " << i;
- else if (Tanks[i]->GetType() == FGTank::ttOXIDIZER) buf << delimeter << "Oxidizer Tank " << i;
+ if (Tanks[i]->GetType() == FGTank::ttFUEL) buf << delimiter << "Fuel Tank " << i;
+ else if (Tanks[i]->GetType() == FGTank::ttOXIDIZER) buf << delimiter << "Oxidizer Tank " << i;
}
return PropulsionStrings;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGPropulsion::GetPropulsionValues(string delimeter)
+string FGPropulsion::GetPropulsionValues(const string& delimiter)
{
unsigned int i;
for (i=0; i<Engines.size(); i++) {
if (firstime) firstime = false;
- else PropulsionValues += delimeter;
+ else PropulsionValues += delimiter;
- PropulsionValues += Engines[i]->GetEngineValues(delimeter);
+ PropulsionValues += Engines[i]->GetEngineValues(delimiter);
}
for (i=0; i<Tanks.size(); i++) {
- buf << delimeter;
+ buf << delimiter;
buf << Tanks[i]->GetContents();
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <vector>
-#include <fstream>
+#include <iosfwd>
#include "FGModel.h"
-#include "models/propulsion/FGEngine.h"
-#include "models/propulsion/FGTank.h"
#include "math/FGMatrix33.h"
#include "input_output/FGXMLFileRead.h"
namespace JSBSim {
+class FGTank;
+class FGEngine;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
/** Sets up the engines as running */
void InitRunning(int n);
- string GetPropulsionStrings(string delimeter);
- string GetPropulsionValues(string delimeter);
+ std::string GetPropulsionStrings(const std::string& delimiter);
+ std::string GetPropulsionValues(const std::string& delimiter);
inline FGColumnVector3& GetForces(void) {return vForces; }
inline double GetForces(int n) const { return vForces(n);}
FGColumnVector3& GetTanksMoment(void);
double GetTanksWeight(void);
- ifstream* FindEngineFile(string filename);
- string FindEngineFullPathname(string engine_filename);
+ std::ifstream* FindEngineFile(const std::string& filename);
+ std::string FindEngineFullPathname(const std::string& engine_filename);
inline int GetActiveEngine(void) const {return ActiveEngine;}
inline bool GetFuelFreeze(void) {return fuel_freeze;}
double GetTotalFuelQuantity(void) const {return TotalFuelQuantity;}
FGMatrix33& CalculateTankInertias(void);
private:
- vector <FGEngine*> Engines;
- vector <FGTank*> Tanks;
+ std::vector <FGEngine*> Engines;
+ std::vector <FGTank*> Tanks;
unsigned int numSelectedFuelTanks;
unsigned int numSelectedOxiTanks;
unsigned int numFuelTanks;
#include "FGMSIS.h"
#include "FGState.h"
-#include <math.h> /* maths functions */
-#include <stdlib.h> /* for malloc/free */
-#include <stdio.h> /* for printf */
+#include <cmath> /* maths functions */
#include <iostream> // for cout, endl
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
double ylog;
a = zhm / (xmm-xm);
if (!((dm>0) && (dd>0))) {
- printf("dnet log error %e %e %e\n",dm,dd,xm);
+ cerr << "dnet log error " << dm << ' ' << dd << ' ' << xm << ' ' << endl;
if ((dd==0) && (dm==0))
dd=1;
if (dm==0)
}
h = xa[khi] - xa[klo];
if (h==0.0)
- printf("bad XA input to splint");
+ cerr << "bad XA input to splint" << endl;
a = (xa[khi] - x)/h;
b = (x - xa[klo])/h;
yi = a * ya[klo] + b * ya[khi] + ((a*a*a - a) * y2a[klo] + (b*b*b - b) * y2a[khi]) * h * h/6.0;
double *u;
double sig, p, qn, un;
int i, k;
- u=(double*)malloc(sizeof(double)*n);
+ u=new double[n];
if (u==NULL) {
- printf("Out Of Memory in spline - ERROR");
+ cerr << "Out Of Memory in spline - ERROR" << endl;
return;
}
if (yp1>0.99E30) {
for (k=n-2;k>=0;k--)
y2[k] = y2[k] * y2[k+1] + u[k];
- free(u);
+ delete u;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
if (p[99]==0)
p[99]=pset;
if (p[99]!=pset) {
- printf("Wrong parameter set for glob7s\n");
+ cerr << "Wrong parameter set for glob7s" << endl;
return -1;
}
for (j=0;j<14;j++)
if (sqrt(diff*diff)<test)
return;
if (l==ltest) {
- printf("ERROR: ghp7 not converging for press %e, diff %e",press,diff);
+ cerr << "ERROR: ghp7 not converging for press " << press << ", diff " << diff << endl;
return;
}
xm = output->d[5] / xn / 1.66E-24;
#include "FGMars.h"
#include "FGState.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGAccelerometer.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
#include "FGActuator.h"
+using namespace std;
+
namespace JSBSim {
static const char *IdSrc = "$Id$";
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGDeadBand.h"
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
class FGFCS;
+class Element;
+class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
+#include "input_output/FGPropertyManager.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
if (delayType.length() > 0) {
if (delayType == "time") {
delay = (int)(delay / dt);
+ } else if (delayType == "frames") {
+ // no op. the delay type of "frames" is assumed and is the default.
} else {
cerr << "Unallowed delay type" << endl;
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h"
-#include "input_output/FGPropertyManager.h"
-#include "input_output/FGXMLElement.h"
#include <string>
#include <vector>
#define ID_FCSCOMPONENT "$Id$"
-using std::string;
-using std::vector;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
class FGFCS;
+class FGPropertyManager;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
virtual bool Run(void);
virtual void SetOutput(void);
double GetOutput (void) const {return Output;}
- string GetName(void) const {return Name;}
- string GetType(void) const { return Type; }
+ std::string GetName(void) const {return Name;}
+ std::string GetType(void) const { return Type; }
virtual double GetOutputPct(void) const { return 0; }
protected:
FGFCS* fcs;
FGPropertyManager* PropertyManager;
FGPropertyManager* treenode;
- vector <FGPropertyManager*> OutputNodes;
+ std::vector <FGPropertyManager*> OutputNodes;
FGPropertyManager* ClipMinPropertyNode;
FGPropertyManager* ClipMaxPropertyNode;
- vector <FGPropertyManager*> InputNodes;
- vector <float> InputSigns;
- vector <double> output_array;
- string Type;
- string Name;
+ std::vector <FGPropertyManager*> InputNodes;
+ std::vector <float> InputSigns;
+ std::vector <double> output_array;
+ std::string Type;
+ std::string Name;
double Input;
double Output;
double clipmax, clipmin;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSFunction.h"
+#include <cstdlib>
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFilter.h"
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+
+#include <iostream>
+#include <string>
+
+using namespace std;
namespace JSBSim {
DynamicFilter = false;
C[1] = C[2] = C[3] = C[4] = C[5] = C[6] = 0.0;
- for (int i=0; i<7; i++) {
+ for (int i=1; i<7; i++) {
PropertySign[i] = 1.0;
PropertyNode[i] = 0L;
+ ReadFilterCoefficients(element, i);
}
if (Type == "LAG_FILTER") FilterType = eLag ;
else if (Type == "INTEGRATOR") FilterType = eIntegrator ;
else FilterType = eUnknown ;
- ReadFilterCoefficients(element, 1);
- ReadFilterCoefficients(element, 2);
- ReadFilterCoefficients(element, 3);
- ReadFilterCoefficients(element, 4);
- ReadFilterCoefficients(element, 5);
- ReadFilterCoefficients(element, 6);
-
if (element->FindElement("trigger")) {
Trigger = PropertyManager->GetNode(element->FindElementValue("trigger"));
}
void FGFilter::ReadFilterCoefficients(Element* element, int index)
{
- char buf[3];
- sprintf(buf, "c%d", index);
- string coefficient = string(buf);
- string property_string="";
-
+ // index is known to be 1-7.
+ // A stringstream would be overkill, but also trying to avoid sprintf
+ string coefficient = "c0";
+ coefficient[1] += index;
+
if ( element->FindElement(coefficient) ) {
- property_string = element->FindElementValue(coefficient);
+ string property_string = element->FindElementValue(coefficient);
if (!is_number(property_string)) { // property
if (property_string[0] == '-') {
PropertySign[index] = -1.0;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
+class Element;
+class FGPropertyManager;
+class FGFCS;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGain.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+#include <string>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include <string>
-#include "input_output/FGXMLElement.h"
#include "math/FGTable.h"
-using std::string;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
class FGFCS;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGradient.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGyro.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGKinemat.h"
-#include <math.h>
-#include <float.h>
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
#include <vector>
-#include <string>
-
-using std::vector;
-using std::string;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
bool Run (void);
private:
- vector<double> Detents;
- vector<double> TransitionTimes;
+ std::vector<double> Detents;
+ std::vector<double> TransitionTimes;
int NumDetents;
double OutputPct;
bool DoScale;
#include "FGMagnetometer.h"
#include "simgear/magvar/coremag.hxx"
#include <ctime>
+#include <cstdlib>
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGPID.h"
+#include "input_output/FGXMLElement.h"
+#include <string>
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
-#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
#define ID_PID "$Id$"
-using std::string;
-
-using std::string;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
class FGFCS;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSensor.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
-#include <vector>
+#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
namespace JSBSim {
-using std::vector;
class FGFCS;
+class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
bool fail_low;
bool fail_high;
bool fail_stuck;
- string quant_property;
+ std::string quant_property;
void ProcessSensorSignal(void);
void Noise(void);
#include "math/FGColumnVector3.h"
#include "math/FGMatrix33.h"
+#include <iostream>
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
{
Element* orient_element = element->FindElement("orientation");
if (orient_element) vOrient = orient_element->FindElementTripletConvertTo("RAD");
- else {cerr << "No orientation given for this sensor. " << endl;}
+ else { std::cerr << "No orientation given for this sensor. " << std::endl;}
Element* axis_element = element->FindElement("axis");
if (axis_element) {
} else if (sAxis == "Z" || sAxis == "z") {
axis = 3;
} else {
- cerr << " Incorrect/no axis specified for this sensor; assuming X axis" << endl;
+ std::cerr << " Incorrect/no axis specified for this sensor; assuming X axis" << std::endl;
axis = 1;
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSummer.h"
+#include "input_output/FGXMLElement.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h"
-#include "input_output/FGXMLElement.h"
-#include <vector>
-#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
#define ID_SUMMER "$Id$"
-using std::vector;
-using std::string;
-
-using std::vector;
-using std::string;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
+class Element;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSwitch.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGElectric.h"
+#include "FGState.h"
#include "models/FGPropulsion.h"
+#include "models/propulsion/FGThruster.h"
+
+#include <iostream>
+#include <sstream>
+
+using namespace std;
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGElectric::GetEngineLabels(string delimeter)
+string FGElectric::GetEngineLabels(const string& delimiter)
{
std::ostringstream buf;
- buf << Name << " HP (engine " << EngineNumber << ")" << delimeter
- << Thruster->GetThrusterLabels(EngineNumber, delimeter);
+ buf << Name << " HP (engine " << EngineNumber << ")" << delimiter
+ << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGElectric::GetEngineValues(string delimeter)
+string FGElectric::GetEngineValues(const string& delimiter)
{
std::ostringstream buf;
- buf << HP << delimeter
- << Thruster->GetThrusterValues(EngineNumber, delimeter);
+ buf << HP << delimiter
+ << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str();
}
double Calculate(void);
double GetPowerAvailable(void) {return PowerAvailable;}
double getRPM(void) {return RPM;}
- string GetEngineLabels(string delimeter);
- string GetEngineValues(string delimeter);
+ std::string GetEngineLabels(const std::string& delimiter);
+ std::string GetEngineValues(const std::string& delimiter);
private:
#include "FGTank.h"
#include "FGPropeller.h"
#include "FGNozzle.h"
+#include "FGState.h"
+#include "models/FGPropulsion.h"
#include "input_output/FGXMLParse.h"
#include "math/FGColumnVector3.h"
+
+#include <iostream>
#include <fstream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h"
-#include "FGThruster.h"
-#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLFileRead.h"
+#include "math/FGColumnVector3.h"
#include <vector>
#include <string>
#define ID_ENGINE "$Id$"
-using std::string;
-using std::vector;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
class FGAuxiliary;
class FGThruster;
class Element;
+class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
bool LoadThruster(Element *el);
FGThruster* GetThruster(void) {return Thruster;}
- virtual string GetEngineLabels(string delimeter) = 0;
- virtual string GetEngineValues(string delimeter) = 0;
+ virtual std::string GetEngineLabels(const std::string& delimiter) = 0;
+ virtual std::string GetEngineValues(const std::string& delimiter) = 0;
protected:
/** Reduces the fuel in the active tanks by the amount required.
virtual double CalcFuelNeed(void);
FGPropertyManager* PropertyManager;
- string Name;
+ std::string Name;
const int EngineNumber;
EngineType Type;
double X, Y, Z;
FGAuxiliary* Auxiliary;
FGThruster* Thruster;
- vector <int> SourceTanks;
+ std::vector <int> SourceTanks;
void Debug(int from);
};
}
-#include "FGState.h"
-#include "FGFDMExec.h"
-#include "models/FGAtmosphere.h"
-#include "models/FGFCS.h"
-#include "models/FGAircraft.h"
-#include "models/FGPropagate.h"
-#include "models/FGPropulsion.h"
-#include "models/FGAuxiliary.h"
-#include "models/propulsion/FGThruster.h"
-#include "input_output/FGXMLElement.h"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif
#include "models/FGPropagate.h"
#include "models/FGMassBalance.h"
#include "models/FGAerodynamics.h"
+#include <iostream>
+#include <cstdlib>
+
+using namespace std;
namespace JSBSim {
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iostream>
#include <sstream>
+#include <cstdlib>
#include "FGNozzle.h"
#include "models/FGAtmosphere.h"
+#include "input_output/FGXMLElement.h"
+
+using namespace std;
namespace JSBSim {
cerr << "Fatal Error: Nozzle exit area must be given in nozzle config file." << endl;
exit(-1);
}
-
+/*
if (nozzle_element->FindElement("pe"))
PE = nozzle_element->FindElementValueAsNumberConvertTo("pe", "PSF");
else {
cerr << "Fatal Error: Nozzle exit pressure must be given in nozzle config file." << endl;
exit(-1);
}
-
+*/
Thrust = 0;
Type = ttNozzle;
string GetThrusterValues(int id, string delimeter);
private:
- double PE;
+// double PE;
double Area;
void Debug(int from);
};
#include <sstream>
#include "FGPiston.h"
+#include "FGState.h"
+#include "models/FGAtmosphere.h"
#include "models/FGPropulsion.h"
#include "FGPropeller.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGPiston::GetEngineLabels(string delimeter)
+string FGPiston::GetEngineLabels(const string& delimiter)
{
std::ostringstream buf;
- buf << Name << " Power Available (engine " << EngineNumber << " in HP)" << delimeter
- << Name << " HP (engine " << EngineNumber << ")" << delimeter
- << Name << " equivalent ratio (engine " << EngineNumber << ")" << delimeter
- << Name << " MAP (engine " << EngineNumber << " in inHg)" << delimeter
- << Thruster->GetThrusterLabels(EngineNumber, delimeter);
+ buf << Name << " Power Available (engine " << EngineNumber << " in HP)" << delimiter
+ << Name << " HP (engine " << EngineNumber << ")" << delimiter
+ << Name << " equivalent ratio (engine " << EngineNumber << ")" << delimiter
+ << Name << " MAP (engine " << EngineNumber << " in inHg)" << delimiter
+ << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGPiston::GetEngineValues(string delimeter)
+string FGPiston::GetEngineValues(const string& delimiter)
{
std::ostringstream buf;
- buf << PowerAvailable << delimeter << HP << delimeter
- << equivalence_ratio << delimeter << ManifoldPressure_inHg << delimeter
- << Thruster->GetThrusterValues(EngineNumber, delimeter);
+ buf << PowerAvailable << delimiter << HP << delimiter
+ << equivalence_ratio << delimiter << ManifoldPressure_inHg << delimiter
+ << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str();
}
/// Destructor
~FGPiston();
- string GetEngineLabels(string delimeter);
- string GetEngineValues(string delimeter);
+ std::string GetEngineLabels(const std::string& delimiter);
+ std::string GetEngineValues(const std::string& delimiter);
double Calculate(void);
double GetPowerAvailable(void) {return PowerAvailable;}
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iostream>
#include <sstream>
#include "FGPropeller.h"
#include "models/FGPropagate.h"
#include "models/FGAtmosphere.h"
#include "models/FGAuxiliary.h"
+#include "input_output/FGXMLElement.h"
+
+using namespace std;
namespace JSBSim {
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iostream>
#include <sstream>
-
#include "FGRocket.h"
+#include "FGState.h"
+#include "models/FGPropulsion.h"
+#include "FGThruster.h"
+#include "FGTank.h"
+
+using namespace std;
namespace JSBSim {
PropellantFlowRate = (FuelExpended + OxidizerExpended)/dT;
Throttle = FCS->GetThrottlePos(EngineNumber);
- // If there is a thrust table, it is a function of propellant remaining. The
+ // If there is a thrust table, it is a function of propellant burned. The
// engine is started when the throttle is advanced to 1.0. After that, it
- // burns without regard to throttle setting. The table returns a value between
- // zero and one, representing the percentage of maximum vacuum thrust being
- // applied.
+ // burns without regard to throttle setting.
if (ThrustTable != 0L) { // Thrust table given -> Solid fuel used
if ((Throttle == 1 || BurnTime > 0.0 ) && !Starved) {
BurnTime += State->Getdt();
- double TotalEngineFuelAvailable=0.0;
+ double TotalEngineFuelBurned=0.0;
for (int i=0; i<(int)SourceTanks.size(); i++) {
FGTank* tank = Propulsion->GetTank(i);
if (SourceTanks[i] == 1) {
- TotalEngineFuelAvailable += tank->GetContents();
+ TotalEngineFuelBurned += tank->GetCapacity() - tank->GetContents();
}
}
- VacThrust = ThrustTable->GetValue(TotalEngineFuelAvailable);
+ VacThrust = ThrustTable->GetValue(TotalEngineFuelBurned);
} else {
VacThrust = 0.0;
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGRocket::GetEngineLabels(string delimeter)
+string FGRocket::GetEngineLabels(const string& delimiter)
{
std::ostringstream buf;
- buf << Name << " Total Impulse (engine " << EngineNumber << " in psf)" << delimeter
- << Thruster->GetThrusterLabels(EngineNumber, delimeter);
+ buf << Name << " Total Impulse (engine " << EngineNumber << " in psf)" << delimiter
+ << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGRocket::GetEngineValues(string delimeter)
+string FGRocket::GetEngineValues(const string& delimiter)
{
std::ostringstream buf;
- buf << It << delimeter << Thruster->GetThrusterValues(EngineNumber, delimeter);
+ buf << It << delimiter << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str();
}
double GetOxiFlowRate(void) const {return OxidizerFlowRate;}
- string GetEngineLabels(string delimeter);
- string GetEngineValues(string delimeter);
+ std::string GetEngineLabels(const std::string& delimiter);
+ std::string GetEngineValues(const std::string& delimiter);
private:
/** Reduces the fuel in the active tanks by the amount required.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGRotor.h"
+#include <iostream>
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGTank.h"
+#include "FGFDMExec.h"
#include "models/FGAuxiliary.h"
+#include "input_output/FGXMLElement.h"
+#include "input_output/FGPropertyManager.h"
+#include <iostream>
+#include <cstdlib>
-using std::cerr;
-using std::endl;
-using std::cout;
+using namespace std;
namespace JSBSim {
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include "FGFDMExec.h"
#include "FGJSBBase.h"
-#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h"
#include <string>
-using std::string;
-using std::cerr;
-using std::endl;
-using std::cout;
-
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim {
+class Element;
+class FGPropertyManager;
+class FGFDMExec;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
TankType Type;
GrainType grainType;
int TankNumber;
- string type;
- string strGType;
+ std::string type;
+ std::string strGType;
FGColumnVector3 vXYZ;
FGColumnVector3 vXYZ_drain;
double Capacity;
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
+#include <iostream>
#include <sstream>
#include "FGThruster.h"
+#include "input_output/FGXMLElement.h"
+
+using namespace std;
namespace JSBSim {
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGForce.h"
-#include "input_output/FGXMLElement.h"
-#include "input_output/FGPropertyManager.h"
#include "math/FGColumnVector3.h"
#include <string>
namespace JSBSim {
+class Element;
+class FGPropertyManager;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <vector>
+#include <iostream>
#include <sstream>
-
#include "FGTurbine.h"
+#include "FGState.h"
+#include "models/FGPropulsion.h"
+#include "FGThruster.h"
+
+using namespace std;
namespace JSBSim {
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGTurbine::GetEngineLabels(string delimeter)
+string FGTurbine::GetEngineLabels(const string& delimiter)
{
std::ostringstream buf;
- buf << Name << "_N1[" << EngineNumber << "]" << delimeter
- << Name << "_N2[" << EngineNumber << "]" << delimeter
- << Thruster->GetThrusterLabels(EngineNumber, delimeter);
+ buf << Name << "_N1[" << EngineNumber << "]" << delimiter
+ << Name << "_N2[" << EngineNumber << "]" << delimiter
+ << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGTurbine::GetEngineValues(string delimeter)
+string FGTurbine::GetEngineValues(const string& delimiter)
{
std::ostringstream buf;
- buf << N1 << delimeter
- << N2 << delimeter
- << Thruster->GetThrusterValues(EngineNumber, delimeter);
+ buf << N1 << delimiter
+ << N2 << delimiter
+ << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str();
}
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <vector>
#include "FGEngine.h"
-#include "input_output/FGXMLElement.h"
-#include "math/FGFunction.h"
#define ID_TURBINE "$Id$"
namespace JSBSim {
+class Element;
+class FGFunction;
+
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
int InitRunning(void);
void ResetToIC(void);
- string GetEngineLabels(string delimeter);
- string GetEngineValues(string delimeter);
+ std::string GetEngineLabels(const std::string& delimiter);
+ std::string GetEngineValues(const std::string& delimiter);
private:
INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include <vector>
+#include <iostream>
#include <sstream>
#include "FGTurboProp.h"
#include "FGPropeller.h"
+#include "FGState.h"
+#include "models/FGAuxiliary.h"
+
+using namespace std;
namespace JSBSim {
}
//printf ("EngHP: %lf / Requi: %lf\n",Eng_HP,Prop_Required_Power);
- return Thruster->Calculate((Eng_HP * hptoftlbssec)-Thruster->GetPowerRequired());
+ PowerAvailable = (Eng_HP * hptoftlbssec) - Thruster->GetPowerRequired();
+
+ return Thruster->Calculate(PowerAvailable);
+
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGTurboProp::SetDefaults(void)
{
- Name = "Not defined";
+// Name = "Not defined";
N1 = N2 = 0.0;
Type = etTurboprop;
MilThrust = 10000.0;
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGTurboProp::GetEngineLabels(string delimeter)
+string FGTurboProp::GetEngineLabels(const string& delimiter)
{
std::ostringstream buf;
- buf << Name << "_N1[" << EngineNumber << "]" << delimeter
- << Name << "_N2[" << EngineNumber << "]" << delimeter
- << Name << "__PwrAvailJVK[" << EngineNumber << "]" << delimeter
- << Thruster->GetThrusterLabels(EngineNumber, delimeter);
+ buf << Name << "_N1[" << EngineNumber << "]" << delimiter
+ << Name << "_N2[" << EngineNumber << "]" << delimiter
+ << Name << "_PwrAvail[" << EngineNumber << "]" << delimiter
+ << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str();
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-string FGTurboProp::GetEngineValues(string delimeter)
+string FGTurboProp::GetEngineValues(const string& delimiter)
{
std::ostringstream buf;
- buf << N1 << delimeter
- << N2 << delimeter
- << Thruster->GetThrusterValues(EngineNumber,delimeter);
+ buf << PowerAvailable << delimiter
+ << N1 << delimiter
+ << N2 << delimiter
+ << Thruster->GetThrusterValues(EngineNumber,delimiter);
return buf.str();
}
inline void SetGeneratorPower(bool gp) { GeneratorPower=gp; }
inline void SetCondition(bool c) { Condition=c; }
int InitRunning(void);
- string GetEngineLabels(string delimeter); // added from Turbine 0.9.6
- string GetEngineValues(string delimeter); // added from Turbine 0.9.6
+ std::string GetEngineLabels(const std::string& delimiter);
+ std::string GetEngineValues(const std::string& delimiter);
private:
double N2_factor; ///< factor to tie N2 and throttle
double ThrottleCmd; ///< FCS-supplied throttle position
double TAT; ///< total air temperature (deg C)
+ double PowerAvailable;
bool Stalled; ///< true if engine is compressor-stalled
bool Seized; ///< true if inner spool is seized
bool Overtemp; ///< true if EGT exceeds limits