]> git.mxchange.org Git - flightgear.git/commitdiff
Alex Romosan:
authorehofman <ehofman>
Tue, 25 Oct 2005 13:49:55 +0000 (13:49 +0000)
committerehofman <ehofman>
Tue, 25 Oct 2005 13:49:55 +0000 (13:49 +0000)
* Use "const string&" rather than "string" in function calls when appropriate.
* Use "const Point3D&" instead of "Pint3D" in function calls when appropriate.
* Improved course calculation in calc_gc_course_dist()
* Safer thread handling code.

Vassilii Khachaturov:

Dont use "const Point3D&" for return types unless you're absolutely sure.

Erik Hofman:

* Use SGD_(2)PI(_[24]) as defined in simgear/constants.h rather than
  calculating it by hand every time.

79 files changed:
src/AIModel/AICarrier.cxx
src/AIModel/AICarrier.hxx
src/AIModel/AIFlightPlan.cxx
src/AIModel/AIFlightPlan.hxx
src/AIModel/AIFlightPlanCreate.cxx
src/ATC/AIEntity.cxx
src/ATC/AIEntity.hxx
src/ATC/AILocalTraffic.cxx
src/ATC/AILocalTraffic.hxx
src/ATC/AIMgr.cxx
src/ATC/AIMgr.hxx
src/ATC/AIPlane.cxx
src/ATC/AIPlane.hxx
src/ATC/ATC.cxx
src/ATC/ATC.hxx
src/ATC/ATCDialog.cxx
src/ATC/ATCDialog.hxx
src/ATC/ATCProjection.cxx
src/ATC/ATCProjection.hxx
src/ATC/ATCVoice.cxx
src/ATC/ATCVoice.hxx
src/ATC/ATCdisplay.cxx
src/ATC/ATCdisplay.hxx
src/ATC/ATCmgr.cxx
src/ATC/ATCmgr.hxx
src/ATC/ATCutils.cxx
src/ATC/ATCutils.hxx
src/ATC/approach.cxx
src/ATC/approach.hxx
src/ATC/atis.hxx
src/ATC/commlist.cxx
src/ATC/commlist.hxx
src/ATC/ground.cxx
src/ATC/ground.hxx
src/ATC/tower.cxx
src/ATC/tower.hxx
src/ATC/transmission.hxx
src/ATC/transmissionlist.cxx
src/ATC/transmissionlist.hxx
src/Airports/runways.cxx
src/Airports/runways.hxx
src/Airports/simple.cxx
src/Airports/simple.hxx
src/Autopilot/auto_gui.cxx
src/Autopilot/auto_gui.hxx
src/Autopilot/route_mgr.hxx
src/Autopilot/xmlauto.hxx
src/Cockpit/built_in/FGMagRibbon.cxx
src/Cockpit/hud.hxx
src/Cockpit/hud_ladr.cxx
src/Cockpit/hud_rwy.cxx
src/Cockpit/panel.cxx
src/Cockpit/panel.hxx
src/Environment/environment.cxx
src/Environment/environment_ctrl.cxx
src/Environment/environment_ctrl.hxx
src/Environment/fgclouds.cxx
src/Environment/fgclouds.hxx
src/Instrumentation/kr_87.hxx
src/Instrumentation/tacan.cxx
src/Instrumentation/tacan.hxx
src/Main/metar_main.cxx
src/Navaids/fix.hxx
src/Navaids/nav.hxx
src/Navaids/navlist.cxx
src/Navaids/navlist.hxx
src/Network/ray.cxx
src/Scenery/scenery.cxx
src/Scenery/scenery.hxx
src/Scenery/tileentry.hxx
src/Server/messagebuf.cxx
src/Server/messagebuf.hxx
src/Sound/morse.cxx
src/Systems/electrical.hxx
src/Time/light.cxx
src/Time/light.hxx
src/Traffic/SchedFlight.cxx
src/Traffic/SchedFlight.hxx
src/Traffic/Schedule.hxx

index 742b026b85c10e55c76ad1bca50272791d4a4fe7..525592c740b275e152710d4a494477aa0c485a98 100644 (file)
@@ -101,7 +101,7 @@ void FGAICarrier::setFlolsOffset(const Point3D& off) {
   flols_off = off;
 }
 
-void FGAICarrier::getVelocityWrtEarth(sgdVec3 v, sgdVec3 omega, sgdVec3 pivot) {
+void FGAICarrier::getVelocityWrtEarth(sgdVec3& v, sgdVec3& omega, sgdVec3& pivot) {
   sgdCopyVec3(v, vel_wrt_earth );
   sgdCopyVec3(omega, rot_wrt_earth );
   sgdCopyVec3(pivot, rot_pivot_wrt_earth );
@@ -534,7 +534,7 @@ bool FGAICarrier::mark_cat(ssgEntity* e, const list<string>& cat_objects, bool m
   return found;
 }
 
-void FGAICarrier::UpdateFlols(sgdMat3 trans) {
+void FGAICarrier::UpdateFlols(const sgdMat3& trans) {
     
     float in[3];
     float out[3];
index 24802c55dfeac7b1203f8503382516f84beab449..be82c8c8f345d5d312d089e8de74b76935d42035 100644 (file)
@@ -87,10 +87,10 @@ public:
         void setFlolsOffset(const Point3D& off);
         void setTACANChannelID(const string &);
 
-       void getVelocityWrtEarth(sgdVec3 v, sgdVec3 omega, sgdVec3 pivot);
+       void getVelocityWrtEarth(sgdVec3& v, sgdVec3& omega, sgdVec3& pivot);
        virtual void bind();
     virtual void unbind();
-    void UpdateFlols ( sgdMat3 trans );
+    void UpdateFlols ( const sgdMat3& trans );
     void UpdateWind ( double dt );
     void UpdateTACAN( double dt );
     void setWind_from_east( double fps );
index 025f03e2141429211b372fa530605e300cb44a08..39ca074d864eb2d81fa03d507fa55a91c428df42 100644 (file)
@@ -41,7 +41,7 @@
 #include "AIFlightPlan.hxx"
 
 
-FGAIFlightPlan::FGAIFlightPlan(string filename)
+FGAIFlightPlan::FGAIFlightPlan(const string& filename)
 {
   int i;
   start_time = 0;
@@ -100,9 +100,9 @@ FGAIFlightPlan::FGAIFlightPlan(FGAIModelEntity *entity,
                               FGAirport *arr,
                               bool firstLeg,
                               double radius,
-                              string fltType,
-                              string acType,
-                              string airline)
+                              const string& fltType,
+                              const string& acType,
+                              const string& airline)
 {
   leg = 10;
   gateId=0;
index 15c479672078b184f0862c97a862dec4904dbdef..3c6ed9bcaf2428ea02868282e2b6acb35e22258b 100644 (file)
@@ -49,7 +49,7 @@ public:
    bool on_ground;
   } waypoint;
 
-   FGAIFlightPlan(string filename);
+   FGAIFlightPlan(const string& filename);
   FGAIFlightPlan(FGAIModelEntity *entity,
                 double course,
                 time_t start,
@@ -57,9 +57,9 @@ public:
                 FGAirport *arr,
                 bool firstLeg,
                 double radius,
-                string fltType,
-                string acType,
-                string airline);
+                const string& fltType,
+                const string& acType,
+                const string& airline);
    ~FGAIFlightPlan();
 
    waypoint* getPreviousWaypoint( void );
@@ -77,14 +77,14 @@ public:
   time_t getStartTime() { return start_time; }; 
 
   void    create(FGAirport *dep, FGAirport *arr, int leg, double alt, double speed, double lat, double lon,
-                bool firstLeg, double radius, string fltType, string aircraftType, string airline);
+                bool firstLeg, double radius, const string& fltType, const string& aircraftType, const string& airline);
 
   void setLeg(int val) { leg = val;};
   void setTime(time_t st) { start_time = st; };
   int getGate() { return gateId; };
   double getLeadInAngle() { return leadInAngle; };
-  string getRunway() { return rwy._rwy_no; };
-  string getRunwayId() { return rwy._id; };
+  const string& getRunway() { return rwy._rwy_no; };
+  const string& getRunwayId() { return rwy._id; };
   void setRepeat(bool r) { repeat = r; };
   bool getRepeat(void) { return repeat; };
   void restart(void);
@@ -106,8 +106,8 @@ private:
   int gateId;
   string activeRunway;
 
-  void createPushBack(bool, FGAirport*, double, double, double, string, string, string);
-  void createTaxi(bool, int, FGAirport *, double, double, double, string, string, string);
+  void createPushBack(bool, FGAirport*, double, double, double, const string&, const string&, const string&);
+  void createTaxi(bool, int, FGAirport *, double, double, double, const string&, const string&, const string&);
   void createTakeOff(bool, FGAirport *, double);
   void createClimb(bool, FGAirport *, double, double);
   void createCruise(bool, FGAirport*, FGAirport*, double, double, double, double);
index c851a6e71fc170048e7e179ace7139d05bebdd42..5c0aa56e3697310aed517fb9662f8e9a55a673b1 100644 (file)
@@ -38,7 +38,7 @@
 // Check lat/lon values during initialization;
 void FGAIFlightPlan::create(FGAirport *dep, FGAirport *arr, int legNr, double alt, double speed, 
                            double latitude, double longitude, bool firstFlight,
-                           double radius, string fltType, string aircraftType, string airline)
+                           double radius, const string& fltType, const string& aircraftType, const string& airline)
 { 
   int currWpt = wpt_iterator - waypoints.begin();
   switch(legNr)
@@ -96,9 +96,9 @@ void FGAIFlightPlan::createPushBack(bool firstFlight, FGAirport *dep,
                                    double latitude,
                                    double longitude,
                                    double radius,
-                                   string fltType,
-                                   string aircraftType,
-                                   string airline)
+                                   const string& fltType,
+                                   const string& aircraftType,
+                                   const string& airline)
 {
   double heading;
   double lat;
@@ -183,7 +183,7 @@ void FGAIFlightPlan::createPushBack(bool firstFlight, FGAirport *dep,
  * createCreate Taxi. 
  * initialize the Aircraft at the parking location
  ******************************************************************/
-void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt, double latitude, double longitude, double radius, string fltType, string acType, string airline)
+void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt, double latitude, double longitude, double radius, const string& fltType, const string& acType, const string& airline)
 {
   double wind_speed;
   double wind_heading;
@@ -204,7 +204,7 @@ void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt,
       // "NOTE: this is currently fixed to "com" for commercial traffic
       // Should be changed to be used dynamically to allow "gen" and "mil"
       // as well
-      apt->getActiveRunway("com", 1, &activeRunway);
+      apt->getActiveRunway("com", 1, activeRunway);
       if (!(globals->get_runways()->search(apt->getId(), 
                                            activeRunway, 
                                            &rwy)))
@@ -214,7 +214,7 @@ void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt,
          exit(1);
        }
       //string test;
-      //apt->getActiveRunway(string("com"), 1, &test);
+      //apt->getActiveRunway(string("com"), 1, test);
       //exit(1);
       
       heading = rwy._heading;
@@ -335,7 +335,7 @@ void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt,
       // "NOTE: this is currently fixed to "com" for commercial traffic
       // Should be changed to be used dynamically to allow "gen" and "mil"
       // as well
-      //apt->getActiveRunway("com", 1, &name);
+      //apt->getActiveRunway("com", 1, name);
       //if (!(globals->get_runways()->search(apt->getId(), 
       //                                   name, 
       //                           &rwy)))
@@ -345,7 +345,7 @@ void FGAIFlightPlan::createTaxi(bool firstFlight, int direction, FGAirport *apt,
       // exit(1);
       //       }
       //string test;
-      //apt->getActiveRunway(string("com"), 1, &test);
+      //apt->getActiveRunway(string("com"), 1, test);
       //exit(1);
       
       //heading = rwy._heading;
@@ -514,7 +514,7 @@ void FGAIFlightPlan::createTakeOff(bool firstFlight, FGAirport *apt, double spee
        // "NOTE: this is currently fixed to "com" for commercial traffic
       // Should be changed to be used dynamically to allow "gen" and "mil"
       // as well
-      apt->getActiveRunway("com", 1, &activeRunway);
+      apt->getActiveRunway("com", 1, activeRunway);
        if (!(globals->get_runways()->search(apt->getId(), 
                                              activeRunway, 
                                              &rwy)))
@@ -524,7 +524,7 @@ void FGAIFlightPlan::createTakeOff(bool firstFlight, FGAirport *apt, double spee
            exit(1);
          }
        //string test;
-      //apt->getActiveRunway(string("com"), 1, &test);
+      //apt->getActiveRunway(string("com"), 1, test);
       //exit(1);
     }
   
@@ -609,7 +609,7 @@ void FGAIFlightPlan::createClimb(bool firstFlight, FGAirport *apt, double speed,
       // "NOTE: this is currently fixed to "com" for commercial traffic
       // Should be changed to be used dynamically to allow "gen" and "mil"
       // as well
-      apt->getActiveRunway("com", 1, &activeRunway);
+      apt->getActiveRunway("com", 1, activeRunway);
        if (!(globals->get_runways()->search(apt->getId(), 
                                              activeRunway, 
                                              &rwy)))
@@ -619,7 +619,7 @@ void FGAIFlightPlan::createClimb(bool firstFlight, FGAirport *apt, double speed,
            exit(1);
          }
        //string test;
-       //apt->getActiveRunway(string("com"), 1, &test);
+       //apt->getActiveRunway(string("com"), 1, test);
       //exit(1);
     }
   
@@ -708,7 +708,7 @@ void FGAIFlightPlan::createCruise(bool firstFlight, FGAirport *dep, FGAirport *a
  
   //string name;
   // should be changed dynamically to allow "gen" and "mil"
-  arr->getActiveRunway("com", 2, &activeRunway);
+  arr->getActiveRunway("com", 2, activeRunway);
   if (!(globals->get_runways()->search(arr->getId(), 
                                       activeRunway, 
                                       &rwy)))
@@ -718,7 +718,7 @@ void FGAIFlightPlan::createCruise(bool firstFlight, FGAirport *dep, FGAirport *a
       exit(1);
     }
   //string test;
-  //arr->getActiveRunway(string("com"), 1, &test);
+  //arr->getActiveRunway(string("com"), 1, test);
   //exit(1);
   
   //cerr << "Altitude = " << alt << endl;
@@ -787,7 +787,7 @@ void FGAIFlightPlan::createDecent(FGAirport *apt)
   //Beginning of Decent
   //string name;
   // allow "mil" and "gen" as well
-  apt->getActiveRunway("com", 2, &activeRunway);
+  apt->getActiveRunway("com", 2, activeRunway);
     if (!(globals->get_runways()->search(apt->getId(), 
                                          activeRunway, 
                                          &rwy)))
@@ -797,7 +797,7 @@ void FGAIFlightPlan::createDecent(FGAirport *apt)
        exit(1);
       }
     //string test;
-    //apt->getActiveRunway(string("com"), 1, &test);
+    //apt->getActiveRunway(string("com"), 1, test);
   //exit(1);
 
   //cerr << "Done" << endl;
index 945668a15b227e3eb67928d19d541560a05ab67b..efcaaee1cc56ce05be481d4185e32cf26939baf8 100644 (file)
@@ -68,8 +68,9 @@ void FGAIEntity::SetModel(ssgBranch* model) {
 void FGAIEntity::Update(double dt) {
 }
 
-string FGAIEntity::GetCallsign() {
-       return("");
+const string &FGAIEntity::GetCallsign() {
+       static string s = "";
+       return(s);
 }
 
 void FGAIEntity::RegisterTransmission(int code) {
index 0cf5e52cad12e06d7b90c6ca714612b1c0482120..43da25d533f4fc0cff61874ea66d4110489cd509 100644 (file)
@@ -47,15 +47,15 @@ public:
        void SetModel(ssgBranch* model);
 
     // Run the internal calculations
-    virtual void Update(double dt);
+    virtual void Update(double dt)=0;
        
     // Send a transmission *TO* the AIEntity.
     // FIXME int code is a hack - eventually this will receive Alexander's coded messages.
-    virtual void RegisterTransmission(int code);
+    virtual void RegisterTransmission(int code)=0;
        
-       inline Point3D GetPos() { return(_pos); }
+       inline const Point3D& GetPos() const { return(_pos); }
        
-       virtual string GetCallsign();
+       virtual const string& GetCallsign()=0;
        
 protected:
 
index fe716d9043b9c7acfb758a068d72266e31a6572e..c8caac821946c6d8f78031921dd950f46ba40464 100644 (file)
@@ -128,7 +128,7 @@ FGAILocalTraffic::~FGAILocalTraffic() {
        //_model->deRef();
 }
 
-void FGAILocalTraffic::GetAirportDetails(string id) {
+void FGAILocalTraffic::GetAirportDetails(const string& id) {
        AirportATC a;
        if(ATC->GetAirportATCDetails(airportID, &a)) {
                if(a.tower_freq) {      // Has a tower - TODO - check the opening hours!!!
@@ -164,7 +164,7 @@ void FGAILocalTraffic::GetAirportDetails(string id) {
 
 // Get details of the active runway
 // It is assumed that by the time this is called the tower control and airport code will have been set up.
-void FGAILocalTraffic::GetRwyDetails(string id) {
+void FGAILocalTraffic::GetRwyDetails(const string& id) {
        //cout << "GetRwyDetails called" << endl;
        
        if(_controlled) {
@@ -226,7 +226,7 @@ To a certain extent it's FGAIMgr that has to worry about this, but we need to pr
 sufficient initialisation functionality within the plane classes to allow the manager
 to initially position them where and how required.
 */
-bool FGAILocalTraffic::Init(const string& callsign, string ICAO, OperatingState initialState, PatternLeg initialLeg) {
+bool FGAILocalTraffic::Init(const string& callsign, const string& ICAO, OperatingState initialState, PatternLeg initialLeg) {
        //cout << "FGAILocalTraffic.Init(...) called" << endl;
        airportID = ICAO;
        
@@ -1314,7 +1314,7 @@ void FGAILocalTraffic::ProcessCallback(int code) {
        }
 }
 
-void FGAILocalTraffic::ExitRunway(Point3D orthopos) {
+void FGAILocalTraffic::ExitRunway(const Point3D& orthopos) {
        //cout << "In ExitRunway" << endl;
        //cout << "Runway ID is " << rwy.ID << endl;
        
index 808739f3a00357ff9019db1bdae0483fd88d0178..2bd321d81d44224c327895de00005412fa1f2bd3 100644 (file)
@@ -62,7 +62,7 @@ public:
        ~FGAILocalTraffic();
        
        // Initialise
-       bool Init(const string& callsign, string ICAO, OperatingState initialState = PARKED, PatternLeg initialLeg = DOWNWIND);
+       bool Init(const string& callsign, const string& ICAO, OperatingState initialState = PARKED, PatternLeg initialLeg = DOWNWIND);
        
        // Run the internal calculations
        void Update(double dt);
@@ -119,9 +119,9 @@ protected:
        FGATCAlignedProjection ortho;   // Orthogonal mapping of the local area with the threshold at the origin
        // and the runway aligned with the y axis.
        
-       void GetAirportDetails(string id);
+       void GetAirportDetails(const string& id);
        
-       void GetRwyDetails(string id);
+       void GetRwyDetails(const string& id);
        
        double responseCounter;         // timer in seconds to allow response to requests to be a little while after them
        // Will almost certainly get moved to FGAIPlane.        
@@ -213,7 +213,7 @@ private:
 
        void CalculateSoD(double base_leg_pos, double downwind_leg_pos, bool pattern_direction);
 
-       void ExitRunway(Point3D orthopos);
+       void ExitRunway(const Point3D& orthopos);
 
        void StartTaxi();
 
index c7c7c47446f57d18e5ef760f071fb8e97a1f49b7..22cb4716a6790b8599eb1de96340154d749f76a9 100644 (file)
@@ -298,13 +298,13 @@ void FGAIMgr::update(double dt) {
        //cout << "Size of AI list is " << ai_list.size() << '\n';
 }
 
-void FGAIMgr::ScheduleRemoval(string s) {
+void FGAIMgr::ScheduleRemoval(const string& s) {
        //cout << "Scheduling removal of plane " << s << " from AIMgr\n";
        removalList.push_back(s);
 }
 
 // Activate AI traffic at an airport
-void FGAIMgr::ActivateAirport(string ident) {
+void FGAIMgr::ActivateAirport(const string& ident) {
        ATC->AIRegisterAirport(ident);
        // TODO - need to start the traffic more randomly
        FGAILocalTraffic* local_traffic = new FGAILocalTraffic;
@@ -319,7 +319,7 @@ void FGAIMgr::ActivateAirport(string ident) {
 }
 
 // Hack - Generate AI traffic at an airport with no facilities file
-void FGAIMgr::GenerateSimpleAirportTraffic(string ident, double min_dist) {
+void FGAIMgr::GenerateSimpleAirportTraffic(const string& ident, double min_dist) {
        // Ugly hack - don't let VFR Cessnas operate at a hardwired list of major airports
        // This will go eventually once airport .xml files specify the traffic profile
        if(ident == "KSFO" || ident == "KDFW" || ident == "EGLL" || ident == "KORD" || ident == "KJFK" 
@@ -481,7 +481,7 @@ void FGAIMgr::GenerateSimpleAirportTraffic(string ident, double min_dist) {
 
 /*
 // Generate a VFR arrival at airport apt, at least distance d (meters) out.
-void FGAIMgr::GenerateVFRArrival(string apt, double d) {
+void FGAIMgr::GenerateVFRArrival(const string& apt, double d) {
 }
 */
 
@@ -608,7 +608,7 @@ string FGAIMgr::GenerateUniqueCallsign() {
 }
 
 // This will be moved somewhere else eventually!!!!
-string FGAIMgr::GenerateShortForm(string callsign, string plane_str, bool local) {
+string FGAIMgr::GenerateShortForm(const string& callsign, const string& plane_str, bool local) {
        //cout << callsign << '\n';
        string s;
        if(local) s = "Trainer-";
index f34cdc1512cfcef8f096592a3e250bdeacc17552..885536dd57d25e51322b5c9a2e6425eed2f0935a 100644 (file)
@@ -105,7 +105,7 @@ public:
        
        // Signal that it is OK to remove a plane of callsign s
        // (To be called by the plane itself).
-       void ScheduleRemoval(string s);
+       void ScheduleRemoval(const string& s);
 
 private:
        
@@ -118,10 +118,10 @@ private:
     //void RemoveFromList(const char* id, atc_type tp);
        
        // Activate AI traffic at an airport
-       void ActivateAirport(string ident);
+       void ActivateAirport(const string& ident);
        
        // Hack - Generate AI traffic at an airport with no facilities file, with the first plane being at least min_dist out.
-       void GenerateSimpleAirportTraffic(string ident, double min_dist = 0.0);
+       void GenerateSimpleAirportTraffic(const string& ident, double min_dist = 0.0);
        
        // Search for valid airports in the vicinity of the user and activate them if necessary
        void SearchByPos(double range);
@@ -130,7 +130,7 @@ private:
        
        string GenerateUniqueCallsign();
        
-       string GenerateShortForm(string callsign, string plane_str = "Cessna-", bool local = false);
+       string GenerateShortForm(const string& callsign, const string& plane_str = "Cessna-", bool local = false);
        
        // TODO - implement a proper robust system for registering and loading AI GA aircraft models
        bool _havePiperModel;
index 6191558b44a25ee6384ea3ec77005ec8e9f668dc..8d501910d971d905a30e29922ce9ae69ff40d463 100644 (file)
@@ -181,7 +181,7 @@ void FGAIPlane::ProcessCallback(int code) {
 // Outputs the transmission either on screen or as audio depending on user preference
 // The refname is a string to identify this sample to the sound manager
 // The repeating flag indicates whether the message should be repeated continuously or played once.
-void FGAIPlane::Render(string refname, bool repeating) {
+void FGAIPlane::Render(const string& refname, bool repeating) {
 #ifdef ENABLE_AUDIO_SUPPORT
        voice = (voiceOK && fgGetBool("/sim/sound/voice"));
        if(voice) {
@@ -216,7 +216,7 @@ void FGAIPlane::Render(string refname, bool repeating) {
 
 
 // Cease rendering a transmission.
-void FGAIPlane::NoRender(string refname) {
+void FGAIPlane::NoRender(const string& refname) {
        if(playing) {
                if(voice) {
 #ifdef ENABLE_AUDIO_SUPPORT            
index 630767207c7ca8e93347e3e627ad9db99db769c5..ed61205bcf2f79dae72cff53539392f8a6a7113c 100644 (file)
@@ -83,7 +83,7 @@ public:
        virtual LandingType GetLandingOption();
        
        // Return the callsign
-       inline string GetCallsign() {return plane.callsign;}
+       inline const string& GetCallsign() {return plane.callsign;}
 
 protected:
        PlaneRec plane;
@@ -143,11 +143,11 @@ private:
        // Outputs the transmission either on screen or as audio depending on user preference
        // The refname is a string to identify this sample to the sound manager
        // The repeating flag indicates whether the message should be repeated continuously or played once.
-       void Render(string refname, bool repeating);
+       void Render(const string& refname, bool repeating);
 
        // Cease rendering a transmission.
        // Requires the sound manager refname if audio, else "".
-       void NoRender(string refname);
+       void NoRender(const string& refname);
        
        // Rendering related stuff
        bool voice;                     // Flag - true if we are using voice
index f6ee03ae478a794d141c0d02208871a4e8dc4eeb..55a9dc814c50e9ea1cc8169b6b0aefac3ac8e080 100644 (file)
@@ -138,7 +138,7 @@ void FGATC::ReceiveUserCallback(int code) {
        SG_LOG(SG_ATC, SG_WARN, "WARNING - whichever ATC class was intended to receive callback code " << code << " didn't get it!!!");
 }
 
-void FGATC::SetResponseReqd(string rid) {
+void FGATC::SetResponseReqd(const string& rid) {
        receiving = false;
        responseReqd = true;
        respond = false;        // TODO - this ignores the fact that more than one plane could call this before response
@@ -149,7 +149,7 @@ void FGATC::SetResponseReqd(string rid) {
        responseTime = 1.8;             // TODO - randomize this slightly.
 }
 
-void FGATC::NotifyTransmissionFinished(string rid) {
+void FGATC::NotifyTransmissionFinished(const string& rid) {
        //cout << "Transmission finished, callsign = " << rid << '\n';
        receiving = false;
        responseID = rid;
@@ -195,7 +195,7 @@ void FGATC::ImmediateTransmit(int callback_code) {
 void FGATC::ProcessCallback(int code) {
 }
 
-void FGATC::AddPlane(string pid) {
+void FGATC::AddPlane(const string& pid) {
 }
 
 int FGATC::RemovePlane() {
@@ -219,7 +219,7 @@ void FGATC::SetData(ATCData* d) {
 // Outputs the transmission either on screen or as audio depending on user preference
 // The refname is a string to identify this sample to the sound manager
 // The repeating flag indicates whether the message should be repeated continuously or played once.
-void FGATC::Render(string msg, string refname, bool repeating) {
+void FGATC::Render(string& msg, const string& refname, bool repeating) {
        #ifdef ENABLE_AUDIO_SUPPORT
        _voice = (_voiceOK && fgGetBool("/sim/sound/voice"));
        if(_voice) {
@@ -259,7 +259,7 @@ void FGATC::Render(string msg, string refname, bool repeating) {
 
 
 // Cease rendering a transmission.
-void FGATC::NoRender(string refname) {
+void FGATC::NoRender(const string& refname) {
        if(_playing) {
                if(_voice) {
                        #ifdef ENABLE_AUDIO_SUPPORT             
index cd4ab84db04ac2ffee48e571045fbb2b7dad077d..2ad6185f666f34e7436fdab8112ef046ee32f4d5 100644 (file)
@@ -117,7 +117,7 @@ public:
        virtual void ReceiveUserCallback(int code);
        
        // Add plane to a stack
-       virtual void AddPlane(string pid);
+       virtual void AddPlane(const string& pid);
        
        // Remove plane from stack
        virtual int RemovePlane();
@@ -136,9 +136,9 @@ public:
        // Indicate that the frequency is in use
        inline void SetFreqInUse() { freqClear = false; receiving = true; }
        // Transmission to the ATC is finished and a response is required
-       void SetResponseReqd(string rid);
+       void SetResponseReqd(const string& rid);
        // Transmission finished - let ATC decide if a response is reqd and clear freq if necessary
-       void NotifyTransmissionFinished(string rid);
+       void NotifyTransmissionFinished(const string& rid);
        // Transmission finished and no response required
        inline void ReleaseFreq() { freqClear = true; receiving = false; }      // TODO - check that the plane releasing the freq is the right one etc.
        // The above 3 funcs under development!!
@@ -169,10 +169,10 @@ public:
        inline void set_freq(const int fq) {freq = fq;}
        inline int get_range() const { return range; }
        inline void set_range(const int rg) {range = rg;}
-       inline string get_ident() { return ident; }
-       inline void set_ident(const string id) { ident = id; }
-       inline string get_name() { return name; }
-       inline void set_name(const string nm) { name = nm; }
+       inline const string& get_ident() { return ident; }
+       inline void set_ident(const string& id) { ident = id; }
+       inline const string& get_name() { return name; }
+       inline void set_name(const string& nm) { name = nm; }
        
 protected:
        
@@ -180,11 +180,11 @@ protected:
        // Outputs the transmission either on screen or as audio depending on user preference
        // The refname is a string to identify this sample to the sound manager
        // The repeating flag indicates whether the message should be repeated continuously or played once.
-       void Render(string msg, string refname = "", bool repeating = false);
+       void Render(string& msg, const string& refname = "", bool repeating = false);
        
        // Cease rendering all transmission from this station.
        // Requires the sound manager refname if audio, else "".
-       void NoRender(string refname);
+       void NoRender(const string& refname);
        
        // Transmit a message when channel becomes free of other dialog
     void Transmit(int callback_code = 0);
index 42d8bf7be7f5b873d618145900c0569d2afaad84..031110e9e4d39f53fb681ce8acfddeaa545b6709 100644 (file)
@@ -245,7 +245,7 @@ void FGATCDialog::Update(double dt) {
 }
 
 // Add an entry
-void FGATCDialog::add_entry(string station, string transmission, string menutext, atc_type type, int code) {
+void FGATCDialog::add_entry(const string& station, const string& transmission, const string& menutext, atc_type type, int code) {
 
   ATCMenuEntry a;
 
@@ -446,7 +446,7 @@ void FGATCDialog::FreqDialog() {
        FG_PUSH_PUI_DIALOG(atcFreqDialog);
 }
 
-void FGATCDialog::FreqDisplay(string ident) {
+void FGATCDialog::FreqDisplay(string& ident) {
 
        atcUppercase(ident);
        
index 85a6721e6a300fd0473b6355d9cbce94e1fdc8ae..2eddcbb61ab560f3e71787e62fc3caa51abf4f1f 100644 (file)
@@ -66,10 +66,10 @@ public:
        
        void PopupCallback();
        
-       void add_entry( string station, string transmission, string menutext, atc_type type, int code);
+       void add_entry( const string& station, const string& transmission, const string& menutext, atc_type type, int code);
        
        void remove_entry( const string &station, const string &trans, atc_type type );
-       
+
        void remove_entry( const string &station, int code, atc_type type );
        
        // query the database whether the transmission is already registered; 
@@ -83,7 +83,7 @@ public:
        
        // Display the comm ATC frequencies for airport ident
        // where ident is a valid ICAO code.
-       void FreqDisplay(string ident);
+       void FreqDisplay(string& ident);
 
 private:
 
index 2db8598fe938ca916741a3efb2b1fe0afa549d8b..5c7ed78c6b24b51d8d40bea97fe8cdad05f63932 100644 (file)
@@ -37,7 +37,7 @@ FGATCProjection::FGATCProjection() {
     correction_factor = cos(origin.lat() * DCL_DEGREES_TO_RADIANS);
 }
 
-FGATCProjection::FGATCProjection(Point3D centre) {
+FGATCProjection::FGATCProjection(const Point3D& centre) {
     origin = centre;
     correction_factor = cos(origin.lat() * DCL_DEGREES_TO_RADIANS);
 }
@@ -45,12 +45,12 @@ FGATCProjection::FGATCProjection(Point3D centre) {
 FGATCProjection::~FGATCProjection() {
 }
 
-void FGATCProjection::Init(Point3D centre) {
+void FGATCProjection::Init(const Point3D& centre) {
     origin = centre;
     correction_factor = cos(origin.lat() * DCL_DEGREES_TO_RADIANS);
 }
 
-Point3D FGATCProjection::ConvertToLocal(Point3D pt) {
+Point3D FGATCProjection::ConvertToLocal(const Point3D& pt) {
     double delta_lat = pt.lat() - origin.lat();
     double delta_lon = pt.lon() - origin.lon();
 
@@ -60,7 +60,7 @@ Point3D FGATCProjection::ConvertToLocal(Point3D pt) {
     return(Point3D(x,y,0.0));
 }
 
-Point3D FGATCProjection::ConvertFromLocal(Point3D pt) {
+Point3D FGATCProjection::ConvertFromLocal(const Point3D& pt) {
        double delta_lat = asin(pt.y() / SG_EQUATORIAL_RADIUS_M) * DCL_RADIANS_TO_DEGREES;
        double delta_lon = (asin(pt.x() / SG_EQUATORIAL_RADIUS_M) * DCL_RADIANS_TO_DEGREES) / correction_factor;
        
@@ -79,13 +79,13 @@ FGATCAlignedProjection::FGATCAlignedProjection() {
 FGATCAlignedProjection::~FGATCAlignedProjection() {
 }
 
-void FGATCAlignedProjection::Init(Point3D centre, double heading) {
+void FGATCAlignedProjection::Init(const Point3D& centre, double heading) {
     origin = centre;
     theta = heading * DCL_DEGREES_TO_RADIANS;
     correction_factor = cos(origin.lat() * DCL_DEGREES_TO_RADIANS);
 }
 
-Point3D FGATCAlignedProjection::ConvertToLocal(Point3D pt) {
+Point3D FGATCAlignedProjection::ConvertToLocal(const Point3D& pt) {
     // convert from lat/lon to orthogonal
     double delta_lat = pt.lat() - origin.lat();
     double delta_lon = pt.lon() - origin.lon();
@@ -100,7 +100,7 @@ Point3D FGATCAlignedProjection::ConvertToLocal(Point3D pt) {
     return(Point3D(x,y,pt.elev()));
 }
 
-Point3D FGATCAlignedProjection::ConvertFromLocal(Point3D pt) {
+Point3D FGATCAlignedProjection::ConvertFromLocal(const Point3D& pt) {
        //cout << "theta = " << theta << '\n';
        //cout << "origin = " << origin << '\n';
     // de-align
index 17db9f47272b7cd4426fdf31127e21c779c2b241..739c91a74cbbb494376362b4c2136effc151c904 100644 (file)
@@ -28,16 +28,16 @@ class FGATCProjection {
 
 public:
     FGATCProjection();
-    FGATCProjection(Point3D centre);
+    FGATCProjection(const Point3D& centre);
     ~FGATCProjection();
 
-    void Init(Point3D centre);
+    void Init(const Point3D& centre);
 
     // Convert a lat/lon co-ordinate (degrees) to the local projection (meters)
-    Point3D ConvertToLocal(Point3D pt);
+    Point3D ConvertToLocal(const Point3D& pt);
 
     // Convert a local projection co-ordinate (meters) to lat/lon (degrees)
-    Point3D ConvertFromLocal(Point3D pt);
+    Point3D ConvertFromLocal(const Point3D& pt);
 
 private:
     Point3D origin;    // lat/lon of local area origin
@@ -54,13 +54,13 @@ public:
     FGATCAlignedProjection();
     ~FGATCAlignedProjection();
 
-    void Init(Point3D centre, double heading);
+    void Init(const Point3D& centre, double heading);
 
     // Convert a lat/lon co-ordinate (degrees) to the local projection (meters)
-    Point3D ConvertToLocal(Point3D pt);
+    Point3D ConvertToLocal(const Point3D& pt);
 
     // Convert a local projection co-ordinate (meters) to lat/lon (degrees)
-    Point3D ConvertFromLocal(Point3D pt);
+    Point3D ConvertFromLocal(const Point3D& pt);
 
 private:
     Point3D origin;    // lat/lon of local area origin (the threshold)
index 82721f420a9881d4dc703e0d3e84666013ba55fb..02ef855a51da3c77ddb96d6da7e252847fb2086f 100644 (file)
@@ -43,7 +43,7 @@ FGATCVoice::~FGATCVoice() {
 
 // Load the two voice files - one containing the raw sound data (.wav) and one containing the word positions (.vce).
 // Return true if successful.
-bool FGATCVoice::LoadVoice(string voice) {
+bool FGATCVoice::LoadVoice(const string& voice) {
     // FIXME CLO: disabled to try to see if this is causign problemcs
     // return false;
 
index 9d9fb7d92be9e37625f279b84920ea42f02d0e5a..965aeadcc4cb9bee9f011da3f7879d2d627b2f9d 100644 (file)
@@ -65,7 +65,7 @@ public:
 
        // Load the two voice files - one containing the raw sound data (.wav) and one containing the word positions (.vce).
        // Return true if successful.   
-       bool LoadVoice(string voice);
+       bool LoadVoice(const string& voice);
        
        // Given a desired message, return a pointer to the data buffer and write the buffer length into len.
        // Sets dataOK = true if the returned buffer is valid.
index 0b3fa2a7f2b791ca781ccd94dd5fac7807f51e44..cd05ca4d08f5de330a8f09a09168f2fb3c142bc8 100644 (file)
@@ -202,7 +202,7 @@ void FGATCDisplay::update(double dt) {
        }
 }
 
-void FGATCDisplay::RegisterSingleMessage(string msg, double delay) {
+void FGATCDisplay::RegisterSingleMessage(const string& msg, double delay) {
        //cout << msg << '\n';
        atcMessage m;
        m.msg = msg;
@@ -218,13 +218,13 @@ void FGATCDisplay::RegisterSingleMessage(string msg, double delay) {
        //cout << "Single message registered\n";
 }
 
-void FGATCDisplay::RegisterRepeatingMessage(string msg) {
+void FGATCDisplay::RegisterRepeatingMessage(const string& msg) {
        rep_msg = true;
        rep_msg_str = msg;
        return;
 }
 
-void FGATCDisplay::ChangeRepeatingMessage(string newmsg) {
+void FGATCDisplay::ChangeRepeatingMessage(const string& newmsg) {
        rep_msg_str = newmsg;
        change_msg_flag = true;
        return;
index 7b3ade925bce34ac4fc1f3eae6006f29505dac9b..66ec2146b5bceeadfe830b68e32eb373f5953732 100644 (file)
@@ -76,16 +76,16 @@ public:
 
     // Register a single message for display after a delay of delay seconds
     // Will automatically stop displaying after a suitable interval.
-    void RegisterSingleMessage(string msg, double delay = 0.0);        // OK - I know passing a string in and out is probably not good but it will have to do for now.
+    void RegisterSingleMessage(const string& msg, double delay = 0.0);
 
     // For now we will assume only one repeating message at once
     // This is not really robust
 
     // Register a continuously repeating message
-    void RegisterRepeatingMessage(string msg);
+    void RegisterRepeatingMessage(const string& msg);
 
     // Change a repeating message - assume that the message changes after the string has finished for now
-    void ChangeRepeatingMessage(string newmsg); 
+    void ChangeRepeatingMessage(const string& newmsg); 
 
     // Cancel the current repeating message
     void CancelRepeatingMessage();
index 8084b0822d1704b246c7f8ec2453498a992f5974..6aa95a547c2ae743bb89d352422a048420280bf2 100644 (file)
@@ -199,7 +199,7 @@ void FGATCMgr::update(double dt) {
 
 
 // Returns frequency in KHz - should I alter this to return in MHz?
-unsigned short int FGATCMgr::GetFrequency(string ident, atc_type tp) {
+unsigned short int FGATCMgr::GetFrequency(const string& ident, const atc_type& tp) {
        ATCData test;
        bool ok = current_commlist->FindByCode(ident, test, tp);
        return(ok ? test.freq : 0);
@@ -208,7 +208,7 @@ unsigned short int FGATCMgr::GetFrequency(string ident, atc_type tp) {
 
 // Register the fact that the AI system wants to activate an airport
 // Might need more sophistication in this in the future - eg registration by aircraft call-sign.
-bool FGATCMgr::AIRegisterAirport(string ident) {
+bool FGATCMgr::AIRegisterAirport(const string& ident) {
        SG_LOG(SG_ATC, SG_BULK, "AI registered airport " << ident << " with the ATC system");
        //cout << "AI registered airport " << ident << " with the ATC system" << '\n';
        if(airport_atc_map.find(ident) != airport_atc_map.end()) {
@@ -248,7 +248,7 @@ bool FGATCMgr::AIRegisterAirport(string ident) {
 
 // Register the fact that the comm radio is tuned to an airport
 // Channel is zero based
-bool FGATCMgr::CommRegisterAirport(string ident, int chan, atc_type tp) {
+bool FGATCMgr::CommRegisterAirport(const string& ident, int chan, const atc_type& tp) {
        SG_LOG(SG_ATC, SG_BULK, "Comm channel " << chan << " registered airport " << ident);
        //cout << "Comm channel " << chan << " registered airport " << ident << ' ' << tp << '\n';
        if(airport_atc_map.find(ident) != airport_atc_map.end()) {
@@ -302,7 +302,7 @@ bool FGATCMgr::CommRegisterAirport(string ident, int chan, atc_type tp) {
 
 // Remove from list only if not needed by the AI system or the other comm channel
 // Note that chan is zero based.
-void FGATCMgr::CommRemoveFromList(string id, atc_type tp, int chan) {
+void FGATCMgr::CommRemoveFromList(const string& id, const atc_type& tp, int chan) {
        SG_LOG(SG_ATC, SG_BULK, "CommRemoveFromList called for airport " << id << " " << tp << " by channel " << chan);
        //cout << "CommRemoveFromList called for airport " << id << " " << tp << " by channel " << chan << '\n';
        if(airport_atc_map.find(id) != airport_atc_map.end()) {
@@ -366,7 +366,7 @@ void FGATCMgr::CommRemoveFromList(string id, atc_type tp, int chan) {
 
 // Remove from list - should only be called from above or similar
 // This function *will* remove it from the list regardless of who else might want it.
-void FGATCMgr::RemoveFromList(string id, atc_type tp) {
+void FGATCMgr::RemoveFromList(const string& id, const atc_type& tp) {
        //cout << "FGATCMgr::RemoveFromList called..." << endl;
        //cout << "Requested type = " << tp << endl;
        //cout << "id = " << id << endl;
@@ -393,7 +393,7 @@ void FGATCMgr::RemoveFromList(string id, atc_type tp) {
 // Find in list - return a currently active ATC pointer given ICAO code and type
 // Return NULL if the given service is not in the list
 // - *** THE CALLING FUNCTION MUST CHECK FOR THIS ***
-FGATC* FGATCMgr::FindInList(string id, atc_type tp) {
+FGATC* FGATCMgr::FindInList(const string& id, const atc_type& tp) {
        //cout << "Entering FindInList for " << id << ' ' << tp << endl;
        atc_list_iterator it = atc_list.begin();
        while(it != atc_list.end()) {
@@ -409,7 +409,7 @@ FGATC* FGATCMgr::FindInList(string id, atc_type tp) {
 }
 
 // Returns true if the airport is found in the map
-bool FGATCMgr::GetAirportATCDetails(string icao, AirportATC* a) {
+bool FGATCMgr::GetAirportATCDetails(const string& icao, AirportATC* a) {
        if(airport_atc_map.find(icao) != airport_atc_map.end()) {
                *a = *airport_atc_map[icao];
                return(true);
@@ -423,7 +423,7 @@ bool FGATCMgr::GetAirportATCDetails(string icao, AirportATC* a) {
 // Returns NULL if service doesn't exist - calling function should check for this.
 // We really ought to make this private and call it from the CommRegisterAirport / AIRegisterAirport functions
 // - at the moment all these GetATC... functions exposed are just too complicated.
-FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
+FGATC* FGATCMgr::GetATCPointer(const string& icao, const atc_type& type) {
        if(airport_atc_map.find(icao) == airport_atc_map.end()) {
                //cout << "Unable to find " << icao << ' ' << type << " in the airport_atc_map" << endl;
                return NULL;
@@ -500,7 +500,7 @@ FGATC* FGATCMgr::GetATCPointer(string icao, atc_type type) {
 // TODO - in the future this will get more complex and dole out country/airport
 // specific voices, and possible make sure that the same voice doesn't get used
 // at different airports in quick succession if a large enough selection are available.
-FGATCVoice* FGATCMgr::GetVoicePointer(atc_type type) {
+FGATCVoice* FGATCMgr::GetVoicePointer(const atc_type& type) {
        // TODO - implement me better - maintain a list of loaded voices and other voices!!
        if(voice) {
                switch(type) {
index 07513874930e100dd3afb5daad2cfca87537cd1e..4ab2513d6e0f773deed740a49244cf27f58d7414 100644 (file)
@@ -160,11 +160,11 @@ public:
     void update(double dt);
 
     // Returns true if the airport is found in the map
-    bool GetAirportATCDetails(string icao, AirportATC* a);
+    bool GetAirportATCDetails(const string& icao, AirportATC* a);
 
     // Return a pointer to a given sort of ATC at a given airport and activate if necessary
        // Returns NULL if service doesn't exist - calling function should check for this.
-    FGATC* GetATCPointer(string icao, atc_type type);
+    FGATC* GetATCPointer(const string& icao, const atc_type& type);
        
        // Return a pointer to an appropriate voice for a given type of ATC
        // creating the voice if necessary - ie. make sure exactly one copy
@@ -173,7 +173,7 @@ public:
        // TODO - in the future this will get more complex and dole out country/airport
        // specific voices, and possible make sure that the same voice doesn't get used
        // at different airports in quick succession if a large enough selection are available.
-       FGATCVoice* GetVoicePointer(atc_type type);
+       FGATCVoice* GetVoicePointer(const atc_type& type);
        
        atc_type GetComm1ATCType() { return(comm_type[0]); }
        FGATC* GetComm1ATCPointer() { return(comm_atc_ptr[0]); }
@@ -182,29 +182,29 @@ public:
        
        // Get the frequency of a given service at a given airport
        // Returns zero if not found
-       unsigned short int GetFrequency(string ident, atc_type tp);
+       unsigned short int GetFrequency(const string& ident, const atc_type& tp);
        
        // Register the fact that the AI system wants to activate an airport
-       bool AIRegisterAirport(string ident);
+       bool AIRegisterAirport(const string& ident);
        
        // Register the fact that the comm radio is tuned to an airport
-       bool CommRegisterAirport(string ident, int chan, atc_type tp);
+       bool CommRegisterAirport(const string& ident, int chan, const atc_type& tp);
        
 private:
 
     // Remove a class from the atc_list and delete it from memory
        // *if* no other comm channel or AI plane is using it.
-    void CommRemoveFromList(string id, atc_type tp, int chan);
+    void CommRemoveFromList(const string& id, const atc_type& tp, int chan);
 
     // Remove a class from the atc_list and delete it from memory
        // Should be called from the above - not directly!!
-    void RemoveFromList(string id, atc_type tp);
+    void RemoveFromList(const string& id, const atc_type& tp);
 
     // Return a pointer to a class in the list given ICAO code and type
        // (external interface to this is through GetATCPointer) 
        // Return NULL if the given service is not in the list
        // - *** THE CALLING FUNCTION MUST CHECK FOR THIS ***
-    FGATC* FindInList(string id, atc_type tp);
+    FGATC* FindInList(const string& id, const atc_type& tp);
 
     // Search the specified channel for stations on the same frequency and in range.
     void FreqSearch(int channel);
index 0b51b550fac36aae6e5afb4f090a82a05e774af8..5387880c74ccd4808160f18f21db9bce9cbb3936 100644 (file)
@@ -187,7 +187,7 @@ string GetCompassDirection(double h) {
 //================================================================================================================
 
 // Given two positions (lat & lon in degrees), get the HORIZONTAL separation (in meters)
-double dclGetHorizontalSeparation(const Point3D pos1, const Point3D pos2) {
+double dclGetHorizontalSeparation(const Point3D& pos1, const Point3D& pos2) {
        double x;       //East-West separation
        double y;       //North-South separation
        double z;       //Horizontal separation - z = sqrt(x^2 + y^2)
@@ -226,7 +226,7 @@ double dclGetLinePointSeparation(double px, double py, double x1, double y1, dou
 // Given a position (lat/lon/elev), heading and vertical angle (degrees), and distance (meters), calculate the new position.
 // This function assumes the world is spherical.  If geodetic accuracy is required use the functions is sg_geodesy instead!
 // Assumes that the ground is not hit!!!  Expects heading and angle in degrees, distance in meters. 
-Point3D dclUpdatePosition(const Point3D pos, double heading, double angle, double distance) {
+Point3D dclUpdatePosition(const Point3D& pos, double heading, double angle, double distance) {
        //cout << setprecision(10) << pos.lon() << ' ' << pos.lat() << '\n';
        heading *= DCL_DEGREES_TO_RADIANS;
        angle *= DCL_DEGREES_TO_RADIANS;
@@ -259,7 +259,7 @@ Point3D dclUpdatePosition(const Point3D pos, double heading, double angle, doubl
 // Get a heading in degrees from one lat/lon to another.
 // This function assumes the world is spherical.  If geodetic accuracy is required use the functions is sg_geodesy instead!
 // Warning - at the moment we are not checking for identical points - currently it returns 0 in this instance.
-double GetHeadingFromTo(const Point3D A, const Point3D B) {
+double GetHeadingFromTo(const Point3D& A, const Point3D& B) {
        double latA = A.lat() * DCL_DEGREES_TO_RADIANS;
        double lonA = A.lon() * DCL_DEGREES_TO_RADIANS;
        double latB = B.lat() * DCL_DEGREES_TO_RADIANS;
@@ -354,7 +354,7 @@ Point3D dclGetAirportPos( const string& id ) {
 
 // Runway stuff
 // Given a Point3D (lon/lat/elev) and an FGRunway struct, determine if the point lies on the runway
-bool OnRunway(const Point3D pt, const FGRunway& rwy) {
+bool OnRunway(const Point3D& pt, const FGRunway& rwy) {
        FGATCAlignedProjection ortho;
        Point3D centre(rwy._lon, rwy._lat, 0.0);        // We don't need the elev
        ortho.Init(centre, rwy._heading);
index 2047650862a32eddb070c15f2cbacf4b597675c0..2acfc9d186fff567522dbf19fe7dc9c16ece1ddd 100644 (file)
@@ -72,7 +72,7 @@ string GetCompassDirection(double h);
 ********************************/
 
 // Given two positions (lat & lon in degrees), get the HORIZONTAL separation (in meters)
-double dclGetHorizontalSeparation(const Point3D pos1, const Point3D pos2);
+double dclGetHorizontalSeparation(const Point3D& pos1, const Point3D& pos2);
 
 // Given a point and a line, get the HORIZONTAL shortest distance from the point to a point on the line.
 // Expects to be fed orthogonal co-ordinates, NOT lat & lon !
@@ -80,10 +80,10 @@ double dclGetLinePointSeparation(double px, double py, double x1, double y1, dou
 
 // Given a position (lat/lon/elev), heading, vertical angle, and distance, calculate the new position.
 // Assumes that the ground is not hit!!!  Expects heading and angle in degrees, distance in meters.
-Point3D dclUpdatePosition(const Point3D pos, double heading, double angle, double distance);
+Point3D dclUpdatePosition(const Point3D& pos, double heading, double angle, double distance);
 
 // Get a heading from one lat/lon to another (in degrees)
-double GetHeadingFromTo(const Point3D A, const Point3D B);
+double GetHeadingFromTo(const Point3D& A, const Point3D& B);
 
 // Given a heading (in degrees), bound it from 0 -> 360
 void dclBoundHeading(double &hdg);
@@ -118,5 +118,5 @@ Point3D dclGetAirportPos( const string& id );
 ****************/
 
 // Given a Point3D (lon/lat/elev) and an FGRunway struct, determine if the point lies on the runway
-bool OnRunway(const Point3D pt, const FGRunway& rwy);
+bool OnRunway(const Point3D& pt, const FGRunway& rwy);
 
index c2944ac0cc104cda391926c0629a6ce5fa2854ef..0d46355a31a32be0bc160d29102da00545626d3a 100644 (file)
@@ -29,6 +29,7 @@
 #include "ATCDialog.hxx"
 
 #include <Airports/runways.hxx>
+#include <simgear/constants.h>
 #include <simgear/math/polar3d.hxx>
 #include <simgear/misc/sg_path.hxx>
 
@@ -611,7 +612,7 @@ void FGApproach::update_plane_dat() {
 // =======================================================================
 // Add plane to Approach list
 // =======================================================================
-void FGApproach::AddPlane(string pid) {
+void FGApproach::AddPlane(const string& pid) {
 
   int i;
   for ( i=0; i<num_planes; i++) {
@@ -654,8 +655,8 @@ double FGApproach::calc_psl_dist(const double &h1, const double &d1,
   x3 *= sqrt(val2);
   y3 *= sqrt(val2);
   double da = fabs(atan2(y3,x3) - atan2(y1-y2,x1-x2));
-  if ( da > SGD_PI ) da -= 2*SGD_PI;
-  if ( fabs(da) > SGD_PI/2.) {
+  if ( da > SGD_PI ) da -= SGD_2PI;
+  if ( fabs(da) > SGD_PI_2) {
     //if ( x3*(x1-x2) < 0.0 && y3*(y1-y2) < 0.0) {
     x3 *= -1.0;
     y3 *= -1.0;
@@ -665,7 +666,7 @@ double FGApproach::calc_psl_dist(const double &h1, const double &d1,
   double dis2   = y1-y2-y3;
   dis = sqrt(dis);
   da = atan2(dis2,dis1);
-  if ( da < 0.0 ) da  += 2*SGD_PI;
+  if ( da < 0.0 ) da  += SGD_2PI;
   if ( da < a3 )  dis *= -1.0;
   //cout << dis1 << " " << dis2 << " " << da*SGD_RADIANS_TO_DEGREES << " " << h3
   //     << " " << sqrt(dis1*dis1 + dis2*dis2) << " " << dis << endl;
index 41e32f22ad9458093197a7d27a1d82f4cabe6b90..282f0c4bdc94308299d33a87336d758b249aa027 100644 (file)
@@ -153,14 +153,14 @@ public:
   // Add new plane to stack if not already registered 
   // Input:  pid - id of plane (name) 
   // Output: "true" if added; "false" if already existend
-  void AddPlane(string pid);
+  void AddPlane(const string& pid);
 
   // Remove plane from stack if out of range
   int RemovePlane();
   
   inline double get_bucket() const { return bucket; }
   inline int get_pnum() const { return num_planes; }
-  inline string get_trans_ident() { return trans_ident; }
+  inline const string& get_trans_ident() { return trans_ident; }
   
 private:
 
index 741e9943dd63c5950d0935887eab59b4ba0c04fb..4cd303ada3880af71960a930b2ddec752e15a8ac 100644 (file)
@@ -79,8 +79,8 @@ class FGATIS : public FGATC {
        void Update(double dt);
        
        //inline void set_type(const atc_type tp) {type = tp;}
-       inline string get_trans_ident() { return trans_ident; }
-       inline void set_refname(string r) { refname = r; } 
+       inline const string& get_trans_ident() { return trans_ident; }
+       inline void set_refname(const string& r) { refname = r; } 
        
        private:
        
index 18e17173038dafa075ae6e54f1764bed92bb7b65..af2da411752a2ff95f4e4d2dd946ca0ffc871c3b 100644 (file)
@@ -50,7 +50,7 @@ FGCommList::~FGCommList( void ) {
 
 
 // load the navaids and build the map
-bool FGCommList::init( SGPath path ) {
+bool FGCommList::init( const SGPath& path ) {
 
        SGPath temp = path;
     commlist_freq.erase(commlist_freq.begin(), commlist_freq.end());
@@ -70,7 +70,7 @@ bool FGCommList::init( SGPath path ) {
 }
        
 
-bool FGCommList::LoadComms(SGPath path) {
+bool FGCommList::LoadComms(const SGPath& path) {
 
     sg_gzifstream fin( path.str() );
     if ( !fin.is_open() ) {
@@ -272,7 +272,7 @@ double FGCommList::FindClosest( double lon, double lat, double elev, ATCData& ad
 // Find by Airport code.
 // This is basically a wrapper for a call to the airport database to get the airport
 // position followed by a call to FindByPos(...)
-bool FGCommList::FindByCode( string ICAO, ATCData& ad, atc_type tp ) {
+bool FGCommList::FindByCode( const string& ICAO, ATCData& ad, atc_type tp ) {
     FGAirport a;
     if ( dclFindAirportID( ICAO, &a ) ) {
                comm_list_type stations;
@@ -296,7 +296,7 @@ bool FGCommList::FindByCode( string ICAO, ATCData& ad, atc_type tp ) {
 
 // TODO - this function should move somewhere else eventually!
 // Return an appropriate call-sign for an ATIS transmission.
-int FGCommList::GetCallSign( string apt_id, int hours, int mins )
+int FGCommList::GetCallSign( const string& apt_id, int hours, int mins )
 {
        atis_transmission_type tran;
        
index 8520b4b2b1fac4aa6b5a6df51a214694eae9472a..73c17e72d3669a0e68f30086db3a070876aa2b65 100644 (file)
@@ -68,7 +68,7 @@ public:
     ~FGCommList();
 
     // load all comm frequencies and build the map
-    bool init( SGPath path );
+    bool init( const SGPath& path );
 
     // query the database for the specified frequency, lon and lat are
     // in degrees, elev is in meters.
@@ -97,11 +97,11 @@ public:
        double FindClosest( double lon, double lat, double elev, ATCData& ad, atc_type tp = INVALID, double max_range = 100.0 );
        
        // Find by Airport code.
-       bool FindByCode( string ICAO, ATCData& ad, atc_type tp = INVALID );
+       bool FindByCode( const string& ICAO, ATCData& ad, atc_type tp = INVALID );
 
     // Return the callsign for an ATIS transmission given transmission time and airport id
        // This maybe should get moved somewhere else!!
-    int GetCallSign( string apt_id, int hours, int mins );
+    int GetCallSign( const string& apt_id, int hours, int mins );
        
 private:
        
@@ -112,7 +112,7 @@ private:
        comm_map_type commlist_bck;
 
        // Load comms from a specified path (which must include the filename)   
-       bool LoadComms(SGPath path);
+       bool LoadComms(const SGPath& path);
 
 //----------- This stuff is left over from atislist.[ch]xx and maybe should move somewhere else
        // Add structure and map for storing a log of atis transmissions
index ab959cd4dca252e9d4d9129d71d7656be8b66188..de018cae663eafa67ea0dde33dfc827898fffe7e 100644 (file)
@@ -70,7 +70,7 @@ FGGround::FGGround() {
        aptElev = 0.0;
 }
 
-FGGround::FGGround(string id) {
+FGGround::FGGround(const string& id) {
        ATCmgr = globals->get_ATC_mgr();
        networkLoadOK = false;
        ground_traffic.erase(ground_traffic.begin(), ground_traffic.end());
@@ -456,7 +456,7 @@ Gate* FGGround::GetGateNode() {
 }
 
 
-node* FGGround::GetHoldShortNode(string rwyID) {
+node* FGGround::GetHoldShortNode(const string& rwyID) {
        return(NULL);   // TODO - either implement me or remove me!!!
 }
 
@@ -464,7 +464,7 @@ node* FGGround::GetHoldShortNode(string rwyID) {
 // WARNING - This is hardwired to my prototype logical network format
 // and will almost certainly change when Bernie's stuff comes on-line.
 // Returns NULL if it can't find a valid node.
-node* FGGround::GetThresholdNode(string rwyID) {
+node* FGGround::GetThresholdNode(const string& rwyID) {
        // For now go through all the nodes and parse their names
        // Maybe in the future we'll map threshold nodes by ID
        //cout << "Size of network is " << network.size() << '\n';
@@ -499,7 +499,7 @@ ground_network_path_type FGGround::GetPath(node* A, node* B) {
 };
 
 // Get a path from a node to a runway threshold
-ground_network_path_type FGGround::GetPath(node* A, string rwyID) {
+ground_network_path_type FGGround::GetPath(node* A, const string& rwyID) {
        node* b = GetThresholdNode(rwyID);
        if(b == NULL) {
                SG_LOG(SG_ATC, SG_ALERT, "ERROR - unable to find path to runway theshold in ground.cxx for airport " << ident << '\n');
@@ -512,7 +512,7 @@ ground_network_path_type FGGround::GetPath(node* A, string rwyID) {
 
 // Get a path from a node to a runway hold short point
 // Bit of a hack this at the moment!
-ground_network_path_type FGGround::GetPathToHoldShort(node* A, string rwyID) {
+ground_network_path_type FGGround::GetPathToHoldShort(node* A, const string& rwyID) {
        ground_network_path_type path = GetPath(A, rwyID);
        path.pop_back();        // That should be the threshold stripped of 
        path.pop_back();        // and that should be the arc from hold short to threshold
@@ -661,12 +661,12 @@ ground_network_path_type FGGround::GetShortestPath(node* A, node* B) {
 
 // Return a list of exits from a given runway
 // It is up to the calling function to check for non-zero size of returned array before use
-node_array_type FGGround::GetExits(string rwyID) {
+node_array_type FGGround::GetExits(const string& rwyID) {
        // FIXME - get a 07L or similar in here and we're stuffed!!!
        return(runways[atoi(rwyID.c_str())].exits);
 }
 
-void FGGround::RequestDeparture(PlaneRec plane, FGAIEntity* requestee) {
+void FGGround::RequestDeparture(const PlaneRec& plane, FGAIEntity* requestee) {
        // For now we'll just automatically clear all planes to the runway hold.
        // This communication needs to be delayed 20 sec or so from receiving the request.
        // Even if display=false we still need to start the timer in case display=true when communication starts.
index ffc668c4ab400ac8282734009775ed3a22bc6320..84a296442a838f1ca8053d8332af40887da44851 100644 (file)
@@ -225,19 +225,19 @@ class FGGround : public FGATC {
 
 public:
        FGGround();
-       FGGround(string id);
+       FGGround(const string& id);
        ~FGGround();
     void Init();
 
     void Update(double dt);
        
-       inline string get_trans_ident() { return trans_ident; }
+       inline const string& get_trans_ident() { return trans_ident; }
 
     // Contact ground control on arrival, assumed to request any gate
     //void NewArrival(plane_rec plane);
 
     // Contact ground control on departure, assumed to request currently active runway.
-    void RequestDeparture(PlaneRec plane, FGAIEntity* requestee);
+    void RequestDeparture(const PlaneRec& plane, FGAIEntity* requestee);
 
     // Contact ground control when the calling routine doesn't know if arrival
     // or departure is appropriate.
@@ -256,22 +256,22 @@ public:
        Gate* GetGateNode();
        
        // Return a pointer to a hold short node
-       node* GetHoldShortNode(string rwyID);
+       node* GetHoldShortNode(const string& rwyID);
        
        // Runway stuff - this might change in the future.
        // Get a list of exits from a given runway
        // It is up to the calling function to check for non-zero size of returned array before use
-       node_array_type GetExits(string rwyID);
+       node_array_type GetExits(const string& rwyID);
        
        // Get a path from one node to another
        ground_network_path_type GetPath(node* A, node* B);
        
        // Get a path from a node to a runway threshold
-       ground_network_path_type GetPath(node* A, string rwyID);
+       ground_network_path_type GetPath(node* A, const string& rwyID);
        
        // Get a path from a node to a runway hold short point
        // Bit of a hack this at the moment!
-       ground_network_path_type GetPathToHoldShort(node* A, string rwyID);
+       ground_network_path_type GetPathToHoldShort(node* A, const string& rwyID);
 
 private:
        FGATCMgr* ATCmgr;       
@@ -351,7 +351,7 @@ private:
        
        // Return a pointer to the node at a runway threshold
        // Returns NULL if unsuccessful.
-       node* GetThresholdNode(string rwyID);
+       node* GetThresholdNode(const string& rwyID);
        
        // A shortest path algorithm from memory (I can't find the bl&*dy book again!)
        ground_network_path_type GetShortestPath(node* A, node* B); 
index 11d076ebc0e87c4fc9289b9b56a427a4acbd19fc..cbd8ddc9f7b2be4f27a3368e45da8411a1073492 100644 (file)
@@ -72,7 +72,7 @@ TowerPlaneRec::TowerPlaneRec() :
        plane.callsign = "UNKNOWN";
 }
 
-TowerPlaneRec::TowerPlaneRec(PlaneRec p) :
+TowerPlaneRec::TowerPlaneRec(const PlaneRec& p) :
        planePtr(NULL),
        clearedToLand(false),
        clearedToLineUp(false),
@@ -99,7 +99,7 @@ TowerPlaneRec::TowerPlaneRec(PlaneRec p) :
        plane = p;
 }
 
-TowerPlaneRec::TowerPlaneRec(Point3D pt) :
+TowerPlaneRec::TowerPlaneRec(const Point3D& pt) :
        planePtr(NULL),
        clearedToLand(false),
        clearedToLineUp(false),
@@ -127,7 +127,7 @@ TowerPlaneRec::TowerPlaneRec(Point3D pt) :
        pos = pt;
 }
 
-TowerPlaneRec::TowerPlaneRec(PlaneRec p, Point3D pt) :
+TowerPlaneRec::TowerPlaneRec(const PlaneRec& p, const Point3D& pt) :
        planePtr(NULL),
        clearedToLand(false),
        clearedToLineUp(false),
@@ -1435,7 +1435,7 @@ void FGTower::DoRwyDetails() {
 
 // Figure out if a given position lies on the active runway
 // Might have to change when we consider more than one active rwy.
-bool FGTower::OnActiveRunway(Point3D pt) {
+bool FGTower::OnActiveRunway(const Point3D& pt) {
        // TODO - check that the centre calculation below isn't confused by displaced thesholds etc.
        Point3D xyc((rwy.end1ortho.x() + rwy.end2ortho.x())/2.0, (rwy.end1ortho.y() + rwy.end2ortho.y())/2.0, 0.0);
        Point3D xyp = ortho.ConvertToLocal(pt);
@@ -1454,7 +1454,7 @@ bool FGTower::OnActiveRunway(Point3D pt) {
 
 // Figure out if a given position lies on any runway or not
 // Only call this at startup - reading the runways database is expensive and needs to be fixed!
-bool FGTower::OnAnyRunway(Point3D pt) {
+bool FGTower::OnAnyRunway(const Point3D& pt) {
        ATCData ad;
        double dist = current_commlist->FindClosest(lon, lat, elev, ad, TOWER, 10.0);
        if(dist < 0.0) {
@@ -1482,7 +1482,7 @@ bool FGTower::OnAnyRunway(Point3D pt) {
 
 
 // Returns true if successful
-bool FGTower::RemoveFromTrafficList(string id) {
+bool FGTower::RemoveFromTrafficList(const string& id) {
        tower_plane_rec_list_iterator twrItr;
        for(twrItr = trafficList.begin(); twrItr != trafficList.end(); twrItr++) {
                TowerPlaneRec* tpr = *twrItr;
@@ -1498,7 +1498,7 @@ bool FGTower::RemoveFromTrafficList(string id) {
 
 
 // Returns true if successful
-bool FGTower::RemoveFromAppList(string id) {
+bool FGTower::RemoveFromAppList(const string& id) {
        tower_plane_rec_list_iterator twrItr;
        for(twrItr = appList.begin(); twrItr != appList.end(); twrItr++) {
                TowerPlaneRec* tpr = *twrItr;
@@ -1513,7 +1513,7 @@ bool FGTower::RemoveFromAppList(string id) {
 }
 
 // Returns true if successful
-bool FGTower::RemoveFromRwyList(string id) {
+bool FGTower::RemoveFromRwyList(const string& id) {
        tower_plane_rec_list_iterator twrItr;
        for(twrItr = rwyList.begin(); twrItr != rwyList.end(); twrItr++) {
                TowerPlaneRec* tpr = *twrItr;
@@ -1900,7 +1900,7 @@ double FGTower::GetTrafficETA(unsigned int list_pos, bool printout) {
 }
        
 
-void FGTower::ContactAtHoldShort(PlaneRec plane, FGAIPlane* requestee, tower_traffic_type operation) {
+void FGTower::ContactAtHoldShort(const PlaneRec& plane, FGAIPlane* requestee, tower_traffic_type operation) {
        // HACK - assume that anything contacting at hold short is new for now - FIXME LATER
        TowerPlaneRec* t = new TowerPlaneRec;
        t->plane = plane;
@@ -1934,7 +1934,7 @@ void FGTower::ContactAtHoldShort(PlaneRec plane, FGAIPlane* requestee, tower_tra
 
 // Register the presence of an AI plane at a point where contact would already have been made in real life
 // CAUTION - currently it is assumed that this plane's callsign is unique - it is up to AIMgr to generate unique callsigns.
-void FGTower::RegisterAIPlane(PlaneRec plane, FGAIPlane* ai, tower_traffic_type op, PatternLeg lg) {
+void FGTower::RegisterAIPlane(const PlaneRec& plane, FGAIPlane* ai, const tower_traffic_type& op, const PatternLeg& lg) {
        // At the moment this is only going to be tested with inserting an AI plane on downwind
        TowerPlaneRec* t = new TowerPlaneRec;
        t->plane = plane;
@@ -1954,7 +1954,7 @@ void FGTower::RegisterAIPlane(PlaneRec plane, FGAIPlane* ai, tower_traffic_type
        doThresholdUseOrder();
 }
 
-void FGTower::DeregisterAIPlane(string id) {
+void FGTower::DeregisterAIPlane(const string& id) {
        RemovePlane(id);
 }
 
@@ -1962,7 +1962,7 @@ void FGTower::DeregisterAIPlane(string id) {
 // eg "Cessna Charlie Foxtrot Golf Foxtrot Sierra eight miles South of the airport for full stop with Bravo"
 // This function probably only called via user interaction - AI planes will have an overloaded function taking a planerec.
 // opt defaults to AIP_LT_UNKNOWN
-void FGTower::VFRArrivalContact(string ID, LandingType opt) {
+void FGTower::VFRArrivalContact(const string& ID, const LandingType& opt) {
        //cout << "USER Request Landing Clearance called for ID " << ID << '\n';
        
        // For now we'll assume that the user is a light plane and can get him/her to join the circuit if necessary.
@@ -2013,7 +2013,7 @@ void FGTower::VFRArrivalContact(string ID, LandingType opt) {
 }
 
 // landingType defaults to AIP_LT_UNKNOWN
-void FGTower::VFRArrivalContact(PlaneRec plane, FGAIPlane* requestee, LandingType lt) {
+void FGTower::VFRArrivalContact(const PlaneRec& plane, FGAIPlane* requestee, const LandingType& lt) {
        //cout << "VFRArrivalContact called for plane " << plane.callsign << " at " << ident << '\n';
        // Possible hack - assume this plane is new for now - TODO - should check really
        TowerPlaneRec* t = new TowerPlaneRec;
@@ -2038,17 +2038,18 @@ void FGTower::VFRArrivalContact(PlaneRec plane, FGAIPlane* requestee, LandingTyp
        AddToTrafficList(t);
 }
 
-void FGTower::RequestDepartureClearance(string ID) {
+void FGTower::RequestDepartureClearance(const string& ID) {
        //cout << "Request Departure Clearance called...\n";
 }
        
-void FGTower::ReportFinal(string ID) {
+void FGTower::ReportFinal(const string& ID) {
        //cout << "Report Final Called at tower " << ident << " by plane " << ID << '\n';
+       string uid=ID;
        if(ID == "USER") {
-               ID = fgGetString("/sim/user/callsign");
+               uid = fgGetString("/sim/user/callsign");
                current_atcdialog->remove_entry(ident, USER_REPORT_3_MILE_FINAL, TOWER);
        }
-       TowerPlaneRec* t = FindPlane(ID);
+       TowerPlaneRec* t = FindPlane(uid);
        if(t) {
                t->finalReported = true;
                t->finalAcknowledged = false;
@@ -2065,12 +2066,13 @@ void FGTower::ReportFinal(string ID) {
        }
 }
 
-void FGTower::ReportLongFinal(string ID) {
+void FGTower::ReportLongFinal(const string& ID) {
+       string uid=ID;
        if(ID == "USER") {
-               ID = fgGetString("/sim/user/callsign");
+               uid = fgGetString("/sim/user/callsign");
                current_atcdialog->remove_entry(ident, USER_REPORT_3_MILE_FINAL, TOWER);
        }
-       TowerPlaneRec* t = FindPlane(ID);
+       TowerPlaneRec* t = FindPlane(uid);
        if(t) {
                t->longFinalReported = true;
                t->longFinalAcknowledged = false;
@@ -2086,13 +2088,14 @@ void FGTower::ReportLongFinal(string ID) {
 //void FGTower::ReportMiddleMarker(string ID);
 //void FGTower::ReportInnerMarker(string ID);
 
-void FGTower::ReportRunwayVacated(string ID) {
+void FGTower::ReportRunwayVacated(const string& ID) {
        //cout << "Report Runway Vacated Called at tower " << ident << " by plane " << ID << '\n';
+       string uid=ID;
        if(ID == "USER") {
-               ID = fgGetString("/sim/user/callsign");
+               uid = fgGetString("/sim/user/callsign");
                current_atcdialog->remove_entry(ident, USER_REPORT_RWY_VACATED, TOWER);
        }
-       TowerPlaneRec* t = FindPlane(ID);
+       TowerPlaneRec* t = FindPlane(uid);
        if(t) {
                //cout << "Found it...\n";
                t->rwyVacatedReported = true;
@@ -2104,7 +2107,7 @@ void FGTower::ReportRunwayVacated(string ID) {
        }
 }
 
-TowerPlaneRec* FGTower::FindPlane(string ID) {
+TowerPlaneRec* FGTower::FindPlane(const string& ID) {
        //cout << "FindPlane called for " << ID << "...\n";
        tower_plane_rec_list_iterator twrItr;
        // Do the approach list first
@@ -2137,7 +2140,7 @@ TowerPlaneRec* FGTower::FindPlane(string ID) {
        return(NULL);
 }
 
-void FGTower::RemovePlane(string ID) {
+void FGTower::RemovePlane(const string& ID) {
        //cout << ident << " RemovePlane called for " << ID << '\n';
        // We have to be careful here - we want to erase the plane from all lists it is in,
        // but we can only delete it once, AT THE END.
@@ -2197,13 +2200,14 @@ void FGTower::RemovePlane(string ID) {
        if(t) delete t;
 }
 
-void FGTower::ReportDownwind(string ID) {
+void FGTower::ReportDownwind(const string& ID) {
        //cout << "ReportDownwind(...) called\n";
+       string uid=ID;
        if(ID == "USER") {
-               ID = fgGetString("/sim/user/callsign");
+               uid = fgGetString("/sim/user/callsign");
                current_atcdialog->remove_entry(ident, USER_REPORT_DOWNWIND, TOWER);
        }
-       TowerPlaneRec* t = FindPlane(ID);
+       TowerPlaneRec* t = FindPlane(uid);
        if(t) {
                t->downwindReported = true;
                responseReqd = true;
@@ -2227,13 +2231,14 @@ void FGTower::ReportDownwind(string ID) {
        }
 }
 
-void FGTower::ReportGoingAround(string ID) {
+void FGTower::ReportGoingAround(const string& ID) {
+       string uid=ID;
        if(ID == "USER") {
-               ID = fgGetString("/sim/user/callsign");
+               uid = fgGetString("/sim/user/callsign");
                RemoveAllUserDialogOptions();   // TODO - it would be much more efficient if ATCDialog simply had a clear() function!!!
                current_atcdialog->add_entry(ident, "@AP Tower @CS Downwind @RW", "Report Downwind", TOWER, (int)USER_REPORT_DOWNWIND);
        }
-       TowerPlaneRec* t = FindPlane(ID);
+       TowerPlaneRec* t = FindPlane(uid);
        if(t) {
                //t->goAroundReported = true;  // No need to set this until we start responding to it.
                responseReqd = false;   // might change in the future but for now we'll not distract them during the go-around.
index aaaf5387b8ace7e2c6454a15d1cfbb4ed429b28a..de0bf632f7081e1e502102459cb39f266a96b9d3 100644 (file)
@@ -73,9 +73,9 @@ class TowerPlaneRec {
 public:
        
        TowerPlaneRec();
-       TowerPlaneRec(PlaneRec p);
-       TowerPlaneRec(Point3D pt);
-       TowerPlaneRec(PlaneRec p, Point3D pt);
+       TowerPlaneRec(const PlaneRec& p);
+       TowerPlaneRec(const Point3D& pt);
+       TowerPlaneRec(const PlaneRec& p, const Point3D& pt);
        
        FGAIPlane* planePtr;    // This might move to the planeRec eventually
        PlaneRec plane;
@@ -110,7 +110,6 @@ public:
        PatternLeg leg;
        
        LandingType landingType;
-       
        bool isUser;    // true if this plane is the user
 };
 
@@ -136,39 +135,39 @@ public:
        // Contact tower for VFR approach
        // eg "Cessna Charlie Foxtrot Golf Foxtrot Sierra eight miles South of the airport for full stop with Bravo"
        // This function probably only called via user interaction - AI planes will have an overloaded function taking a planerec.
-       void VFRArrivalContact(string ID, LandingType opt = AIP_LT_UNKNOWN);
+       void VFRArrivalContact(const string& ID, const LandingType& opt = AIP_LT_UNKNOWN);
        // For the AI planes...
-       void VFRArrivalContact(PlaneRec plane, FGAIPlane* requestee, LandingType lt = AIP_LT_UNKNOWN);
-       
-       void RequestDepartureClearance(string ID);      
-       void ReportFinal(string ID);
-       void ReportLongFinal(string ID);
-       void ReportOuterMarker(string ID);
-       void ReportMiddleMarker(string ID);
-       void ReportInnerMarker(string ID);
-       void ReportRunwayVacated(string ID);
-       void ReportReadyForDeparture(string ID);
-       void ReportDownwind(string ID);
-       void ReportGoingAround(string ID);
+       void VFRArrivalContact(const PlaneRec& plane, FGAIPlane* requestee, const LandingType& lt = AIP_LT_UNKNOWN);
+       
+       void RequestDepartureClearance(const string& ID);
+       void ReportFinal(const string& ID);
+       void ReportLongFinal(const string& ID);
+       void ReportOuterMarker(const string& ID);
+       void ReportMiddleMarker(const string& ID);
+       void ReportInnerMarker(const string& ID);
+       void ReportRunwayVacated(const string& ID);
+       void ReportReadyForDeparture(const string& ID);
+       void ReportDownwind(const string& ID);
+       void ReportGoingAround(const string& ID);
        
        // Contact tower when at a hold short for departure - for now we'll assume plane - maybe vehicles might want to cross runway eventually?
-       void ContactAtHoldShort(PlaneRec plane, FGAIPlane* requestee, tower_traffic_type operation);
+       void ContactAtHoldShort(const PlaneRec& plane, FGAIPlane* requestee, tower_traffic_type operation);
        
        // Register the presence of an AI plane at a point where contact would already have been made in real life
        // CAUTION - currently it is assumed that this plane's callsign is unique - it is up to AIMgr to generate unique callsigns.
-       void RegisterAIPlane(PlaneRec plane, FGAIPlane* ai, tower_traffic_type op, PatternLeg lg = LEG_UNKNOWN);
+       void RegisterAIPlane(const PlaneRec& plane, FGAIPlane* ai, const tower_traffic_type& op, const PatternLeg& lg = LEG_UNKNOWN);
        
        // Deregister and remove an AI plane.
-       void DeregisterAIPlane(string id);
+       void DeregisterAIPlane(const string& id);
        
        // Public interface to the active runway - this will get more complex 
        // in the future and consider multi-runway use, airplane weight etc.
-       inline string GetActiveRunway() { return activeRwy; }
-       inline RunwayDetails GetActiveRunwayDetails() { return rwy; }
+       inline const string& GetActiveRunway() { return activeRwy; }
+       inline const RunwayDetails& GetActiveRunwayDetails() { return rwy; }
        // Get the pattern direction of the active rwy.
        inline int GetPatternDirection() { return rwy.patternDirection; }
        
-       inline string get_trans_ident() { return trans_ident; }
+       inline const string& get_trans_ident() { return trans_ident; }
        
        inline FGGround* GetGroundPtr() { return ground; }
        
@@ -205,17 +204,17 @@ private:
        void ClearHoldingPlane(TowerPlaneRec* t);
        
        // Find a pointer to plane of callsign ID within the internal data structures
-       TowerPlaneRec* FindPlane(string ID);
+       TowerPlaneRec* FindPlane(const string& ID);
        
        // Remove and delete all instances of a plane with a given ID
-       void RemovePlane(string ID);
+       void RemovePlane(const string& ID);
        
        // Figure out if a given position lies on the active runway
        // Might have to change when we consider more than one active rwy.
-       bool OnActiveRunway(Point3D pt);
+       bool OnActiveRunway(const Point3D& pt);
        
        // Figure out if a given position lies on a runway or not
-       bool OnAnyRunway(Point3D pt);
+       bool OnAnyRunway(const Point3D& pt);
        
        // Calculate the eta of a plane to the threshold.
        // For ground traffic this is the fastest they can get there.
@@ -305,9 +304,9 @@ private:
        tower_plane_rec_list_iterator vacatedListItr;
        
        // Returns true if successful
-       bool RemoveFromTrafficList(string id);
-       bool RemoveFromAppList(string id);
-       bool RemoveFromRwyList(string id);
+       bool RemoveFromTrafficList(const string& id);
+       bool RemoveFromAppList(const string& id);
+       bool RemoveFromRwyList(const string& id);
        
        // Return the ETA of plane no. list_pos (1-based) in the traffic list.
        // i.e. list_pos = 1 implies next to use runway.
index 9c2cfd7c58aed72d8ed422ffbb93aa4666c00e2a..fafc885b79e5f34f69ea429a18c237763f2933e3 100644 (file)
@@ -95,9 +95,9 @@ public:
   void Init();
 
   inline atc_type  get_station()   const { return StationType; }
-  inline TransCode get_code()      { return Code; }
-  inline string    get_transtext() { return TransText; }
-  inline string    get_menutext()  { return MenuText; }
+  inline const TransCode& get_code()      { return Code; }
+  inline const string&    get_transtext() { return TransText; }
+  inline const string&    get_menutext()  { return MenuText; }
 
   // Return the parsed logic of the transmission  
   TransPar Parse();
index 97eee3c01fa9ea3f85b9f452fcf88b0c71a14f1a..2f138edc90d670856e2dda4bd14e843f0301031e 100644 (file)
@@ -54,7 +54,7 @@ FGTransmissionList::~FGTransmissionList( void ) {
 
 
 // load default.transmissions
-bool FGTransmissionList::init( SGPath path ) {
+bool FGTransmissionList::init( const SGPath& path ) {
     FGTransmission a;
 
     transmissionlist_station.erase( transmissionlist_station.begin(), transmissionlist_station.end() );
index 6ff15cbfa6aa72a2bbe03b27f39a2feff758ada4..c177d8f730eac9bbdc6131bc060668d40bfc6e14 100644 (file)
@@ -58,7 +58,7 @@ public:
   ~FGTransmissionList();
   
   // load the transmission data and build the map
-  bool init( SGPath path );
+  bool init( const SGPath& path );
   
   // query the database for the specified code,
   bool query_station( const atc_type &station, FGTransmission *a, int max_trans, int &num_trans );
index 5657a381f21eb89a6af48befdfb7e4f30587f4c6..dcba46e2cf51179dab8abafe000153a5cad93c1d 100644 (file)
@@ -43,14 +43,14 @@ SG_USING_STD(multimap);
 
 
 // add an entry to the list
-void FGRunwayList::add( const string id, const string rwy_no,
+void FGRunwayList::add( const string& id, const string& rwy_no,
                         const double longitude, const double latitude,
                         const double heading, const double length,
                         const double width,
                         const double displ_thresh1, const double displ_thresh2,
                         const double stopway1, const double stopway2,
-                        const string lighting_flags, const int surface_code,
-                        const string shoulder_code, const int marking_code,
+                        const string& lighting_flags, const int surface_code,
+                        const string& shoulder_code, const int marking_code,
                         const double smoothness, const bool dist_remaining )
 {
     FGRunway rwy;
@@ -93,7 +93,7 @@ void FGRunwayList::add( const string id, const string rwy_no,
 // Return reverse rwy number
 // eg 01 -> 19
 // 03L -> 21R
-static string GetReverseRunwayNo(string rwyno) {       
+static string GetReverseRunwayNo(string& rwyno) {      
     // cout << "Original rwyno = " << rwyNo << '\n';
     
     // standardize input number
index 5fd647811eb88d55e88805efd387963b83b28d4e..b2fc3533282fbeb36d55da028b6a9f847fdf9b0a 100644 (file)
@@ -44,7 +44,7 @@ SG_USING_STD(multimap);
 
 
 struct ltstr {
-    bool operator()(const string s1, const string s2) const {
+    bool operator()(const string& s1, const string& s2) const {
         return s1 < s2;
     }
 };
@@ -94,13 +94,13 @@ public:
     ~FGRunwayList();
 
     // add an entry to the list
-    void add( const string id, const string rwy_no,
+    void add( const string& id, const string& rwy_no,
               const double longitude, const double latitude,
               const double heading, const double length, const double width,
               const double displ_thresh1, const double displ_thresh2,
               const double stopway1, const double stopway2,
-              const string lighting_flags, const int surface_code,
-              const string shoulder_code, const int marking_code,
+              const string& lighting_flags, const int surface_code,
+              const string& shoulder_code, const int marking_code,
               const double smoothness, const bool dist_remaining );
 
     // search for the specified apt id.
index 8cdd2e7631608ae37a8f7a5eccad08e9af52fd01..aa9ff14d87f2a69ada9cbd3faba1856ba0cb6b00 100644 (file)
@@ -128,8 +128,8 @@ string ScheduleTime::getName(time_t dayStart)
        }
       //couldn't find one so return 0;
       //cerr << "Returning 0 " << endl;
-      return string(0);
     }
+    return string(0);
 }                            
 /******************************************************************************
  * RunwayList
@@ -151,7 +151,7 @@ RunwayList& RunwayList::operator= (const RunwayList &other)
     preferredRunways.push_back(*i);
   return *this;
 }
-void RunwayList::set(string tp, string lst)
+void RunwayList::set(const string &tp, const string &lst)
 {
   //weekday          = atoi(timeCopy.substr(0,1).c_str());
   //    timeOffsetInDays = weekday - currTimeDate->getGmt()->tm_wday;
@@ -205,7 +205,7 @@ RunwayGroup& RunwayGroup:: operator= (const RunwayGroup &other)
   return *this;
 }
 
-void RunwayGroup::setActive(string aptId, 
+void RunwayGroup::setActive(const string &aptId, 
                            double windSpeed, 
                            double windHeading, 
                            double maxTail, 
@@ -335,7 +335,7 @@ void RunwayGroup::setActive(string aptId,
 
 }
 
-void RunwayGroup::getActive(int i, string *name, string *type)
+void RunwayGroup::getActive(int i, string &name, string &type)
 {
   if (i == -1)
     {
@@ -343,13 +343,13 @@ void RunwayGroup::getActive(int i, string *name, string *type)
     }
   if (nrActive == (int)rwyList.size())
     {
-      *name = rwyList[i].getRwyList(active);
-      *type = rwyList[i].getType();
+      name = rwyList[i].getRwyList(active);
+      type = rwyList[i].getType();
     }
   else
     { 
-      *name = rwyList[choice[i]].getRwyList(active);
-      *type = rwyList[choice[i]].getType();
+      name = rwyList[choice[i]].getRwyList(active);
+      type = rwyList[choice[i]].getType();
     }
 }
 /*****************************************************************************
@@ -413,7 +413,7 @@ ScheduleTime *FGRunwayPreference::getSchedule(const char *trafficType)
   return 0;
 }
 
-RunwayGroup *FGRunwayPreference::getGroup(const string groupName)
+RunwayGroup *FGRunwayPreference::getGroup(const string &groupName)
 {
   PreferenceListIterator i = preferences.begin();
   if (preferences.begin() == preferences.end())
@@ -492,7 +492,7 @@ void  FGRunwayPreference::startElement (const char * name, const XMLAttributes &
 }
 
 //based on a string containing hour and minute, return nr seconds since day start.
-time_t FGRunwayPreference::processTime(string tme)
+time_t FGRunwayPreference::processTime(const string &tme)
 {
   string hour   = tme.substr(0, tme.find(":",0));
   string minute = tme.substr(tme.find(":",0)+1, tme.length());
@@ -569,7 +569,7 @@ void  FGRunwayPreference::error (const char * message, int line, int column) {
 /*****************************************************************************
  * Helper function for parsing position string
  ****************************************************************************/
-double processPosition(string pos)
+double processPosition(const string &pos)
 {
   string prefix;
   string subs;
@@ -602,9 +602,9 @@ FGParking::FGParking(double lat,
                     double hdg,
                     double rad,
                     int idx,
-                    string name,
-                    string tpe,
-                    string codes)
+                    const string &name,
+                    const string &tpe,
+                    const string &codes)
 {
   latitude     = lat;
   longitude    = lon;
@@ -655,7 +655,7 @@ FGAirport::FGAirport(const FGAirport& other)
     }
 }
 
-FGAirport::FGAirport(string id, double lon, double lat, double elev, string name, bool has_metar)
+FGAirport::FGAirport(const string &id, double lon, double lat, double elev, const string &name, bool has_metar)
 {
   _id = id;
   _longitude = lon;
@@ -688,7 +688,7 @@ void FGAirport::init()
   groundNetwork.init();
 }
 
-bool FGAirport::getAvailableParking(double *lat, double *lon, double *heading, int *gateId, double rad, string flType, string acType, string airline)
+bool FGAirport::getAvailableParking(double *lat, double *lon, double *heading, int *gateId, double rad, const string &flType, const string &acType, const string &airline)
 {
   bool found = false;
   bool available = false;
@@ -1019,13 +1019,13 @@ void  FGAirport::error (const char * message, int line, int column) {
        << endl;
 }
 
-void FGAirport::setRwyUse(FGRunwayPreference& ref)
+void FGAirport::setRwyUse(const FGRunwayPreference& ref)
 {
   rwyPrefs = ref;
   //cerr << "Exiting due to not implemented yet" << endl;
   //exit(1);
 }
-void FGAirport::getActiveRunway(string trafficType, int action, string *runway)
+void FGAirport::getActiveRunway(const string &trafficType, int action, string &runway)
 {
   double windSpeed;
   double windHeading;
@@ -1036,7 +1036,7 @@ void FGAirport::getActiveRunway(string trafficType, int action, string *runway)
 
   if (!(rwyPrefs.available()))
     {
-      chooseRunwayFallback(runway);
+      runway = chooseRunwayFallback();
       return; // generic fall back goes here
     }
   else
@@ -1137,7 +1137,7 @@ void FGAirport::getActiveRunway(string trafficType, int action, string *runway)
          for (int i = 0; i < nrActiveRunways; i++)
            {
              type = "unknown"; // initialize to something other than landing or takeoff
-             currRunwayGroup->getActive(i, &name, &type);
+             currRunwayGroup->getActive(i, name, type);
              if (type == "landing")
                {
                  landing.push_back(name);
@@ -1155,11 +1155,11 @@ void FGAirport::getActiveRunway(string trafficType, int action, string *runway)
          int nr = takeoff.size();
          if (nr)
            {
-             *runway = takeoff[(rand() %  nr)];
+             runway = takeoff[(rand() %  nr)];
            }
          else
            { // Fallback
-             chooseRunwayFallback(runway);
+             runway = chooseRunwayFallback();
            }
        } 
       if (action == 2) // landing
@@ -1167,20 +1167,20 @@ void FGAirport::getActiveRunway(string trafficType, int action, string *runway)
          int nr = landing.size();
          if (nr)
            {
-             *runway = landing[(rand() % nr)];
+             runway = landing[(rand() % nr)];
            }
          else
            {  //fallback
-              chooseRunwayFallback(runway);
+              runway = chooseRunwayFallback();
            }
        }
       
-      //*runway = globals->get_runways()->search(_id, int(windHeading));
-      //cerr << "Seleceted runway: " << *runway << endl;
+      //runway = globals->get_runways()->search(_id, int(windHeading));
+      //cerr << "Seleceted runway: " << runway << endl;
     }
 }
 
-void FGAirport::chooseRunwayFallback(string *runway)
+string FGAirport::chooseRunwayFallback()
 {   
   FGEnvironment 
     stationweather = ((FGEnvironmentMgr *) globals->get_subsystem("environment"))
@@ -1195,8 +1195,7 @@ void FGAirport::chooseRunwayFallback(string *runway)
     //which is consistent with Flightgear's initial setup.
   }
   
-  *runway = globals->get_runways()->search(_id, int(windHeading));
-  return; // generic fall back goes here
+   return globals->get_runways()->search(_id, int(windHeading));
 }
 
 
@@ -1284,12 +1283,12 @@ FGGroundNetwork::FGGroundNetwork()
   hasNetwork = false;
 }
 
-void FGGroundNetwork::addSegment(FGTaxiSegment seg)
+void FGGroundNetwork::addSegment(const FGTaxiSegment &seg)
 {
   segments.push_back(seg);
 }
 
-void FGGroundNetwork::addNode(FGTaxiNode node)
+void FGGroundNetwork::addNode(const FGTaxiNode &node)
 {
   nodes.push_back(node);
 }
@@ -1517,9 +1516,9 @@ FGAirportList::~FGAirportList( void ) {
 
 
 // add an entry to the list
-void FGAirportList::add( const string id, const double longitude,
+void FGAirportList::add( const string &id, const double longitude,
                          const double latitude, const double elevation,
-                         const string name, const bool has_metar )
+                         const string &name, const bool has_metar )
 {
     FGRunwayPreference rwyPrefs;
     FGAirport* a = new FGAirport(id, longitude, latitude, elevation, name, has_metar);
index eea3c0edecf702b7cf46aac894ae03b3f0cb1712..7645f5972d93debe3659b7ed35e5d6a28e02691e 100644 (file)
@@ -76,7 +76,7 @@ public:
   void clear();
   void addStartTime(time_t time)     { start.push_back(time);            };
   void addEndTime  (time_t time)     { end.  push_back(time);            };
-  void addScheduleName(string sched) { scheduleNames.push_back(sched);   };
+  void addScheduleName(const string& sched) { scheduleNames.push_back(sched);   };
   void setTailWind(double wnd)  { tailWind = wnd;                        };
   void setCrossWind(double wnd) { tailWind = wnd;                        };
 
@@ -97,7 +97,7 @@ public:
   RunwayList(const RunwayList &other);
   RunwayList& operator= (const RunwayList &other);
 
-  void set(string, string);
+  void set(const string&, const string&);
   void clear();
 
   string getType() { return type; };
@@ -128,10 +128,10 @@ public:
 
   void setName(string nm) { name = nm;                };
   void add(RunwayList list) { rwyList.push_back(list);};
-  void setActive(string aptId, double windSpeed, double windHeading, double maxTail, double maxCross);
+  void setActive(const string& aptId, double windSpeed, double windHeading, double maxTail, double maxCross);
 
   int getNrActiveRunways() { return nrActive;};
-  void getActive(int i, string *name, string *type);
+  void getActive(int i, string& name, string& type);
 
   string getName() { return name; };
   void clear() { rwyList.clear(); }; 
@@ -157,7 +157,7 @@ private:
   RunwayGroup rwyGroup;
   PreferenceList preferences;
 
-  time_t processTime(string);
+  time_t processTime(const string&);
   bool initialized;
 
 public:
@@ -166,7 +166,7 @@ public:
   
   FGRunwayPreference & operator= (const FGRunwayPreference &other);
   ScheduleTime *getSchedule(const char *trafficType);
-  RunwayGroup *getGroup(const string groupName);
+  RunwayGroup *getGroup(const string& groupName);
   bool available() { return initialized; };
 
  // Some overloaded virtual XMLVisitor members
@@ -180,7 +180,7 @@ public:
   virtual void error (const char * message, int line, int column);
 };
 
-double processPosition(string pos);
+double processPosition(const string& pos);
 
 class FGParking {
 private:
@@ -205,17 +205,17 @@ public:
            double hdg,
            double rad,
            int idx,
-           string name,
-           string tpe,
-           string codes);
-  void setLatitude (string lat)  { latitude    = processPosition(lat);  };
-  void setLongitude(string lon)  { longitude   = processPosition(lon);  };
+           const string& name,
+           const string& tpe,
+           const string& codes);
+  void setLatitude (const string& lat)  { latitude    = processPosition(lat);  };
+  void setLongitude(const string& lon)  { longitude   = processPosition(lon);  };
   void setHeading  (double hdg)  { heading     = hdg;  };
   void setRadius   (double rad)  { radius      = rad;  };
   void setIndex    (int    idx)  { index       = idx;  };
-  void setName     (string name) { parkingName = name; };
-  void setType     (string tpe)  { type        = tpe;  };
-  void setCodes    (string codes){ airlineCodes= codes;};
+  void setName     (const string& name) { parkingName = name; };
+  void setType     (const string& tpe)  { type        = tpe;  };
+  void setCodes    (const string& codes){ airlineCodes= codes;};
 
   bool isAvailable ()         { return available;};
   void setAvailable(bool val) { available = val; };
@@ -261,8 +261,8 @@ public:
   void setIndex(int idx)                  { index = idx;};
   void setLatitude (double val)           { lat = val;};
   void setLongitude(double val)           { lon = val;};
-  void setLatitude (string val)           { lat = processPosition(val);  };
-  void setLongitude(string val)           { lon = processPosition(val);  };
+  void setLatitude (const string& val)           { lat = processPosition(val);  };
+  void setLongitude(const string& val)           { lon = processPosition(val);  };
   void addSegment(FGTaxiSegment *segment) { next.push_back(segment); };
   
   double getLatitude() { return lat;};
@@ -352,9 +352,9 @@ private:
 public:
   FGGroundNetwork();
 
-  void addNode   (FGTaxiNode node);
+  void addNode   (const FGTaxiNode& node);
   void addNodes  (FGParkingVec *parkings);
-  void addSegment(FGTaxiSegment seg); 
+  void addSegment(const FGTaxiSegment& seg); 
 
   void init();
   bool exists() { return hasNetwork; };
@@ -393,17 +393,18 @@ private:
   double avWindHeading [10];
   double avWindSpeed   [10];
 
+  string chooseRunwayFallback();
+
 public:
   FGAirport();
   FGAirport(const FGAirport &other);
   //operator= (FGAirport &other);
-  FGAirport(string id, double lon, double lat, double elev, string name, bool has_metar);
+  FGAirport(const string& id, double lon, double lat, double elev, const string& name, bool has_metar);
 
   void init();
-  void getActiveRunway(string trafficType, int action, string *runway);
-  void chooseRunwayFallback(string *runway);
-  bool getAvailableParking(double *lat, double *lon, double *heading, int *gate, double rad, string fltype, 
-                          string acType, string airline);
+  void getActiveRunway(const string& trafficType, int action, string& runway);
+  bool getAvailableParking(double *lat, double *lon, double *heading, int *gate, double rad, const string& fltype, 
+                          const string& acType, const string& airline);
   void getParking         (int id, double *lat, double* lon, double *heading);
   FGParking *getParking(int i); // { if (i < parkings.size()) return parkings[i]; else return 0;};
   void releaseParking(int id);
@@ -422,10 +423,10 @@ public:
  FGGroundNetwork* getGroundNetwork() { return &groundNetwork; };
   
 
-  void setId(string id) { _id = id;};
+  void setId(const string& id) { _id = id;};
   void setMetar(bool value) { _has_metar = value; };
 
-  void setRwyUse(FGRunwayPreference& ref);
+  void setRwyUse(const FGRunwayPreference& ref);
 
  // Some overloaded virtual XMLVisitor members
   virtual void startXML (); 
@@ -462,8 +463,8 @@ public:
     ~FGAirportList();
 
     // add an entry to the list
-    void add( const string id, const double longitude, const double latitude,
-              const double elevation, const string name, const bool has_metar );
+    void add( const string& id, const double longitude, const double latitude,
+              const double elevation, const string& name, const bool has_metar );
 
     // search for the specified id.
       // Returns NULL if unsucessfull.
index c42fc38126d7ad085b1478aba8e0b9f8ddd58bd3..42343865d0e112904412185719c7b0add106ca09 100644 (file)
@@ -642,7 +642,7 @@ void TgtAptDialog_OK (puObject *)
 
 /* add new waypoint (either from above popup window 'ok button or telnet session) */
 
-int NewWaypoint( string Tgt_Alt )
+int NewWaypoint( const string& Tgt_Alt )
 {
   string TgtAptId;
   FGAirport a;
index 9d9247d8e35afddcd52948715d71e7c1a1441e1e..69e455d4e0d74fe4aaf6c4fc08a94520f133979a 100644 (file)
@@ -49,7 +49,7 @@ void fgAPAdjustInit() ;
 void NewHeadingInit();
 void NewAltitudeInit();
 
-int NewWaypoint( string Tgt_Alt );
+int NewWaypoint( const string& Tgt_Alt );
 
 
 #endif // _AUTO_GUI_HXX
index 21e095086fbcb88e8658ae2eed9a2a11af9628cf..2ab4df22be1ad27631e65fc329027e1fd3862791 100644 (file)
@@ -90,7 +90,7 @@ public:
 
     bool build ();
 
-    void add_waypoint( SGWayPoint wp ) {
+    void add_waypoint( const SGWayPoint& wp ) {
         route->add_waypoint( wp );
     }
 
index ded9219245af3935fe9bc6c5aac9f4f0d0e8f2f8..26a92da828c625bafae261a439a7d8144db51e5a 100644 (file)
@@ -78,9 +78,9 @@ public:
 
     virtual ~FGXMLAutoComponent() {}
 
-    virtual void update (double dt) {}
+    virtual void update (double dt)=0;
     
-    inline string get_name() { return name; }
+    inline const string& get_name() { return name; }
 };
 
 
index 30c35d49aeec801f4faac5139aa38d41fece4c24..7f0b643420173435acae7f4a830b74e28f081cd5 100644 (file)
@@ -65,7 +65,7 @@ FGMagRibbon::draw ()
                                // Adjust to put the number in the centre
   xoffset -= 0.25;
 
-  FGCroppedTexture &t = getTexture();
+  FGCroppedTexture t = getTexture();
   t.setCrop(xoffset, yoffset, xoffset + 0.5, yoffset + 0.25);
 
   glPushAttrib(GL_DEPTH_BUFFER_BIT);
index c9cfbd16ebb1ab8e86786c74d29594db956c3780..89c3abd0b64acce931806e6d83effc5b74403732 100644 (file)
@@ -251,7 +251,7 @@ public:
 
     ~fgLineSeg2D() {}
     
-    void draw()
+    void draw() const
     {
         glVertex2f(x0, y0);
         glVertex2f(x1, y1);
@@ -260,7 +260,7 @@ public:
 
 class DrawLineSeg2D {
     public:
-        void operator() (fgLineSeg2D elem) const {
+        void operator() (const fgLineSeg2D& elem) const {
             elem.draw();
         }
 };
@@ -375,7 +375,7 @@ class fgLineList {
 public:
     fgLineList( void ) {}
     ~fgLineList( void ) {}
-    void add( fgLineSeg2D seg ) { List.push_back(seg); }
+    void add( const fgLineSeg2D& seg ) { List.push_back(seg); }
     void erase( void ) { List.erase( List.begin(), List.end() ); }
     void draw( void ) {
         glBegin(GL_LINES);
@@ -392,7 +392,7 @@ public:
     ~fgTextList( void ) {}
     
     void setFont( fntRenderer *Renderer ) { Font = Renderer; }
-    void add( fgText String ) { List.push_back(String); }
+    void add( const fgText& String ) { List.push_back(String); }
     void erase( void ) { List.erase( List.begin(), List.end() ); }
     
     void draw( void ) {
@@ -424,7 +424,7 @@ inline void Text( fgTextList &List, float x, float y, char *s)
     List.add( fgText( x, y, s) );
 }
 
-inline void Text( fgTextList &List, fgText &me)
+inline void Text( fgTextList &List, const fgText &me)
 {
     List.add(me);
 }
@@ -688,9 +688,9 @@ typedef lon_label * pLonlabel;
 class runway_instr : public instr_item 
 {
 private:       
-       void boundPoint(sgdVec3 v, sgdVec3 m);
-       bool boundOutsidePoints(sgdVec3 v, sgdVec3 m);
-       bool drawLine(sgdVec3 a1, sgdVec3 a2, sgdVec3 p1, sgdVec3 p2);
+       void boundPoint(const sgdVec3& v, sgdVec3& m);
+       bool boundOutsidePoints(sgdVec3& v, sgdVec3& m);
+       bool drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& p1, const sgdVec3& p2);
        void drawArrow();
        bool get_active_runway(FGRunway& rwy);
        void get_rwy_points(sgdVec3 *points);
@@ -974,7 +974,7 @@ private:
     fgLineList         StippleLineList;
 
 public:
-    HudLadder( string    name,
+    HudLadder( const string&    name,
               int       x,
                int       y,
                UINT      width,
index 974475f263a1fe4de0ca50237149485ea0804da4..6c070b60523b1e0e55902631198224d01f0aa403 100644 (file)
@@ -1,11 +1,13 @@
 
+#include <simgear/constants.h>
+
 #include "hud.hxx"
 #include "panel.hxx"
 
 #define DO_PANEL_HACK
 
 //====================== Top of HudLadder Class =======================
-HudLadder ::   HudLadder(  string name,
+HudLadder ::   HudLadder(  const string& name,
                           int       x,
                           int       y,
                           UINT      width,
@@ -292,8 +294,8 @@ void HudLadder :: draw( void )
        //  velocity vector
        glBegin(GL_LINE_LOOP);  // Use polygon to approximate a circle 
         for(count=0; count<50; count++) {             
-           cosine = 6 * cos(count * 2 * SGD_PI/50.0); 
-            sine =   6 * sin(count * 2 * SGD_PI/50.0); 
+           cosine = 6 * cos(count * SGD_2PI/50.0); 
+            sine =   6 * sin(count * SGD_2PI/50.0); 
             glVertex2f(cosine+vel_x, sine+vel_y);
        }     
        glEnd(); 
index 2fd326a6f43e09aecff9001df6a12bfa9b8cfaec..c1a938a9fea4f058dcbaa2c6976c3a7b50699f48 100644 (file)
@@ -193,7 +193,7 @@ void runway_instr::get_rwy_points(sgdVec3 *points3d) {
        center = currentCenter;
 }
 
-bool runway_instr::drawLine(sgdVec3 a1, sgdVec3 a2, sgdVec3 point1, sgdVec3 point2) {
+bool runway_instr::drawLine(const sgdVec3& a1, const sgdVec3& a2, const sgdVec3& point1, const sgdVec3& point2) {
        sgdVec3 p1, p2;
        sgdCopyVec3(p1, point1);
        sgdCopyVec3(p2, point2);
@@ -254,7 +254,7 @@ bool runway_instr::drawLine(sgdVec3 a1, sgdVec3 a2, sgdVec3 point1, sgdVec3 poin
     return (p1Valid && p2Valid);
 }
 
-void runway_instr::boundPoint(sgdVec3 v, sgdVec3 m) {
+void runway_instr::boundPoint(const sgdVec3& v, sgdVec3& m) {
        double y = v[1];
        if(m[1] < v[1]) {
                y = location.bottom;
@@ -279,7 +279,7 @@ void runway_instr::boundPoint(sgdVec3 v, sgdVec3 m) {
        }
 }
 
-bool runway_instr::boundOutsidePoints(sgdVec3 v, sgdVec3 m) {
+bool runway_instr::boundOutsidePoints(sgdVec3& v, sgdVec3& m) {
        bool pointsInvalid = (v[1]>location.top && m[1]>location.top) ||
                               (v[1]<location.bottom && m[1]<location.bottom) ||
                                           (v[0]>location.right && m[0]>location.right) ||
index 03e003c6c218d34375b8975f6c16e3919240849c..d59c06f5101c4202bc7e8c83e10c49916f733bac 100644 (file)
@@ -811,7 +811,7 @@ FGLayeredInstrument::addLayer (FGInstrumentLayer *layer)
 }
 
 int
-FGLayeredInstrument::addLayer (FGCroppedTexture &texture,
+FGLayeredInstrument::addLayer (const FGCroppedTexture &texture,
                               int w, int h)
 {
   return addLayer(new FGTexturedLayer(texture, w, h));
index 46db96d3080be438399ef13e6263272ff8ba6308..22169810611bc24ebcb4497209a8a24106ea9754 100644 (file)
@@ -417,7 +417,7 @@ public:
 
                                // Transfer pointer ownership!!
   virtual int addLayer (FGInstrumentLayer *layer);
-  virtual int addLayer (FGCroppedTexture &texture, int w = -1, int h = -1);
+  virtual int addLayer (const FGCroppedTexture &texture, int w = -1, int h = -1);
 
                                // Transfer pointer ownership!!
   virtual void addTransformation (FGPanelTransformation * transformation);
@@ -467,11 +467,10 @@ public:
   virtual void setTexture (const FGCroppedTexture &texture) {
     _texture = texture;
   }
-  virtual FGCroppedTexture &getTexture () { return _texture; }
   virtual const FGCroppedTexture &getTexture () const { return _texture; }
 
 private:
-  mutable FGCroppedTexture _texture;
+  FGCroppedTexture _texture;
 };
 
 
index 10a1293bcc6eaf4c79f34fa7d652d42f01119459..bd0f8039b680589e14c99970022d924d466addbf 100644 (file)
@@ -443,7 +443,7 @@ FGEnvironment::_recalc_hdgspd ()
   double angle_rad;
 
   if (wind_from_east_fps == 0) {
-    angle_rad = (wind_from_north_fps >= 0 ? SGD_PI/2 : -SGD_PI/2);
+    angle_rad = (wind_from_north_fps >= 0 ? SGD_PI_2 : -SGD_PI_2);
   } else {
     angle_rad = atan(wind_from_north_fps/wind_from_east_fps);
   }
index 551df9aa53f308bc9045b2430307c820cdfb3bb3..361ca423cd518618902303a1f08177f99643daea 100644 (file)
@@ -591,7 +591,7 @@ FGMetarEnvironmentCtrl::fetch_data( const string &icao )
 
 
 void
-FGMetarEnvironmentCtrl::update_metar_properties( FGMetar *m )
+FGMetarEnvironmentCtrl::update_metar_properties( const FGMetar *m )
 {
     int i;
     double d;
@@ -609,7 +609,7 @@ FGMetarEnvironmentCtrl::update_metar_properties( FGMetar *m )
     fgSetDouble("/environment/metar/max-visibility-m",
                 m->getMaxVisibility().getVisibility_m() );
 
-    SGMetarVisibility *dirvis = m->getDirVisibility();
+    const SGMetarVisibility *dirvis = m->getDirVisibility();
     for (i = 0; i < 8; i++, dirvis++) {
         const char *min = "/environment/metar/visibility[%d]/min-m";
         const char *max = "/environment/metar/visibility[%d]/max-m";
index a08c11a9a11ae835a96c190b15e226f24bbc266e..61efc075668981e7b6f9f90cca80bc0bb07125bc 100644 (file)
@@ -64,7 +64,7 @@ public:
 
   virtual void setEnvironment (FGEnvironment * environment);
 
-  virtual FGEnvironment * getEnvironment () const { return _environment; }
+  virtual const FGEnvironment * getEnvironment () const { return _environment; }
 
   virtual void setLongitudeDeg (double lon_deg);
   virtual void setLatitudeDeg (double lat_deg);
@@ -180,7 +180,7 @@ private:
     SGPropertyNode *metar_max_age;
 
     FGMetarResult fetch_data( const string &icao );
-    virtual void update_metar_properties( FGMetar *m );
+    virtual void update_metar_properties( const FGMetar *m );
     void update_env_config();
 
 private:
index b00ee64a97b21b145576d1ca0198931f6b863b5e..9a5b5123600417a0c5cf5947797f6225c5ca21c2 100644 (file)
@@ -74,7 +74,7 @@ void FGClouds::init(void) {
        }
 }
 
-SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, string name) {
+SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, const string& name) {
        SGPropertyNode *cld_def=NULL;
 
        cld_def = cloud_def_root->getChild(name.c_str());
@@ -103,7 +103,7 @@ SGNewCloud *FGClouds::buildCloud(SGPropertyNode *cloud_def_root, string name) {
        return cld;
 }
 
-void FGClouds::buildLayer(SGCloudField *layer, string name, double alt, double coverage) {
+void FGClouds::buildLayer(SGCloudField *layer, const string& name, double alt, double coverage) {
        struct {
                string name;
                double count;
@@ -275,7 +275,7 @@ FGClouds::update_metar_properties( FGMetar *m )
     fgSetDouble("/environment/metar/max-visibility-m",
                 m->getMaxVisibility().getVisibility_m() );
 
-    SGMetarVisibility *dirvis = m->getDirVisibility();
+    const SGMetarVisibility *dirvis = m->getDirVisibility();
     for (i = 0; i < 8; i++, dirvis++) {
         const char *min = "/environment/metar/visibility[%d]/min-m";
         const char *max = "/environment/metar/visibility[%d]/max-m";
@@ -378,7 +378,7 @@ FGClouds::update_env_config ()
 }
 
 
-void FGClouds::setLayer( int iLayer, float alt_ft, string coverage, string layer_type ) {
+void FGClouds::setLayer( int iLayer, float alt_ft, const string& coverage, const string& layer_type ) {
        double coverage_norm = 0.0;
        if( coverage == "few" )
                coverage_norm = 2.0/8.0;        // <1-2
@@ -393,7 +393,7 @@ void FGClouds::setLayer( int iLayer, float alt_ft, string coverage, string layer
        buildLayer(layer3D, layer_type, station_elevation_ft + alt_ft * SG_FEET_TO_METER, coverage_norm);
 }
 
-void FGClouds::buildScenario( string scenario ) {
+void FGClouds::buildScenario( const string& scenario ) {
        string fakeMetar="";
        string station = fgGetString("/environment/metar/station-id", "XXXX");
 
index c078d0f01113ebe546de029e991b6b98b5cdffd3..e5840fbe1af3169406bbbfdac51d2e7bd5e2dc88 100644 (file)
@@ -42,14 +42,14 @@ class FGEnvironmentCtrl;
 class FGClouds {
 
 private:
-       SGNewCloud *buildCloud(SGPropertyNode *cloud_def_root, string name);
-       void buildLayer(SGCloudField *layer, string name, double alt, double coverage);
+       SGNewCloud *buildCloud(SGPropertyNode *cloud_def_root, const string& name);
+       void buildLayer(SGCloudField *layer, const string& name, double alt, double coverage);
 
        void buildMETAR(void);
 
-       void buildScenario( string scenario );
+       void buildScenario( const string& scenario );
 
-       void setLayer( int iLayer, float alt_m, string coverage, string layer_type );
+       void setLayer( int iLayer, float alt_m, const string& coverage, const string& layer_type );
 
        void update_metar_properties( FGMetar *m );
 
index 0b6dd7aa525625f82763d8390772f2440e21c6d8..a09d8c458df512a91f557ca740a34591aeb39ee6 100644 (file)
@@ -120,7 +120,7 @@ public:
     void search ();
 
     // internal values
-    inline string get_ident() const { return ident; }
+    inline const string& get_ident() const { return ident; }
     inline bool get_valid() const { return valid; }
     inline bool get_inrange() const { return inrange; }
     inline double get_stn_lon() const { return stn_lon; }
index faa09a01fc7dfaecc1b82387adf0330906a5dba1..279d33c4c30d7e9915ea7e1a4ed204121ffc6123 100755 (executable)
@@ -353,7 +353,7 @@ TACAN::search (double frequency_mhz, double longitude_rad,
 }
 
 double
-TACAN::searchChannel (string _channel){
+TACAN::searchChannel (const string& _channel){
     
     double frequency_khz = 0;
     
index 017fe87d54c0465e8b24046009a672aa7fedcab9..573f4b111465c8918f8f0fa635e038b8cf12bdae 100755 (executable)
@@ -52,7 +52,7 @@ private:
 
     void search (double frequency, double longitude_rad,
                  double latitude_rad, double altitude_m);
-    double searchChannel (string _channel);
+    double searchChannel (const string& _channel);
 
     SGPropertyNode_ptr _longitude_node;
     SGPropertyNode_ptr _latitude_node;
index 36567ffb30b640fcc9f9636ae46ceaed130546f5..96dae6f3df8ca3377c5da140be8ffb7903a940b9 100644 (file)
@@ -27,6 +27,7 @@
 #include <simgear/debug/logstream.hxx>
 #include <simgear/environment/metar.hxx>
 #include <simgear/structure/exception.hxx>
+#include <simgear/scene/sky/sky.hxx>
 
 using namespace std;
 
@@ -79,7 +80,7 @@ double rnd(double r, int g = 0)
 }
 
 
-ostream& operator<<(ostream& s, SGMetarVisibility& v)
+ostream& operator<<(ostream& s, const SGMetarVisibility& v)
 {
        ostringstream buf;
        int m = v.getModifier();
@@ -154,7 +155,7 @@ void printReport(SGMetar *m)
 
 
        // directed visibility
-       SGMetarVisibility *dirvis = m->getDirVisibility();
+       const SGMetarVisibility *dirvis = m->getDirVisibility();
        for (i = 0; i < 8; i++, dirvis++)
                if (dirvis->getVisibility_m() != NaN)
                        cout << "\t\t\t" << *dirvis << endl;
@@ -484,6 +485,7 @@ void usage()
        );
 }
 
+SGSky* thesky = new SGSky;
 
 int main(int argc, char *argv[])
 {
index b4f9817ff9b18e22f8ae9fa56aa39a30b2893481..8de3e5e12e017be0461e6dd588c5ee6cb4da2b99 100644 (file)
@@ -59,7 +59,7 @@ public:
     inline FGFix(void);
     inline ~FGFix(void) {}
 
-    inline string get_ident() const { return ident; }
+    inline const string& get_ident() const { return ident; }
     inline double get_lon() const { return lon; }
     inline double get_lat() const { return lat; }
 
index a481959eeab715a265a33a2a5fd1432af9f13091..c9ad715c9af43767177281ce024e6e49f0780afb 100644 (file)
@@ -63,7 +63,7 @@ public:
     inline FGNav();
     inline FGNav( int _type, double _lat, double _lon, double _elev_ft,
                   int _freq, double _range, double _magvar,
-                  string _ident, string _name,
+                  const string& _ident, const string& _name,
                   bool _serviceable );
     inline ~FGNav() {}
 
@@ -78,9 +78,9 @@ public:
     inline double get_range() const { return range; }
     // inline bool get_has_dme() const { return has_dme; }
     inline const char *get_ident() { return ident.c_str(); }
-    inline string get_trans_ident() { return trans_ident; }
+    inline const string& get_trans_ident() { return trans_ident; }
     inline double get_magvar() const { return magvar; }
-    inline string get_name() { return name; }
+    inline const string& get_name() { return name; }
 };
 
 
@@ -105,7 +105,7 @@ FGNav::FGNav() :
 inline
 FGNav::FGNav( int _type, double _lat, double _lon, double _elev_ft,
               int _freq, double _range, double _magvar,
-              string _ident, string _name,
+              const string& _ident, const string& _name,
               bool _serviceable ) :
     type(0),
     lon(0.0), lat(0.0),
index c5234dea48eee130e94082ff1a2ab429edaaa258..4b866580f9e0fee807495878ffe4aed42dc29ad6 100644 (file)
@@ -334,7 +334,7 @@ FGNavRecord *FGNavList::findClosest( double lon_rad, double lat_rad,
 }
 
 // Given a TACAN Channel return the first matching frequency
-FGTACANRecord *FGTACANList::findByChannel( string channel )
+FGTACANRecord *FGTACANList::findByChannel( const string& channel )
 {
     tacan_list_type stations = ident_channels[channel];
     SG_LOG( SG_INSTR, SG_DEBUG, "findByChannel " << channel<< " size " << stations.size()  );
index be18ad291d29d30cd84a2989c15dae07262c0e63..705572aedca0bbcf5dfafbbeabe584daad0a8e42 100644 (file)
@@ -99,7 +99,7 @@ public:
     // given a frequency returns the first matching entry
     FGNavRecord *findStationByFreq( double frequency );
 
-    inline nav_map_type get_navaids() const { return navaids; }
+    inline const nav_map_type& get_navaids() const { return navaids; }
 };
 
 class FGTACANList {
@@ -128,7 +128,7 @@ public:
     bool add( FGTACANRecord *r );
     
     // Given a TACAN Channel, return the appropriate frequency.  
-    FGTACANRecord *findByChannel( string channel );
+    FGTACANRecord *findByChannel( const string& channel );
 
     
 };
index e93dc3fc27079471d1fd251c23e50cdd7ab41d27..c4b0508ba157c9b524dd8093e385935584a1601b 100644 (file)
@@ -104,11 +104,11 @@ bool FGRAY::gen_message() {
        /* Make sure the angles are reasonable onscale */
        /* We use an asymmetric mapping so that the chair behaves
           reasonably when upside down.  Otherwise it oscillates. */
-       while ( ang_pos < -2*SGD_PI/3 ) {
-               ang_pos += 2 * SGD_PI;
+       while ( ang_pos < -SGD_2PI/3 ) {
+               ang_pos += SGD_2PI;
        }
-       while ( ang_pos >  4*SGD_PI/3 ) {
-               ang_pos -= 2 * SGD_PI;
+       while ( ang_pos >  2*SGD_2PI/3 ) {
+               ang_pos -= SGD_2PI;
        }
 
        /* Tell interested parties what the situation is */
@@ -134,8 +134,8 @@ bool FGRAY::gen_message() {
                if ( fabs ( ang_pos - chair_heading ) > SGD_PI )
                {       /* Need to swing chair by 360 degrees */
                        if ( ang_pos < chair_heading )
-                               chair_heading -= 2 * SGD_PI;
-                       else    chair_heading += 2 * SGD_PI;
+                               chair_heading -= SGD_2PI;
+                       else    chair_heading +=  SGD_2PI;
                }
                /* Remove the chair heading from the true heading */
                ang_pos -= chair_heading;
@@ -144,7 +144,7 @@ bool FGRAY::gen_message() {
                   can just about represent 30 degrees full scale.  */
                chair_heading += ang_pos * dt * 0.2;
                /* If they turn fast, at 90 deg error subtract 30 deg */
-               if ( fabs(ang_pos) > SGD_PI / 2 )
+               if ( fabs(ang_pos) > SGD_PI_2 )
                        chair_heading += ang_pos / 3;
 
        } else
@@ -178,8 +178,8 @@ bool FGRAY::gen_message() {
                /* Scale to the hardware's full scale range */
                propose /= fullscale [ subaxis ];
                /* Use a sine shaped washout on all axes */
-               if ( propose < -SGD_PI / 2 ) *dac = 0x0000; else
-               if ( propose >  SGD_PI / 2 ) *dac = 0xFFFF; else
+               if ( propose < -SGD_PI_2 ) *dac = 0x0000; else
+               if ( propose >  SGD_PI_2 ) *dac = 0xFFFF; else
                   *dac = (unsigned short) ( 32767 * 
                                ( 1.0 + sin ( propose ) ) );
        }
index 51e26ae67413e00b9bc962b6686fd1dc98869031..183826b27b32073488faebe702deef9342566a1c 100644 (file)
@@ -100,7 +100,7 @@ void FGScenery::bind() {
 void FGScenery::unbind() {
 }
 
-void FGScenery::set_center( Point3D p ) {
+void FGScenery::set_center( const Point3D& p ) {
     center = p;
     sgdVec3 c;
     sgdSetVec3(c, p.x(), p.y(), p.z());
@@ -146,7 +146,7 @@ FGScenery::get_elevation_m(double lat, double lon, double max_alt,
 }
 
 bool
-FGScenery::get_cart_elevation_m(const sgdVec3 pos, double max_altoff,
+FGScenery::get_cart_elevation_m(const sgdVec3& pos, double max_altoff,
                                 double& alt, bool exact)
 {
   Point3D saved_center = center;
index 847f2e3a4da4c25bcd7ed33dba6e40a6a77fd9a0..eed0e67a022d363d67bb171456fa2a763877824b 100644 (file)
@@ -105,14 +105,14 @@ public:
     /// lat/lon pair. If there is no scenery for that point, the altitude
     /// value is undefined.
     /// All values are meant to be in meters.
-    bool get_cart_elevation_m(const sgdVec3 pos, double max_altoff,
+    bool get_cart_elevation_m(const sgdVec3& pos, double max_altoff,
                               double& radius, bool exact = false);
 
-    inline Point3D get_center() const { return center; }
-    void set_center( Point3D p );
+    inline const Point3D& get_center() const { return center; }
+    void set_center( const Point3D& p );
 
-    inline Point3D get_next_center() const { return next_center; }
-    inline void set_next_center( Point3D p ) { next_center = p; }
+    inline const Point3D& get_next_center() const { return next_center; }
+    inline void set_next_center( const Point3D& p ) { next_center = p; }
 
     inline ssgRoot *get_scene_graph () const { return scene_graph; }
     inline void set_scene_graph (ssgRoot * s) { scene_graph = s; }
index 90471243beff45d5c245f27974e493538ed66216..51d3d34d0f1f89ecff2ee6fc82a3bffa48a72fe7 100644 (file)
@@ -82,7 +82,7 @@ private:
 public:
 
     inline FGDeferredModel() { }
-    inline FGDeferredModel( const string mp, const string tp, SGBucket b,
+    inline FGDeferredModel( const string& mp, const string& tp, SGBucket b,
                     FGTileEntry *t, ssgTransform *ot )
     {
        model_path = mp;
@@ -92,9 +92,9 @@ public:
        obj_trans = ot;
     }
     inline ~FGDeferredModel() { }
-    inline string get_model_path() const { return model_path; }
-    inline string get_texture_path() const { return texture_path; }
-    inline SGBucket get_bucket() const { return bucket; }
+    inline const string& get_model_path() const { return model_path; }
+    inline const string& get_texture_path() const { return texture_path; }
+    inline const SGBucket& get_bucket() const { return bucket; }
     inline FGTileEntry *get_tile() const { return tile; }
     inline ssgTransform *get_obj_trans() const { return obj_trans; }
 };
@@ -248,7 +248,7 @@ public:
     /**
      * Return the "bucket" for this tile
      */
-    inline SGBucket get_tile_bucket() const { return tile_bucket; }
+    inline const SGBucket& get_tile_bucket() const { return tile_bucket; }
 
     /**
      * Apply ssgLeaf::makeDList to all leaf of a branch
index b63509e25f4b6b1a734192336184f18097729cb4..1cb937b47b74d37e028fff3b575b7836af07bd93 100644 (file)
@@ -70,7 +70,7 @@ void FGMPSMessageBuf::writed(double data)
        write8(&data);\r
 }\r
 \r
-void FGMPSMessageBuf::writes(string data)\r
+void FGMPSMessageBuf::writes(const string& data)\r
 {\r
        put(data.length());\r
        for (int i=0; i<data.length(); i++) put(data[i]);\r
index c905f8b2bb8e999d874b8cd5ef77b6b644bc3829..83fa1ace6fc51e90cf9d80b7a1db6aaf924b1325 100644 (file)
@@ -49,20 +49,20 @@ private:
 public:\r
 \r
        FGMPSMessageBuf()               { init(""); }\r
-       FGMPSMessageBuf(string data)    { init(data); }\r
+       FGMPSMessageBuf(const string& data)     { init(data); }\r
 \r
        ~FGMPSMessageBuf() {}\r
 \r
-       void init(string data)\r
+       void init(const string& data)\r
        {\r
                buf = data;\r
                pos = 0;\r
        }\r
 \r
        void    clr()                   { buf = ""; }\r
-       void    add(string data)        { buf += data; }\r
-       void    set(string data)        { buf = data; }\r
-       string& str()                   { return buf; }\r
+       void    add(const string& data) { buf += data; }\r
+       void    set(const string& data) { buf = data; }\r
+       const string&   str()           { return buf; }\r
        size_t  ofs()                   { return pos; }\r
        void    ofs(size_t val)         { pos = val; }\r
 \r
@@ -86,7 +86,7 @@ public:
        double  readd();\r
        string  reads(size_t length);\r
 \r
-       string& buffer() { return buf; }\r
+       const string&   buffer() { return buf; }\r
 };\r
 \r
 #endif\r
index ea86999d84238988b280f08707eb3a6638439c8b..f018334e21ae1acdb4d25f3a6df5bc0b30d57bca 100644 (file)
@@ -87,7 +87,7 @@ void make_tone( unsigned char *buf, int freq,
     int i, j;
 
     for ( i = 0; i < trans_len; ++i ) {
-       float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
+       float level = ( sin( (double) i * SGD_2PI / (BYTES_PER_SECOND / freq) ) )
            * ((double)i / trans_len) / 2.0 + 0.5;
 
        /* Convert to unsigned byte */
@@ -95,7 +95,7 @@ void make_tone( unsigned char *buf, int freq,
     }
 
     for ( i = trans_len; i < len - trans_len; ++i ) {
-       float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
+       float level = ( sin( (double) i * SGD_2PI / (BYTES_PER_SECOND / freq) ) )
            / 2.0 + 0.5;
 
        /* Convert to unsigned byte */
@@ -103,7 +103,7 @@ void make_tone( unsigned char *buf, int freq,
     }
     j = trans_len;
     for ( i = len - trans_len; i < len; ++i ) {
-       float level = ( sin( (double) i * 2.0 * SGD_PI / (BYTES_PER_SECOND / freq) ) )
+       float level = ( sin( (double) i * SGD_2PI / (BYTES_PER_SECOND / freq) ) )
            * ((double)j / trans_len) / 2.0 + 0.5;
        --j;
 
index 0fb30bf4166518c7adc419fa5fdc1a348b8455ac..7959785fbbc6730010338e1069511ff632bed6d1 100644 (file)
@@ -81,7 +81,7 @@ public:
     FGElectricalComponent();
     virtual ~FGElectricalComponent() {}
 
-    inline string get_name() { return name; }
+    inline const string& get_name() { return name; }
 
     inline int get_kind() const { return kind; }
 
@@ -111,7 +111,7 @@ public:
     }
 
     inline int get_num_props() const { return props.size(); }
-    inline string get_prop( const int i ) {
+    inline const string& get_prop( const int i ) {
         return props[i];
     }
     inline void add_prop( const string &s ) {
index a0605f7d1016fc258bbfb0bab928c6c7a040aaf6..5eb4f2c17344c868fae330df0a1a4bdf102a808d 100644 (file)
@@ -44,9 +44,6 @@
 #  include <math.h>
 #endif
 
-#include <string>
-SG_USING_STD(string);
-
 #include <simgear/constants.h>
 #include <simgear/debug/logstream.hxx>
 #include <simgear/math/interpolater.hxx>
index b3a171c56b32fc22bbf59fd07b9e8f1770c88385..5c782d775bfdaa49f6e311b3c7c7ecb2a9a3a60b 100644 (file)
@@ -149,8 +149,8 @@ public:
     inline double get_sun_gc_lat () const { return _sun_gc_lat; }
     inline void set_sun_gc_lat (double l) { _sun_gc_lat = l; }
 
-    inline Point3D get_sunpos () const { return _sunpos; }
-    inline void set_sunpos (Point3D p) { _sunpos = p; }
+    inline const Point3D& get_sunpos () const { return _sunpos; }
+    inline void set_sunpos (const Point3D& p) { _sunpos = p; }
 
     inline float *sun_vec () const { return (float *)_sun_vec; }
     inline float *sun_vec_inv () const { return (float *)_sun_vec_inv; }
@@ -170,8 +170,8 @@ public:
     inline double get_moon_gc_lat () const { return _moon_gc_lat; }
     inline void set_moon_gc_lat (double l) { _moon_gc_lat = l; }
 
-    inline Point3D get_moonpos () const { return _moonpos; }
-    inline void set_moonpos (Point3D p) { _moonpos = p; }
+    inline const Point3D& get_moonpos () const { return _moonpos; }
+    inline void set_moonpos (const Point3D& p) { _moonpos = p; }
 
     inline float *moon_vec () const { return (float *)_moon_vec; }
     inline float *moon_vec_inv () const { return (float *)_moon_vec_inv; }
index 4a86c98c477874baeb04edba148155e2b0df361d..a65adad8c0b45fee2a4a2317f0feb1b024b0a321 100644 (file)
@@ -91,14 +91,14 @@ FGScheduledFlight::FGScheduledFlight(const FGScheduledFlight &other)
   initialized     = other.initialized;
 }
 
-FGScheduledFlight::FGScheduledFlight(string cs,
-                  string fr,
-                  string depPrt,
-                  string arrPrt,
+FGScheduledFlight::FGScheduledFlight(const string& cs,
+                  const string& fr,
+                  const string& depPrt,
+                  const string& arrPrt,
                   int cruiseAlt,
-                  string deptime,
-                  string arrtime,
-                  string rep)
+                  const string& deptime,
+                  const string& arrtime,
+                  const string& rep)
 {
   callsign          = cs;
   fltRules          = fr;
@@ -142,7 +142,7 @@ FGScheduledFlight:: ~FGScheduledFlight()
 {
 }
 
-time_t FGScheduledFlight::processTimeString(string theTime)
+time_t FGScheduledFlight::processTimeString(const string& theTime)
 {
   int weekday;
   int timeOffsetInDays;
index 2396ae84b4f703e91bd8d9dba18702accc3021b3..b6541bd46469dae1ce9b8b49a5d674fce25ba959 100644 (file)
@@ -67,14 +67,14 @@ public:
   FGScheduledFlight();
   FGScheduledFlight(const FGScheduledFlight &other);
   //  FGScheduledFlight(const string);
-  FGScheduledFlight::FGScheduledFlight(string cs,
-                    string fr,
-                    string depPrt,
-                    string arrPrt,
+  FGScheduledFlight::FGScheduledFlight(const string& cs,
+                    const string& fr,
+                    const string& depPrt,
+                    const string& arrPrt,
                     int cruiseAlt,
-                    string deptime,
-                    string arrtime,
-                    string rep
+                    const string& deptime,
+                    const string& arrtime,
+                    const string& rep
                     );
   ~FGScheduledFlight();
 
@@ -96,8 +96,8 @@ public:
     return (departureTime < other.departureTime); 
   };
 
-  time_t processTimeString(string time);
-  string getCallSign() {return callsign; };
+  time_t processTimeString(const string& time);
+  const string& getCallSign() {return callsign; };
 };
 
 typedef vector<FGScheduledFlight>           FGScheduledFlightVec;
index b099bd08c20f27cc0a54586174c70492b0139602..315969042ff43e260ba9e4c1a0e04df81afeb7d3 100644 (file)
@@ -73,11 +73,11 @@ class FGAISchedule
   int         getCruiseAlt        () { return flights.begin()->getCruiseAlt       (); };
   double      getRadius           () { return radius; };
   double      getGroundOffset     () { return groundOffset;};
-  string      getFlightType       () { return flightType;};
-  string      getAirline          () { return airline; };
-  string      getAircraft         () { return acType; };
-  string      getCallSign         () { return flights.begin()->getCallSign (); };
-  string      getRegistration     () { return registration;};
+  const string& getFlightType     () { return flightType;};
+  const string& getAirline        () { return airline; };
+  const string& getAircraft       () { return acType; };
+  const string& getCallSign       () { return flights.begin()->getCallSign (); };
+  const string& getRegistration   () { return registration;};
   bool getHeavy                   () { return heavy; };
   bool operator< (const FGAISchedule &other) const { return (distanceToUser < other.distanceToUser); };
   //void * getAiRef                 () { return AIManagerRef; };