41 std::size_t bytesReadSoFar,
42 std::size_t totalSizeOfAllAptDatFiles);
54 Line(
unsigned int number_,
unsigned int rowCode_,
const std::string& str_)
55 : number(number_), rowCode(rowCode_), str(str_) {}
62 typedef std::vector<Line> LinesList;
64 struct RawAirportInfo {
72 unsigned int firstLineNum;
75 std::vector<std::string> firstLineTokens;
80 typedef std::unordered_map<std::string, RawAirportInfo> AirportInfoMapType;
81 typedef SGSharedPtr<FGPavement> FGPavementPtr;
82 typedef std::vector<FGPavementPtr> NodeList;
87 const FGAirport* loadAirport(
const SGPath& aptDat,
const std::string& airportID, RawAirportInfo* airport_info,
bool createFGAirport =
false);
90 bool isBlankOrCommentLine(
const std::string& line);
92 std::string cleanLine(
const std::string& line);
93 void throwExceptionIfStreamError(
const sg_gzifstream& input_stream,
95 void parseAirportLine(
unsigned int rowCode,
96 const std::vector<std::string>& token,
97 const SGPath& sceneryPath);
98 void finishAirport(
const std::string& aptDat);
99 void parseRunwayLine810(
const std::string& aptDat,
unsigned int lineNum,
100 const std::vector<std::string>& token);
101 void parseRunwayLine850(
const std::string& aptDat,
unsigned int lineNum,
102 const std::vector<std::string>& token);
103 void parseWaterRunwayLine850(
const std::string& aptDat,
unsigned int lineNum,
104 const std::vector<std::string>& token);
105 void parseHelipadLine850(
const std::string& aptDat,
unsigned int lineNum,
106 const std::vector<std::string>& token);
107 void parseViewpointLine(
const std::string& aptDat,
unsigned int lineNum,
108 const std::vector<std::string>& token);
109 void parsePavementLine850(
const std::vector<std::string>& token);
110 void parseNodeLine850(
112 const std::string& aptDat,
unsigned int lineNum,
int rowCode,
113 const std::vector<std::string>& token);
116 const std::string& aptDat,
unsigned int lineNum,
unsigned int rowCode,
117 const std::vector<std::string>& token);
119 std::vector<std::string> token;
120 AirportInfoMapType airportInfoMap;
121 double rwy_lat_accum{0.0};
122 double rwy_lon_accum{0.0};
123 double last_rwy_heading{0.0};
125 std::string last_apt_id;
126 double last_apt_elev;
129 std::string pavement_ident;
131 NodeList airport_boundary;
132 NodeList linear_feature;
140 enum NodeBlock { None,