1
0
Fork 0

Maintenance: namespace

Clean up namespaces.
Don't use broad 'using namespace' context in header files.
Header Guards.
SPDX tags.
This commit is contained in:
scttgs0 2023-05-20 17:13:11 -05:00
parent 89043efdaa
commit fca4c7dbe2
5 changed files with 149 additions and 212 deletions

View file

@ -81,7 +81,7 @@ static std::string read_string(std::istream& in, size_t& pos)
static int PropertiesWrite(SGPropertyNode* root, std::ostream& out)
{
stringstream buffer;
std::stringstream buffer;
writeProperties(buffer, root, true /*write_all*/);
uint32_t buffer_len = buffer.str().size() + 1;
writeRaw(out, buffer_len);

View file

@ -1,25 +1,9 @@
// AirportBuilder.hxx -- Builder to create airports based on airport data for
// rendering in the scenery
//
// Written by Stuart Buchanan, started June 2020
//
// Copyright (C) 2020 Stuart Buchanan stuart13@gmail.com
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
/*
* SPDX-FileName: AirportBuilder.cxx
* SPDX-FileComment: Builder to create airports based on airport data for rendering in the scenery
* SPDX-FileCopyrightText: Copyright (C) 2020 Stuart Buchanan stuart13@gmail.com
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <algorithm>
@ -86,7 +70,7 @@ osgDB::ReaderWriter::ReadResult AirportBuilder::readNode(const std::string& file
if (! aptFile.isFile()) return ReadResult::FILE_NOT_HANDLED;;
const string airportId = aptFile.file_base();
const std::string airportId = aptFile.file_base();
APTLoader aptLoader;
const FGAirport* airport = aptLoader.loadAirportFromFile(airportId, aptFile);

View file

@ -1,25 +1,10 @@
// airport.cxx -- Classes representing airports, seaports and helipads
//
// Written by Curtis Olson, started April 1998.
// Updated by Durk Talsma, started December, 2004.
//
// Copyright (C) 1998 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
/*
* SPDX-FileName: airport.cxx
* SPDX-FileComment: Classes representing airports, seaports and helipads
* SPDX-FileCopyrightText: Copyright (C) 1998 Curtis L. Olson - http://www.flightgear.org/~curt
* SPDX-FileContributor: Updated by Durk Talsma, started December, 2004
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config.h>
@ -1072,7 +1057,7 @@ flightgear::Transition* FGAirport::selectSIDByEnrouteTransition(FGPositioned* en
return nullptr;
}
Transition *FGAirport::selectSIDByTransition(const FGRunway* runway, const string &aIdent) const
Transition *FGAirport::selectSIDByTransition(const FGRunway* runway, const std::string &aIdent) const
{
loadProcedures();
for (auto sid : mSIDs) {
@ -1099,7 +1084,7 @@ flightgear::Transition* FGAirport::selectSTARByEnrouteTransition(FGPositioned* e
return nullptr;
}
Transition *FGAirport::selectSTARByTransition(const FGRunway* runway, const string &aIdent) const
Transition *FGAirport::selectSTARByTransition(const FGRunway* runway, const std::string &aIdent) const
{
loadProcedures();
for (auto star : mSTARs) {

View file

@ -1,160 +1,141 @@
// apt_loader.hxx -- a front end loader of the apt.dat file. This loader
// populates the runway and basic classes.
//
// Written by Curtis Olson, started December 2004.
//
// Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
/*
* SPDX-FileName: apt_loader.hxx
* SPDX-FileComment: a front end loader of the apt.dat file. This loader populates the runway and basic classes.
* SPDX-FileCopyrightText: Copyright (C) 2004 Curtis L. Olson - http://www.flightgear.org/~curt
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#pragma once
#ifndef _FG_APT_LOADER_HXX
#define _FG_APT_LOADER_HXX
#include <string>
#include <vector>
#include <unordered_map>
#include "airport.hxx"
#include <string>
#include <unordered_map>
#include <vector>
#include <Navaids/positioned.hxx>
#include <simgear/compiler.h>
#include <simgear/structure/SGSharedPtr.hxx>
#include <simgear/math/SGGeod.hxx>
#include <simgear/misc/sg_path.hxx>
#include <Navaids/positioned.hxx>
#include <simgear/structure/SGSharedPtr.hxx>
class NavDataCache;
class sg_gzifstream;
class FGPavement;
namespace flightgear
{
namespace flightgear {
class APTLoader
{
public:
APTLoader();
~APTLoader();
APTLoader();
~APTLoader();
// Read the specified apt.dat file into 'airportInfoMap'.
// 'bytesReadSoFar' and 'totalSizeOfAllAptDatFiles' are used for progress
// information.
void readAptDatFile(const SGPath& aptdb_file, std::size_t bytesReadSoFar,
std::size_t totalSizeOfAllAptDatFiles);
// Read all airports gathered in 'airportInfoMap' and load them into the
// navdata cache (even in case of overlapping apt.dat files,
// 'airportInfoMap' has only one entry per airport).
void loadAirports();
// Read the specified apt.dat file into 'airportInfoMap'.
// 'bytesReadSoFar' and 'totalSizeOfAllAptDatFiles' are used for progress
// information.
void readAptDatFile(const SGPath& aptdb_file, std::size_t bytesReadSoFar,
std::size_t totalSizeOfAllAptDatFiles);
// Read all airports gathered in 'airportInfoMap' and load them into the
// navdata cache (even in case of overlapping apt.dat files,
// 'airportInfoMap' has only one entry per airport).
void loadAirports();
// Load a specific airport defined in aptdb_file, and return a "rich" view
// of the airport including taxiways, pavement and line features.
const FGAirport* loadAirportFromFile(std::string id, const SGPath& aptdb_file);
// Load a specific airport defined in aptdb_file, and return a "rich" view
// of the airport including taxiways, pavement and line features.
const FGAirport* loadAirportFromFile(std::string id, const SGPath& aptdb_file);
private:
struct Line
{
Line(unsigned int number_, unsigned int rowCode_, std::string str_)
: number(number_), rowCode(rowCode_), str(str_) { }
struct Line {
Line(unsigned int number_, unsigned int rowCode_, std::string str_)
: number(number_), rowCode(rowCode_), str(str_) {}
unsigned int number;
unsigned int rowCode; // Terminology of the apt.dat spec
std::string str;
};
unsigned int number;
unsigned int rowCode; // Terminology of the apt.dat spec
std::string str;
};
typedef std::vector<Line> LinesList;
typedef std::vector<Line> LinesList;
struct RawAirportInfo
{
// apt.dat file where the airport was defined
SGPath file;
// Row code for the airport (1, 16 or 17)
unsigned int rowCode;
// Line number in the apt.dat file where the airport definition starts
unsigned int firstLineNum;
// The whitespace-separated strings comprising the first line of the airport
// definition
std::vector<std::string> firstLineTokens;
// Subsequent lines of the airport definition (one element per line)
LinesList otherLines;
};
struct RawAirportInfo {
// apt.dat file where the airport was defined
SGPath file;
// Row code for the airport (1, 16 or 17)
unsigned int rowCode;
// Line number in the apt.dat file where the airport definition starts
unsigned int firstLineNum;
// The whitespace-separated strings comprising the first line of the airport
// definition
std::vector<std::string> firstLineTokens;
// Subsequent lines of the airport definition (one element per line)
LinesList otherLines;
};
typedef std::unordered_map<std::string, RawAirportInfo> AirportInfoMapType;
typedef SGSharedPtr<FGPavement> FGPavementPtr;
typedef std::vector<FGPavementPtr> NodeList;
typedef std::unordered_map<std::string, RawAirportInfo> AirportInfoMapType;
typedef SGSharedPtr<FGPavement> FGPavementPtr;
typedef std::vector<FGPavementPtr> NodeList;
APTLoader(const APTLoader&); // disable copy constructor
APTLoader& operator=(const APTLoader&); // disable copy-assignment operator
APTLoader(const APTLoader&); // disable copy constructor
APTLoader& operator=(const APTLoader&); // disable copy-assignment operator
const FGAirport* loadAirport(const string aptDat, const std::string airportID, RawAirportInfo* airport_info, bool createFGAirport=false);
const FGAirport* loadAirport(const std::string aptDat, const std::string airportID, RawAirportInfo* airport_info, bool createFGAirport = false);
// Tell whether an apt.dat line is blank or a comment line
bool isBlankOrCommentLine(const std::string& line);
// Return a copy of 'line' with trailing '\r' char(s) removed
std::string cleanLine(const std::string& line);
void throwExceptionIfStreamError(const sg_gzifstream& input_stream,
const SGPath& path);
void parseAirportLine(unsigned int rowCode,
const std::vector<std::string>& token);
void finishAirport(const std::string& aptDat);
void parseRunwayLine810(const std::string& aptDat, unsigned int lineNum,
// Tell whether an apt.dat line is blank or a comment line
bool isBlankOrCommentLine(const std::string& line);
// Return a copy of 'line' with trailing '\r' char(s) removed
std::string cleanLine(const std::string& line);
void throwExceptionIfStreamError(const sg_gzifstream& input_stream,
const SGPath& path);
void parseAirportLine(unsigned int rowCode,
const std::vector<std::string>& token);
void parseRunwayLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseWaterRunwayLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseHelipadLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseViewpointLine(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parsePavementLine850(const std::vector<std::string>& token);
void parseNodeLine850(
NodeList *nodelist,
const std::string& aptDat, unsigned int lineNum, int rowCode,
const std::vector<std::string>& token);
void finishAirport(const std::string& aptDat);
void parseRunwayLine810(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseRunwayLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseWaterRunwayLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseHelipadLine850(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parseViewpointLine(const std::string& aptDat, unsigned int lineNum,
const std::vector<std::string>& token);
void parsePavementLine850(const std::vector<std::string>& token);
void parseNodeLine850(
NodeList* nodelist,
const std::string& aptDat, unsigned int lineNum, int rowCode,
const std::vector<std::string>& token);
void parseCommLine(
const std::string& aptDat, unsigned int lineNum, unsigned int rowCode,
const std::vector<std::string>& token);
void parseCommLine(
const std::string& aptDat, unsigned int lineNum, unsigned int rowCode,
const std::vector<std::string>& token);
std::vector<std::string> token;
AirportInfoMapType airportInfoMap;
double rwy_lat_accum;
double rwy_lon_accum;
double last_rwy_heading;
int rwy_count;
std::string last_apt_id;
double last_apt_elev;
SGGeod tower;
std::vector<std::string> token;
AirportInfoMapType airportInfoMap;
double rwy_lat_accum;
double rwy_lon_accum;
double last_rwy_heading;
int rwy_count;
std::string last_apt_id;
double last_apt_elev;
SGGeod tower;
std::string pavement_ident;
NodeList pavements;
NodeList airport_boundary;
NodeList linear_feature;
std::string pavement_ident;
NodeList pavements;
NodeList airport_boundary;
NodeList linear_feature;
// Not an airport identifier in the sense of the apt.dat spec!
PositionedID currentAirportPosID;
NavDataCache* cache;
// Not an airport identifier in the sense of the apt.dat spec!
PositionedID currentAirportPosID;
NavDataCache* cache;
// Enum to keep track of whether we are tracking a pavement, airport boundary
// or linear feature when parsing the file.
enum NodeBlock { None, Pavement, AirportBoundary, LinearFeature};
// Enum to keep track of whether we are tracking a pavement, airport boundary
// or linear feature when parsing the file.
enum NodeBlock { None,
Pavement,
AirportBoundary,
LinearFeature };
};
bool metarDataLoad(const SGPath& path);
} // of namespace flighgear
#endif // _FG_APT_LOADER_HXX
} // namespace flightgear

View file

@ -1,22 +1,9 @@
// dynamics.cxx - Code to manage the higher order airport ground activities
// Written by Durk Talsma, started December 2004.
//
//
// This program is free software; you can redistribute it and/or
// modify it under the terms of the GNU General Public License as
// published by the Free Software Foundation; either version 2 of the
// License, or (at your option) any later version.
//
// This program is distributed in the hope that it will be useful, but
// WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
// General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
/*
* SPDX-FileName: dynamics.cxx
* SPDX-FileComment: Code to manage the higher order airport ground activities
* SPDX-FileCopyrightText: Written by Durk Talsma, started December 2004
* SPDX-License-Identifier: GPL-2.0-or-later
*/
#include <config.h>
@ -236,8 +223,8 @@ void FGAirportDynamics::init()
groundController.init();
}
FGParking* FGAirportDynamics::innerGetAvailableParking(double radius, const string & flType,
const string & airline,
FGParking* FGAirportDynamics::innerGetAvailableParking(double radius, const std::string & flType,
const std::string & airline,
bool skipEmptyAirlineCode)
{
NearbyAIObjectCache nearCache(parent());
@ -261,7 +248,7 @@ FGParking* FGAirportDynamics::innerGetAvailableParking(double radius, const stri
}
if (!airline.empty() && !parking->getCodes().empty()) {
if (parking->getCodes().find(airline, 0) == string::npos) {
if (parking->getCodes().find(airline, 0) == std::string::npos) {
continue;
}
}
@ -302,9 +289,9 @@ bool FGAirportDynamics::hasParkings() const
}
ParkingAssignment FGAirportDynamics::getAvailableParking(double radius,
const string & flType,
const string & acType,
const string & airline)
const std::string & flType,
const std::string & acType,
const std::string & airline)
{
SG_UNUSED(acType); // sadly not used at the moment
@ -321,7 +308,7 @@ ParkingAssignment FGAirportDynamics::getAvailableParking(double radius,
}
// fallback - ignore the airline code entirely
result = innerGetAvailableParking(radius, flType, string(), false);
result = innerGetAvailableParking(radius, flType, std::string(), false);
return result ? ParkingAssignment(result, this) : ParkingAssignment();
}
@ -514,8 +501,8 @@ public:
}
// becuase runways were sorted by score when building, they were added
// by score also, so we can use a simple algorithim to assign
// because runways were sorted by score when building, they were added
// by score also, so we can use a simple algorithm to assign
for (unsigned int r=0; r < runways.size(); ++r) {
if ((r % 2) == 0) {
arrivals.push_back(runways[r]);
@ -527,7 +514,7 @@ public:
std::string dump()
{
ostringstream os;
std::ostringstream os;
os << runways.front()->ident();
for (unsigned int r=1; r <runways.size(); ++r) {
os << ", " << runways[r]->ident();
@ -580,7 +567,7 @@ public:
}
};
string FGAirportDynamics::fallbackGetActiveRunway(int action, double heading)
std::string FGAirportDynamics::fallbackGetActiveRunway(int action, double heading)
{
bool updateNeeded = false;
if (_lastFallbackUpdate == SGTimeStamp()) {
@ -686,16 +673,16 @@ string FGAirportDynamics::fallbackGetActiveRunway(int action, double heading)
return r->ident();
}
bool FGAirportDynamics::innerGetActiveRunway(const string & trafficType,
int action, string & runway,
bool FGAirportDynamics::innerGetActiveRunway(const std::string & trafficType,
int action, std::string & runway,
double heading)
{
double windSpeed;
double windHeading;
double maxTail;
double maxCross;
string name;
string type;
std::string name;
std::string type;
if (!rwyPrefs.available()) {
runway = fallbackGetActiveRunway(action, heading);
@ -721,7 +708,7 @@ bool FGAirportDynamics::innerGetActiveRunway(const string & trafficType,
windSpeed = fgGetInt("/environment/metar/base-wind-speed-kt"); //stationweather.get_wind_speed_kt();
windHeading = fgGetInt("/environment/metar/base-wind-dir-deg");
//stationweather.get_wind_from_heading_deg();
string scheduleName;
std::string scheduleName;
//cerr << "finding active Runway for : " << _ap->getId() << endl;
//cerr << "Wind Heading : " << windHeading << endl;
//cerr << "Wind Speed : " << windSpeed << endl;
@ -823,12 +810,12 @@ bool FGAirportDynamics::innerGetActiveRunway(const string & trafficType,
return true;
}
string FGAirportDynamics::chooseRwyByHeading(stringVec rwys,
std::string FGAirportDynamics::chooseRwyByHeading(stringVec rwys,
double heading)
{
double bestError = 360.0;
double rwyHeading, headingError;
string runway;
std::string runway;
for (stringVecIterator i = rwys.begin(); i != rwys.end(); i++) {
if (!_ap->hasRunwayWithIdent(*i)) {
SG_LOG(SG_ATC, SG_WARN, "chooseRwyByHeading: runway " << *i <<
@ -850,8 +837,8 @@ string FGAirportDynamics::chooseRwyByHeading(stringVec rwys,
return runway;
}
void FGAirportDynamics::getActiveRunway(const string & trafficType,
int action, string & runway,
void FGAirportDynamics::getActiveRunway(const std::string & trafficType,
int action, std::string & runway,
double heading)
{
bool ok = innerGetActiveRunway(trafficType, action, runway, heading);
@ -860,7 +847,7 @@ void FGAirportDynamics::getActiveRunway(const string & trafficType,
}
}
string FGAirportDynamics::chooseRunwayFallback()
std::string FGAirportDynamics::chooseRunwayFallback()
{
FGRunway *rwy = _ap->getActiveRunwayForUsage();
if (!rwy) {
@ -877,7 +864,7 @@ double FGAirportDynamics::getElevation() const
return _ap->getElevation();
}
const string FGAirportDynamics::getId() const
const std::string FGAirportDynamics::getId() const
{
return _ap->getId();
}