INCLUDES
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#include "FGJSBBase.h"
#include "math/FGFunction.h"
+#include "math/FGModelFunctions.h"
#include <string>
#include <vector>
DEFINITIONS
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-#define ID_MODEL "$Id: FGModel.h,v 1.14 2009/11/12 13:08:11 jberndt Exp $"
+#define ID_MODEL "$Id: FGModel.h,v 1.19 2011/05/20 03:18:36 jberndt Exp $"
/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FORWARD DECLARATIONS
namespace JSBSim {
class FGFDMExec;
-class FGState;
-class FGAtmosphere;
-class FGFCS;
-class FGPropulsion;
-class FGMassBalance;
-class FGAerodynamics;
-class FGInertial;
-class FGGroundReactions;
-class FGExternalReactions;
-class FGBuoyantForces;
-class FGAircraft;
-class FGPropagate;
-class FGAuxiliary;
class Element;
class FGPropertyManager;
CLASS DECLARATION
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
-class FGModel : public FGJSBBase
+class FGModel : public FGModelFunctions
{
public:
/// Destructor
~FGModel();
- FGModel* NextModel;
std::string Name;
- /** Runs the model; called by the Executive
+ /** Runs the model; called by the Executive.
+ Can pass in a value indicating if the executive is directing the simulation to Hold.
+ @param Holding if true, the executive has been directed to hold the sim from
+ advancing time. Some models may ignore this flag, such as the Input
+ model, which may need to be active to listen on a socket for the
+ "Resume" command to be given. The Holding flag is not used in the base
+ FGModel class.
@see JSBSim.cpp documentation
@return false if no error */
- virtual bool Run(void);
+ virtual bool Run(bool Holding);
+
virtual bool InitModel(void);
virtual void SetRate(int tt) {rate = tt;}
virtual int GetRate(void) {return rate;}
int exe_ctr;
int rate;
- void RunPreFunctions(void);
- void RunPostFunctions(void);
-
/** Loads this model.
@param el a pointer to the element
@return true if model is successfully loaded*/
- virtual bool Load(Element* el);
-
- void PostLoad(Element* el);
+ virtual bool Load(Element* el) {return FGModelFunctions::Load(el, PropertyManager);}
virtual void Debug(int from);
FGFDMExec* FDMExec;
- FGState* State;
- FGAtmosphere* Atmosphere;
- FGFCS* FCS;
- FGPropulsion* Propulsion;
- FGMassBalance* MassBalance;
- FGAerodynamics* Aerodynamics;
- FGInertial* Inertial;
- FGGroundReactions* GroundReactions;
- FGExternalReactions* ExternalReactions;
- FGBuoyantForces* BuoyantForces;
- FGAircraft* Aircraft;
- FGPropagate* Propagate;
- FGAuxiliary* Auxiliary;
FGPropertyManager* PropertyManager;
- std::vector <FGFunction*> PreFunctions;
- std::vector <FGFunction*> PostFunctions;
-
- std::vector <double*> interface_properties;
};
}
//%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%