From 82364aa4da90f9efd0047ababb42fc402f382015 Mon Sep 17 00:00:00 2001 From: ehofman Date: Mon, 26 Oct 2009 13:29:58 +0000 Subject: [PATCH] Sync. w. JSBSim cvs --- src/FDM/JSBSim/FGFDMExec.cpp | 9 +- src/FDM/JSBSim/FGJSBBase.cpp | 40 ++++++++ src/FDM/JSBSim/FGJSBBase.h | 73 +++++---------- src/FDM/JSBSim/FGState.cpp | 3 + src/FDM/JSBSim/JSBSim.cxx | 4 +- .../initialization/FGInitialCondition.cpp | 5 + src/FDM/JSBSim/initialization/FGTrim.cpp | 2 + src/FDM/JSBSim/initialization/FGTrimAxis.cpp | 19 ++-- .../JSBSim/input_output/FGPropertyManager.h | 91 +++++++++---------- src/FDM/JSBSim/input_output/FGScript.cpp | 3 + src/FDM/JSBSim/input_output/FGXMLElement.cpp | 35 +++---- src/FDM/JSBSim/input_output/FGXMLElement.h | 53 +++++------ src/FDM/JSBSim/input_output/FGXMLFileRead.h | 12 ++- src/FDM/JSBSim/input_output/FGXMLParse.cpp | 5 + src/FDM/JSBSim/input_output/FGXMLParse.h | 11 +-- src/FDM/JSBSim/input_output/FGfdmSocket.cpp | 72 +++++++-------- src/FDM/JSBSim/input_output/FGfdmSocket.h | 27 ++---- .../JSBSim/input_output/string_utilities.h | 38 ++++---- src/FDM/JSBSim/math/FGColumnVector3.cpp | 17 +++- src/FDM/JSBSim/math/FGColumnVector3.h | 18 +--- src/FDM/JSBSim/math/FGCondition.cpp | 9 +- src/FDM/JSBSim/math/FGCondition.h | 15 +-- src/FDM/JSBSim/math/FGFunction.cpp | 19 ++-- src/FDM/JSBSim/math/FGFunction.h | 75 +++++++-------- src/FDM/JSBSim/math/FGMatrix33.cpp | 4 + src/FDM/JSBSim/math/FGMatrix33.h | 18 +--- src/FDM/JSBSim/math/FGTable.cpp | 10 +- src/FDM/JSBSim/math/FGTable.h | 19 ++-- src/FDM/JSBSim/models/FGAerodynamics.cpp | 35 ++++--- src/FDM/JSBSim/models/FGAerodynamics.h | 11 ++- src/FDM/JSBSim/models/FGAircraft.cpp | 4 + src/FDM/JSBSim/models/FGAircraft.h | 7 +- src/FDM/JSBSim/models/FGAtmosphere.cpp | 4 + src/FDM/JSBSim/models/FGAuxiliary.cpp | 11 +++ src/FDM/JSBSim/models/FGAuxiliary.h | 12 +-- src/FDM/JSBSim/models/FGBuoyantForces.cpp | 3 + src/FDM/JSBSim/models/FGExternalForce.cpp | 4 + src/FDM/JSBSim/models/FGExternalReactions.cpp | 4 + src/FDM/JSBSim/models/FGExternalReactions.h | 6 +- src/FDM/JSBSim/models/FGFCS.cpp | 23 +++-- src/FDM/JSBSim/models/FGFCS.h | 33 +++---- src/FDM/JSBSim/models/FGGasCell.cpp | 5 + src/FDM/JSBSim/models/FGGasCell.h | 8 +- src/FDM/JSBSim/models/FGGroundReactions.cpp | 3 + src/FDM/JSBSim/models/FGInertial.cpp | 3 + src/FDM/JSBSim/models/FGInput.cpp | 28 +++--- src/FDM/JSBSim/models/FGInput.h | 13 ++- src/FDM/JSBSim/models/FGLGear.cpp | 10 ++ src/FDM/JSBSim/models/FGLGear.h | 21 ++--- src/FDM/JSBSim/models/FGMassBalance.cpp | 22 +++++ src/FDM/JSBSim/models/FGMassBalance.h | 18 +--- src/FDM/JSBSim/models/FGModel.cpp | 3 + src/FDM/JSBSim/models/FGModel.h | 11 +-- src/FDM/JSBSim/models/FGOutput.cpp | 32 ++++--- src/FDM/JSBSim/models/FGOutput.h | 21 ++--- src/FDM/JSBSim/models/FGPropagate.cpp | 5 +- src/FDM/JSBSim/models/FGPropulsion.cpp | 31 ++++--- src/FDM/JSBSim/models/FGPropulsion.h | 19 ++-- src/FDM/JSBSim/models/atmosphere/FGMSIS.cpp | 20 ++-- src/FDM/JSBSim/models/atmosphere/FGMars.cpp | 3 + .../models/flight_control/FGAccelerometer.cpp | 4 + .../models/flight_control/FGActuator.cpp | 2 + .../models/flight_control/FGDeadBand.cpp | 5 + .../JSBSim/models/flight_control/FGDeadBand.h | 3 +- .../models/flight_control/FGFCSComponent.cpp | 8 ++ .../models/flight_control/FGFCSComponent.h | 23 ++--- .../models/flight_control/FGFCSFunction.cpp | 4 + .../JSBSim/models/flight_control/FGFilter.cpp | 29 +++--- .../JSBSim/models/flight_control/FGFilter.h | 5 +- .../JSBSim/models/flight_control/FGGain.cpp | 6 ++ src/FDM/JSBSim/models/flight_control/FGGain.h | 5 +- .../models/flight_control/FGGradient.cpp | 3 + .../JSBSim/models/flight_control/FGGyro.cpp | 3 + .../models/flight_control/FGKinemat.cpp | 7 +- .../JSBSim/models/flight_control/FGKinemat.h | 9 +- .../models/flight_control/FGMagnetometer.cpp | 4 + .../JSBSim/models/flight_control/FGPID.cpp | 5 + src/FDM/JSBSim/models/flight_control/FGPID.h | 7 +- .../JSBSim/models/flight_control/FGSensor.cpp | 5 + .../JSBSim/models/flight_control/FGSensor.h | 7 +- .../flight_control/FGSensorOrientation.h | 6 +- .../JSBSim/models/flight_control/FGSummer.cpp | 4 + .../JSBSim/models/flight_control/FGSummer.h | 11 +-- .../JSBSim/models/flight_control/FGSwitch.cpp | 4 + .../JSBSim/models/propulsion/FGElectric.cpp | 19 ++-- src/FDM/JSBSim/models/propulsion/FGElectric.h | 4 +- src/FDM/JSBSim/models/propulsion/FGEngine.cpp | 7 ++ src/FDM/JSBSim/models/propulsion/FGEngine.h | 25 ++--- src/FDM/JSBSim/models/propulsion/FGForce.cpp | 4 + src/FDM/JSBSim/models/propulsion/FGNozzle.cpp | 9 +- src/FDM/JSBSim/models/propulsion/FGNozzle.h | 2 +- src/FDM/JSBSim/models/propulsion/FGPiston.cpp | 25 +++-- src/FDM/JSBSim/models/propulsion/FGPiston.h | 4 +- .../JSBSim/models/propulsion/FGPropeller.cpp | 4 + src/FDM/JSBSim/models/propulsion/FGRocket.cpp | 30 +++--- src/FDM/JSBSim/models/propulsion/FGRocket.h | 4 +- src/FDM/JSBSim/models/propulsion/FGRotor.cpp | 3 + src/FDM/JSBSim/models/propulsion/FGTank.cpp | 9 +- src/FDM/JSBSim/models/propulsion/FGTank.h | 15 ++- .../JSBSim/models/propulsion/FGThruster.cpp | 4 + src/FDM/JSBSim/models/propulsion/FGThruster.h | 5 +- .../JSBSim/models/propulsion/FGTurbine.cpp | 24 +++-- src/FDM/JSBSim/models/propulsion/FGTurbine.h | 10 +- .../JSBSim/models/propulsion/FGTurboProp.cpp | 32 ++++--- .../JSBSim/models/propulsion/FGTurboProp.h | 5 +- 105 files changed, 860 insertions(+), 692 deletions(-) diff --git a/src/FDM/JSBSim/FGFDMExec.cpp b/src/FDM/JSBSim/FGFDMExec.cpp index c62dafa6a..227c0267f 100644 --- a/src/FDM/JSBSim/FGFDMExec.cpp +++ b/src/FDM/JSBSim/FGFDMExec.cpp @@ -66,6 +66,9 @@ INCLUDES #include #include +#include + +using namespace std; namespace JSBSim { @@ -713,13 +716,13 @@ void FGFDMExec::BuildPropertyCatalog(struct PropertyCatalogStructure* pcs) { struct PropertyCatalogStructure* pcsNew = new struct PropertyCatalogStructure; int node_idx = 0; - char int_buf[10]; for (int i=0; inode->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); diff --git a/src/FDM/JSBSim/FGJSBBase.cpp b/src/FDM/JSBSim/FGJSBBase.cpp index 4e02407a4..f07a4f081 100644 --- a/src/FDM/JSBSim/FGJSBBase.cpp +++ b/src/FDM/JSBSim/FGJSBBase.cpp @@ -39,6 +39,8 @@ INCLUDES #include "FGJSBBase.h" #include +#include +#include namespace JSBSim { @@ -240,5 +242,43 @@ void FGJSBBase::disableHighLighting(void) { //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +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 diff --git a/src/FDM/JSBSim/FGJSBBase.h b/src/FDM/JSBSim/FGJSBBase.h index 6ed8832f8..d4ceb2c97 100644 --- a/src/FDM/JSBSim/FGJSBBase.h +++ b/src/FDM/JSBSim/FGJSBBase.h @@ -41,21 +41,22 @@ INCLUDES #include #include #include -#include #include -#include #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 inline T max(const T& a, const T& b) + { + return (a > b) ? a : b; + } +} #endif /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -98,8 +99,8 @@ public: 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; @@ -162,22 +163,22 @@ public: /** 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); @@ -192,7 +193,7 @@ public: /** 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); @@ -268,7 +269,7 @@ public: @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. @@ -277,7 +278,7 @@ public: @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. @@ -331,44 +332,12 @@ protected: static const double slugtolb; static const double kgtolb; static const double kgtoslug; - static const string needed_cfg_version; - static const string JSBSim_version; + static const std::string needed_cfg_version; + static const std::string JSBSim_version; - static string CreateIndexedPropertyName(string Property, int index) - { - std::stringstream str; - str << index; - string tmp; - str >> tmp; - return Property + "[" + tmp + "]"; - } + static std::string CreateIndexedPropertyName(const std::string& Property, int index); - 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); - - 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 diff --git a/src/FDM/JSBSim/FGState.cpp b/src/FDM/JSBSim/FGState.cpp index f9c19d37f..372d01e79 100644 --- a/src/FDM/JSBSim/FGState.cpp +++ b/src/FDM/JSBSim/FGState.cpp @@ -37,9 +37,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include +#include #include "FGState.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/JSBSim.cxx b/src/FDM/JSBSim/JSBSim.cxx index cc7232fc0..15daa8e22 100644 --- a/src/FDM/JSBSim/JSBSim.cxx +++ b/src/FDM/JSBSim/JSBSim.cxx @@ -755,9 +755,7 @@ bool FGJSBsim::copy_from_JSBsim() // 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()) { diff --git a/src/FDM/JSBSim/initialization/FGInitialCondition.cpp b/src/FDM/JSBSim/initialization/FGInitialCondition.cpp index 295033d50..7eb3f7f66 100644 --- a/src/FDM/JSBSim/initialization/FGInitialCondition.cpp +++ b/src/FDM/JSBSim/initialization/FGInitialCondition.cpp @@ -49,10 +49,15 @@ INCLUDES #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 #include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/initialization/FGTrim.cpp b/src/FDM/JSBSim/initialization/FGTrim.cpp index 4257e90d3..2f425b769 100644 --- a/src/FDM/JSBSim/initialization/FGTrim.cpp +++ b/src/FDM/JSBSim/initialization/FGTrim.cpp @@ -57,6 +57,8 @@ INCLUDES #pragma warning (disable : 4786 4788) #endif +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/initialization/FGTrimAxis.cpp b/src/FDM/JSBSim/initialization/FGTrimAxis.cpp index d9da4669b..186b9b1df 100644 --- a/src/FDM/JSBSim/initialization/FGTrimAxis.cpp +++ b/src/FDM/JSBSim/initialization/FGTrimAxis.cpp @@ -38,6 +38,7 @@ INCLUDES #include #include +#include #include "FGFDMExec.h" #include "models/FGAtmosphere.h" #include "FGInitialCondition.h" @@ -45,6 +46,12 @@ INCLUDES #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 { @@ -427,13 +434,11 @@ void FGTrimAxis::setThrottlesPct(void) { /*****************************************************************************/ 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; diff --git a/src/FDM/JSBSim/input_output/FGPropertyManager.h b/src/FDM/JSBSim/input_output/FGPropertyManager.h index f775d435c..2db5408e3 100644 --- a/src/FDM/JSBSim/input_output/FGPropertyManager.h +++ b/src/FDM/JSBSim/input_output/FGPropertyManager.h @@ -42,7 +42,6 @@ INCLUDES #endif #include -#include #include "simgear/props/props.hxx" #if !PROPS_STANDALONE # include "simgear/math/SGMath.hxx" @@ -60,8 +59,6 @@ DEFINITIONS FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -using namespace std; - namespace JSBSim { /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -93,7 +90,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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. @@ -103,10 +100,10 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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. @@ -114,23 +111,23 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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. @@ -146,7 +143,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -163,7 +160,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -180,7 +177,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -197,7 +194,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -214,7 +211,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -231,7 +228,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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 = ""); /** @@ -247,7 +244,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -263,7 +260,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -279,7 +276,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -295,7 +292,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -311,7 +308,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -327,7 +324,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); //////////////////////////////////////////////////////////////////////// @@ -347,7 +344,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -362,7 +359,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); /** @@ -377,7 +374,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * @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); //////////////////////////////////////////////////////////////////////// @@ -391,7 +388,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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 @@ -409,7 +406,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -425,7 +422,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -441,7 +438,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); /** @@ -457,7 +454,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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. @@ -472,7 +469,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * 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); //============================================================================ // @@ -482,19 +479,19 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase //============================================================================ /* template 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 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 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 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); */ @@ -516,12 +513,12 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase */ template 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(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; } @@ -543,13 +540,13 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * property value should there be one; false if the old value should be * discarded; defaults to true. */ - template inline void Tie (const string &name, int index, V (*getter)(int), + template 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(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; } @@ -573,13 +570,13 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * discarded; defaults to true. */ template 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(*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; } /** @@ -602,13 +599,13 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase * discarded; defaults to true. */ template 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(*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; } }; } diff --git a/src/FDM/JSBSim/input_output/FGScript.cpp b/src/FDM/JSBSim/input_output/FGScript.cpp index 6c49b4f15..dde76de95 100755 --- a/src/FDM/JSBSim/input_output/FGScript.cpp +++ b/src/FDM/JSBSim/input_output/FGScript.cpp @@ -46,6 +46,9 @@ INCLUDES #include "initialization/FGTrim.h" #include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/input_output/FGXMLElement.cpp b/src/FDM/JSBSim/input_output/FGXMLElement.cpp index 044ead516..df541fa3a 100755 --- a/src/FDM/JSBSim/input_output/FGXMLElement.cpp +++ b/src/FDM/JSBSim/input_output/FGXMLElement.cpp @@ -32,6 +32,9 @@ INCLUDES #include #include +#include + +using namespace std; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS @@ -49,7 +52,7 @@ map > Element::convert; CLASS IMPLEMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -Element::Element(string nm) +Element::Element(const string& nm) { name = nm; parent = 0L; @@ -221,7 +224,7 @@ Element::~Element(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string Element::GetAttributeValue(string attr) +string Element::GetAttributeValue(const string& attr) { int select=-1; for (unsigned int i=0; i= 1) { element_index = 1; @@ -323,7 +326,7 @@ Element* Element::FindElement(string el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -Element* Element::FindNextElement(string el) +Element* Element::FindNextElement(const string& el) { if (el.empty()) { if (element_index < children.size()) { @@ -345,7 +348,7 @@ Element* Element::FindNextElement(string el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -double Element::FindElementValueAsNumber(string el) +double Element::FindElementValueAsNumber(const string& el) { Element* element = FindElement(el); if (element) { @@ -358,7 +361,7 @@ double Element::FindElementValueAsNumber(string el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string Element::FindElementValue(string el) +string Element::FindElementValue(const string& el) { Element* element = FindElement(el); if (element) { @@ -370,7 +373,7 @@ string Element::FindElementValue(string el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -double Element::FindElementValueAsNumberConvertTo(string el, string target_units) +double Element::FindElementValueAsNumberConvertTo(const string& el, const string& target_units) { Element* element = FindElement(el); @@ -404,9 +407,9 @@ double Element::FindElementValueAsNumberConvertTo(string el, string target_units //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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); @@ -438,7 +441,7 @@ double Element::FindElementValueAsNumberConvertFromTo( string el, //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -FGColumnVector3 Element::FindElementTripletConvertTo( string target_units) +FGColumnVector3 Element::FindElementTripletConvertTo( const string& target_units) { FGColumnVector3 triplet; Element* item; @@ -518,7 +521,7 @@ void Element::Print(unsigned int level) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void Element::AddAttribute(string name, string value) +void Element::AddAttribute(const string& name, const string& value) { attribute_key.push_back(name); attributes[name] = value; @@ -528,8 +531,8 @@ void Element::AddAttribute(string name, string 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); diff --git a/src/FDM/JSBSim/input_output/FGXMLElement.h b/src/FDM/JSBSim/input_output/FGXMLElement.h index e4cac49d2..75add86b7 100755 --- a/src/FDM/JSBSim/input_output/FGXMLElement.h +++ b/src/FDM/JSBSim/input_output/FGXMLElement.h @@ -36,15 +36,8 @@ INCLUDES #include #include -#include #include -using std::string; -using std::map; -using std::vector; -using std::cout; -using std::endl; - #include "math/FGColumnVector3.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -155,7 +148,7 @@ public: /** Constructor @param nm the name of this element (if given) */ - Element(string nm); + Element(const std::string& nm); /// Destructor ~Element(void); @@ -163,23 +156,23 @@ public: @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();} @@ -188,7 +181,7 @@ public: 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 @@ -226,7 +219,7 @@ public: 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 @@ -237,7 +230,7 @@ public: @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 @@ -247,7 +240,7 @@ public: 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 @@ -257,7 +250,7 @@ public: 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 @@ -274,7 +267,7 @@ public: 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 @@ -293,9 +286,9 @@ public: 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 @@ -306,7 +299,7 @@ public: @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. @@ -320,11 +313,11 @@ public: /** 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. @@ -332,14 +325,14 @@ public: void Print(unsigned int level=0); private: - string name; - map attributes; - vector data_lines; - vector children; - vector attribute_key; + std::string name; + std::map attributes; + std::vector data_lines; + std::vector children; + std::vector attribute_key; Element *parent; unsigned int element_index; - typedef map > tMapConvert; + typedef std::map > tMapConvert; static tMapConvert convert; static bool converterIsInitialized; }; diff --git a/src/FDM/JSBSim/input_output/FGXMLFileRead.h b/src/FDM/JSBSim/input_output/FGXMLFileRead.h index 39323daf2..472a79adc 100755 --- a/src/FDM/JSBSim/input_output/FGXMLFileRead.h +++ b/src/FDM/JSBSim/input_output/FGXMLFileRead.h @@ -36,6 +36,8 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "input_output/FGXMLParse.h" +#include +#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -56,19 +58,19 @@ public: 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; } diff --git a/src/FDM/JSBSim/input_output/FGXMLParse.cpp b/src/FDM/JSBSim/input_output/FGXMLParse.cpp index ffc3d173b..7eefba94f 100755 --- a/src/FDM/JSBSim/input_output/FGXMLParse.cpp +++ b/src/FDM/JSBSim/input_output/FGXMLParse.cpp @@ -30,9 +30,14 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGXMLParse.h" +#include "FGXMLElement.h" +#include +#include #include #include "input_output/string_utilities.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/input_output/FGXMLParse.h b/src/FDM/JSBSim/input_output/FGXMLParse.h index 74580060b..5fdd92b06 100755 --- a/src/FDM/JSBSim/input_output/FGXMLParse.h +++ b/src/FDM/JSBSim/input_output/FGXMLParse.h @@ -34,15 +34,6 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include -#include - -using std::string; -using std::cout; -using std::cerr; -using std::endl; - -#include "FGXMLElement.h" #include "simgear/xml/easyxml.hxx" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -58,6 +49,8 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ diff --git a/src/FDM/JSBSim/input_output/FGfdmSocket.cpp b/src/FDM/JSBSim/input_output/FGfdmSocket.cpp index 365c1916f..1eb7859d4 100644 --- a/src/FDM/JSBSim/input_output/FGfdmSocket.cpp +++ b/src/FDM/JSBSim/input_output/FGfdmSocket.cpp @@ -38,8 +38,16 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include "FGfdmSocket.h" +#include +#include #include +#include "FGfdmSocket.h" +#include "string_utilities.h" + +using std::cout; +using std::cerr; +using std::endl; +using std::string; namespace JSBSim { @@ -50,9 +58,9 @@ static const char *IdHdr = ID_FDMSOCKET; 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__) @@ -104,9 +112,9 @@ FGfdmSocket::FGfdmSocket(string address, int port, int protocol) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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__) @@ -158,7 +166,6 @@ FGfdmSocket::FGfdmSocket(string address, int port) FGfdmSocket::FGfdmSocket(int port) { - size = 0; connected = false; unsigned long NoBlock = true; @@ -217,9 +224,8 @@ string FGfdmSocket::Receive(void) 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) { @@ -239,9 +245,8 @@ string FGfdmSocket::Receive(void) } 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) @@ -258,12 +263,12 @@ string FGfdmSocket::Receive(void) #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; @@ -288,71 +293,58 @@ void FGfdmSocket::Close(void) 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 { } } diff --git a/src/FDM/JSBSim/input_output/FGfdmSocket.h b/src/FDM/JSBSim/input_output/FGfdmSocket.h index fc133473d..46b41ad56 100644 --- a/src/FDM/JSBSim/input_output/FGfdmSocket.h +++ b/src/FDM/JSBSim/input_output/FGfdmSocket.h @@ -39,16 +39,11 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include #include -#include -#include +#include #include #include "FGJSBBase.h" -using std::cout; -using std::endl; - #if defined(_MSC_VER) || defined(__MINGW32__) #include #include @@ -90,27 +85,24 @@ CLASS DOCUMENTATION 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;} @@ -119,10 +111,9 @@ public: 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); }; diff --git a/src/FDM/JSBSim/input_output/string_utilities.h b/src/FDM/JSBSim/input_output/string_utilities.h index 38ab80628..bc3a152a9 100644 --- a/src/FDM/JSBSim/input_output/string_utilities.h +++ b/src/FDM/JSBSim/input_output/string_utilities.h @@ -4,7 +4,7 @@ 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 @@ -38,8 +38,8 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include -#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -51,8 +51,6 @@ DEFINITIONS FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -using namespace std; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -63,29 +61,30 @@ CLASS DECLARATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #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 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 split(std::string str, char d); #else + #include + + 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; } @@ -99,17 +98,17 @@ CLASS DECLARATION string& to_upper(string& str) { - for (int i=0; i split(string str, char d) { vector str_array; - int index=0; + size_t index=0; string temp = ""; trim(str); @@ -142,3 +141,4 @@ CLASS DECLARATION //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% #endif + diff --git a/src/FDM/JSBSim/math/FGColumnVector3.cpp b/src/FDM/JSBSim/math/FGColumnVector3.cpp index fc7b80595..8a85454e2 100644 --- a/src/FDM/JSBSim/math/FGColumnVector3.cpp +++ b/src/FDM/JSBSim/math/FGColumnVector3.cpp @@ -38,7 +38,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGColumnVector3.h" -#include +#include +#include +#include +#include + +using namespace std; namespace JSBSim { @@ -57,11 +62,13 @@ FGColumnVector3::FGColumnVector3(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/math/FGColumnVector3.h b/src/FDM/JSBSim/math/FGColumnVector3.h index 9b16a6df1..2817f9571 100644 --- a/src/FDM/JSBSim/math/FGColumnVector3.h +++ b/src/FDM/JSBSim/math/FGColumnVector3.h @@ -39,20 +39,8 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include +#include #include -#include -#include -#include - -using std::ostream; -using std::istream; -using std::cerr; -using std::cout; -using std::endl; -using std::sqrt; -using std::string; - #include "FGJSBBase.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -149,7 +137,7 @@ public: /** 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. @@ -291,7 +279,7 @@ inline FGColumnVector3 operator*(double scalar, const FGColumnVector3& A) { @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 diff --git a/src/FDM/JSBSim/math/FGCondition.cpp b/src/FDM/JSBSim/math/FGCondition.cpp index 6f40a72df..ff2f77543 100644 --- a/src/FDM/JSBSim/math/FGCondition.cpp +++ b/src/FDM/JSBSim/math/FGCondition.cpp @@ -35,7 +35,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGCondition.h" -#include +#include "input_output/FGXMLElement.h" +#include "input_output/FGPropertyManager.h" +#include +#include + +using namespace std; namespace JSBSim { @@ -91,7 +96,7 @@ FGCondition::FGCondition(Element* element, FGPropertyManager* PropertyManager) : // 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; diff --git a/src/FDM/JSBSim/math/FGCondition.h b/src/FDM/JSBSim/math/FGCondition.h index 3becca592..6272a8371 100644 --- a/src/FDM/JSBSim/math/FGCondition.h +++ b/src/FDM/JSBSim/math/FGCondition.h @@ -39,8 +39,6 @@ INCLUDES #include #include "FGJSBBase.h" -#include "input_output/FGXMLElement.h" -#include "input_output/FGPropertyManager.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -54,6 +52,9 @@ FORWARD DECLARATIONS namespace JSBSim { +class FGPropertyManager; +class Element; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -69,7 +70,7 @@ class FGCondition : public FGJSBBase { public: FGCondition(Element* element, FGPropertyManager* PropertyManager); - FGCondition(string test, FGPropertyManager* PropertyManager); + FGCondition(const std::string& test, FGPropertyManager* PropertyManager); ~FGCondition(void); bool Evaluate(void); @@ -78,18 +79,18 @@ public: private: enum eComparison {ecUndef=0, eEQ, eNE, eGT, eGE, eLT, eLE}; enum eLogic {elUndef=0, eAND, eOR}; - map mComparison; + std::map 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 conditions; + std::vector conditions; void InitializeConditionals(void); void Debug(int from); diff --git a/src/FDM/JSBSim/math/FGFunction.cpp b/src/FDM/JSBSim/math/FGFunction.cpp index 597fe2f2f..1db1e6aec 100755 --- a/src/FDM/JSBSim/math/FGFunction.cpp +++ b/src/FDM/JSBSim/math/FGFunction.cpp @@ -28,12 +28,17 @@ Purpose: Stores various parameter types for functions INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include - +#include +#include +#include #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 { @@ -44,7 +49,7 @@ static const char *IdHdr = ID_FUNCTION; 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; @@ -319,12 +324,10 @@ double FGFunction::GetValue(void) const 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(); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/math/FGFunction.h b/src/FDM/JSBSim/math/FGFunction.h index e946ab60a..4c67ba46e 100755 --- a/src/FDM/JSBSim/math/FGFunction.h +++ b/src/FDM/JSBSim/math/FGFunction.h @@ -37,8 +37,6 @@ INCLUDES #include #include #include "FGParameter.h" -#include "input_output/FGXMLElement.h" -#include "input_output/FGPropertyManager.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -52,6 +50,9 @@ FORWARD DECLARATIONS namespace JSBSim { +class FGPropertyManager; +class Element; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -165,7 +166,7 @@ public: @param prefix an optional prefix to prepend to the name given to the property that represents this function (if given). */ - FGFunction(FGPropertyManager* PropertyManager, Element* element, string prefix=""); + FGFunction(FGPropertyManager* PropertyManager, Element* element, const std::string& prefix=""); /// Destructor. virtual ~FGFunction(); @@ -175,10 +176,10 @@ public: /** 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. @@ -189,44 +190,44 @@ public: void cacheValue(bool shouldCache); private: - vector Parameters; + std::vector 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); }; diff --git a/src/FDM/JSBSim/math/FGMatrix33.cpp b/src/FDM/JSBSim/math/FGMatrix33.cpp index 91976f100..8f27e88a5 100644 --- a/src/FDM/JSBSim/math/FGMatrix33.cpp +++ b/src/FDM/JSBSim/math/FGMatrix33.cpp @@ -40,6 +40,10 @@ INCLUDES #include "FGMatrix33.h" #include "FGColumnVector3.h" +#include + +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/math/FGMatrix33.h b/src/FDM/JSBSim/math/FGMatrix33.h index 98babfcd0..a31e05d88 100644 --- a/src/FDM/JSBSim/math/FGMatrix33.h +++ b/src/FDM/JSBSim/math/FGMatrix33.h @@ -40,18 +40,8 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include #include -#include -#include -#include - -using std::ostream; -using std::istream; -using std::cerr; -using std::cout; -using std::endl; -using std::string; +#include #include "FGColumnVector3.h" #include "FGJSBBase.h" @@ -84,7 +74,7 @@ DECLARATION: MatrixException class MatrixException : public FGJSBBase { public: - string Message; + std::string Message; }; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -450,7 +440,7 @@ inline FGMatrix33 operator*(double scalar, const FGMatrix33& A) { 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. @@ -459,7 +449,7 @@ ostream& operator<<(ostream& os, const FGMatrix33& M); Read matrix from a stream. */ -istream& operator>>(istream& is, FGMatrix33& M); +std::istream& operator>>(std::istream& is, FGMatrix33& M); } // namespace JSBSim diff --git a/src/FDM/JSBSim/math/FGTable.cpp b/src/FDM/JSBSim/math/FGTable.cpp index d0027aec3..f19669191 100644 --- a/src/FDM/JSBSim/math/FGTable.cpp +++ b/src/FDM/JSBSim/math/FGTable.cpp @@ -37,7 +37,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGTable.h" -#include +#include "input_output/FGXMLElement.h" +#include "input_output/FGPropertyManager.h" +#include +#include +#include using namespace std; @@ -307,7 +311,7 @@ FGTable::~FGTable() //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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; @@ -466,7 +470,7 @@ double FGTable::GetValue(double rowKey, double colKey, double tableKey) const //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void FGTable::operator<<(stringstream& in_stream) +void FGTable::operator<<(istream& in_stream) { int startRow=0; int startCol=0; diff --git a/src/FDM/JSBSim/math/FGTable.h b/src/FDM/JSBSim/math/FGTable.h index 600f08d4b..1b0d22e16 100644 --- a/src/FDM/JSBSim/math/FGTable.h +++ b/src/FDM/JSBSim/math/FGTable.h @@ -38,11 +38,10 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include "input_output/FGXMLElement.h" #include "FGParameter.h" -#include "input_output/FGPropertyManager.h" -#include +#include #include +#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -54,11 +53,11 @@ DEFINITIONS FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -using std::vector; -using std::stringstream; - namespace JSBSim { +class FGPropertyManager; +class Element; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -280,7 +279,7 @@ public: */ - void operator<<(stringstream&); + void operator<<(std::istream&); FGTable& operator<<(const double n); FGTable& operator<<(const int n); @@ -298,16 +297,16 @@ private: bool internal; FGPropertyManager *lookupProperty[3]; double** Data; - vector Tables; - unsigned int FindNumColumns(string); + std::vector 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); }; } diff --git a/src/FDM/JSBSim/models/FGAerodynamics.cpp b/src/FDM/JSBSim/models/FGAerodynamics.cpp index cc7fd0d56..5083bf7bc 100644 --- a/src/FDM/JSBSim/models/FGAerodynamics.cpp +++ b/src/FDM/JSBSim/models/FGAerodynamics.cpp @@ -36,6 +36,10 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include +#include +#include +#include #include #include "FGAerodynamics.h" #include "FGPropagate.h" @@ -44,6 +48,8 @@ INCLUDES #include "FGMassBalance.h" #include "input_output/FGPropertyManager.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; @@ -415,7 +421,7 @@ void FGAerodynamics::DetermineAxisSystem() //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGAerodynamics::GetCoefficientStrings(string delimeter) +string FGAerodynamics::GetCoefficientStrings(const string& delimeter) const { string CoeffStrings = ""; bool firstime = true; @@ -445,33 +451,24 @@ string FGAerodynamics::GetCoefficientStrings(string delimeter) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/models/FGAerodynamics.h b/src/FDM/JSBSim/models/FGAerodynamics.h index fce51a101..8c26e5277 100644 --- a/src/FDM/JSBSim/models/FGAerodynamics.h +++ b/src/FDM/JSBSim/models/FGAerodynamics.h @@ -38,6 +38,7 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include #include @@ -188,13 +189,13 @@ public: /** 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. @@ -206,14 +207,14 @@ public: */ FGMatrix33& GetTb2w(void); - vector * GetCoeff(void) const { return Coeff; } + std::vector * GetCoeff(void) const { return Coeff; } private: enum eAxisType {atNone, atLiftDrag, atAxialNormal, atBodyXYZ} axisType; - typedef map AxisIndex; + typedef std::map AxisIndex; AxisIndex AxisIdx; FGFunction* AeroRPShift; - vector variables; + std::vector variables; typedef vector CoeffArray; CoeffArray* Coeff; FGColumnVector3 vFnative; diff --git a/src/FDM/JSBSim/models/FGAircraft.cpp b/src/FDM/JSBSim/models/FGAircraft.cpp index 2e65dc021..83a1bf177 100644 --- a/src/FDM/JSBSim/models/FGAircraft.cpp +++ b/src/FDM/JSBSim/models/FGAircraft.cpp @@ -52,7 +52,11 @@ INCLUDES #include "FGAerodynamics.h" #include "FGFDMExec.h" #include "FGPropagate.h" +#include "FGPropulsion.h" #include "input_output/FGPropertyManager.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGAircraft.h b/src/FDM/JSBSim/models/FGAircraft.h index 10f75aa0b..a66665c06 100644 --- a/src/FDM/JSBSim/models/FGAircraft.h +++ b/src/FDM/JSBSim/models/FGAircraft.h @@ -38,6 +38,7 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include #include "FGModel.h" @@ -131,7 +132,7 @@ public: /** 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; } @@ -163,7 +164,7 @@ public: 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;} @@ -193,7 +194,7 @@ private: double HTailArea, VTailArea, HTailArm, VTailArm; double lbarh,lbarv,vbarh,vbarv; int HoldDown; - string AircraftName; + std::string AircraftName; void Debug(int from); }; diff --git a/src/FDM/JSBSim/models/FGAtmosphere.cpp b/src/FDM/JSBSim/models/FGAtmosphere.cpp index e1daeb0f9..c21e45cbc 100644 --- a/src/FDM/JSBSim/models/FGAtmosphere.cpp +++ b/src/FDM/JSBSim/models/FGAtmosphere.cpp @@ -54,6 +54,10 @@ INCLUDES #include "FGPropagate.h" #include "FGInertial.h" #include "input_output/FGPropertyManager.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGAuxiliary.cpp b/src/FDM/JSBSim/models/FGAuxiliary.cpp index 465c2468f..d8a8d77c0 100755 --- a/src/FDM/JSBSim/models/FGAuxiliary.cpp +++ b/src/FDM/JSBSim/models/FGAuxiliary.cpp @@ -51,7 +51,11 @@ INCLUDES #include "FGBuoyantForces.h" #include "FGGroundReactions.h" #include "FGPropulsion.h" +#include "FGMassBalance.h" #include "input_output/FGPropertyManager.h" +#include + +using namespace std; namespace JSBSim { @@ -392,6 +396,13 @@ void FGAuxiliary::CalculateRelativePosition(void) 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 diff --git a/src/FDM/JSBSim/models/FGAuxiliary.h b/src/FDM/JSBSim/models/FGAuxiliary.h index 751dd14f1..e3baa4911 100644 --- a/src/FDM/JSBSim/models/FGAuxiliary.h +++ b/src/FDM/JSBSim/models/FGAuxiliary.h @@ -40,7 +40,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGModel.h" -#include "FGFDMExec.h" #include "math/FGColumnVector3.h" #include "math/FGLocation.h" #include "FGPropagate.h" @@ -172,15 +171,15 @@ public: 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; } @@ -281,6 +280,7 @@ private: void CalculateRelativePosition(void); void bind(void); + double BadUnits(void) const; void Debug(int from); }; diff --git a/src/FDM/JSBSim/models/FGBuoyantForces.cpp b/src/FDM/JSBSim/models/FGBuoyantForces.cpp index 4827793ca..44ecd6595 100644 --- a/src/FDM/JSBSim/models/FGBuoyantForces.cpp +++ b/src/FDM/JSBSim/models/FGBuoyantForces.cpp @@ -39,6 +39,9 @@ INCLUDES #include "FGBuoyantForces.h" #include "FGMassBalance.h" #include "input_output/FGPropertyManager.h" // Need? +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGExternalForce.cpp b/src/FDM/JSBSim/models/FGExternalForce.cpp index 48884c4d1..fa1d35d22 100755 --- a/src/FDM/JSBSim/models/FGExternalForce.cpp +++ b/src/FDM/JSBSim/models/FGExternalForce.cpp @@ -53,6 +53,10 @@ */ #include "FGExternalForce.h" +#include "input_output/FGXMLElement.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGExternalReactions.cpp b/src/FDM/JSBSim/models/FGExternalReactions.cpp index 6bff2bb46..58a334364 100755 --- a/src/FDM/JSBSim/models/FGExternalReactions.cpp +++ b/src/FDM/JSBSim/models/FGExternalReactions.cpp @@ -37,8 +37,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGExternalReactions.h" +#include "input_output/FGXMLElement.h" +#include #include +using namespace std; + namespace JSBSim { /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/models/FGExternalReactions.h b/src/FDM/JSBSim/models/FGExternalReactions.h index 08e2e6cc1..c6f65fe10 100755 --- a/src/FDM/JSBSim/models/FGExternalReactions.h +++ b/src/FDM/JSBSim/models/FGExternalReactions.h @@ -40,7 +40,7 @@ INCLUDES #include "FGModel.h" #include "FGExternalForce.h" -#include "input_output/FGXMLElement.h" +#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -54,6 +54,8 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -154,7 +156,7 @@ public: private: - vector Forces; + std::vector Forces; unsigned int numForces; FGColumnVector3 vTotalForces; FGColumnVector3 vTotalMoments; diff --git a/src/FDM/JSBSim/models/FGFCS.cpp b/src/FDM/JSBSim/models/FGFCS.cpp index aaca68478..3ee958110 100644 --- a/src/FDM/JSBSim/models/FGFCS.cpp +++ b/src/FDM/JSBSim/models/FGFCS.cpp @@ -39,6 +39,7 @@ INCLUDES #include "FGFCS.h" #include "FGFDMExec.h" +#include "FGGroundReactions.h" #include "input_output/FGPropertyManager.h" #include #include @@ -58,6 +59,8 @@ INCLUDES #include "models/flight_control/FGMagnetometer.h" #include "models/flight_control/FGGyro.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; @@ -685,7 +688,7 @@ double FGFCS::GetBrake(FGLGear::BrakeGroup bg) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGFCS::FindSystemFullPathname(string system_filename) +string FGFCS::FindSystemFullPathname(const string& system_filename) { string fullpath, localpath; string systemPath = FDMExec->GetSystemsPath(); @@ -713,7 +716,7 @@ string FGFCS::FindSystemFullPathname(string system_filename) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -ifstream* FGFCS::FindSystemFile(string system_filename) +ifstream* FGFCS::FindSystemFile(const string& system_filename) { string fullpath, localpath; string systemPath = FDMExec->GetSystemsPath(); @@ -738,7 +741,7 @@ ifstream* FGFCS::FindSystemFile(string system_filename) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGFCS::GetComponentStrings(string delimeter) +string FGFCS::GetComponentStrings(const string& delimiter) { unsigned int comp; string CompStrings = ""; @@ -747,7 +750,7 @@ string FGFCS::GetComponentStrings(string delimeter) for (unsigned int i=0; iGetName(); total_count++; @@ -756,7 +759,7 @@ string FGFCS::GetComponentStrings(string delimeter) for (comp = 0; comp < APComponents.size(); comp++) { if (firstime) firstime = false; - else CompStrings += delimeter; + else CompStrings += delimiter; CompStrings += APComponents[comp]->GetName(); total_count++; @@ -764,7 +767,7 @@ string FGFCS::GetComponentStrings(string delimeter) for (comp = 0; comp < FCSComponents.size(); comp++) { if (firstime) firstime = false; - else CompStrings += delimeter; + else CompStrings += delimiter; CompStrings += FCSComponents[comp]->GetName(); total_count++; @@ -775,7 +778,7 @@ string FGFCS::GetComponentStrings(string delimeter) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGFCS::GetComponentValues(string delimeter) +string FGFCS::GetComponentValues(const string& delimiter) { std::ostringstream buf; @@ -785,7 +788,7 @@ string FGFCS::GetComponentValues(string delimeter) for (unsigned int i=0; iGetOutput(); total_count++; @@ -793,7 +796,7 @@ string FGFCS::GetComponentValues(string delimeter) 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++; @@ -801,7 +804,7 @@ string FGFCS::GetComponentValues(string delimeter) 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++; diff --git a/src/FDM/JSBSim/models/FGFCS.h b/src/FDM/JSBSim/models/FGFCS.h index 8d4f521c1..b00c037a9 100644 --- a/src/FDM/JSBSim/models/FGFCS.h +++ b/src/FDM/JSBSim/models/FGFCS.h @@ -38,6 +38,7 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include #include @@ -352,15 +353,15 @@ public: 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 //@{ @@ -537,8 +538,8 @@ public: @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); @@ -551,20 +552,20 @@ private: double DePos[NForms], DaLPos[NForms], DaRPos[NForms], DrPos[NForms]; double DfPos[NForms], DsbPos[NForms], DspPos[NForms]; double PTrimCmd, YTrimCmd, RTrimCmd; - vector ThrottleCmd; - vector ThrottlePos; - vector MixtureCmd; - vector MixturePos; - vector PropAdvanceCmd; - vector PropAdvance; - vector PropFeatherCmd; - vector PropFeather; - vector SteerPosDeg; + std::vector ThrottleCmd; + std::vector ThrottlePos; + std::vector MixtureCmd; + std::vector MixturePos; + std::vector PropAdvanceCmd; + std::vector PropAdvance; + std::vector PropFeatherCmd; + std::vector PropFeather; + std::vector SteerPosDeg; double LeftBrake, RightBrake, CenterBrake; // Brake settings double GearCmd,GearPos; double TailhookPos, WingFoldPos; - typedef vector FCSCompVec; + typedef std::vector FCSCompVec; FCSCompVec Systems; FCSCompVec FCSComponents; FCSCompVec APComponents; diff --git a/src/FDM/JSBSim/models/FGGasCell.cpp b/src/FDM/JSBSim/models/FGGasCell.cpp index 3b1278fa4..73c5091dd 100644 --- a/src/FDM/JSBSim/models/FGGasCell.cpp +++ b/src/FDM/JSBSim/models/FGGasCell.cpp @@ -41,10 +41,15 @@ INCLUDES #include "models/FGInertial.h" #include "models/FGMassBalance.h" #include "FGGasCell.h" +#include "input_output/FGXMLElement.h" +#include +#include using std::cerr; using std::endl; using std::cout; +using std::string; +using std::max; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGGasCell.h b/src/FDM/JSBSim/models/FGGasCell.h index 0ad485cee..0aae911b1 100644 --- a/src/FDM/JSBSim/models/FGGasCell.h +++ b/src/FDM/JSBSim/models/FGGasCell.h @@ -40,16 +40,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGJSBBase.h" -#include "input_output/FGXMLElement.h" #include "math/FGColumnVector3.h" #include "models/propulsion/FGForce.h" #include "math/FGFunction.h" #include -using std::string; -using std::cerr; -using std::endl; -using std::cout; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -64,6 +59,7 @@ FORWARD DECLARATIONS namespace JSBSim { class FGBallonet; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -230,7 +226,7 @@ private: enum GasType {ttUNKNOWN, ttHYDROGEN, ttHELIUM, ttAIR}; GasType Type; - string type; + std::string type; int CellNum; // Structural constants double MaxVolume; // [ft�] diff --git a/src/FDM/JSBSim/models/FGGroundReactions.cpp b/src/FDM/JSBSim/models/FGGroundReactions.cpp index 36837004a..4de1c1960 100644 --- a/src/FDM/JSBSim/models/FGGroundReactions.cpp +++ b/src/FDM/JSBSim/models/FGGroundReactions.cpp @@ -39,8 +39,11 @@ INCLUDES #include #include "FGGroundReactions.h" +#include "FGFCS.h" #include "input_output/FGPropertyManager.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/models/FGInertial.cpp b/src/FDM/JSBSim/models/FGInertial.cpp index a14245bca..9bff3f6e8 100644 --- a/src/FDM/JSBSim/models/FGInertial.cpp +++ b/src/FDM/JSBSim/models/FGInertial.cpp @@ -40,6 +40,9 @@ INCLUDES #include "FGPropagate.h" #include "FGState.h" #include "FGMassBalance.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGInput.cpp b/src/FDM/JSBSim/models/FGInput.cpp index 4715ad05a..6ba43df4e 100755 --- a/src/FDM/JSBSim/models/FGInput.cpp +++ b/src/FDM/JSBSim/models/FGInput.cpp @@ -42,8 +42,14 @@ INCLUDES #include "FGState.h" #include "FGFDMExec.h" -#include +#include "input_output/FGfdmSocket.h" +#include "input_output/FGXMLElement.h" + +#include #include +#include + +using namespace std; namespace JSBSim { @@ -89,9 +95,8 @@ bool FGInput::InitModel(void) 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; @@ -157,8 +162,9 @@ bool FGInput::Run(void) 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 @@ -180,12 +186,12 @@ bool FGInput::Run(void) } 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 diff --git a/src/FDM/JSBSim/models/FGInput.h b/src/FDM/JSBSim/models/FGInput.h index 840b24d66..58aa9ebdb 100755 --- a/src/FDM/JSBSim/models/FGInput.h +++ b/src/FDM/JSBSim/models/FGInput.h @@ -40,11 +40,7 @@ INCLUDES #include "FGModel.h" -#include -#include - -#include "input_output/FGfdmSocket.h" -#include "input_output/FGXMLElement.h" +#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -58,6 +54,10 @@ FORWARD DECLARATIONS namespace JSBSim { +class FGFDMExec; +class Element; +class FGfdmSocket; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -78,7 +78,6 @@ public: 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;} @@ -88,7 +87,7 @@ private: bool sFirstPass, dFirstPass, enabled; unsigned int port; FGfdmSocket* socket; - string data; + std::string data; void Debug(int from); }; } diff --git a/src/FDM/JSBSim/models/FGLGear.cpp b/src/FDM/JSBSim/models/FGLGear.cpp index a470fd5f4..b0c448b41 100644 --- a/src/FDM/JSBSim/models/FGLGear.cpp +++ b/src/FDM/JSBSim/models/FGLGear.cpp @@ -41,6 +41,16 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #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 + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGLGear.h b/src/FDM/JSBSim/models/FGLGear.h index 14f57510c..dfba5bbf0 100644 --- a/src/FDM/JSBSim/models/FGLGear.h +++ b/src/FDM/JSBSim/models/FGLGear.h @@ -38,11 +38,8 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include "FGFDMExec.h" #include "models/propulsion/FGForce.h" -#include "input_output/FGXMLElement.h" #include "math/FGColumnVector3.h" -#include "math/FGTable.h" #include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -63,6 +60,8 @@ class FGFCS; class FGState; class FGMassBalance; class FGAuxiliary; +class FGTable; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -333,11 +332,11 @@ private: 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; @@ -377,12 +376,6 @@ private: void Debug(int from); }; } -#include "FGAircraft.h" -#include "FGPropagate.h" -#include "FGAuxiliary.h" -#include "FGFCS.h" -#include "FGMassBalance.h" -#include "FGState.h" //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/models/FGMassBalance.cpp b/src/FDM/JSBSim/models/FGMassBalance.cpp index a3b0d60fc..c866fa40a 100644 --- a/src/FDM/JSBSim/models/FGMassBalance.cpp +++ b/src/FDM/JSBSim/models/FGMassBalance.cpp @@ -42,6 +42,10 @@ INCLUDES #include "FGPropulsion.h" #include "FGBuoyantForces.h" #include "input_output/FGPropertyManager.h" +#include +#include + +using namespace std; namespace JSBSim { @@ -338,6 +342,24 @@ void FGMassBalance::bind(void) (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 diff --git a/src/FDM/JSBSim/models/FGMassBalance.h b/src/FDM/JSBSim/models/FGMassBalance.h index 46f99e435..686b27b74 100644 --- a/src/FDM/JSBSim/models/FGMassBalance.h +++ b/src/FDM/JSBSim/models/FGMassBalance.h @@ -189,24 +189,10 @@ private: 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 PointMasses; + std::vector PointMasses; void bind(void); void Debug(int from); diff --git a/src/FDM/JSBSim/models/FGModel.cpp b/src/FDM/JSBSim/models/FGModel.cpp index bb41c22f8..3a16f493a 100644 --- a/src/FDM/JSBSim/models/FGModel.cpp +++ b/src/FDM/JSBSim/models/FGModel.cpp @@ -52,6 +52,9 @@ INCLUDES #include "FGAircraft.h" #include "FGPropagate.h" #include "FGAuxiliary.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/FGModel.h b/src/FDM/JSBSim/models/FGModel.h index 859db0b41..bfba0af48 100644 --- a/src/FDM/JSBSim/models/FGModel.h +++ b/src/FDM/JSBSim/models/FGModel.h @@ -39,10 +39,7 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGJSBBase.h" -#include "input_output/FGPropertyManager.h" -#include "input_output/FGXMLElement.h" -#include #include #include @@ -52,8 +49,6 @@ DEFINITIONS #define ID_MODEL "$Id$" -using namespace std; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -74,6 +69,8 @@ class FGBuoyantForces; class FGAircraft; class FGPropagate; class FGAuxiliary; +class Element; +class FGPropertyManager; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -102,7 +99,7 @@ public: virtual bool Load(Element* el); FGModel* NextModel; - string Name; + std::string Name; /** Runs the model; called by the Executive @see JSBSim.cpp documentation @@ -137,7 +134,7 @@ protected: FGAuxiliary* Auxiliary; FGPropertyManager* PropertyManager; - vector interface_properties; + std::vector interface_properties; }; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% diff --git a/src/FDM/JSBSim/models/FGOutput.cpp b/src/FDM/JSBSim/models/FGOutput.cpp index 87d7cee24..2e509ff63 100644 --- a/src/FDM/JSBSim/models/FGOutput.cpp +++ b/src/FDM/JSBSim/models/FGOutput.cpp @@ -53,13 +53,16 @@ INCLUDES #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 +#include #include #include +#include #include "input_output/net_fdm.hxx" +#include "input_output/FGfdmSocket.h" #if defined(WIN32) && !defined(__CYGWIN__) # include @@ -70,6 +73,8 @@ INCLUDES static const int endianTest = 1; #define isLittleEndian (*((char *) &endianTest ) != 0) +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; @@ -157,20 +162,17 @@ FGOutput::~FGOutput() 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; @@ -205,7 +207,7 @@ bool FGOutput::Run(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void FGOutput::SetType(string type) +void FGOutput::SetType(const string& type) { if (type == "CSV") { Type = otCSV; @@ -227,7 +229,7 @@ void FGOutput::SetType(string type) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void FGOutput::DelimitedOutput(string fname) +void FGOutput::DelimitedOutput(const string& fname) { streambuf* buffer; string scratch = ""; @@ -918,7 +920,7 @@ void FGOutput::SocketOutput(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -void FGOutput::SocketStatusOutput(string out_str) +void FGOutput::SocketStatusOutput(const string& out_str) { string asciiData; diff --git a/src/FDM/JSBSim/models/FGOutput.h b/src/FDM/JSBSim/models/FGOutput.h index 1646dadb0..cd1ca6e30 100644 --- a/src/FDM/JSBSim/models/FGOutput.h +++ b/src/FDM/JSBSim/models/FGOutput.h @@ -41,14 +41,11 @@ INCLUDES #include "FGModel.h" -#include #include -#include "input_output/FGfdmSocket.h" #include "input_output/FGXMLFileRead.h" #include "input_output/net_fdm.hxx" - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -61,6 +58,8 @@ FORWARD DECLARATIONS namespace JSBSim { +class FGfdmSocket; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -140,22 +139,22 @@ public: 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;} @@ -185,11 +184,11 @@ private: 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 OutputProperties; + std::vector OutputProperties; void Debug(int from); }; diff --git a/src/FDM/JSBSim/models/FGPropagate.cpp b/src/FDM/JSBSim/models/FGPropagate.cpp index 432ec509b..f2a1251fc 100644 --- a/src/FDM/JSBSim/models/FGPropagate.cpp +++ b/src/FDM/JSBSim/models/FGPropagate.cpp @@ -54,7 +54,8 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include -#include +#include +#include #include "FGPropagate.h" #include "FGFDMExec.h" @@ -64,6 +65,8 @@ INCLUDES #include "FGInertial.h" #include "input_output/FGPropertyManager.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/models/FGPropulsion.cpp b/src/FDM/JSBSim/models/FGPropulsion.cpp index 88fbff084..b6e6c14ea 100644 --- a/src/FDM/JSBSim/models/FGPropulsion.cpp +++ b/src/FDM/JSBSim/models/FGPropulsion.cpp @@ -45,15 +45,24 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #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 #include +#include + +using namespace std; namespace JSBSim { @@ -330,7 +339,7 @@ bool FGPropulsion::Load(Element* el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGPropulsion::FindEngineFullPathname(string engine_filename) +string FGPropulsion::FindEngineFullPathname(const string& engine_filename) { string fullpath, localpath; string enginePath = FDMExec->GetEnginePath(); @@ -358,7 +367,7 @@ string FGPropulsion::FindEngineFullPathname(string engine_filename) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -ifstream* FGPropulsion::FindEngineFile(string engine_filename) +ifstream* FGPropulsion::FindEngineFile(const string& engine_filename) { string fullpath, localpath; string enginePath = FDMExec->GetEnginePath(); @@ -383,7 +392,7 @@ ifstream* FGPropulsion::FindEngineFile(string engine_filename) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGPropulsion::GetPropulsionStrings(string delimeter) +string FGPropulsion::GetPropulsionStrings(const string& delimiter) { unsigned int i; @@ -393,13 +402,13 @@ string FGPropulsion::GetPropulsionStrings(string delimeter) for (i=0; iGetEngineLabels(delimeter); + PropulsionStrings += Engines[i]->GetEngineLabels(delimiter); } for (i=0; iGetType() == 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; @@ -407,7 +416,7 @@ string FGPropulsion::GetPropulsionStrings(string delimeter) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -string FGPropulsion::GetPropulsionValues(string delimeter) +string FGPropulsion::GetPropulsionValues(const string& delimiter) { unsigned int i; @@ -417,12 +426,12 @@ string FGPropulsion::GetPropulsionValues(string delimeter) for (i=0; iGetEngineValues(delimeter); + PropulsionValues += Engines[i]->GetEngineValues(delimiter); } for (i=0; iGetContents(); } diff --git a/src/FDM/JSBSim/models/FGPropulsion.h b/src/FDM/JSBSim/models/FGPropulsion.h index 3ef37afec..ce62a60ea 100644 --- a/src/FDM/JSBSim/models/FGPropulsion.h +++ b/src/FDM/JSBSim/models/FGPropulsion.h @@ -39,11 +39,9 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include -#include +#include #include "FGModel.h" -#include "models/propulsion/FGEngine.h" -#include "models/propulsion/FGTank.h" #include "math/FGMatrix33.h" #include "input_output/FGXMLFileRead.h" @@ -59,6 +57,9 @@ FORWARD DECLARATIONS namespace JSBSim { +class FGTank; +class FGEngine; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -157,8 +158,8 @@ public: /** 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);} @@ -176,8 +177,8 @@ public: 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;} @@ -190,8 +191,8 @@ public: FGMatrix33& CalculateTankInertias(void); private: - vector Engines; - vector Tanks; + std::vector Engines; + std::vector Tanks; unsigned int numSelectedFuelTanks; unsigned int numSelectedOxiTanks; unsigned int numFuelTanks; diff --git a/src/FDM/JSBSim/models/atmosphere/FGMSIS.cpp b/src/FDM/JSBSim/models/atmosphere/FGMSIS.cpp index 590e3f6d3..032858101 100755 --- a/src/FDM/JSBSim/models/atmosphere/FGMSIS.cpp +++ b/src/FDM/JSBSim/models/atmosphere/FGMSIS.cpp @@ -59,11 +59,11 @@ INCLUDES #include "FGMSIS.h" #include "FGState.h" -#include /* maths functions */ -#include /* for malloc/free */ -#include /* for printf */ +#include /* maths functions */ #include // for cout, endl +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; @@ -322,7 +322,7 @@ double MSIS::dnet (double dd, double dm, double zhm, double xmm, double xm) 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) @@ -400,7 +400,7 @@ void MSIS::splint (double *xa, double *ya, double *y2a, int n, double x, double } 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; @@ -422,9 +422,9 @@ void MSIS::spline (double *x, double *y, int n, double yp1, double ypn, double * 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) { @@ -451,7 +451,7 @@ void MSIS::spline (double *x, double *y, int n, double yp1, double ypn, double * for (k=n-2;k>=0;k--) y2[k] = y2[k] * y2[k+1] + u[k]; - free(u); + delete u; } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -964,7 +964,7 @@ double MSIS::glob7s(double *p, struct nrlmsise_input *input, 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++) @@ -1247,7 +1247,7 @@ void MSIS::ghp7(struct nrlmsise_input *input, struct nrlmsise_flags *flags, if (sqrt(diff*diff)d[5] / xn / 1.66E-24; diff --git a/src/FDM/JSBSim/models/atmosphere/FGMars.cpp b/src/FDM/JSBSim/models/atmosphere/FGMars.cpp index 3bd737926..7bebc7d34 100755 --- a/src/FDM/JSBSim/models/atmosphere/FGMars.cpp +++ b/src/FDM/JSBSim/models/atmosphere/FGMars.cpp @@ -43,6 +43,9 @@ INCLUDES #include "FGMars.h" #include "FGState.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGAccelerometer.cpp b/src/FDM/JSBSim/models/flight_control/FGAccelerometer.cpp index e5c529de5..1148c81b6 100755 --- a/src/FDM/JSBSim/models/flight_control/FGAccelerometer.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGAccelerometer.cpp @@ -38,6 +38,10 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGAccelerometer.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGActuator.cpp b/src/FDM/JSBSim/models/flight_control/FGActuator.cpp index e7ba4205f..ae2aa38b7 100755 --- a/src/FDM/JSBSim/models/flight_control/FGActuator.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGActuator.cpp @@ -39,6 +39,8 @@ INCLUDES #include "FGActuator.h" +using namespace std; + namespace JSBSim { static const char *IdSrc = "$Id$"; diff --git a/src/FDM/JSBSim/models/flight_control/FGDeadBand.cpp b/src/FDM/JSBSim/models/flight_control/FGDeadBand.cpp index babd910e2..3d0689d38 100644 --- a/src/FDM/JSBSim/models/flight_control/FGDeadBand.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGDeadBand.cpp @@ -38,6 +38,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGDeadBand.h" +#include "input_output/FGXMLElement.h" +#include "input_output/FGPropertyManager.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGDeadBand.h b/src/FDM/JSBSim/models/flight_control/FGDeadBand.h index 82523bdc5..9dd4a39a3 100644 --- a/src/FDM/JSBSim/models/flight_control/FGDeadBand.h +++ b/src/FDM/JSBSim/models/flight_control/FGDeadBand.h @@ -38,7 +38,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -53,6 +52,8 @@ FORWARD DECLARATIONS namespace JSBSim { class FGFCS; +class Element; +class FGPropertyManager; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION diff --git a/src/FDM/JSBSim/models/flight_control/FGFCSComponent.cpp b/src/FDM/JSBSim/models/flight_control/FGFCSComponent.cpp index e2e4e1b95..d1f454555 100644 --- a/src/FDM/JSBSim/models/flight_control/FGFCSComponent.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGFCSComponent.cpp @@ -38,6 +38,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" +#include "input_output/FGPropertyManager.h" +#include "input_output/FGXMLElement.h" +#include +#include + +using namespace std; namespace JSBSim { @@ -147,6 +153,8 @@ FGFCSComponent::FGFCSComponent(FGFCS* _fcs, Element* element) : fcs(_fcs) 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; } diff --git a/src/FDM/JSBSim/models/flight_control/FGFCSComponent.h b/src/FDM/JSBSim/models/flight_control/FGFCSComponent.h index f64b204c3..b1fc2c6c5 100644 --- a/src/FDM/JSBSim/models/flight_control/FGFCSComponent.h +++ b/src/FDM/JSBSim/models/flight_control/FGFCSComponent.h @@ -38,8 +38,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGJSBBase.h" -#include "input_output/FGPropertyManager.h" -#include "input_output/FGXMLElement.h" #include #include @@ -49,9 +47,6 @@ DEFINITIONS #define ID_FCSCOMPONENT "$Id$" -using std::string; -using std::vector; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -59,6 +54,8 @@ FORWARD DECLARATIONS namespace JSBSim { class FGFCS; +class FGPropertyManager; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -102,22 +99,22 @@ public: 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 OutputNodes; + std::vector OutputNodes; FGPropertyManager* ClipMinPropertyNode; FGPropertyManager* ClipMaxPropertyNode; - vector InputNodes; - vector InputSigns; - vector output_array; - string Type; - string Name; + std::vector InputNodes; + std::vector InputSigns; + std::vector output_array; + std::string Type; + std::string Name; double Input; double Output; double clipmax, clipmin; diff --git a/src/FDM/JSBSim/models/flight_control/FGFCSFunction.cpp b/src/FDM/JSBSim/models/flight_control/FGFCSFunction.cpp index b8512bb41..d8a91572e 100755 --- a/src/FDM/JSBSim/models/flight_control/FGFCSFunction.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGFCSFunction.cpp @@ -38,6 +38,10 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSFunction.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGFilter.cpp b/src/FDM/JSBSim/models/flight_control/FGFilter.cpp index 6122e15d0..f0ca49064 100644 --- a/src/FDM/JSBSim/models/flight_control/FGFilter.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGFilter.cpp @@ -38,6 +38,13 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFilter.h" +#include "input_output/FGXMLElement.h" +#include "input_output/FGPropertyManager.h" + +#include +#include + +using namespace std; namespace JSBSim { @@ -54,9 +61,10 @@ FGFilter::FGFilter(FGFCS* fcs, Element* element) : FGFCSComponent(fcs, element) 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 ; @@ -66,13 +74,6 @@ FGFilter::FGFilter(FGFCS* fcs, Element* element) : FGFCSComponent(fcs, element) 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")); } @@ -97,13 +98,13 @@ FGFilter::~FGFilter() 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; diff --git a/src/FDM/JSBSim/models/flight_control/FGFilter.h b/src/FDM/JSBSim/models/flight_control/FGFilter.h index 5e7f10b74..7aeafc202 100644 --- a/src/FDM/JSBSim/models/flight_control/FGFilter.h +++ b/src/FDM/JSBSim/models/flight_control/FGFilter.h @@ -38,7 +38,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -52,6 +51,10 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; +class FGPropertyManager; +class FGFCS; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ diff --git a/src/FDM/JSBSim/models/flight_control/FGGain.cpp b/src/FDM/JSBSim/models/flight_control/FGGain.cpp index f72e6c4f4..0ecb8c645 100644 --- a/src/FDM/JSBSim/models/flight_control/FGGain.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGGain.cpp @@ -38,6 +38,12 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGGain.h" +#include "input_output/FGXMLElement.h" +#include +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGGain.h b/src/FDM/JSBSim/models/flight_control/FGGain.h index 543a3d883..525c4e449 100644 --- a/src/FDM/JSBSim/models/flight_control/FGGain.h +++ b/src/FDM/JSBSim/models/flight_control/FGGain.h @@ -38,12 +38,8 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include -#include "input_output/FGXMLElement.h" #include "math/FGTable.h" -using std::string; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -57,6 +53,7 @@ FORWARD DECLARATIONS namespace JSBSim { class FGFCS; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION diff --git a/src/FDM/JSBSim/models/flight_control/FGGradient.cpp b/src/FDM/JSBSim/models/flight_control/FGGradient.cpp index 15af4c5f3..2325dec1e 100644 --- a/src/FDM/JSBSim/models/flight_control/FGGradient.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGGradient.cpp @@ -38,6 +38,9 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGGradient.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGGyro.cpp b/src/FDM/JSBSim/models/flight_control/FGGyro.cpp index f48af626c..740c01e3a 100755 --- a/src/FDM/JSBSim/models/flight_control/FGGyro.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGGyro.cpp @@ -38,6 +38,9 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGGyro.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGKinemat.cpp b/src/FDM/JSBSim/models/flight_control/FGKinemat.cpp index d25182a13..931c1740c 100644 --- a/src/FDM/JSBSim/models/flight_control/FGKinemat.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGKinemat.cpp @@ -38,8 +38,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGKinemat.h" -#include -#include +#include "input_output/FGXMLElement.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGKinemat.h b/src/FDM/JSBSim/models/flight_control/FGKinemat.h index f836567d1..8dcc73bb8 100644 --- a/src/FDM/JSBSim/models/flight_control/FGKinemat.h +++ b/src/FDM/JSBSim/models/flight_control/FGKinemat.h @@ -38,12 +38,7 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" #include -#include - -using std::vector; -using std::string; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -134,8 +129,8 @@ public: bool Run (void); private: - vector Detents; - vector TransitionTimes; + std::vector Detents; + std::vector TransitionTimes; int NumDetents; double OutputPct; bool DoScale; diff --git a/src/FDM/JSBSim/models/flight_control/FGMagnetometer.cpp b/src/FDM/JSBSim/models/flight_control/FGMagnetometer.cpp index c4be3c471..368d3524e 100755 --- a/src/FDM/JSBSim/models/flight_control/FGMagnetometer.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGMagnetometer.cpp @@ -40,6 +40,10 @@ INCLUDES #include "FGMagnetometer.h" #include "simgear/magvar/coremag.hxx" #include +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGPID.cpp b/src/FDM/JSBSim/models/flight_control/FGPID.cpp index 7df31c67c..3dda266f2 100755 --- a/src/FDM/JSBSim/models/flight_control/FGPID.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGPID.cpp @@ -36,6 +36,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGPID.h" +#include "input_output/FGXMLElement.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGPID.h b/src/FDM/JSBSim/models/flight_control/FGPID.h index 670c1af23..adad3606c 100755 --- a/src/FDM/JSBSim/models/flight_control/FGPID.h +++ b/src/FDM/JSBSim/models/flight_control/FGPID.h @@ -39,8 +39,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" -#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -48,10 +46,6 @@ DEFINITIONS #define ID_PID "$Id$" -using std::string; - -using std::string; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -59,6 +53,7 @@ FORWARD DECLARATIONS namespace JSBSim { class FGFCS; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION diff --git a/src/FDM/JSBSim/models/flight_control/FGSensor.cpp b/src/FDM/JSBSim/models/flight_control/FGSensor.cpp index d2f9243d9..1ca89b6ba 100755 --- a/src/FDM/JSBSim/models/flight_control/FGSensor.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGSensor.cpp @@ -38,6 +38,11 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGSensor.h" +#include "input_output/FGXMLElement.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGSensor.h b/src/FDM/JSBSim/models/flight_control/FGSensor.h index 18699e966..136099536 100755 --- a/src/FDM/JSBSim/models/flight_control/FGSensor.h +++ b/src/FDM/JSBSim/models/flight_control/FGSensor.h @@ -38,8 +38,7 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" -#include +#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -53,8 +52,8 @@ FORWARD DECLARATIONS namespace JSBSim { -using std::vector; class FGFCS; +class Element; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -155,7 +154,7 @@ protected: bool fail_low; bool fail_high; bool fail_stuck; - string quant_property; + std::string quant_property; void ProcessSensorSignal(void); void Noise(void); diff --git a/src/FDM/JSBSim/models/flight_control/FGSensorOrientation.h b/src/FDM/JSBSim/models/flight_control/FGSensorOrientation.h index cbd43de89..4f6d52f3e 100755 --- a/src/FDM/JSBSim/models/flight_control/FGSensorOrientation.h +++ b/src/FDM/JSBSim/models/flight_control/FGSensorOrientation.h @@ -42,6 +42,8 @@ INCLUDES #include "math/FGColumnVector3.h" #include "math/FGMatrix33.h" +#include + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -77,7 +79,7 @@ public: { 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) { @@ -89,7 +91,7 @@ public: } 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; } } diff --git a/src/FDM/JSBSim/models/flight_control/FGSummer.cpp b/src/FDM/JSBSim/models/flight_control/FGSummer.cpp index c8a1fcadc..e77ee7208 100644 --- a/src/FDM/JSBSim/models/flight_control/FGSummer.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGSummer.cpp @@ -38,6 +38,10 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGSummer.h" +#include "input_output/FGXMLElement.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/flight_control/FGSummer.h b/src/FDM/JSBSim/models/flight_control/FGSummer.h index 9ffeddb8e..e37642855 100644 --- a/src/FDM/JSBSim/models/flight_control/FGSummer.h +++ b/src/FDM/JSBSim/models/flight_control/FGSummer.h @@ -38,9 +38,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGFCSComponent.h" -#include "input_output/FGXMLElement.h" -#include -#include /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS @@ -48,18 +45,14 @@ 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 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ diff --git a/src/FDM/JSBSim/models/flight_control/FGSwitch.cpp b/src/FDM/JSBSim/models/flight_control/FGSwitch.cpp index 76b9fc1e6..c29c72277 100644 --- a/src/FDM/JSBSim/models/flight_control/FGSwitch.cpp +++ b/src/FDM/JSBSim/models/flight_control/FGSwitch.cpp @@ -62,6 +62,10 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGSwitch.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGElectric.cpp b/src/FDM/JSBSim/models/propulsion/FGElectric.cpp index 255fb644d..1ab17c7b6 100644 --- a/src/FDM/JSBSim/models/propulsion/FGElectric.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGElectric.cpp @@ -40,7 +40,14 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGElectric.h" +#include "FGState.h" #include "models/FGPropulsion.h" +#include "models/propulsion/FGThruster.h" + +#include +#include + +using namespace std; namespace JSBSim { @@ -92,24 +99,24 @@ double FGElectric::Calculate(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } diff --git a/src/FDM/JSBSim/models/propulsion/FGElectric.h b/src/FDM/JSBSim/models/propulsion/FGElectric.h index 663a153f3..da4a575bb 100644 --- a/src/FDM/JSBSim/models/propulsion/FGElectric.h +++ b/src/FDM/JSBSim/models/propulsion/FGElectric.h @@ -83,8 +83,8 @@ public: 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: diff --git a/src/FDM/JSBSim/models/propulsion/FGEngine.cpp b/src/FDM/JSBSim/models/propulsion/FGEngine.cpp index ae447b05a..4c98cd3d1 100644 --- a/src/FDM/JSBSim/models/propulsion/FGEngine.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGEngine.cpp @@ -41,9 +41,16 @@ INCLUDES #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 #include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGEngine.h b/src/FDM/JSBSim/models/propulsion/FGEngine.h index 66ad9bf93..4876f571f 100644 --- a/src/FDM/JSBSim/models/propulsion/FGEngine.h +++ b/src/FDM/JSBSim/models/propulsion/FGEngine.h @@ -44,9 +44,8 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGJSBBase.h" -#include "FGThruster.h" -#include "input_output/FGPropertyManager.h" #include "input_output/FGXMLFileRead.h" +#include "math/FGColumnVector3.h" #include #include @@ -56,9 +55,6 @@ DEFINITIONS #define ID_ENGINE "$Id$" -using std::string; -using std::vector; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -75,6 +71,7 @@ class FGPropulsion; class FGAuxiliary; class FGThruster; class Element; +class FGPropertyManager; /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION @@ -187,8 +184,8 @@ public: 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. @@ -205,7 +202,7 @@ protected: virtual double CalcFuelNeed(void); FGPropertyManager* PropertyManager; - string Name; + std::string Name; const int EngineNumber; EngineType Type; double X, Y, Z; @@ -240,20 +237,10 @@ protected: FGAuxiliary* Auxiliary; FGThruster* Thruster; - vector SourceTanks; + std::vector 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 diff --git a/src/FDM/JSBSim/models/propulsion/FGForce.cpp b/src/FDM/JSBSim/models/propulsion/FGForce.cpp index 4d907e3f4..ff7532916 100644 --- a/src/FDM/JSBSim/models/propulsion/FGForce.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGForce.cpp @@ -46,6 +46,10 @@ and the cg. #include "models/FGPropagate.h" #include "models/FGMassBalance.h" #include "models/FGAerodynamics.h" +#include +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGNozzle.cpp b/src/FDM/JSBSim/models/propulsion/FGNozzle.cpp index 45b0065c4..fdbd1533f 100644 --- a/src/FDM/JSBSim/models/propulsion/FGNozzle.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGNozzle.cpp @@ -35,10 +35,15 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include +#include #include "FGNozzle.h" #include "models/FGAtmosphere.h" +#include "input_output/FGXMLElement.h" + +using namespace std; namespace JSBSim { @@ -59,14 +64,14 @@ FGNozzle::FGNozzle(FGFDMExec* FDMExec, Element* nozzle_element, int num) 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; diff --git a/src/FDM/JSBSim/models/propulsion/FGNozzle.h b/src/FDM/JSBSim/models/propulsion/FGNozzle.h index 5f1d070bf..4b5dc40a5 100644 --- a/src/FDM/JSBSim/models/propulsion/FGNozzle.h +++ b/src/FDM/JSBSim/models/propulsion/FGNozzle.h @@ -95,7 +95,7 @@ public: string GetThrusterValues(int id, string delimeter); private: - double PE; +// double PE; double Area; void Debug(int from); }; diff --git a/src/FDM/JSBSim/models/propulsion/FGPiston.cpp b/src/FDM/JSBSim/models/propulsion/FGPiston.cpp index d2a0831ac..116d20cc0 100644 --- a/src/FDM/JSBSim/models/propulsion/FGPiston.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGPiston.cpp @@ -43,8 +43,13 @@ INCLUDES #include #include "FGPiston.h" +#include "FGState.h" +#include "models/FGAtmosphere.h" #include "models/FGPropulsion.h" #include "FGPropeller.h" +#include + +using namespace std; namespace JSBSim { @@ -838,28 +843,28 @@ void FGPiston::doOilPressure(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } diff --git a/src/FDM/JSBSim/models/propulsion/FGPiston.h b/src/FDM/JSBSim/models/propulsion/FGPiston.h index cbcac2763..2bfb1971a 100644 --- a/src/FDM/JSBSim/models/propulsion/FGPiston.h +++ b/src/FDM/JSBSim/models/propulsion/FGPiston.h @@ -195,8 +195,8 @@ public: /// 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;} diff --git a/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp b/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp index a7e1a59c3..fb1be8ac1 100644 --- a/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGPropeller.cpp @@ -35,12 +35,16 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include #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 { diff --git a/src/FDM/JSBSim/models/propulsion/FGRocket.cpp b/src/FDM/JSBSim/models/propulsion/FGRocket.cpp index 0debff012..8f699bfd8 100644 --- a/src/FDM/JSBSim/models/propulsion/FGRocket.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGRocket.cpp @@ -38,9 +38,15 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include - #include "FGRocket.h" +#include "FGState.h" +#include "models/FGPropulsion.h" +#include "FGThruster.h" +#include "FGTank.h" + +using namespace std; namespace JSBSim { @@ -114,25 +120,23 @@ double FGRocket::Calculate(void) 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; } @@ -252,23 +256,23 @@ double FGRocket::CalcOxidizerNeed(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } diff --git a/src/FDM/JSBSim/models/propulsion/FGRocket.h b/src/FDM/JSBSim/models/propulsion/FGRocket.h index f96d02010..15235575b 100644 --- a/src/FDM/JSBSim/models/propulsion/FGRocket.h +++ b/src/FDM/JSBSim/models/propulsion/FGRocket.h @@ -159,8 +159,8 @@ public: 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. diff --git a/src/FDM/JSBSim/models/propulsion/FGRotor.cpp b/src/FDM/JSBSim/models/propulsion/FGRotor.cpp index 7c3de71a6..6ef33e7c0 100644 --- a/src/FDM/JSBSim/models/propulsion/FGRotor.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGRotor.cpp @@ -36,6 +36,9 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGRotor.h" +#include + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGTank.cpp b/src/FDM/JSBSim/models/propulsion/FGTank.cpp index ffeb56276..dced188c5 100644 --- a/src/FDM/JSBSim/models/propulsion/FGTank.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGTank.cpp @@ -37,11 +37,14 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGTank.h" +#include "FGFDMExec.h" #include "models/FGAuxiliary.h" +#include "input_output/FGXMLElement.h" +#include "input_output/FGPropertyManager.h" +#include +#include -using std::cerr; -using std::endl; -using std::cout; +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGTank.h b/src/FDM/JSBSim/models/propulsion/FGTank.h index 141d01003..7f4f75457 100644 --- a/src/FDM/JSBSim/models/propulsion/FGTank.h +++ b/src/FDM/JSBSim/models/propulsion/FGTank.h @@ -44,17 +44,10 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include "FGFDMExec.h" #include "FGJSBBase.h" -#include "input_output/FGXMLElement.h" #include "math/FGColumnVector3.h" #include -using std::string; -using std::cerr; -using std::endl; -using std::cout; - /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -67,6 +60,10 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; +class FGPropertyManager; +class FGFDMExec; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -281,8 +278,8 @@ private: TankType Type; GrainType grainType; int TankNumber; - string type; - string strGType; + std::string type; + std::string strGType; FGColumnVector3 vXYZ; FGColumnVector3 vXYZ_drain; double Capacity; diff --git a/src/FDM/JSBSim/models/propulsion/FGThruster.cpp b/src/FDM/JSBSim/models/propulsion/FGThruster.cpp index 9a5c38340..32a508ee1 100644 --- a/src/FDM/JSBSim/models/propulsion/FGThruster.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGThruster.cpp @@ -35,9 +35,13 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ +#include #include #include "FGThruster.h" +#include "input_output/FGXMLElement.h" + +using namespace std; namespace JSBSim { diff --git a/src/FDM/JSBSim/models/propulsion/FGThruster.h b/src/FDM/JSBSim/models/propulsion/FGThruster.h index 3c4836572..886b678dc 100644 --- a/src/FDM/JSBSim/models/propulsion/FGThruster.h +++ b/src/FDM/JSBSim/models/propulsion/FGThruster.h @@ -39,8 +39,6 @@ INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ #include "FGForce.h" -#include "input_output/FGXMLElement.h" -#include "input_output/FGPropertyManager.h" #include "math/FGColumnVector3.h" #include @@ -56,6 +54,9 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; +class FGPropertyManager; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ diff --git a/src/FDM/JSBSim/models/propulsion/FGTurbine.cpp b/src/FDM/JSBSim/models/propulsion/FGTurbine.cpp index f17c05ee7..b690d72f0 100644 --- a/src/FDM/JSBSim/models/propulsion/FGTurbine.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGTurbine.cpp @@ -39,10 +39,14 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include +#include #include - #include "FGTurbine.h" +#include "FGState.h" +#include "models/FGPropulsion.h" +#include "FGThruster.h" + +using namespace std; namespace JSBSim { @@ -489,26 +493,26 @@ bool FGTurbine::Load(FGFDMExec* exec, Element *el) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } diff --git a/src/FDM/JSBSim/models/propulsion/FGTurbine.h b/src/FDM/JSBSim/models/propulsion/FGTurbine.h index fbb8497c9..9eebc335d 100644 --- a/src/FDM/JSBSim/models/propulsion/FGTurbine.h +++ b/src/FDM/JSBSim/models/propulsion/FGTurbine.h @@ -40,10 +40,7 @@ SENTRY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include #include "FGEngine.h" -#include "input_output/FGXMLElement.h" -#include "math/FGFunction.h" #define ID_TURBINE "$Id$" @@ -53,6 +50,9 @@ FORWARD DECLARATIONS namespace JSBSim { +class Element; +class FGFunction; + /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% CLASS DOCUMENTATION %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ @@ -209,8 +209,8 @@ public: 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: diff --git a/src/FDM/JSBSim/models/propulsion/FGTurboProp.cpp b/src/FDM/JSBSim/models/propulsion/FGTurboProp.cpp index dce831412..9ebef96df 100755 --- a/src/FDM/JSBSim/models/propulsion/FGTurboProp.cpp +++ b/src/FDM/JSBSim/models/propulsion/FGTurboProp.cpp @@ -41,11 +41,15 @@ HISTORY INCLUDES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#include +#include #include #include "FGTurboProp.h" #include "FGPropeller.h" +#include "FGState.h" +#include "models/FGAuxiliary.h" + +using namespace std; namespace JSBSim { @@ -245,7 +249,10 @@ double FGTurboProp::Calculate(void) } //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); + } //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -438,7 +445,7 @@ double FGTurboProp::ExpSeek(double *var, double target, double accel_tau, double void FGTurboProp::SetDefaults(void) { - Name = "Not defined"; +// Name = "Not defined"; N1 = N2 = 0.0; Type = etTurboprop; MilThrust = 10000.0; @@ -468,27 +475,28 @@ void FGTurboProp::SetDefaults(void) //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -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(); } diff --git a/src/FDM/JSBSim/models/propulsion/FGTurboProp.h b/src/FDM/JSBSim/models/propulsion/FGTurboProp.h index d3b137538..cb10f85b9 100755 --- a/src/FDM/JSBSim/models/propulsion/FGTurboProp.h +++ b/src/FDM/JSBSim/models/propulsion/FGTurboProp.h @@ -147,8 +147,8 @@ public: 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: @@ -167,6 +167,7 @@ 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