X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FFDM%2FJSBSim%2FFGJSBBase.h;h=2049a3cadb5ec2af5e8d4e76ae164e4d80bb7bf8;hb=4b494b1d0842bc53d7295f74c44cf4f7a3185446;hp=c4d0542460c2b4637dd6b7fcd255fe2ebe75b550;hpb=f9de92f53db91c45e4bd885ba606749e9597fdbb;p=flightgear.git diff --git a/src/FDM/JSBSim/FGJSBBase.h b/src/FDM/JSBSim/FGJSBBase.h index c4d054246..2049a3cad 100644 --- a/src/FDM/JSBSim/FGJSBBase.h +++ b/src/FDM/JSBSim/FGJSBBase.h @@ -4,7 +4,7 @@ Author: Jon S. Berndt Date started: 07/01/01 - ------------- Copyright (C) 2001 Jon S. Berndt (jsb@hal-pc.org) ------------- + ------------- Copyright (C) 2001 Jon S. Berndt (jon@jsbsim.org) ------------- This program is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software @@ -41,25 +41,29 @@ INCLUDES #include #include #include -#include #include -using std::fabs; -using std::string; +#include "input_output/string_utilities.h" #ifndef M_PI # define M_PI 3.14159265358979323846 #endif -#if !defined(WIN32) || defined(__GNUC__) || (defined(_MSC_VER) && (_MSC_VER >= 1300)) - using std::max; +#if defined(_MSC_VER) && (_MSC_VER < 1300) +namespace std +{ + template inline T max(const T& a, const T& b) + { + return (a > b) ? a : b; + } +} #endif /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DEFINITIONS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ -#define ID_JSBBASE "$Id$" +#define ID_JSBBASE "$Id: FGJSBBase.h,v 1.30 2010/07/01 23:13:19 jberndt Exp $" /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FORWARD DECLARATIONS @@ -75,7 +79,7 @@ CLASS DOCUMENTATION * This class provides universal constants, utility functions, messaging * functions, and enumerated constants to JSBSim. @author Jon S. Berndt - @version $Id$ + @version $Id: FGJSBBase.h,v 1.30 2010/07/01 23:13:19 jberndt Exp $ */ /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% @@ -95,8 +99,8 @@ public: public: unsigned int fdmId; unsigned int messageId; - string text; - string subsystem; + std::string text; + std::string subsystem; enum mType {eText, eInteger, eDouble, eBool} type; bool bVal; int iVal; @@ -155,37 +159,41 @@ public: /** Places a Message structure on the Message queue. @param msg pointer to a Message structure @return pointer to a Message structure */ -void PutMessage(const Message& msg); + void PutMessage(const Message& msg); /** Creates a message with the given text and places it on the queue. @param text message text @return pointer to a Message structure */ - void PutMessage(const string& text); + void PutMessage(const std::string& text); /** Creates a message with the given text and boolean value and places it on the queue. @param text message text @param bVal boolean value associated with the message @return pointer to a Message structure */ -void PutMessage(const string& text, bool bVal); + void PutMessage(const std::string& text, bool bVal); /** Creates a message with the given text and integer value and places it on the queue. @param text message text @param iVal integer value associated with the message @return pointer to a Message structure */ -void PutMessage(const string& text, int iVal); + void PutMessage(const std::string& text, int iVal); /** Creates a message with the given text and double value and places it on the queue. @param text message text @param dVal double value associated with the message @return pointer to a Message structure */ -void PutMessage(const string& text, double dVal); + void PutMessage(const std::string& text, double dVal); /** Reads the message on the queue (but does not delete it). @return 1 if some messages */ int SomeMessages(void); /** Reads the message on the queue and removes it from the queue. - @return pointer to a Message structure (or NULL if no mesage) */ - Message* ProcessMessage(void); + This function also prints out the message.*/ + void ProcessMessage(void); + /** Reads the next message on the queue and removes it from the queue. + This function also prints out the message. + @return a pointer to the message, or NULL if there are no messages.*/ + Message* ProcessNextMessage(void); //@} /** Returns the version number of JSBSim. * @return The version number of JSBSim. */ - string GetVersion(void) {return JSBSim_version;} + std::string GetVersion(void) {return JSBSim_version;} /// Disables highlighting in the console output. void disableHighLighting(void); @@ -261,7 +269,7 @@ void PutMessage(const string& text, double dVal); @return if the two values can be considered equal up to roundoff */ static bool EqualToRoundoff(double a, double b) { double eps = 2.0*DBL_EPSILON; - return fabs(a - b) <= eps*max(fabs(a), fabs(b)); + return std::fabs(a - b) <= eps*std::max(std::fabs(a), std::fabs(b)); } /** Finite precision comparison. @@ -270,7 +278,7 @@ void PutMessage(const string& text, double dVal); @return if the two values can be considered equal up to roundoff */ static bool EqualToRoundoff(float a, float b) { float eps = 2.0*FLT_EPSILON; - return fabs(a - b) <= eps*max(fabs(a), fabs(b)); + return std::fabs(a - b) <= eps*std::max(std::fabs(a), std::fabs(b)); } /** Finite precision comparison. @@ -294,13 +302,15 @@ void PutMessage(const string& text, double dVal); static double Constrain(double min, double value, double max) { return valuemax?(max):(value)); } + + static double sign(double num) {return num>=0.0?1.0:-1.0;} protected: static Message localMsg; static std::queue Messages; - void Debug(int from) {}; + void Debug(int) {}; static unsigned int messageId; @@ -322,17 +332,12 @@ protected: static const double slugtolb; static const double kgtolb; static const double kgtoslug; - static const string needed_cfg_version; - static const string JSBSim_version; + static const std::string needed_cfg_version; + static const std::string JSBSim_version; - static string CreateIndexedPropertyName(string Property, int index) - { - std::stringstream str; - str << index; - string tmp; - str >> tmp; - return Property + "[" + tmp + "]"; - } + static std::string CreateIndexedPropertyName(const std::string& Property, int index); + + static double GaussianRandomNumber(void); public: /// Moments L, M, N