From 1de61c8afdc45cddf4fbb4a070d44aa4cc4df366 Mon Sep 17 00:00:00 2001 From: daveluff Date: Fri, 2 Dec 2005 22:50:10 +0000 Subject: [PATCH] Alex Romosan: Make GpsPage::GetId() pure virtual, and pass strings by reference not value --- src/Instrumentation/dclgps.cxx | 25 ++++++++++++------------- src/Instrumentation/dclgps.hxx | 24 ++++++++++++------------ 2 files changed, 24 insertions(+), 25 deletions(-) diff --git a/src/Instrumentation/dclgps.cxx b/src/Instrumentation/dclgps.cxx index f5d31b7e9..b78806b28 100644 --- a/src/Instrumentation/dclgps.cxx +++ b/src/Instrumentation/dclgps.cxx @@ -194,8 +194,7 @@ string GPSPage::GPSitoa(int n) { void GPSPage::CleanUp() {} void GPSPage::LooseFocus() {} -void GPSPage::SetId(string s) {} -string GPSPage::GetId() { return(""); } +void GPSPage::SetId(const string& s) {} // ------------------------------------------------------------------------------------- // @@ -888,7 +887,7 @@ double DCLGPS::GetCDIDeflection() const { return((xtd / _currentCdiScale) * 5.0 * 2.5 * -1.0); } -void DCLGPS::DtoInitiate(string s) { +void DCLGPS::DtoInitiate(const string& s) { cout << "DtoInitiate, s = " << s << '\n'; bool multi; const GPSWaypoint* wp = FindFirstById(s, multi, true); @@ -1013,7 +1012,7 @@ double DCLGPS::GetETE() { // returns -1 if groundspeed is less than 30kts. // If the waypoint is an unreached part of the active flight plan the time will be via each leg. // otherwise it will be a direct-to time. -double DCLGPS::GetTimeToWaypoint(string id) { +double DCLGPS::GetTimeToWaypoint(const string& id) { if(_groundSpeed_kts < 30.0) { return(-1.0); } @@ -1089,7 +1088,7 @@ int DCLGPS::GetActiveWaypointIndex() { return(-1); } -int DCLGPS::GetWaypointIndex(string id) { +int DCLGPS::GetWaypointIndex(const string& id) { for(unsigned int i=0; i<_flightPlans[0]->waypoints.size(); ++i) { if(_flightPlans[0]->waypoints[i]->id == id) return((int)i); } @@ -1240,7 +1239,7 @@ void DCLGPS::CreateFlightPlan(GPSFlightPlan* fp, vector ids, vectorFindFirstVorById(id, exact)); @@ -1336,7 +1335,7 @@ FGNavRecord* DCLGPS::FindFirstVorById(string id, bool &multi, bool exact) { return(NULL); // Shouldn't get here! } #if 0 -Overlays::NAV* DCLGPS::FindFirstVorById(string id, bool &multi, bool exact) { +Overlays::NAV* DCLGPS::FindFirstVorById(const string& id, bool &multi, bool exact) { // NOTE - at the moment multi is never set. multi = false; if(exact) return(_overlays->FindFirstVorById(id, exact)); @@ -1386,7 +1385,7 @@ Overlays::NAV* DCLGPS::FindFirstVorById(string id, bool &multi, bool exact) { #endif //0 // TODO - add the ASCII / alphabetical stuff from the Atlas version -FGNavRecord* DCLGPS::FindFirstNDBById(string id, bool &multi, bool exact) { +FGNavRecord* DCLGPS::FindFirstNDBById(const string& id, bool &multi, bool exact) { // NOTE - at the moment multi is never set. multi = false; //if(exact) return(_overlays->FindFirstVorById(id, exact)); @@ -1405,7 +1404,7 @@ FGNavRecord* DCLGPS::FindFirstNDBById(string id, bool &multi, bool exact) { return(NULL); // Shouldn't get here! } #if 0 -Overlays::NAV* DCLGPS::FindFirstNDBById(string id, bool &multi, bool exact) { +Overlays::NAV* DCLGPS::FindFirstNDBById(const string& id, bool &multi, bool exact) { // NOTE - at the moment multi is never set. multi = false; if(exact) return(_overlays->FindFirstNDBById(id, exact)); @@ -1455,7 +1454,7 @@ Overlays::NAV* DCLGPS::FindFirstNDBById(string id, bool &multi, bool exact) { #endif //0 // TODO - add the ASCII / alphabetical stuff from the Atlas version -const FGFix* DCLGPS::FindFirstIntById(string id, bool &multi, bool exact) { +const FGFix* DCLGPS::FindFirstIntById(const string& id, bool &multi, bool exact) { // NOTE - at the moment multi is never set, and indeed can't be // since FG can only map one Fix per ID at the moment. multi = false; @@ -1516,7 +1515,7 @@ const FGFix* DCLGPS::FindFirstIntById(string id, bool &multi, bool exact) { return NULL; // Don't think we can ever get here. } -const FGAirport* DCLGPS::FindFirstAptById(string id, bool &multi, bool exact) { +const FGAirport* DCLGPS::FindFirstAptById(const string& id, bool &multi, bool exact) { // NOTE - at the moment multi is never set. //cout << "FindFirstAptById, id = " << id << '\n'; multi = false; diff --git a/src/Instrumentation/dclgps.hxx b/src/Instrumentation/dclgps.hxx index 00b7943b3..442105df8 100644 --- a/src/Instrumentation/dclgps.hxx +++ b/src/Instrumentation/dclgps.hxx @@ -179,14 +179,14 @@ public: virtual void LooseFocus(); // Allows pages that display info for a given ID to have it set/get if they implement these functions. - virtual void SetId(string s); - virtual string GetId(); + virtual void SetId(const string& s); + virtual const string& GetId()=0; inline int GetSubPage() { return(_subPage); } inline int GetNSubPages() { return(_nSubPages); } - inline string GetName() { return(_name); } + inline const string& GetName() { return(_name); } protected: DCLGPS* _parent; @@ -274,7 +274,7 @@ public: // Returns -1 if no active waypoint. int GetActiveWaypointIndex(); // Ditto for an arbitrary waypoint id - int GetWaypointIndex(string id); + int GetWaypointIndex(const string& id); // Returns meters inline float GetDistToActiveWaypoint() { return _dist2Act; } @@ -292,7 +292,7 @@ public: // returns -1 if groundspeed is less than 30kts. // If the waypoint is an unreached part of the active flight plan the time will be via each leg. // otherwise it will be a direct-to time. - double GetTimeToWaypoint(string id); + double GetTimeToWaypoint(const string& id); // Return true if waypoint alerting is occuring inline bool GetWaypointAlert() const { return(_waypointAlert); } @@ -313,7 +313,7 @@ public: inline bool GetToFlag() const { return(_headingBugTo); } // Initiate Direct To operation to the supplied ID. - void DtoInitiate(string id); + void DtoInitiate(const string& id); // Cancel Direct To operation void DtoCancel(); @@ -377,14 +377,14 @@ protected: gps_waypoint_map _waypoints; private: // Worker function for the below. - const GPSWaypoint* ActualFindFirstById(string id, bool exact = false); + const GPSWaypoint* ActualFindFirstById(const string& id, bool exact = false); protected: // Find first of any type of waypoint by id. (TODO - Possibly we should return multiple waypoints here). - const GPSWaypoint* FindFirstById(string id, bool &multi, bool exact = false); - FGNavRecord* FindFirstVorById(string id, bool &multi, bool exact = false); - FGNavRecord* FindFirstNDBById(string id, bool &multi, bool exact = false); - const FGAirport* FindFirstAptById(string id, bool &multi, bool exact = false); - const FGFix* FindFirstIntById(string id, bool &multi, bool exact = false); + const GPSWaypoint* FindFirstById(const string& id, bool &multi, bool exact = false); + FGNavRecord* FindFirstVorById(const string& id, bool &multi, bool exact = false); + FGNavRecord* FindFirstNDBById(const string& id, bool &multi, bool exact = false); + const FGAirport* FindFirstAptById(const string& id, bool &multi, bool exact = false); + const FGFix* FindFirstIntById(const string& id, bool &multi, bool exact = false); // Find the closest VOR to a position in RADIANS. FGNavRecord* FindClosestVor(double lat_rad, double lon_rad); -- 2.39.5