]> git.mxchange.org Git - flightgear.git/blobdiff - src/FDM/JSBSim/models/FGModel.h
Merge branch 'next' of git://gitorious.org/fg/flightgear into next
[flightgear.git] / src / FDM / JSBSim / models / FGModel.h
index cef01d5e39c279530acedacb0c095e3dd99edd29..eae604668b5fc33217861658196cabb21f218923 100644 (file)
@@ -4,7 +4,7 @@
  Author:       Jon Berndt
  Date started: 11/21/98
 
- ------------- Copyright (C) 1999  Jon S. Berndt (jsb@hal-pc.org) -------------
+ ------------- Copyright (C) 1999  Jon S. Berndt (jon@jsbsim.org) -------------
 
  This program is free software; you can redistribute it and/or modify it under
  the terms of the GNU Lesser General Public License as published by the Free Software
@@ -38,11 +38,9 @@ SENTRY
 INCLUDES
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-#include <FGJSBBase.h>
-#include <input_output/FGPropertyManager.h>
-#include <input_output/FGXMLElement.h>
+#include "math/FGFunction.h"
+#include "math/FGModelFunctions.h"
 
-#include <iostream>
 #include <string>
 #include <vector>
 
@@ -50,9 +48,7 @@ INCLUDES
 DEFINITIONS
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-#define ID_MODEL "$Id$"
-
-using namespace std;
+#define ID_MODEL "$Id: FGModel.h,v 1.19 2011/05/20 03:18:36 jberndt Exp $"
 
 /*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 FORWARD DECLARATIONS
@@ -61,19 +57,8 @@ 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 DOCUMENTATION
@@ -87,7 +72,7 @@ CLASS DOCUMENTATION
 CLASS DECLARATION
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/
 
-class FGModel : public FGJSBBase
+class FGModel : public FGModelFunctions
 {
 public:
 
@@ -96,18 +81,19 @@ public:
   /// Destructor
   ~FGModel();
 
-  /** Loads this model.
-      @param el a pointer to the element
-      @return true if model is successfully loaded*/
-  virtual bool Load(Element* el);
-
-  FGModel* NextModel;
-  string Name;
+  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;}
@@ -119,25 +105,15 @@ protected:
   int exe_ctr;
   int rate;
 
+  /** Loads this model.
+      @param el a pointer to the element
+      @return true if model is successfully loaded*/
+  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;
-
-  vector <double*> interface_properties;
 };
 }
 //%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%