1
0
Fork 0

Sync. w. JSBSim cvs

This commit is contained in:
ehofman 2009-10-26 13:29:58 +00:00 committed by Tim Moore
parent 7283e506b2
commit 82364aa4da
105 changed files with 860 additions and 692 deletions

View file

@ -66,6 +66,9 @@ INCLUDES
#include <iostream> #include <iostream>
#include <iterator> #include <iterator>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -713,13 +716,13 @@ void FGFDMExec::BuildPropertyCatalog(struct PropertyCatalogStructure* pcs)
{ {
struct PropertyCatalogStructure* pcsNew = new struct PropertyCatalogStructure; struct PropertyCatalogStructure* pcsNew = new struct PropertyCatalogStructure;
int node_idx = 0; int node_idx = 0;
char int_buf[10];
for (int i=0; i<pcs->node->nChildren(); i++) { for (int i=0; i<pcs->node->nChildren(); i++) {
pcsNew->base_string = pcs->base_string + "/" + pcs->node->getChild(i)->getName(); pcsNew->base_string = pcs->base_string + "/" + pcs->node->getChild(i)->getName();
node_idx = pcs->node->getChild(i)->getIndex(); node_idx = pcs->node->getChild(i)->getIndex();
sprintf(int_buf, "[%d]", node_idx); if (node_idx != 0) {
if (node_idx != 0) pcsNew->base_string += string(int_buf); pcsNew->base_string = CreateIndexedPropertyName(pcsNew->base_string, node_idx);
}
if (pcs->node->getChild(i)->nChildren() == 0) { if (pcs->node->getChild(i)->nChildren() == 0) {
if (pcsNew->base_string.substr(0,11) == string("/fdm/jsbsim")) { if (pcsNew->base_string.substr(0,11) == string("/fdm/jsbsim")) {
pcsNew->base_string = pcsNew->base_string.erase(0,12); pcsNew->base_string = pcsNew->base_string.erase(0,12);

View file

@ -39,6 +39,8 @@ INCLUDES
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include <iostream> #include <iostream>
#include <sstream>
#include <cstdlib>
namespace JSBSim { 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 } // namespace JSBSim

View file

@ -41,21 +41,22 @@ INCLUDES
#include <float.h> #include <float.h>
#include <queue> #include <queue>
#include <string> #include <string>
#include <sstream>
#include <cmath> #include <cmath>
#include <cstdlib>
#include "input_output/string_utilities.h" #include "input_output/string_utilities.h"
using std::fabs;
using std::string;
#ifndef M_PI #ifndef M_PI
# define M_PI 3.14159265358979323846 # define M_PI 3.14159265358979323846
#endif #endif
#if !defined(WIN32) || defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 1300)) #if defined(_MSC_VER) && (_MSC_VER < 1300)
using std::max; namespace std
{
template <class T> inline T max(const T& a, const T& b)
{
return (a > b) ? a : b;
}
}
#endif #endif
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -98,8 +99,8 @@ public:
public: public:
unsigned int fdmId; unsigned int fdmId;
unsigned int messageId; unsigned int messageId;
string text; std::string text;
string subsystem; std::string subsystem;
enum mType {eText, eInteger, eDouble, eBool} type; enum mType {eText, eInteger, eDouble, eBool} type;
bool bVal; bool bVal;
int iVal; int iVal;
@ -162,22 +163,22 @@ public:
/** Creates a message with the given text and places it on the queue. /** Creates a message with the given text and places it on the queue.
@param text message text @param text message text
@return pointer to a Message structure */ @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. /** Creates a message with the given text and boolean value and places it on the queue.
@param text message text @param text message text
@param bVal boolean value associated with the message @param bVal boolean value associated with the message
@return pointer to a Message structure */ @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. /** Creates a message with the given text and integer value and places it on the queue.
@param text message text @param text message text
@param iVal integer value associated with the message @param iVal integer value associated with the message
@return pointer to a Message structure */ @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. /** Creates a message with the given text and double value and places it on the queue.
@param text message text @param text message text
@param dVal double value associated with the message @param dVal double value associated with the message
@return pointer to a Message structure */ @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). /** Reads the message on the queue (but does not delete it).
@return 1 if some messages */ @return 1 if some messages */
int SomeMessages(void); int SomeMessages(void);
@ -192,7 +193,7 @@ public:
/** Returns the version number of JSBSim. /** Returns the version number of JSBSim.
* @return 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. /// Disables highlighting in the console output.
void disableHighLighting(void); void disableHighLighting(void);
@ -268,7 +269,7 @@ public:
@return if the two values can be considered equal up to roundoff */ @return if the two values can be considered equal up to roundoff */
static bool EqualToRoundoff(double a, double b) { static bool EqualToRoundoff(double a, double b) {
double eps = 2.0*DBL_EPSILON; 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. /** Finite precision comparison.
@ -277,7 +278,7 @@ public:
@return if the two values can be considered equal up to roundoff */ @return if the two values can be considered equal up to roundoff */
static bool EqualToRoundoff(float a, float b) { static bool EqualToRoundoff(float a, float b) {
float eps = 2.0*FLT_EPSILON; 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. /** Finite precision comparison.
@ -331,44 +332,12 @@ protected:
static const double slugtolb; static const double slugtolb;
static const double kgtolb; static const double kgtolb;
static const double kgtoslug; static const double kgtoslug;
static const string needed_cfg_version; static const std::string needed_cfg_version;
static const string JSBSim_version; static const std::string JSBSim_version;
static string CreateIndexedPropertyName(string Property, int index) static std::string CreateIndexedPropertyName(const std::string& Property, int index);
{
std::stringstream str;
str << index;
string tmp;
str >> tmp;
return Property + "[" + tmp + "]";
}
static double GaussianRandomNumber(void) 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;
}
public: public:
/// Moments L, M, N /// Moments L, M, N

View file

@ -37,9 +37,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cmath> #include <cmath>
#include <iostream>
#include "FGState.h" #include "FGState.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -755,9 +755,7 @@ bool FGJSBsim::copy_from_JSBsim()
// Copy the engine values from JSBSim. // Copy the engine values from JSBSim.
for ( i=0; i < Propulsion->GetNumEngines(); i++ ) { for ( i=0; i < Propulsion->GetNumEngines(); i++ ) {
SGPropertyNode * node = fgGetNode("engines/engine", i, true); SGPropertyNode * node = fgGetNode("engines/engine", i, true);
char buf[30]; SGPropertyNode * tnode = node->getChild("thruster", 0, true);
sprintf(buf, "engines/engine[%d]/thruster", i);
SGPropertyNode * tnode = fgGetNode(buf, true);
FGThruster * thruster = Propulsion->GetEngine(i)->GetThruster(); FGThruster * thruster = Propulsion->GetEngine(i)->GetThruster();
switch (Propulsion->GetEngine(i)->GetType()) { switch (Propulsion->GetEngine(i)->GetType()) {

View file

@ -49,10 +49,15 @@ INCLUDES
#include "models/FGAerodynamics.h" #include "models/FGAerodynamics.h"
#include "models/FGPropagate.h" #include "models/FGPropagate.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLElement.h"
#include "models/FGPropulsion.h" #include "models/FGPropulsion.h"
#include "input_output/FGXMLParse.h" #include "input_output/FGXMLParse.h"
#include "math/FGQuaternion.h" #include "math/FGQuaternion.h"
#include <iostream>
#include <fstream> #include <fstream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -57,6 +57,8 @@ INCLUDES
#pragma warning (disable : 4786 4788) #pragma warning (disable : 4786 4788)
#endif #endif
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -38,6 +38,7 @@ INCLUDES
#include <string> #include <string>
#include <cstdlib> #include <cstdlib>
#include <iomanip>
#include "FGFDMExec.h" #include "FGFDMExec.h"
#include "models/FGAtmosphere.h" #include "models/FGAtmosphere.h"
#include "FGInitialCondition.h" #include "FGInitialCondition.h"
@ -45,6 +46,12 @@ INCLUDES
#include "models/FGAircraft.h" #include "models/FGAircraft.h"
#include "models/FGPropulsion.h" #include "models/FGPropulsion.h"
#include "models/FGAerodynamics.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 { namespace JSBSim {
@ -427,13 +434,11 @@ void FGTrimAxis::setThrottlesPct(void) {
/*****************************************************************************/ /*****************************************************************************/
void FGTrimAxis::AxisReport(void) { void FGTrimAxis::AxisReport(void) {
cout << " " << setw(20) << GetControlName() << ": ";
char out[80]; cout << setw(6) << setprecision(2) << GetControl()*control_convert << ' ';
cout << setw(5) << GetStateName() << ": ";
sprintf(out," %20s: %6.2f %5s: %9.2e Tolerance: %3.0e", cout << setw(9) << setprecision(2) << scientific << GetState()+state_target;
GetControlName().c_str(), GetControl()*control_convert, cout << " Tolerance: " << setw(3) << setprecision(0) << scientific << GetTolerance();
GetStateName().c_str(), GetState()+state_target, GetTolerance());
cout << out;
if( fabs(GetState()+state_target) < fabs(GetTolerance()) ) if( fabs(GetState()+state_target) < fabs(GetTolerance()) )
cout << " Passed" << endl; cout << " Passed" << endl;

View file

@ -42,7 +42,6 @@ INCLUDES
#endif #endif
#include <string> #include <string>
#include <iostream>
#include "simgear/props/props.hxx" #include "simgear/props/props.hxx"
#if !PROPS_STANDALONE #if !PROPS_STANDALONE
# include "simgear/math/SGMath.hxx" # include "simgear/math/SGMath.hxx"
@ -60,8 +59,6 @@ DEFINITIONS
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
using namespace std;
namespace JSBSim { namespace JSBSim {
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -93,7 +90,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase
* NOTE: this function changes its argument and thus relies * NOTE: this function changes its argument and thus relies
* on pass by value * on pass by value
*/ */
string mkPropertyName(string name, bool lowercase); std::string mkPropertyName(std::string name, bool lowercase);
/** /**
* Get a property node. * 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. * @return The node, or 0 if none exists and none was created.
*/ */
FGPropertyManager* FGPropertyManager*
GetNode (const string &path, bool create = false); GetNode (const std::string &path, bool create = false);
FGPropertyManager* 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. * 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. * @param path The path of the node, relative to root.
* @return true if the node exists, false otherwise. * @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 * Get the name of a node
*/ */
string GetName( void ); std::string GetName( void );
/** /**
* Get the name of a node without underscores, etc. * Get the name of a node without underscores, etc.
*/ */
string GetPrintableName( void ); std::string GetPrintableName( void );
/** /**
* Get the fully qualified name of a node * Get the fully qualified name of a node
* This function is very slow, so is probably useful for debugging only. * 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. * Get a bool value for a property.
@ -146,7 +143,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase
* does not exist. * does not exist.
* @return The property's value as a bool, or the default value provided. * @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. * does not exist.
* @return The property's value as an int, or the default value provided. * @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. * does not exist.
* @return The property's value as a long, or the default value provided. * @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. * does not exist.
* @return The property's value as a float, or the default value provided. * @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. * does not exist.
* @return The property's value as a double, or the default value provided. * @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. * does not exist.
* @return The property's value as a string, or the default value provided. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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. * @param val The new value for the property.
* @return true if the assignment succeeded, false otherwise. * @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 name The property name.
* @param state The state of the archive attribute (defaults to true). * @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 name The property name.
* @param state The state of the read attribute (defaults to true). * @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 name The property name.
* @param state The state of the write attribute (defaults to true). * @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 * Classes should use this function to release control of any
* properties they are managing. * properties they are managing.
*/ */
void Untie (const string &name); void Untie (const std::string &name);
// Templates cause ambiguity here // Templates cause ambiguity here
@ -409,7 +406,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase
* be modified; defaults to true. * be modified; defaults to true.
*/ */
void 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. * be modified; defaults to true.
*/ */
void 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. * be modified; defaults to true.
*/ */
void 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. * be modified; defaults to true.
*/ */
void 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. * Tie a property to an external double variable.
@ -472,7 +469,7 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase
* be modified; defaults to true. * be modified; defaults to true.
*/ */
void 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 <class V> void /* template <class V> void
Tie (const string &name, V (*getter)(), void (*setter)(V) = 0, Tie (const std::string &name, V (*getter)(), void (*setter)(V) = 0,
bool useDefault = true); bool useDefault = true);
template <class V> void template <class V> void
Tie (const string &name, int index, V (*getter)(int), Tie (const std::string &name, int index, V (*getter)(int),
void (*setter)(int, V) = 0, bool useDefault = true); void (*setter)(int, V) = 0, bool useDefault = true);
template <class T, class V> void template <class T, class V> void
Tie (const string &name, T * obj, V (T::*getter)() const, Tie (const std::string &name, T * obj, V (T::*getter)() const,
void (T::*setter)(V) = 0, bool useDefault = true); void (T::*setter)(V) = 0, bool useDefault = true);
template <class T, class V> void template <class T, class V> void
Tie (const string &name, T * obj, int index, Tie (const std::string &name, T * obj, int index,
V (T::*getter)(int) const, void (T::*setter)(int, V) = 0, V (T::*getter)(int) const, void (T::*setter)(int, V) = 0,
bool useDefault = true); */ bool useDefault = true); */
@ -516,12 +513,12 @@ class FGPropertyManager : public SGPropertyNode, public FGJSBBase
*/ */
template <class V> inline void template <class V> inline void
Tie (const string &name, V (*getter)(), void (*setter)(V) = 0, bool useDefault = true) Tie (const std::string &name, V (*getter)(), void (*setter)(V) = 0, bool useDefault = true)
{ {
if (!tie(name.c_str(), SGRawValueFunctions<V>(getter, setter), useDefault)) if (!tie(name.c_str(), SGRawValueFunctions<V>(getter, setter), useDefault))
cout << "Failed to tie property " << name << " to functions" << endl; std::cout << "Failed to tie property " << name << " to functions" << std::endl;
else if (debug_lvl & 0x20) 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 * property value should there be one; false if the old value should be
* discarded; defaults to true. * discarded; defaults to true.
*/ */
template <class V> inline void Tie (const string &name, int index, V (*getter)(int), template <class V> inline void Tie (const std::string &name, int index, V (*getter)(int),
void (*setter)(int, V) = 0, bool useDefault = true) void (*setter)(int, V) = 0, bool useDefault = true)
{ {
if (!tie(name.c_str(), SGRawValueFunctionsIndexed<V>(index, getter, setter), useDefault)) if (!tie(name.c_str(), SGRawValueFunctionsIndexed<V>(index, getter, setter), useDefault))
cout << "Failed to tie property " << name << " to indexed functions" << endl; std::cout << "Failed to tie property " << name << " to indexed functions" << std::endl;
else if (debug_lvl & 0x20) 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. * discarded; defaults to true.
*/ */
template <class T, class V> inline void template <class T, class V> inline void
Tie (const string &name, T * obj, V (T::*getter)() const, Tie (const std::string &name, T * obj, V (T::*getter)() const,
void (T::*setter)(V) = 0, bool useDefault = true) void (T::*setter)(V) = 0, bool useDefault = true)
{ {
if (!tie(name.c_str(), SGRawValueMethods<T,V>(*obj, getter, setter), useDefault)) if (!tie(name.c_str(), SGRawValueMethods<T,V>(*obj, getter, setter), useDefault))
cout << "Failed to tie property " << name << " to object methods" << endl; std::cout << "Failed to tie property " << name << " to object methods" << std::endl;
else if (debug_lvl & 0x20) 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. * discarded; defaults to true.
*/ */
template <class T, class V> inline void template <class T, class V> inline void
Tie (const string &name, T * obj, int index, V (T::*getter)(int) const, Tie (const std::string &name, T * obj, int index, V (T::*getter)(int) const,
void (T::*setter)(int, V) = 0, bool useDefault = true) void (T::*setter)(int, V) = 0, bool useDefault = true)
{ {
if (!tie(name.c_str(), SGRawValueMethodsIndexed<T,V>(*obj, index, getter, setter), useDefault)) if (!tie(name.c_str(), SGRawValueMethodsIndexed<T,V>(*obj, index, getter, setter), useDefault))
cout << "Failed to tie property " << name << " to indexed object methods" << endl; std::cout << "Failed to tie property " << name << " to indexed object methods" << std::endl;
else if (debug_lvl & 0x20) else if (debug_lvl & 0x20)
cout << name << endl; std::cout << name << std::endl;
} }
}; };
} }

View file

@ -46,6 +46,9 @@ INCLUDES
#include "initialization/FGTrim.h" #include "initialization/FGTrim.h"
#include <iostream> #include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -32,6 +32,9 @@ INCLUDES
#include <cmath> #include <cmath>
#include <cstdlib> #include <cstdlib>
#include <iostream>
using namespace std;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
@ -49,7 +52,7 @@ map <string, map <string, double> > Element::convert;
CLASS IMPLEMENTATION CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
Element::Element(string nm) Element::Element(const string& nm)
{ {
name = nm; name = nm;
parent = 0L; parent = 0L;
@ -221,7 +224,7 @@ Element::~Element(void)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string Element::GetAttributeValue(string attr) string Element::GetAttributeValue(const string& attr)
{ {
int select=-1; int select=-1;
for (unsigned int i=0; i<attribute_key.size(); i++) { for (unsigned int i=0; i<attribute_key.size(); i++) {
@ -233,7 +236,7 @@ string Element::GetAttributeValue(string attr)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
double Element::GetAttributeValueAsNumber(string attr) double Element::GetAttributeValueAsNumber(const string& attr)
{ {
string attribute = GetAttributeValue(attr); string attribute = GetAttributeValue(attr);
@ -292,7 +295,7 @@ double Element::GetDataAsNumber(void)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
unsigned int Element::GetNumElements(string element_name) unsigned int Element::GetNumElements(const string& element_name)
{ {
unsigned int number_of_elements=0; unsigned int number_of_elements=0;
Element* el=FindElement(element_name); Element* el=FindElement(element_name);
@ -305,7 +308,7 @@ unsigned int Element::GetNumElements(string element_name)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Element* Element::FindElement(string el) Element* Element::FindElement(const string& el)
{ {
if (el.empty() && children.size() >= 1) { if (el.empty() && children.size() >= 1) {
element_index = 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 (el.empty()) {
if (element_index < children.size()) { 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); Element* element = FindElement(el);
if (element) { 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); Element* element = FindElement(el);
if (element) { 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); Element* element = FindElement(el);
@ -404,9 +407,9 @@ double Element::FindElementValueAsNumberConvertTo(string el, string target_units
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
double Element::FindElementValueAsNumberConvertFromTo( string el, double Element::FindElementValueAsNumberConvertFromTo( const string& el,
string supplied_units, const string& supplied_units,
string target_units) const string& target_units)
{ {
Element* element = FindElement(el); 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; FGColumnVector3 triplet;
Element* item; 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); attribute_key.push_back(name);
attributes[name] = value; attributes[name] = value;
@ -528,8 +531,8 @@ void Element::AddAttribute(string name, string value)
void Element::AddData(string d) void Element::AddData(string d)
{ {
unsigned int string_start = (unsigned int)d.find_first_not_of(" \t"); string::size_type string_start = d.find_first_not_of(" \t");
if (string_start > 0) { if (string_start != string::npos && string_start > 0) {
d.erase(0,string_start); d.erase(0,string_start);
} }
data_lines.push_back(d); data_lines.push_back(d);

View file

@ -36,15 +36,8 @@ INCLUDES
#include <string> #include <string>
#include <map> #include <map>
#include <iostream>
#include <vector> #include <vector>
using std::string;
using std::map;
using std::vector;
using std::cout;
using std::endl;
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -155,7 +148,7 @@ public:
/** Constructor /** Constructor
@param nm the name of this element (if given) @param nm the name of this element (if given)
*/ */
Element(string nm); Element(const std::string& nm);
/// Destructor /// Destructor
~Element(void); ~Element(void);
@ -163,23 +156,23 @@ public:
@param key specifies the attribute key to retrieve the value of. @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 @return the key value (as a string), or the empty string if no such
attribute exists. */ attribute exists. */
string GetAttributeValue(string key); std::string GetAttributeValue(const std::string& key);
/** Retrieves an attribute value as a double precision real number. /** Retrieves an attribute value as a double precision real number.
@param key specifies the attribute key to retrieve the value of. @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 @return the key value (as a number), or the HUGE_VAL if no such
attribute exists. */ attribute exists. */
double GetAttributeValueAsNumber(string key); double GetAttributeValueAsNumber(const std::string& key);
/** Retrieves the element name. /** Retrieves the element name.
@return the element name, or the empty string if no name has been set.*/ @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. /** Gets a line of data belonging to an element.
@param i the index of the data line to return (0 by default). @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 @return a string representing the data line requested, or the empty string
if none exists.*/ if none exists.*/
string GetDataLine(unsigned int i=0); std::string GetDataLine(unsigned int i=0);
/// Returns the number of lines of data stored /// Returns the number of lines of data stored
unsigned int GetNumDataLines(void) {return (unsigned int)data_lines.size();} unsigned int GetNumDataLines(void) {return (unsigned int)data_lines.size();}
@ -188,7 +181,7 @@ public:
unsigned int GetNumElements(void) {return (unsigned int)children.size();} unsigned int GetNumElements(void) {return (unsigned int)children.size();}
/// Returns the number of named child elements for this element. /// 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. /** Converts the element data to a number.
This function attempts to convert the first (and presumably only) line of This function attempts to convert the first (and presumably only) line of
@ -226,7 +219,7 @@ public:
element counter to the first element. element counter to the first element.
@param el the search string (empty string by default). @param el the search string (empty string by default).
@return a pointer to the first element that matches the supplied search string. */ @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. /** Searches for the next element as specified.
This function would be called after FindElement() is first called (in order to 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. @param el the name of the next element to find.
@return the pointer to the found element, or 0 if no appropriate element us @return the pointer to the found element, or 0 if no appropriate element us
found.*/ found.*/
Element* FindNextElement(string el=""); Element* FindNextElement(const std::string& el="");
/** Searches for the named element and returns the string data belonging to it. /** 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 This function allows the data belonging to a named element to be returned
@ -247,7 +240,7 @@ public:
default) default)
@return the data value for the named element as a string, or the empty @return the data value for the named element as a string, or the empty
string if the element cannot be found. */ 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. /** 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 This function allows the data belonging to a named element to be returned
@ -257,7 +250,7 @@ public:
default) default)
@return the data value for the named element as a double, or HUGE_VAL if the @return the data value for the named element as a double, or HUGE_VAL if the
data is missing. */ 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. /** 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 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. to which the value returned will be converted.
@return the unit-converted data value for the named element as a double, @return the unit-converted data value for the named element as a double,
or HUGE_VAL if the data is missing. */ 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. /** 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 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. to which the value returned will be converted.
@return the unit-converted data value for the named element as a double, @return the unit-converted data value for the named element as a double,
or HUGE_VAL if the data is missing. */ or HUGE_VAL if the data is missing. */
double FindElementValueAsNumberConvertFromTo( string el, double FindElementValueAsNumberConvertFromTo( const std::string& el,
string supplied_units, const std::string& supplied_units,
string target_units); const std::string& target_units);
/** Composes a 3-element column vector for the supplied location or orientation. /** Composes a 3-element column vector for the supplied location or orientation.
This function processes a LOCATION or ORIENTATION construct, returning a 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 @param target_units the string representing the native units used by JSBSim
to which the value returned will be converted. to which the value returned will be converted.
@return a column vector object built from the LOCATION or ORIENT components. */ @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 /** This function sets the value of the parent class attribute to the supplied
Element pointer. Element pointer.
@ -320,11 +313,11 @@ public:
/** Stores an attribute belonging to this element. /** Stores an attribute belonging to this element.
* @param name The string name of the attribute. * @param name The string name of the attribute.
* @param value The string value 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. /** Stores data belonging to this element.
* @param d the data to store. */ * @param d the data to store. */
void AddData(string d); void AddData(std::string d);
/** Prints the element. /** Prints the element.
* Prints this element and calls the Print routine for child elements. * Prints this element and calls the Print routine for child elements.
@ -332,14 +325,14 @@ public:
void Print(unsigned int level=0); void Print(unsigned int level=0);
private: private:
string name; std::string name;
map <string, string> attributes; std::map <std::string, std::string> attributes;
vector <string> data_lines; std::vector <std::string> data_lines;
vector <Element*> children; std::vector <Element*> children;
vector <string> attribute_key; std::vector <std::string> attribute_key;
Element *parent; Element *parent;
unsigned int element_index; unsigned int element_index;
typedef map <string, map <string, double> > tMapConvert; typedef std::map <std::string, std::map <std::string, double> > tMapConvert;
static tMapConvert convert; static tMapConvert convert;
static bool converterIsInitialized; static bool converterIsInitialized;
}; };

View file

@ -36,6 +36,8 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "input_output/FGXMLParse.h" #include "input_output/FGXMLParse.h"
#include <iostream>
#include <fstream>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -56,19 +58,19 @@ public:
protected: protected:
Element* document; 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.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()); infile.open(XML_filename.c_str());
if ( !infile.is_open()) { if ( !infile.is_open()) {
cerr << "Could not open file: " << XML_filename << endl; std::cerr << "Could not open file: " << XML_filename << std::endl;
return 0L; return 0L;
} }
} else { } else {
cerr << "No filename given." << endl; std::cerr << "No filename given." << std::endl;
return 0L; return 0L;
} }

View file

@ -30,9 +30,14 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGXMLParse.h" #include "FGXMLParse.h"
#include "FGXMLElement.h"
#include <string>
#include <iostream>
#include <cstdlib> #include <cstdlib>
#include "input_output/string_utilities.h" #include "input_output/string_utilities.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -34,15 +34,6 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <string>
#include <iostream>
using std::string;
using std::cout;
using std::cerr;
using std::endl;
#include "FGXMLElement.h"
#include "simgear/xml/easyxml.hxx" #include "simgear/xml/easyxml.hxx"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -58,6 +49,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/

View file

@ -38,8 +38,16 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGfdmSocket.h" #include <iostream>
#include <iomanip>
#include <cstring> #include <cstring>
#include "FGfdmSocket.h"
#include "string_utilities.h"
using std::cout;
using std::cerr;
using std::endl;
using std::string;
namespace JSBSim { namespace JSBSim {
@ -50,9 +58,9 @@ static const char *IdHdr = ID_FDMSOCKET;
CLASS IMPLEMENTATION 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; connected = false;
#if defined(_MSC_VER) || defined(__MINGW32__) #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; connected = false;
#if defined(_MSC_VER) || defined(__MINGW32__) #if defined(_MSC_VER) || defined(__MINGW32__)
@ -158,7 +166,6 @@ FGfdmSocket::FGfdmSocket(string address, int port)
FGfdmSocket::FGfdmSocket(int port) FGfdmSocket::FGfdmSocket(int port)
{ {
size = 0;
connected = false; connected = false;
unsigned long NoBlock = true; unsigned long NoBlock = true;
@ -217,9 +224,8 @@ string FGfdmSocket::Receive(void)
char buf[1024]; char buf[1024];
int len = sizeof(struct sockaddr_in); int len = sizeof(struct sockaddr_in);
int num_chars=0; int num_chars=0;
int total_chars = 0;
unsigned long NoBlock = true; 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? // class attribute and pass as a reference?
if (sckt_in <= 0) { if (sckt_in <= 0) {
@ -239,9 +245,8 @@ string FGfdmSocket::Receive(void)
} }
if (sckt_in > 0) { if (sckt_in > 0) {
while ((num_chars = recv(sckt_in, buf, 1024, 0)) > 0) { while ((num_chars = recv(sckt_in, buf, sizeof buf, 0)) > 0) {
data += string(buf).substr(0,num_chars); data.append(buf, num_chars);
total_chars += num_chars;
} }
#if defined(_MSC_VER) #if defined(_MSC_VER)
@ -258,12 +263,12 @@ string FGfdmSocket::Receive(void)
#endif #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; int num_chars_sent=0;
@ -288,71 +293,58 @@ void FGfdmSocket::Close(void)
void FGfdmSocket::Clear(void) void FGfdmSocket::Clear(void)
{ {
buffer = ""; buffer.str(string());
size = 0;
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Clear(string s) void FGfdmSocket::Clear(const string& s)
{ {
buffer = s + " "; Clear();
size = buffer.size(); buffer << s << ' ';
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(const char* item) void FGfdmSocket::Append(const char* item)
{ {
if (size == 0) buffer += string(item); if (buffer.tellp() > 0) buffer << ',';
else buffer += string(",") + string(item); buffer << item;
size++;
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(double item) void FGfdmSocket::Append(double item)
{ {
char s[25]; if (buffer.tellp() > 0) buffer << ',';
buffer << std::setw(12) << std::setprecision(7) << item;
sprintf(s,"%12.7f",item);
if (size == 0) buffer += string(s);
else buffer += string(",") + string(s);
size++;
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Append(long item) void FGfdmSocket::Append(long item)
{ {
char s[25]; if (buffer.tellp() > 0) buffer << ',';
buffer << std::setw(12) << item;
sprintf(s,"%12ld",item);
if (size == 0) buffer += string(s);
else buffer += string(",") + string(s);
size++;
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGfdmSocket::Send(void) void FGfdmSocket::Send(void)
{ {
buffer += string("\n"); buffer << '\n';
if ((send(sckt,buffer.c_str(),buffer.size(),0)) <= 0) { string str = buffer.str();
if ((send(sckt,str.c_str(),str.size(),0)) <= 0) {
perror("send"); 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) { if ((send(sckt,data,length,0)) <= 0) {
perror("send"); perror("send");
} else {
} }
} }

View file

@ -39,16 +39,11 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cstdio>
#include <string> #include <string>
#include <iostream> #include <sstream>
#include <fstream>
#include <sys/types.h> #include <sys/types.h>
#include "FGJSBBase.h" #include "FGJSBBase.h"
using std::cout;
using std::endl;
#if defined(_MSC_VER) || defined(__MINGW32__) #if defined(_MSC_VER) || defined(__MINGW32__)
#include <winsock.h> #include <winsock.h>
#include <io.h> #include <io.h>
@ -90,27 +85,24 @@ CLASS DOCUMENTATION
CLASS DECLARATION CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
using std::string;
using std::cerr;
class FGfdmSocket : public FGJSBBase class FGfdmSocket : public FGJSBBase
{ {
public: public:
FGfdmSocket(string, int); FGfdmSocket(const std::string&, int);
FGfdmSocket(string, int, int); FGfdmSocket(const std::string&, int, int);
FGfdmSocket(int); FGfdmSocket(int);
~FGfdmSocket(); ~FGfdmSocket();
void Send(void); void Send(void);
void Send(char *data, int length); void Send(const char *data, int length);
string Receive(void); std::string Receive(void);
int Reply(string text); int Reply(const std::string& text);
void Append(const string s) {Append(s.c_str());} void Append(const std::string& s) {Append(s.c_str());}
void Append(const char*); void Append(const char*);
void Append(double); void Append(double);
void Append(long); void Append(long);
void Clear(void); void Clear(void);
void Clear(string s); void Clear(const std::string& s);
void Close(void); void Close(void);
bool GetConnectStatus(void) {return connected;} bool GetConnectStatus(void) {return connected;}
@ -119,10 +111,9 @@ public:
private: private:
int sckt; int sckt;
int sckt_in; int sckt_in;
int size;
struct sockaddr_in scktName; struct sockaddr_in scktName;
struct hostent *host; struct hostent *host;
string buffer; std::ostringstream buffer;
bool connected; bool connected;
void Debug(int from); void Debug(int from);
}; };

View file

@ -4,7 +4,7 @@
Author: Jon S. Berndt Author: Jon S. Berndt
Date started: 06/01/09 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 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 the terms of the GNU Lesser General Public License as published by the Free Software
@ -38,8 +38,8 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <string>
#include <vector> #include <vector>
#include <ctype.h>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -51,8 +51,6 @@ DEFINITIONS
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
using namespace std;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -63,29 +61,30 @@ CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#if !defined(BASE) #if !defined(BASE)
extern string& trim_left(string& str); extern std::string& trim_left(std::string& str);
extern string& trim_right(string& str); extern std::string& trim_right(std::string& str);
extern string& trim(string& str); extern std::string& trim(std::string& str);
extern string& to_upper(string& str); extern std::string& to_upper(std::string& str);
extern string& to_lower(string& str); extern std::string& to_lower(std::string& str);
extern bool is_number(string& str); extern bool is_number(const std::string& str);
vector <string> split(string str, char d); std::vector <std::string> split(std::string str, char d);
#else #else
#include <ctype.h>
using namespace std;
string& trim_left(string& str) string& trim_left(string& str)
{ {
while ( !isgraph(str[0]) ) { while (str.size() && !isgraph(str[0])) {
str = str.erase(0,1); str = str.erase(0,1);
if (str.size() == 0) break;
} }
return str; return str;
} }
string& trim_right(string& 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); str = str.erase(str.size()-1,1);
if (str.size() == 0) break;
} }
return str; return str;
} }
@ -99,17 +98,17 @@ CLASS DECLARATION
string& to_upper(string& str) string& to_upper(string& str)
{ {
for (int i=0; i<str.size(); i++) str[i] = toupper(str[i]); for (size_t i=0; i<str.size(); i++) str[i] = toupper(str[i]);
return str; return str;
} }
string& to_lower(string& str) string& to_lower(string& str)
{ {
for (int i=0; i<str.size(); i++) str[i] = tolower(str[i]); for (size_t i=0; i<str.size(); i++) str[i] = tolower(str[i]);
return str; return str;
} }
bool is_number(string& str) bool is_number(const string& str)
{ {
return (str.find_first_not_of("+-.0123456789Ee") == string::npos); return (str.find_first_not_of("+-.0123456789Ee") == string::npos);
} }
@ -117,7 +116,7 @@ CLASS DECLARATION
vector <string> split(string str, char d) vector <string> split(string str, char d)
{ {
vector <string> str_array; vector <string> str_array;
int index=0; size_t index=0;
string temp = ""; string temp = "";
trim(str); trim(str);
@ -142,3 +141,4 @@ CLASS DECLARATION
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#endif #endif

View file

@ -38,7 +38,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGColumnVector3.h" #include "FGColumnVector3.h"
#include <cstdio> #include <iostream>
#include <sstream>
#include <iomanip>
#include <cmath>
using namespace std;
namespace JSBSim { 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]; ostringstream buffer;
sprintf(buffer, "%18.16f%s%18.16f%s%18.16f", Entry(1), delimeter.c_str(), Entry(2), delimeter.c_str(), Entry(3)); buffer << std::setw(18) << std::setprecision(16) << Entry(1) << delimiter;
return string(buffer); buffer << std::setw(18) << std::setprecision(16) << Entry(2) << delimiter;
buffer << std::setw(18) << std::setprecision(16) << Entry(3);
return buffer.str();
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -39,20 +39,8 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cstdlib> #include <iosfwd>
#include <string> #include <string>
#include <fstream>
#include <iostream>
#include <cmath>
using std::ostream;
using std::istream;
using std::cerr;
using std::cout;
using std::endl;
using std::sqrt;
using std::string;
#include "FGJSBBase.h" #include "FGJSBBase.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -149,7 +137,7 @@ public:
/** Prints the contents of the vector /** Prints the contents of the vector
@param delimeter the item separator (tab or comma) @param delimeter the item separator (tab or comma)
@return a string with the delimeter-separated contents of the vector */ @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. /** Assignment operator.
@param b source vector. @param b source vector.
@ -291,7 +279,7 @@ inline FGColumnVector3 operator*(double scalar, const FGColumnVector3& A) {
@param os Stream to write to. @param os Stream to write to.
@param M Matrix to write. @param M Matrix to write.
Write the matrix to a stream.*/ Write the matrix to a stream.*/
ostream& operator<<(ostream& os, const FGColumnVector3& col); std::ostream& operator<<(std::ostream& os, const FGColumnVector3& col);
} // namespace JSBSim } // namespace JSBSim

View file

@ -35,7 +35,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGCondition.h" #include "FGCondition.h"
#include <vector> #include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { 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 // This constructor is called when there are no nested test groups inside the
// condition // condition
FGCondition::FGCondition(string test, FGPropertyManager* PropertyManager) : FGCondition::FGCondition(const string& test, FGPropertyManager* PropertyManager) :
PropertyManager(PropertyManager), isGroup(false) PropertyManager(PropertyManager), isGroup(false)
{ {
string property1, property2, compare_string; string property1, property2, compare_string;

View file

@ -39,8 +39,6 @@ INCLUDES
#include <map> #include <map>
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -54,6 +52,9 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGPropertyManager;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -69,7 +70,7 @@ class FGCondition : public FGJSBBase
{ {
public: public:
FGCondition(Element* element, FGPropertyManager* PropertyManager); FGCondition(Element* element, FGPropertyManager* PropertyManager);
FGCondition(string test, FGPropertyManager* PropertyManager); FGCondition(const std::string& test, FGPropertyManager* PropertyManager);
~FGCondition(void); ~FGCondition(void);
bool Evaluate(void); bool Evaluate(void);
@ -78,18 +79,18 @@ public:
private: private:
enum eComparison {ecUndef=0, eEQ, eNE, eGT, eGE, eLT, eLE}; enum eComparison {ecUndef=0, eEQ, eNE, eGT, eGE, eLT, eLE};
enum eLogic {elUndef=0, eAND, eOR}; enum eLogic {elUndef=0, eAND, eOR};
map <string, eComparison> mComparison; std::map <std::string, eComparison> mComparison;
eLogic Logic; eLogic Logic;
FGPropertyManager *TestParam1, *TestParam2, *PropertyManager; FGPropertyManager *TestParam1, *TestParam2, *PropertyManager;
double TestValue; double TestValue;
eComparison Comparison; eComparison Comparison;
bool isGroup; bool isGroup;
string conditional; std::string conditional;
static string indent; static std::string indent;
vector <FGCondition*> conditions; std::vector <FGCondition*> conditions;
void InitializeConditionals(void); void InitializeConditionals(void);
void Debug(int from); void Debug(int from);

View file

@ -28,12 +28,17 @@ Purpose: Stores various parameter types for functions
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <stdio.h> #include <sstream>
#include <iomanip>
#include <cstdlib>
#include "FGFunction.h" #include "FGFunction.h"
#include "FGTable.h" #include "FGTable.h"
#include "FGPropertyValue.h" #include "FGPropertyValue.h"
#include "FGRealValue.h" #include "FGRealValue.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -44,7 +49,7 @@ static const char *IdHdr = ID_FUNCTION;
CLASS IMPLEMENTATION CLASS IMPLEMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
FGFunction::FGFunction(FGPropertyManager* propMan, Element* el, string prefix) FGFunction::FGFunction(FGPropertyManager* propMan, Element* el, const string& prefix)
: PropertyManager(propMan), Prefix(prefix) : PropertyManager(propMan), Prefix(prefix)
{ {
Element* element; Element* element;
@ -319,12 +324,10 @@ double FGFunction::GetValue(void) const
string FGFunction::GetValueAsString(void) const string FGFunction::GetValueAsString(void) const
{ {
char buffer[20]; ostringstream buffer;
string value;
sprintf(buffer,"%9.6f",GetValue()); buffer << setw(9) << setprecision(6) << GetValue();
value = string(buffer); return buffer.str();
return value;
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -37,8 +37,6 @@ INCLUDES
#include <vector> #include <vector>
#include <string> #include <string>
#include "FGParameter.h" #include "FGParameter.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -52,6 +50,9 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGPropertyManager;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -165,7 +166,7 @@ public:
@param prefix an optional prefix to prepend to the name given to the property @param prefix an optional prefix to prepend to the name given to the property
that represents this function (if given). that represents this function (if given).
*/ */
FGFunction(FGPropertyManager* PropertyManager, Element* element, string prefix=""); FGFunction(FGPropertyManager* PropertyManager, Element* element, const std::string& prefix="");
/// Destructor. /// Destructor.
virtual ~FGFunction(); virtual ~FGFunction();
@ -175,10 +176,10 @@ public:
/** The value that the function evaluates to, as a string. /** The value that the function evaluates to, as a string.
@return the value of the function 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. /// 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 /** Specifies whether to cache the value of the function, so it is calculated only
once per frame. once per frame.
@ -189,44 +190,44 @@ public:
void cacheValue(bool shouldCache); void cacheValue(bool shouldCache);
private: private:
vector <FGParameter*> Parameters; std::vector <FGParameter*> Parameters;
FGPropertyManager* const PropertyManager; FGPropertyManager* const PropertyManager;
bool cached; bool cached;
string Prefix; std::string Prefix;
string description_string; std::string description_string;
string property_string; std::string property_string;
string value_string; std::string value_string;
string table_string; std::string table_string;
string p_string; std::string p_string;
string v_string; std::string v_string;
string t_string; std::string t_string;
string function_string; std::string function_string;
string sum_string; std::string sum_string;
string difference_string; std::string difference_string;
string product_string; std::string product_string;
string quotient_string; std::string quotient_string;
string pow_string; std::string pow_string;
string exp_string; std::string exp_string;
string abs_string; std::string abs_string;
string sin_string; std::string sin_string;
string cos_string; std::string cos_string;
string tan_string; std::string tan_string;
string asin_string; std::string asin_string;
string acos_string; std::string acos_string;
string atan_string; std::string atan_string;
string atan2_string; std::string atan2_string;
string min_string; std::string min_string;
string max_string; std::string max_string;
string avg_string; std::string avg_string;
string fraction_string; std::string fraction_string;
string mod_string; std::string mod_string;
string random_string; std::string random_string;
string integer_string; std::string integer_string;
double cachedValue; double cachedValue;
enum functionType {eTopLevel=0, eProduct, eDifference, eSum, eQuotient, ePow, enum functionType {eTopLevel=0, eProduct, eDifference, eSum, eQuotient, ePow,
eExp, eAbs, eSin, eCos, eTan, eASin, eACos, eATan, eATan2, eExp, eAbs, eSin, eCos, eTan, eASin, eACos, eATan, eATan2,
eMin, eMax, eAvg, eFrac, eInteger, eMod, eRandom} Type; eMin, eMax, eAvg, eFrac, eInteger, eMod, eRandom} Type;
string Name; std::string Name;
void bind(void); void bind(void);
void Debug(int from); void Debug(int from);
}; };

View file

@ -40,6 +40,10 @@ INCLUDES
#include "FGMatrix33.h" #include "FGMatrix33.h"
#include "FGColumnVector3.h" #include "FGColumnVector3.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -40,18 +40,8 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cstdlib>
#include <string> #include <string>
#include <fstream> #include <iosfwd>
#include <iostream>
#include <cmath>
using std::ostream;
using std::istream;
using std::cerr;
using std::cout;
using std::endl;
using std::string;
#include "FGColumnVector3.h" #include "FGColumnVector3.h"
#include "FGJSBBase.h" #include "FGJSBBase.h"
@ -84,7 +74,7 @@ DECLARATION: MatrixException
class MatrixException : public FGJSBBase class MatrixException : public FGJSBBase
{ {
public: public:
string Message; std::string Message;
}; };
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -450,7 +440,7 @@ inline FGMatrix33 operator*(double scalar, const FGMatrix33& A) {
Write the matrix to a stream. Write the matrix to a stream.
*/ */
ostream& operator<<(ostream& os, const FGMatrix33& M); std::ostream& operator<<(std::ostream& os, const FGMatrix33& M);
/** Read matrix from a stream. /** Read matrix from a stream.
@ -459,7 +449,7 @@ ostream& operator<<(ostream& os, const FGMatrix33& M);
Read matrix from a stream. Read matrix from a stream.
*/ */
istream& operator>>(istream& is, FGMatrix33& M); std::istream& operator>>(std::istream& is, FGMatrix33& M);
} // namespace JSBSim } // namespace JSBSim

View file

@ -37,7 +37,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGTable.h" #include "FGTable.h"
#include <iomanip> #include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
#include <iostream>
#include <sstream>
#include <cstdlib>
using namespace std; 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) // determine number of data columns in table (first column is row lookup - don't count)
size_t position=0; 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 startRow=0;
int startCol=0; int startCol=0;

View file

@ -38,11 +38,10 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "input_output/FGXMLElement.h"
#include "FGParameter.h" #include "FGParameter.h"
#include "input_output/FGPropertyManager.h" #include <iosfwd>
#include <sstream>
#include <vector> #include <vector>
#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -54,11 +53,11 @@ DEFINITIONS
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
using std::vector;
using std::stringstream;
namespace JSBSim { namespace JSBSim {
class FGPropertyManager;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -280,7 +279,7 @@ public:
</pre> </pre>
*/ */
void operator<<(stringstream&); void operator<<(std::istream&);
FGTable& operator<<(const double n); FGTable& operator<<(const double n);
FGTable& operator<<(const int n); FGTable& operator<<(const int n);
@ -298,16 +297,16 @@ private:
bool internal; bool internal;
FGPropertyManager *lookupProperty[3]; FGPropertyManager *lookupProperty[3];
double** Data; double** Data;
vector <FGTable*> Tables; std::vector <FGTable*> Tables;
unsigned int FindNumColumns(string);
unsigned int nRows, nCols, nTables, dimension; unsigned int nRows, nCols, nTables, dimension;
int colCounter, rowCounter, tableCounter; int colCounter, rowCounter, tableCounter;
mutable int lastRowIndex, lastColumnIndex, lastTableIndex; mutable int lastRowIndex, lastColumnIndex, lastTableIndex;
double** Allocate(void); double** Allocate(void);
FGPropertyManager* const PropertyManager; FGPropertyManager* const PropertyManager;
string Name; std::string Name;
void bind(void); void bind(void);
unsigned int FindNumColumns(const std::string&);
void Debug(int from); void Debug(int from);
}; };
} }

View file

@ -36,6 +36,10 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iostream>
#include <sstream>
#include <iomanip>
#include <cstdlib>
#include <FGFDMExec.h> #include <FGFDMExec.h>
#include "FGAerodynamics.h" #include "FGAerodynamics.h"
#include "FGPropagate.h" #include "FGPropagate.h"
@ -44,6 +48,8 @@ INCLUDES
#include "FGMassBalance.h" #include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; 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 = ""; string CoeffStrings = "";
bool firstime = true; 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 = ""; ostringstream buf;
bool firstime = true;
unsigned int sd;
for (sd = 0; sd < variables.size(); sd++) { buf.precision(6);
if (firstime) { for (unsigned int sd = 0; sd < variables.size(); sd++) {
firstime = false; if (buf.tellp() > 0) buf << delimeter;
} else { buf << setw(9) << variables[sd]->GetValue();
SDValues += delimeter;
}
SDValues += variables[sd]->GetValueAsString();
} }
for (unsigned int axis = 0; axis < 6; axis++) { for (unsigned int axis = 0; axis < 6; axis++) {
for (unsigned int sd = 0; sd < Coeff[axis].size(); sd++) { for (unsigned int sd = 0; sd < Coeff[axis].size(); sd++) {
if (firstime) { if (buf.tellp() > 0) buf << delimeter;
firstime = false; buf << setw(9) << Coeff[axis][sd]->GetValue();
} else {
SDValues += delimeter;
}
SDValues += Coeff[axis][sd]->GetValueAsString();
} }
} }
return SDValues; return buf.str();
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -38,6 +38,7 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <string>
#include <vector> #include <vector>
#include <map> #include <map>
@ -188,13 +189,13 @@ public:
/** Gets the strings for the current set of coefficients. /** Gets the strings for the current set of coefficients.
@param delimeter either a tab or comma string depending on output type @param delimeter either a tab or comma string depending on output type
@return a string containing the descriptive names for all coefficients */ @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. /** Gets the coefficient values.
@param delimeter either a tab or comma string depending on output type @param delimeter either a tab or comma string depending on output type
@return a string containing the numeric values for the current set of @return a string containing the numeric values for the current set of
coefficients */ coefficients */
string GetCoefficientValues(string delimeter); std::string GetCoefficientValues(const std::string& delimeter) const;
/** Calculates and returns the wind-to-body axis transformation matrix. /** Calculates and returns the wind-to-body axis transformation matrix.
@return a reference to the wind-to-body transformation matrix. @return a reference to the wind-to-body transformation matrix.
@ -206,14 +207,14 @@ public:
*/ */
FGMatrix33& GetTb2w(void); FGMatrix33& GetTb2w(void);
vector <FGFunction*> * GetCoeff(void) const { return Coeff; } std::vector <FGFunction*> * GetCoeff(void) const { return Coeff; }
private: private:
enum eAxisType {atNone, atLiftDrag, atAxialNormal, atBodyXYZ} axisType; enum eAxisType {atNone, atLiftDrag, atAxialNormal, atBodyXYZ} axisType;
typedef map<string,int> AxisIndex; typedef std::map<std::string,int> AxisIndex;
AxisIndex AxisIdx; AxisIndex AxisIdx;
FGFunction* AeroRPShift; FGFunction* AeroRPShift;
vector <FGFunction*> variables; std::vector <FGFunction*> variables;
typedef vector <FGFunction*> CoeffArray; typedef vector <FGFunction*> CoeffArray;
CoeffArray* Coeff; CoeffArray* Coeff;
FGColumnVector3 vFnative; FGColumnVector3 vFnative;

View file

@ -52,7 +52,11 @@ INCLUDES
#include "FGAerodynamics.h" #include "FGAerodynamics.h"
#include "FGFDMExec.h" #include "FGFDMExec.h"
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGPropulsion.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,6 +38,7 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <string>
#include <vector> #include <vector>
#include "FGModel.h" #include "FGModel.h"
@ -131,7 +132,7 @@ public:
/** Gets the aircraft name /** Gets the aircraft name
@return the name of the aircraft as a string type */ @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 /// Gets the wing area
double GetWingArea(void) const { return WingArea; } double GetWingArea(void) const { return WingArea; }
@ -163,7 +164,7 @@ public:
inline double GetXYZrp(int idx) const { return vXYZrp(idx); } inline double GetXYZrp(int idx) const { return vXYZrp(idx); }
inline double GetXYZvrp(int idx) const { return vXYZvrp(idx); } inline double GetXYZvrp(int idx) const { return vXYZvrp(idx); }
inline double GetXYZep(int idx) const { return vXYZep(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 void SetHoldDown(int hd) {HoldDown = hd;}
inline int GetHoldDown(void) const {return HoldDown;} inline int GetHoldDown(void) const {return HoldDown;}
@ -193,7 +194,7 @@ private:
double HTailArea, VTailArea, HTailArm, VTailArm; double HTailArea, VTailArea, HTailArm, VTailArm;
double lbarh,lbarv,vbarh,vbarv; double lbarh,lbarv,vbarh,vbarv;
int HoldDown; int HoldDown;
string AircraftName; std::string AircraftName;
void Debug(int from); void Debug(int from);
}; };

View file

@ -54,6 +54,10 @@ INCLUDES
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGInertial.h" #include "FGInertial.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -51,7 +51,11 @@ INCLUDES
#include "FGBuoyantForces.h" #include "FGBuoyantForces.h"
#include "FGGroundReactions.h" #include "FGGroundReactions.h"
#include "FGPropulsion.h" #include "FGPropulsion.h"
#include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include <iostream>
using namespace std;
namespace JSBSim { 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); 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: // The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print // unset: In this case (the default) JSBSim would only print

View file

@ -40,7 +40,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGModel.h" #include "FGModel.h"
#include "FGFDMExec.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include "math/FGLocation.h" #include "math/FGLocation.h"
#include "FGPropagate.h" #include "FGPropagate.h"
@ -172,15 +171,15 @@ public:
double GetMagBeta (void) const { return fabs(beta); } double GetMagBeta (void) const { return fabs(beta); }
double Getalpha (int unit) const { if (unit == inDegrees) return alpha*radtodeg; 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; 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; 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; 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; 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 Getqbar (void) const { return qbar; }
double GetqbarUW (void) const { return qbarUW; } double GetqbarUW (void) const { return qbarUW; }
@ -281,6 +280,7 @@ private:
void CalculateRelativePosition(void); void CalculateRelativePosition(void);
void bind(void); void bind(void);
double BadUnits(void) const;
void Debug(int from); void Debug(int from);
}; };

View file

@ -39,6 +39,9 @@ INCLUDES
#include "FGBuoyantForces.h" #include "FGBuoyantForces.h"
#include "FGMassBalance.h" #include "FGMassBalance.h"
#include "input_output/FGPropertyManager.h" // Need? #include "input_output/FGPropertyManager.h" // Need?
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -53,6 +53,10 @@
*/ */
#include "FGExternalForce.h" #include "FGExternalForce.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -37,8 +37,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGExternalReactions.h" #include "FGExternalReactions.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <string> #include <string>
using namespace std;
namespace JSBSim { namespace JSBSim {
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -40,7 +40,7 @@ INCLUDES
#include "FGModel.h" #include "FGModel.h"
#include "FGExternalForce.h" #include "FGExternalForce.h"
#include "input_output/FGXMLElement.h" #include <vector>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -54,6 +54,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -154,7 +156,7 @@ public:
private: private:
vector <FGExternalForce*> Forces; std::vector <FGExternalForce*> Forces;
unsigned int numForces; unsigned int numForces;
FGColumnVector3 vTotalForces; FGColumnVector3 vTotalForces;
FGColumnVector3 vTotalMoments; FGColumnVector3 vTotalMoments;

View file

@ -39,6 +39,7 @@ INCLUDES
#include "FGFCS.h" #include "FGFCS.h"
#include "FGFDMExec.h" #include "FGFDMExec.h"
#include "FGGroundReactions.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include <fstream> #include <fstream>
#include <sstream> #include <sstream>
@ -58,6 +59,8 @@ INCLUDES
#include "models/flight_control/FGMagnetometer.h" #include "models/flight_control/FGMagnetometer.h"
#include "models/flight_control/FGGyro.h" #include "models/flight_control/FGGyro.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; 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 fullpath, localpath;
string systemPath = FDMExec->GetSystemsPath(); 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 fullpath, localpath;
string systemPath = FDMExec->GetSystemsPath(); 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; unsigned int comp;
string CompStrings = ""; string CompStrings = "";
@ -747,7 +750,7 @@ string FGFCS::GetComponentStrings(string delimeter)
for (unsigned int i=0; i<Systems.size(); i++) { for (unsigned int i=0; i<Systems.size(); i++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else CompStrings += delimeter; else CompStrings += delimiter;
CompStrings += Systems[i]->GetName(); CompStrings += Systems[i]->GetName();
total_count++; total_count++;
@ -756,7 +759,7 @@ string FGFCS::GetComponentStrings(string delimeter)
for (comp = 0; comp < APComponents.size(); comp++) for (comp = 0; comp < APComponents.size(); comp++)
{ {
if (firstime) firstime = false; if (firstime) firstime = false;
else CompStrings += delimeter; else CompStrings += delimiter;
CompStrings += APComponents[comp]->GetName(); CompStrings += APComponents[comp]->GetName();
total_count++; total_count++;
@ -764,7 +767,7 @@ string FGFCS::GetComponentStrings(string delimeter)
for (comp = 0; comp < FCSComponents.size(); comp++) { for (comp = 0; comp < FCSComponents.size(); comp++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else CompStrings += delimeter; else CompStrings += delimiter;
CompStrings += FCSComponents[comp]->GetName(); CompStrings += FCSComponents[comp]->GetName();
total_count++; 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; std::ostringstream buf;
@ -785,7 +788,7 @@ string FGFCS::GetComponentValues(string delimeter)
for (unsigned int i=0; i<Systems.size(); i++) { for (unsigned int i=0; i<Systems.size(); i++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else buf << delimeter; else buf << delimiter;
buf << setprecision(9) << Systems[i]->GetOutput(); buf << setprecision(9) << Systems[i]->GetOutput();
total_count++; total_count++;
@ -793,7 +796,7 @@ string FGFCS::GetComponentValues(string delimeter)
for (comp = 0; comp < APComponents.size(); comp++) { for (comp = 0; comp < APComponents.size(); comp++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else buf << delimeter; else buf << delimiter;
buf << setprecision(9) << APComponents[comp]->GetOutput(); buf << setprecision(9) << APComponents[comp]->GetOutput();
total_count++; total_count++;
@ -801,7 +804,7 @@ string FGFCS::GetComponentValues(string delimeter)
for (comp = 0; comp < FCSComponents.size(); comp++) { for (comp = 0; comp < FCSComponents.size(); comp++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else buf << delimeter; else buf << delimiter;
buf << setprecision(9) << FCSComponents[comp]->GetOutput(); buf << setprecision(9) << FCSComponents[comp]->GetOutput();
total_count++; total_count++;

View file

@ -38,6 +38,7 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iosfwd>
#include <vector> #include <vector>
#include <string> #include <string>
@ -352,15 +353,15 @@ public:
FGState* GetState(void) { return State; } FGState* GetState(void) { return State; }
/** Retrieves all component names for inclusion in output stream /** 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 */ @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 /** 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 @return a string containing the numeric values for the current set of
component outputs */ component outputs */
string GetComponentValues(string delimeter); std::string GetComponentValues(const std::string& delimiter);
/// @name Pilot input command setting /// @name Pilot input command setting
//@{ //@{
@ -537,8 +538,8 @@ public:
@return true if succesful */ @return true if succesful */
bool Load(Element* el, SystemType systype); bool Load(Element* el, SystemType systype);
ifstream* FindSystemFile(string system_filename); std::ifstream* FindSystemFile(const std::string& system_filename);
string FindSystemFullPathname(string system_filename); std::string FindSystemFullPathname(const std::string& system_filename);
void AddThrottle(void); void AddThrottle(void);
void AddGear(void); void AddGear(void);
@ -551,20 +552,20 @@ private:
double DePos[NForms], DaLPos[NForms], DaRPos[NForms], DrPos[NForms]; double DePos[NForms], DaLPos[NForms], DaRPos[NForms], DrPos[NForms];
double DfPos[NForms], DsbPos[NForms], DspPos[NForms]; double DfPos[NForms], DsbPos[NForms], DspPos[NForms];
double PTrimCmd, YTrimCmd, RTrimCmd; double PTrimCmd, YTrimCmd, RTrimCmd;
vector <double> ThrottleCmd; std::vector <double> ThrottleCmd;
vector <double> ThrottlePos; std::vector <double> ThrottlePos;
vector <double> MixtureCmd; std::vector <double> MixtureCmd;
vector <double> MixturePos; std::vector <double> MixturePos;
vector <double> PropAdvanceCmd; std::vector <double> PropAdvanceCmd;
vector <double> PropAdvance; std::vector <double> PropAdvance;
vector <bool> PropFeatherCmd; std::vector <bool> PropFeatherCmd;
vector <bool> PropFeather; std::vector <bool> PropFeather;
vector <double> SteerPosDeg; std::vector <double> SteerPosDeg;
double LeftBrake, RightBrake, CenterBrake; // Brake settings double LeftBrake, RightBrake, CenterBrake; // Brake settings
double GearCmd,GearPos; double GearCmd,GearPos;
double TailhookPos, WingFoldPos; double TailhookPos, WingFoldPos;
typedef vector <FGFCSComponent*> FCSCompVec; typedef std::vector <FGFCSComponent*> FCSCompVec;
FCSCompVec Systems; FCSCompVec Systems;
FCSCompVec FCSComponents; FCSCompVec FCSComponents;
FCSCompVec APComponents; FCSCompVec APComponents;

View file

@ -41,10 +41,15 @@ INCLUDES
#include "models/FGInertial.h" #include "models/FGInertial.h"
#include "models/FGMassBalance.h" #include "models/FGMassBalance.h"
#include "FGGasCell.h" #include "FGGasCell.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <cstdlib>
using std::cerr; using std::cerr;
using std::endl; using std::endl;
using std::cout; using std::cout;
using std::string;
using std::max;
namespace JSBSim { namespace JSBSim {

View file

@ -40,16 +40,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include "models/propulsion/FGForce.h" #include "models/propulsion/FGForce.h"
#include "math/FGFunction.h" #include "math/FGFunction.h"
#include <string> #include <string>
using std::string;
using std::cerr;
using std::endl;
using std::cout;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -64,6 +59,7 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGBallonet; class FGBallonet;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -230,7 +226,7 @@ private:
enum GasType {ttUNKNOWN, ttHYDROGEN, ttHELIUM, ttAIR}; enum GasType {ttUNKNOWN, ttHYDROGEN, ttHELIUM, ttAIR};
GasType Type; GasType Type;
string type; std::string type;
int CellNum; int CellNum;
// Structural constants // Structural constants
double MaxVolume; // [ft<66>] double MaxVolume; // [ft<66>]

View file

@ -39,8 +39,11 @@ INCLUDES
#include <iomanip> #include <iomanip>
#include "FGGroundReactions.h" #include "FGGroundReactions.h"
#include "FGFCS.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -40,6 +40,9 @@ INCLUDES
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGState.h" #include "FGState.h"
#include "FGMassBalance.h" #include "FGMassBalance.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -42,8 +42,14 @@ INCLUDES
#include "FGState.h" #include "FGState.h"
#include "FGFDMExec.h" #include "FGFDMExec.h"
#include <fstream> #include "input_output/FGfdmSocket.h"
#include "input_output/FGXMLElement.h"
#include <sstream>
#include <iomanip> #include <iomanip>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -89,9 +95,8 @@ bool FGInput::InitModel(void)
bool FGInput::Run(void) bool FGInput::Run(void)
{ {
string line, token, info_string; string line, token;
size_t start=0, string_start=0, string_end=0; size_t start=0, string_start=0, string_end=0;
char buf[100];
double value=0; double value=0;
FGPropertyManager* node=0; FGPropertyManager* node=0;
@ -157,8 +162,9 @@ bool FGInput::Run(void)
socket->Reply("Must be in HOLD to search properties\n"); socket->Reply("Must be in HOLD to search properties\n");
} }
} else if (node > 0) { } else if (node > 0) {
sprintf(buf, "%s = %12.6f\n", argument.c_str(), node->getDoubleValue()); ostringstream buf;
socket->Reply(buf); buf << argument << " = " << setw(12) << setprecision(6) << node->getDoubleValue() << endl;
socket->Reply(buf.str());
} }
} else if (command == "hold") { // PAUSE } else if (command == "hold") { // PAUSE
@ -180,12 +186,12 @@ bool FGInput::Run(void)
} else if (command == "info") { // INFO } else if (command == "info") { // INFO
// get info about the sim run and/or aircraft, etc. // get info about the sim run and/or aircraft, etc.
sprintf(buf, "%8.3f", State->Getsim_time()); ostringstream info;
info_string = "JSBSim version: " + JSBSim_version + "\n"; info << "JSBSim version: " << JSBSim_version << endl;
info_string += "Config File version: " + needed_cfg_version + "\n"; info << "Config File version: " << needed_cfg_version << endl;
info_string += "Aircraft simulated: " + Aircraft->GetAircraftName() + "\n"; info << "Aircraft simulated: " << Aircraft->GetAircraftName() << endl;
info_string += "Simulation time: " + string(buf) + "\n"; info << "Simulation time: " << setw(8) << setprecision(3) << State->Getsim_time() << endl;
socket->Reply(info_string); socket->Reply(info.str());
} else if (command == "help") { // HELP } else if (command == "help") { // HELP

View file

@ -40,11 +40,7 @@ INCLUDES
#include "FGModel.h" #include "FGModel.h"
#include <iostream> #include <string>
#include <fstream>
#include "input_output/FGfdmSocket.h"
#include "input_output/FGXMLElement.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -58,6 +54,10 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGFDMExec;
class Element;
class FGfdmSocket;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -78,7 +78,6 @@ public:
bool InitModel(void); bool InitModel(void);
bool Run(void); bool Run(void);
void SetType(string);
inline void Enable(void) { enabled = true; } inline void Enable(void) { enabled = true; }
inline void Disable(void) { enabled = false; } inline void Disable(void) { enabled = false; }
inline bool Toggle(void) {enabled = !enabled; return enabled;} inline bool Toggle(void) {enabled = !enabled; return enabled;}
@ -88,7 +87,7 @@ private:
bool sFirstPass, dFirstPass, enabled; bool sFirstPass, dFirstPass, enabled;
unsigned int port; unsigned int port;
FGfdmSocket* socket; FGfdmSocket* socket;
string data; std::string data;
void Debug(int from); void Debug(int from);
}; };
} }

View file

@ -41,6 +41,16 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGLGear.h" #include "FGLGear.h"
#include "FGState.h"
#include "FGGroundReactions.h"
#include "FGFCS.h"
#include "FGAuxiliary.h"
#include "FGAtmosphere.h"
#include "FGMassBalance.h"
#include "math/FGTable.h"
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,11 +38,8 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFDMExec.h"
#include "models/propulsion/FGForce.h" #include "models/propulsion/FGForce.h"
#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include "math/FGTable.h"
#include <string> #include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@ -63,6 +60,8 @@ class FGFCS;
class FGState; class FGState;
class FGMassBalance; class FGMassBalance;
class FGAuxiliary; class FGAuxiliary;
class FGTable;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -333,11 +332,11 @@ private:
bool isRetractable; bool isRetractable;
bool GearUp, GearDown; bool GearUp, GearDown;
bool Servicable; bool Servicable;
string name; std::string name;
string sSteerType; std::string sSteerType;
string sBrakeGroup; std::string sBrakeGroup;
string sRetractable; std::string sRetractable;
string sContactType; std::string sContactType;
BrakeGroup eBrakeGrp; BrakeGroup eBrakeGrp;
ContactType eContactType; ContactType eContactType;
@ -377,12 +376,6 @@ private:
void Debug(int from); void Debug(int from);
}; };
} }
#include "FGAircraft.h"
#include "FGPropagate.h"
#include "FGAuxiliary.h"
#include "FGFCS.h"
#include "FGMassBalance.h"
#include "FGState.h"
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -42,6 +42,10 @@ INCLUDES
#include "FGPropulsion.h" #include "FGPropulsion.h"
#include "FGBuoyantForces.h" #include "FGBuoyantForces.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -338,6 +342,24 @@ void FGMassBalance::bind(void)
(PMF)&FGMassBalance::GetXYZcg); (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: // The bitmasked value choices are as follows:
// unset: In this case (the default) JSBSim would only print // unset: In this case (the default) JSBSim would only print

View file

@ -189,24 +189,10 @@ private:
void SetPointMassWeight(double wt) {Weight = wt;} void SetPointMassWeight(double wt) {Weight = wt;}
double GetPointMassWeight(void) const {return Weight;} double GetPointMassWeight(void) const {return Weight;}
void bind(FGPropertyManager* PropertyManager, int num) { 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);
}
}; };
vector <struct PointMass*> PointMasses; std::vector <struct PointMass*> PointMasses;
void bind(void); void bind(void);
void Debug(int from); void Debug(int from);

View file

@ -52,6 +52,9 @@ INCLUDES
#include "FGAircraft.h" #include "FGAircraft.h"
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGAuxiliary.h" #include "FGAuxiliary.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -39,10 +39,7 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <string> #include <string>
#include <vector> #include <vector>
@ -52,8 +49,6 @@ DEFINITIONS
#define ID_MODEL "$Id$" #define ID_MODEL "$Id$"
using namespace std;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -74,6 +69,8 @@ class FGBuoyantForces;
class FGAircraft; class FGAircraft;
class FGPropagate; class FGPropagate;
class FGAuxiliary; class FGAuxiliary;
class Element;
class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -102,7 +99,7 @@ public:
virtual bool Load(Element* el); virtual bool Load(Element* el);
FGModel* NextModel; FGModel* NextModel;
string Name; std::string Name;
/** Runs the model; called by the Executive /** Runs the model; called by the Executive
@see JSBSim.cpp documentation @see JSBSim.cpp documentation
@ -137,7 +134,7 @@ protected:
FGAuxiliary* Auxiliary; FGAuxiliary* Auxiliary;
FGPropertyManager* PropertyManager; FGPropertyManager* PropertyManager;
vector <double*> interface_properties; std::vector <double*> interface_properties;
}; };
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

View file

@ -53,13 +53,16 @@ INCLUDES
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGAuxiliary.h" #include "FGAuxiliary.h"
#include "FGInertial.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 "models/propulsion/FGPiston.h"
#include <fstream> #include <sstream>
#include <iomanip> #include <iomanip>
#include <cstring> #include <cstring>
#include <cstdlib>
#include "input_output/net_fdm.hxx" #include "input_output/net_fdm.hxx"
#include "input_output/FGfdmSocket.h"
#if defined(WIN32) && !defined(__CYGWIN__) #if defined(WIN32) && !defined(__CYGWIN__)
# include <windows.h> # include <windows.h>
@ -70,6 +73,8 @@ INCLUDES
static const int endianTest = 1; static const int endianTest = 1;
#define isLittleEndian (*((char *) &endianTest ) != 0) #define isLittleEndian (*((char *) &endianTest ) != 0)
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";
@ -157,20 +162,17 @@ FGOutput::~FGOutput()
bool FGOutput::InitModel(void) bool FGOutput::InitModel(void)
{ {
char fname[1000] = "";
if (!FGModel::InitModel()) return false; if (!FGModel::InitModel()) return false;
if (Filename.size() > 0 && StartNewFile) { if (Filename.size() > 0 && StartNewFile) {
size_t idx = BaseFilename.find_last_of("."); ostringstream buf;
size_t len = BaseFilename.length(); string::size_type dot = BaseFilename.find_last_of('.');
string extension = ""; if (dot != string::npos) {
if (idx != string::npos) { buf << BaseFilename.substr(0, dot) << '_' << runID_postfix++ << BaseFilename.substr(dot);
extension = BaseFilename.substr(idx, len-idx); } else {
len -= extension.length(); buf << BaseFilename << '_' << runID_postfix++;
} }
sprintf(fname, "%s_%d%s", BaseFilename.substr(0,len).c_str(), runID_postfix++, extension.c_str()); Filename = buf.str();
Filename = string(fname);
datafile.close(); datafile.close();
StartNewFile = false; StartNewFile = false;
dFirstPass = true; dFirstPass = true;
@ -205,7 +207,7 @@ bool FGOutput::Run(void)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGOutput::SetType(string type) void FGOutput::SetType(const string& type)
{ {
if (type == "CSV") { if (type == "CSV") {
Type = otCSV; Type = otCSV;
@ -227,7 +229,7 @@ void FGOutput::SetType(string type)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
void FGOutput::DelimitedOutput(string fname) void FGOutput::DelimitedOutput(const string& fname)
{ {
streambuf* buffer; streambuf* buffer;
string scratch = ""; 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; string asciiData;

View file

@ -41,14 +41,11 @@ INCLUDES
#include "FGModel.h" #include "FGModel.h"
#include <iostream>
#include <fstream> #include <fstream>
#include "input_output/FGfdmSocket.h"
#include "input_output/FGXMLFileRead.h" #include "input_output/FGXMLFileRead.h"
#include "input_output/net_fdm.hxx" #include "input_output/net_fdm.hxx"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -61,6 +58,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGfdmSocket;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -140,22 +139,22 @@ public:
bool InitModel(void); bool InitModel(void);
bool Run(void); bool Run(void);
void DelimitedOutput(string); void DelimitedOutput(const std::string&);
void SocketOutput(void); void SocketOutput(void);
void FlightGearSocketOutput(void); void FlightGearSocketOutput(void);
void SocketStatusOutput(string); void SocketStatusOutput(const std::string&);
void SocketDataFill(FGNetFDM* net); void SocketDataFill(FGNetFDM* net);
void SetType(string); void SetType(const std::string& type);
void SetStartNewFile(bool tt) {StartNewFile = tt;} void SetStartNewFile(bool tt) {StartNewFile = tt;}
void SetSubsystems(int tt) {SubSystems = tt;} void SetSubsystems(int tt) {SubSystems = tt;}
void Enable(void) { enabled = true; } void Enable(void) { enabled = true; }
void Disable(void) { enabled = false; } void Disable(void) { enabled = false; }
bool Toggle(void) {enabled = !enabled; return enabled;} bool Toggle(void) {enabled = !enabled; return enabled;}
bool Load(Element* el); bool Load(Element* el);
void SetOutputFileName(string fname) {Filename = fname;} void SetOutputFileName(const std::string& fname) {Filename = fname;}
void SetDirectivesFile(string fname) {DirectivesFile = fname;} void SetDirectivesFile(const std::string& fname) {DirectivesFile = fname;}
void SetRate(int rt); void SetRate(int rt);
string GetOutputFileName(void) const {return Filename;} string GetOutputFileName(void) const {return Filename;}
@ -185,11 +184,11 @@ private:
int SubSystems; int SubSystems;
int runID_postfix; int runID_postfix;
bool StartNewFile; bool StartNewFile;
string output_file_name, delimeter, BaseFilename, Filename, DirectivesFile; std::string output_file_name, delimeter, BaseFilename, Filename, DirectivesFile;
ofstream datafile; std::ofstream datafile;
FGfdmSocket* socket; FGfdmSocket* socket;
FGfdmSocket* flightGearSocket; FGfdmSocket* flightGearSocket;
vector <FGPropertyManager*> OutputProperties; std::vector <FGPropertyManager*> OutputProperties;
void Debug(int from); void Debug(int from);
}; };

View file

@ -54,7 +54,8 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <cmath> #include <cmath>
#include <iomanip> #include <cstdlib>
#include <iostream>
#include "FGPropagate.h" #include "FGPropagate.h"
#include "FGFDMExec.h" #include "FGFDMExec.h"
@ -64,6 +65,8 @@ INCLUDES
#include "FGInertial.h" #include "FGInertial.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -45,15 +45,24 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGPropulsion.h" #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/FGRocket.h"
#include "models/propulsion/FGTurbine.h" #include "models/propulsion/FGTurbine.h"
#include "models/propulsion/FGPiston.h" #include "models/propulsion/FGPiston.h"
#include "models/propulsion/FGElectric.h" #include "models/propulsion/FGElectric.h"
#include "models/propulsion/FGTurboProp.h" #include "models/propulsion/FGTurboProp.h"
#include "models/propulsion/FGTank.h"
#include "input_output/FGPropertyManager.h" #include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLParse.h" #include "input_output/FGXMLParse.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include <iostream>
#include <sstream> #include <sstream>
#include <cstdlib>
using namespace std;
namespace JSBSim { 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 fullpath, localpath;
string enginePath = FDMExec->GetEnginePath(); 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 fullpath, localpath;
string enginePath = FDMExec->GetEnginePath(); 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; unsigned int i;
@ -393,13 +402,13 @@ string FGPropulsion::GetPropulsionStrings(string delimeter)
for (i=0; i<Engines.size(); i++) { for (i=0; i<Engines.size(); i++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else PropulsionStrings += delimeter; else PropulsionStrings += delimiter;
PropulsionStrings += Engines[i]->GetEngineLabels(delimeter); PropulsionStrings += Engines[i]->GetEngineLabels(delimiter);
} }
for (i=0; i<Tanks.size(); i++) { for (i=0; i<Tanks.size(); i++) {
if (Tanks[i]->GetType() == FGTank::ttFUEL) buf << delimeter << "Fuel Tank " << i; if (Tanks[i]->GetType() == FGTank::ttFUEL) buf << delimiter << "Fuel Tank " << i;
else if (Tanks[i]->GetType() == FGTank::ttOXIDIZER) buf << delimeter << "Oxidizer Tank " << i; else if (Tanks[i]->GetType() == FGTank::ttOXIDIZER) buf << delimiter << "Oxidizer Tank " << i;
} }
return PropulsionStrings; 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; unsigned int i;
@ -417,12 +426,12 @@ string FGPropulsion::GetPropulsionValues(string delimeter)
for (i=0; i<Engines.size(); i++) { for (i=0; i<Engines.size(); i++) {
if (firstime) firstime = false; if (firstime) firstime = false;
else PropulsionValues += delimeter; else PropulsionValues += delimiter;
PropulsionValues += Engines[i]->GetEngineValues(delimeter); PropulsionValues += Engines[i]->GetEngineValues(delimiter);
} }
for (i=0; i<Tanks.size(); i++) { for (i=0; i<Tanks.size(); i++) {
buf << delimeter; buf << delimiter;
buf << Tanks[i]->GetContents(); buf << Tanks[i]->GetContents();
} }

View file

@ -39,11 +39,9 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <vector> #include <vector>
#include <fstream> #include <iosfwd>
#include "FGModel.h" #include "FGModel.h"
#include "models/propulsion/FGEngine.h"
#include "models/propulsion/FGTank.h"
#include "math/FGMatrix33.h" #include "math/FGMatrix33.h"
#include "input_output/FGXMLFileRead.h" #include "input_output/FGXMLFileRead.h"
@ -59,6 +57,9 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGTank;
class FGEngine;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -157,8 +158,8 @@ public:
/** Sets up the engines as running */ /** Sets up the engines as running */
void InitRunning(int n); void InitRunning(int n);
string GetPropulsionStrings(string delimeter); std::string GetPropulsionStrings(const std::string& delimiter);
string GetPropulsionValues(string delimeter); std::string GetPropulsionValues(const std::string& delimiter);
inline FGColumnVector3& GetForces(void) {return vForces; } inline FGColumnVector3& GetForces(void) {return vForces; }
inline double GetForces(int n) const { return vForces(n);} inline double GetForces(int n) const { return vForces(n);}
@ -176,8 +177,8 @@ public:
FGColumnVector3& GetTanksMoment(void); FGColumnVector3& GetTanksMoment(void);
double GetTanksWeight(void); double GetTanksWeight(void);
ifstream* FindEngineFile(string filename); std::ifstream* FindEngineFile(const std::string& filename);
string FindEngineFullPathname(string engine_filename); std::string FindEngineFullPathname(const std::string& engine_filename);
inline int GetActiveEngine(void) const {return ActiveEngine;} inline int GetActiveEngine(void) const {return ActiveEngine;}
inline bool GetFuelFreeze(void) {return fuel_freeze;} inline bool GetFuelFreeze(void) {return fuel_freeze;}
double GetTotalFuelQuantity(void) const {return TotalFuelQuantity;} double GetTotalFuelQuantity(void) const {return TotalFuelQuantity;}
@ -190,8 +191,8 @@ public:
FGMatrix33& CalculateTankInertias(void); FGMatrix33& CalculateTankInertias(void);
private: private:
vector <FGEngine*> Engines; std::vector <FGEngine*> Engines;
vector <FGTank*> Tanks; std::vector <FGTank*> Tanks;
unsigned int numSelectedFuelTanks; unsigned int numSelectedFuelTanks;
unsigned int numSelectedOxiTanks; unsigned int numSelectedOxiTanks;
unsigned int numFuelTanks; unsigned int numFuelTanks;

View file

@ -59,11 +59,11 @@ INCLUDES
#include "FGMSIS.h" #include "FGMSIS.h"
#include "FGState.h" #include "FGState.h"
#include <math.h> /* maths functions */ #include <cmath> /* maths functions */
#include <stdlib.h> /* for malloc/free */
#include <stdio.h> /* for printf */
#include <iostream> // for cout, endl #include <iostream> // for cout, endl
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";
@ -322,7 +322,7 @@ double MSIS::dnet (double dd, double dm, double zhm, double xmm, double xm)
double ylog; double ylog;
a = zhm / (xmm-xm); a = zhm / (xmm-xm);
if (!((dm>0) && (dd>0))) { 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)) if ((dd==0) && (dm==0))
dd=1; dd=1;
if (dm==0) 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]; h = xa[khi] - xa[klo];
if (h==0.0) if (h==0.0)
printf("bad XA input to splint"); cerr << "bad XA input to splint" << endl;
a = (xa[khi] - x)/h; a = (xa[khi] - x)/h;
b = (x - xa[klo])/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; 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 *u;
double sig, p, qn, un; double sig, p, qn, un;
int i, k; int i, k;
u=(double*)malloc(sizeof(double)*n); u=new double[n];
if (u==NULL) { if (u==NULL) {
printf("Out Of Memory in spline - ERROR"); cerr << "Out Of Memory in spline - ERROR" << endl;
return; return;
} }
if (yp1>0.99E30) { 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--) for (k=n-2;k>=0;k--)
y2[k] = y2[k] * y2[k+1] + u[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) if (p[99]==0)
p[99]=pset; p[99]=pset;
if (p[99]!=pset) { if (p[99]!=pset) {
printf("Wrong parameter set for glob7s\n"); cerr << "Wrong parameter set for glob7s" << endl;
return -1; return -1;
} }
for (j=0;j<14;j++) 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)<test) if (sqrt(diff*diff)<test)
return; return;
if (l==ltest) { if (l==ltest) {
printf("ERROR: ghp7 not converging for press %e, diff %e",press,diff); cerr << "ERROR: ghp7 not converging for press " << press << ", diff " << diff << endl;
return; return;
} }
xm = output->d[5] / xn / 1.66E-24; xm = output->d[5] / xn / 1.66E-24;

View file

@ -43,6 +43,9 @@ INCLUDES
#include "FGMars.h" #include "FGMars.h"
#include "FGState.h" #include "FGState.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,6 +38,10 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGAccelerometer.h" #include "FGAccelerometer.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -39,6 +39,8 @@ INCLUDES
#include "FGActuator.h" #include "FGActuator.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
static const char *IdSrc = "$Id$"; static const char *IdSrc = "$Id$";

View file

@ -38,6 +38,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGDeadBand.h" #include "FGDeadBand.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,7 +38,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -53,6 +52,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGFCS; class FGFCS;
class Element;
class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION

View file

@ -38,6 +38,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -147,6 +153,8 @@ FGFCSComponent::FGFCSComponent(FGFCS* _fcs, Element* element) : fcs(_fcs)
if (delayType.length() > 0) { if (delayType.length() > 0) {
if (delayType == "time") { if (delayType == "time") {
delay = (int)(delay / dt); delay = (int)(delay / dt);
} else if (delayType == "frames") {
// no op. the delay type of "frames" is assumed and is the default.
} else { } else {
cerr << "Unallowed delay type" << endl; cerr << "Unallowed delay type" << endl;
} }

View file

@ -38,8 +38,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLElement.h"
#include <string> #include <string>
#include <vector> #include <vector>
@ -49,9 +47,6 @@ DEFINITIONS
#define ID_FCSCOMPONENT "$Id$" #define ID_FCSCOMPONENT "$Id$"
using std::string;
using std::vector;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -59,6 +54,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGFCS; class FGFCS;
class FGPropertyManager;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -102,22 +99,22 @@ public:
virtual bool Run(void); virtual bool Run(void);
virtual void SetOutput(void); virtual void SetOutput(void);
double GetOutput (void) const {return Output;} double GetOutput (void) const {return Output;}
string GetName(void) const {return Name;} std::string GetName(void) const {return Name;}
string GetType(void) const { return Type; } std::string GetType(void) const { return Type; }
virtual double GetOutputPct(void) const { return 0; } virtual double GetOutputPct(void) const { return 0; }
protected: protected:
FGFCS* fcs; FGFCS* fcs;
FGPropertyManager* PropertyManager; FGPropertyManager* PropertyManager;
FGPropertyManager* treenode; FGPropertyManager* treenode;
vector <FGPropertyManager*> OutputNodes; std::vector <FGPropertyManager*> OutputNodes;
FGPropertyManager* ClipMinPropertyNode; FGPropertyManager* ClipMinPropertyNode;
FGPropertyManager* ClipMaxPropertyNode; FGPropertyManager* ClipMaxPropertyNode;
vector <FGPropertyManager*> InputNodes; std::vector <FGPropertyManager*> InputNodes;
vector <float> InputSigns; std::vector <float> InputSigns;
vector <double> output_array; std::vector <double> output_array;
string Type; std::string Type;
string Name; std::string Name;
double Input; double Input;
double Output; double Output;
double clipmax, clipmin; double clipmax, clipmin;

View file

@ -38,6 +38,10 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSFunction.h" #include "FGFCSFunction.h"
#include <cstdlib>
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,6 +38,13 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFilter.h" #include "FGFilter.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
#include <iostream>
#include <string>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -54,9 +61,10 @@ FGFilter::FGFilter(FGFCS* fcs, Element* element) : FGFCSComponent(fcs, element)
DynamicFilter = false; DynamicFilter = false;
C[1] = C[2] = C[3] = C[4] = C[5] = C[6] = 0.0; 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; PropertySign[i] = 1.0;
PropertyNode[i] = 0L; PropertyNode[i] = 0L;
ReadFilterCoefficients(element, i);
} }
if (Type == "LAG_FILTER") FilterType = eLag ; 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 if (Type == "INTEGRATOR") FilterType = eIntegrator ;
else FilterType = eUnknown ; 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")) { if (element->FindElement("trigger")) {
Trigger = PropertyManager->GetNode(element->FindElementValue("trigger")); Trigger = PropertyManager->GetNode(element->FindElementValue("trigger"));
} }
@ -97,13 +98,13 @@ FGFilter::~FGFilter()
void FGFilter::ReadFilterCoefficients(Element* element, int index) void FGFilter::ReadFilterCoefficients(Element* element, int index)
{ {
char buf[3]; // index is known to be 1-7.
sprintf(buf, "c%d", index); // A stringstream would be overkill, but also trying to avoid sprintf
string coefficient = string(buf); string coefficient = "c0";
string property_string=""; coefficient[1] += index;
if ( element->FindElement(coefficient) ) { if ( element->FindElement(coefficient) ) {
property_string = element->FindElementValue(coefficient); string property_string = element->FindElementValue(coefficient);
if (!is_number(property_string)) { // property if (!is_number(property_string)) { // property
if (property_string[0] == '-') { if (property_string[0] == '-') {
PropertySign[index] = -1.0; PropertySign[index] = -1.0;

View file

@ -38,7 +38,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -52,6 +51,10 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class Element;
class FGPropertyManager;
class FGFCS;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/

View file

@ -38,6 +38,12 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGain.h" #include "FGGain.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <string>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,12 +38,8 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include <string>
#include "input_output/FGXMLElement.h"
#include "math/FGTable.h" #include "math/FGTable.h"
using std::string;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -57,6 +53,7 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGFCS; class FGFCS;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION

View file

@ -38,6 +38,9 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGradient.h" #include "FGGradient.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,6 +38,9 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGGyro.h" #include "FGGyro.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,8 +38,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGKinemat.h" #include "FGKinemat.h"
#include <math.h> #include "input_output/FGXMLElement.h"
#include <float.h> #include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,12 +38,7 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h"
#include <vector> #include <vector>
#include <string>
using std::vector;
using std::string;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -134,8 +129,8 @@ public:
bool Run (void); bool Run (void);
private: private:
vector<double> Detents; std::vector<double> Detents;
vector<double> TransitionTimes; std::vector<double> TransitionTimes;
int NumDetents; int NumDetents;
double OutputPct; double OutputPct;
bool DoScale; bool DoScale;

View file

@ -40,6 +40,10 @@ INCLUDES
#include "FGMagnetometer.h" #include "FGMagnetometer.h"
#include "simgear/magvar/coremag.hxx" #include "simgear/magvar/coremag.hxx"
#include <ctime> #include <ctime>
#include <cstdlib>
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -36,6 +36,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGPID.h" #include "FGPID.h"
#include "input_output/FGXMLElement.h"
#include <string>
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -39,8 +39,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h"
#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -48,10 +46,6 @@ DEFINITIONS
#define ID_PID "$Id$" #define ID_PID "$Id$"
using std::string;
using std::string;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -59,6 +53,7 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class FGFCS; class FGFCS;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION

View file

@ -38,6 +38,11 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSensor.h" #include "FGSensor.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,8 +38,7 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h" #include <string>
#include <vector>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -53,8 +52,8 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
using std::vector;
class FGFCS; class FGFCS;
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -155,7 +154,7 @@ protected:
bool fail_low; bool fail_low;
bool fail_high; bool fail_high;
bool fail_stuck; bool fail_stuck;
string quant_property; std::string quant_property;
void ProcessSensorSignal(void); void ProcessSensorSignal(void);
void Noise(void); void Noise(void);

View file

@ -42,6 +42,8 @@ INCLUDES
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include "math/FGMatrix33.h" #include "math/FGMatrix33.h"
#include <iostream>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -77,7 +79,7 @@ public:
{ {
Element* orient_element = element->FindElement("orientation"); Element* orient_element = element->FindElement("orientation");
if (orient_element) vOrient = orient_element->FindElementTripletConvertTo("RAD"); 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"); Element* axis_element = element->FindElement("axis");
if (axis_element) { if (axis_element) {
@ -89,7 +91,7 @@ public:
} else if (sAxis == "Z" || sAxis == "z") { } else if (sAxis == "Z" || sAxis == "z") {
axis = 3; axis = 3;
} else { } 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; axis = 1;
} }
} }

View file

@ -38,6 +38,10 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSummer.h" #include "FGSummer.h"
#include "input_output/FGXMLElement.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,9 +38,6 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFCSComponent.h" #include "FGFCSComponent.h"
#include "input_output/FGXMLElement.h"
#include <vector>
#include <string>
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
@ -48,18 +45,14 @@ DEFINITIONS
#define ID_SUMMER "$Id$" #define ID_SUMMER "$Id$"
using std::vector;
using std::string;
using std::vector;
using std::string;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
namespace JSBSim { namespace JSBSim {
class Element;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/

View file

@ -62,6 +62,10 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGSwitch.h" #include "FGSwitch.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -40,7 +40,14 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGElectric.h" #include "FGElectric.h"
#include "FGState.h"
#include "models/FGPropulsion.h" #include "models/FGPropulsion.h"
#include "models/propulsion/FGThruster.h"
#include <iostream>
#include <sstream>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -92,24 +99,24 @@ double FGElectric::Calculate(void)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGElectric::GetEngineLabels(string delimeter) string FGElectric::GetEngineLabels(const string& delimiter)
{ {
std::ostringstream buf; std::ostringstream buf;
buf << Name << " HP (engine " << EngineNumber << ")" << delimeter buf << Name << " HP (engine " << EngineNumber << ")" << delimiter
<< Thruster->GetThrusterLabels(EngineNumber, delimeter); << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGElectric::GetEngineValues(string delimeter) string FGElectric::GetEngineValues(const string& delimiter)
{ {
std::ostringstream buf; std::ostringstream buf;
buf << HP << delimeter buf << HP << delimiter
<< Thruster->GetThrusterValues(EngineNumber, delimeter); << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }

View file

@ -83,8 +83,8 @@ public:
double Calculate(void); double Calculate(void);
double GetPowerAvailable(void) {return PowerAvailable;} double GetPowerAvailable(void) {return PowerAvailable;}
double getRPM(void) {return RPM;} double getRPM(void) {return RPM;}
string GetEngineLabels(string delimeter); std::string GetEngineLabels(const std::string& delimiter);
string GetEngineValues(string delimeter); std::string GetEngineValues(const std::string& delimiter);
private: private:

View file

@ -41,9 +41,16 @@ INCLUDES
#include "FGTank.h" #include "FGTank.h"
#include "FGPropeller.h" #include "FGPropeller.h"
#include "FGNozzle.h" #include "FGNozzle.h"
#include "FGState.h"
#include "models/FGPropulsion.h"
#include "input_output/FGXMLParse.h" #include "input_output/FGXMLParse.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include <iostream>
#include <fstream> #include <fstream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -44,9 +44,8 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "FGThruster.h"
#include "input_output/FGPropertyManager.h"
#include "input_output/FGXMLFileRead.h" #include "input_output/FGXMLFileRead.h"
#include "math/FGColumnVector3.h"
#include <vector> #include <vector>
#include <string> #include <string>
@ -56,9 +55,6 @@ DEFINITIONS
#define ID_ENGINE "$Id$" #define ID_ENGINE "$Id$"
using std::string;
using std::vector;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS FORWARD DECLARATIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -75,6 +71,7 @@ class FGPropulsion;
class FGAuxiliary; class FGAuxiliary;
class FGThruster; class FGThruster;
class Element; class Element;
class FGPropertyManager;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
@ -187,8 +184,8 @@ public:
bool LoadThruster(Element *el); bool LoadThruster(Element *el);
FGThruster* GetThruster(void) {return Thruster;} FGThruster* GetThruster(void) {return Thruster;}
virtual string GetEngineLabels(string delimeter) = 0; virtual std::string GetEngineLabels(const std::string& delimiter) = 0;
virtual string GetEngineValues(string delimeter) = 0; virtual std::string GetEngineValues(const std::string& delimiter) = 0;
protected: protected:
/** Reduces the fuel in the active tanks by the amount required. /** Reduces the fuel in the active tanks by the amount required.
@ -205,7 +202,7 @@ protected:
virtual double CalcFuelNeed(void); virtual double CalcFuelNeed(void);
FGPropertyManager* PropertyManager; FGPropertyManager* PropertyManager;
string Name; std::string Name;
const int EngineNumber; const int EngineNumber;
EngineType Type; EngineType Type;
double X, Y, Z; double X, Y, Z;
@ -240,20 +237,10 @@ protected:
FGAuxiliary* Auxiliary; FGAuxiliary* Auxiliary;
FGThruster* Thruster; FGThruster* Thruster;
vector <int> SourceTanks; std::vector <int> SourceTanks;
void Debug(int from); 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 #endif

View file

@ -46,6 +46,10 @@ and the cg.
#include "models/FGPropagate.h" #include "models/FGPropagate.h"
#include "models/FGMassBalance.h" #include "models/FGMassBalance.h"
#include "models/FGAerodynamics.h" #include "models/FGAerodynamics.h"
#include <iostream>
#include <cstdlib>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -35,10 +35,15 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iostream>
#include <sstream> #include <sstream>
#include <cstdlib>
#include "FGNozzle.h" #include "FGNozzle.h"
#include "models/FGAtmosphere.h" #include "models/FGAtmosphere.h"
#include "input_output/FGXMLElement.h"
using namespace std;
namespace JSBSim { 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; cerr << "Fatal Error: Nozzle exit area must be given in nozzle config file." << endl;
exit(-1); exit(-1);
} }
/*
if (nozzle_element->FindElement("pe")) if (nozzle_element->FindElement("pe"))
PE = nozzle_element->FindElementValueAsNumberConvertTo("pe", "PSF"); PE = nozzle_element->FindElementValueAsNumberConvertTo("pe", "PSF");
else { else {
cerr << "Fatal Error: Nozzle exit pressure must be given in nozzle config file." << endl; cerr << "Fatal Error: Nozzle exit pressure must be given in nozzle config file." << endl;
exit(-1); exit(-1);
} }
*/
Thrust = 0; Thrust = 0;
Type = ttNozzle; Type = ttNozzle;

View file

@ -95,7 +95,7 @@ public:
string GetThrusterValues(int id, string delimeter); string GetThrusterValues(int id, string delimeter);
private: private:
double PE; // double PE;
double Area; double Area;
void Debug(int from); void Debug(int from);
}; };

View file

@ -43,8 +43,13 @@ INCLUDES
#include <sstream> #include <sstream>
#include "FGPiston.h" #include "FGPiston.h"
#include "FGState.h"
#include "models/FGAtmosphere.h"
#include "models/FGPropulsion.h" #include "models/FGPropulsion.h"
#include "FGPropeller.h" #include "FGPropeller.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -838,28 +843,28 @@ void FGPiston::doOilPressure(void)
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGPiston::GetEngineLabels(string delimeter) string FGPiston::GetEngineLabels(const string& delimiter)
{ {
std::ostringstream buf; std::ostringstream buf;
buf << Name << " Power Available (engine " << EngineNumber << " in HP)" << delimeter buf << Name << " Power Available (engine " << EngineNumber << " in HP)" << delimiter
<< Name << " HP (engine " << EngineNumber << ")" << delimeter << Name << " HP (engine " << EngineNumber << ")" << delimiter
<< Name << " equivalent ratio (engine " << EngineNumber << ")" << delimeter << Name << " equivalent ratio (engine " << EngineNumber << ")" << delimiter
<< Name << " MAP (engine " << EngineNumber << " in inHg)" << delimeter << Name << " MAP (engine " << EngineNumber << " in inHg)" << delimiter
<< Thruster->GetThrusterLabels(EngineNumber, delimeter); << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGPiston::GetEngineValues(string delimeter) string FGPiston::GetEngineValues(const string& delimiter)
{ {
std::ostringstream buf; std::ostringstream buf;
buf << PowerAvailable << delimeter << HP << delimeter buf << PowerAvailable << delimiter << HP << delimiter
<< equivalence_ratio << delimeter << ManifoldPressure_inHg << delimeter << equivalence_ratio << delimiter << ManifoldPressure_inHg << delimiter
<< Thruster->GetThrusterValues(EngineNumber, delimeter); << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }

View file

@ -195,8 +195,8 @@ public:
/// Destructor /// Destructor
~FGPiston(); ~FGPiston();
string GetEngineLabels(string delimeter); std::string GetEngineLabels(const std::string& delimiter);
string GetEngineValues(string delimeter); std::string GetEngineValues(const std::string& delimiter);
double Calculate(void); double Calculate(void);
double GetPowerAvailable(void) {return PowerAvailable;} double GetPowerAvailable(void) {return PowerAvailable;}

View file

@ -35,12 +35,16 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iostream>
#include <sstream> #include <sstream>
#include "FGPropeller.h" #include "FGPropeller.h"
#include "models/FGPropagate.h" #include "models/FGPropagate.h"
#include "models/FGAtmosphere.h" #include "models/FGAtmosphere.h"
#include "models/FGAuxiliary.h" #include "models/FGAuxiliary.h"
#include "input_output/FGXMLElement.h"
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -38,9 +38,15 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iostream>
#include <sstream> #include <sstream>
#include "FGRocket.h" #include "FGRocket.h"
#include "FGState.h"
#include "models/FGPropulsion.h"
#include "FGThruster.h"
#include "FGTank.h"
using namespace std;
namespace JSBSim { namespace JSBSim {
@ -114,25 +120,23 @@ double FGRocket::Calculate(void)
PropellantFlowRate = (FuelExpended + OxidizerExpended)/dT; PropellantFlowRate = (FuelExpended + OxidizerExpended)/dT;
Throttle = FCS->GetThrottlePos(EngineNumber); 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 // 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 // burns without regard to throttle setting.
// zero and one, representing the percentage of maximum vacuum thrust being
// applied.
if (ThrustTable != 0L) { // Thrust table given -> Solid fuel used if (ThrustTable != 0L) { // Thrust table given -> Solid fuel used
if ((Throttle == 1 || BurnTime > 0.0 ) && !Starved) { if ((Throttle == 1 || BurnTime > 0.0 ) && !Starved) {
BurnTime += State->Getdt(); BurnTime += State->Getdt();
double TotalEngineFuelAvailable=0.0; double TotalEngineFuelBurned=0.0;
for (int i=0; i<(int)SourceTanks.size(); i++) { for (int i=0; i<(int)SourceTanks.size(); i++) {
FGTank* tank = Propulsion->GetTank(i); FGTank* tank = Propulsion->GetTank(i);
if (SourceTanks[i] == 1) { if (SourceTanks[i] == 1) {
TotalEngineFuelAvailable += tank->GetContents(); TotalEngineFuelBurned += tank->GetCapacity() - tank->GetContents();
} }
} }
VacThrust = ThrustTable->GetValue(TotalEngineFuelAvailable); VacThrust = ThrustTable->GetValue(TotalEngineFuelBurned);
} else { } else {
VacThrust = 0.0; 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; std::ostringstream buf;
buf << Name << " Total Impulse (engine " << EngineNumber << " in psf)" << delimeter buf << Name << " Total Impulse (engine " << EngineNumber << " in psf)" << delimiter
<< Thruster->GetThrusterLabels(EngineNumber, delimeter); << Thruster->GetThrusterLabels(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
string FGRocket::GetEngineValues(string delimeter) string FGRocket::GetEngineValues(const string& delimiter)
{ {
std::ostringstream buf; std::ostringstream buf;
buf << It << delimeter << Thruster->GetThrusterValues(EngineNumber, delimeter); buf << It << delimiter << Thruster->GetThrusterValues(EngineNumber, delimiter);
return buf.str(); return buf.str();
} }

View file

@ -159,8 +159,8 @@ public:
double GetOxiFlowRate(void) const {return OxidizerFlowRate;} double GetOxiFlowRate(void) const {return OxidizerFlowRate;}
string GetEngineLabels(string delimeter); std::string GetEngineLabels(const std::string& delimiter);
string GetEngineValues(string delimeter); std::string GetEngineValues(const std::string& delimiter);
private: private:
/** Reduces the fuel in the active tanks by the amount required. /** Reduces the fuel in the active tanks by the amount required.

View file

@ -36,6 +36,9 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGRotor.h" #include "FGRotor.h"
#include <iostream>
using namespace std;
namespace JSBSim { namespace JSBSim {

View file

@ -37,11 +37,14 @@ INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGTank.h" #include "FGTank.h"
#include "FGFDMExec.h"
#include "models/FGAuxiliary.h" #include "models/FGAuxiliary.h"
#include "input_output/FGXMLElement.h"
#include "input_output/FGPropertyManager.h"
#include <iostream>
#include <cstdlib>
using std::cerr; using namespace std;
using std::endl;
using std::cout;
namespace JSBSim { namespace JSBSim {

View file

@ -44,17 +44,10 @@ SENTRY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include "FGFDMExec.h"
#include "FGJSBBase.h" #include "FGJSBBase.h"
#include "input_output/FGXMLElement.h"
#include "math/FGColumnVector3.h" #include "math/FGColumnVector3.h"
#include <string> #include <string>
using std::string;
using std::cerr;
using std::endl;
using std::cout;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
DEFINITIONS DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -67,6 +60,10 @@ FORWARD DECLARATIONS
namespace JSBSim { namespace JSBSim {
class Element;
class FGPropertyManager;
class FGFDMExec;
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
CLASS DOCUMENTATION CLASS DOCUMENTATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
@ -281,8 +278,8 @@ private:
TankType Type; TankType Type;
GrainType grainType; GrainType grainType;
int TankNumber; int TankNumber;
string type; std::string type;
string strGType; std::string strGType;
FGColumnVector3 vXYZ; FGColumnVector3 vXYZ;
FGColumnVector3 vXYZ_drain; FGColumnVector3 vXYZ_drain;
double Capacity; double Capacity;

View file

@ -35,9 +35,13 @@ HISTORY
INCLUDES INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
#include <iostream>
#include <sstream> #include <sstream>
#include "FGThruster.h" #include "FGThruster.h"
#include "input_output/FGXMLElement.h"
using namespace std;
namespace JSBSim { namespace JSBSim {

Some files were not shown because too many files have changed in this diff Show more