16#include <simgear/misc/sg_path.hxx>
17#include <simgear/misc/strutils.hxx>
142 const char* separator);
145 const char* separator);
155 const std::string&
name,
156 const SGPath& sceneryPath);
162 double heading,
double length,
double width,
double displacedThreshold,
163 double stopway,
int markings,
int approach,
int tdz,
int reil,
164 int surfaceCode,
int shoulder_code,
float smoothness,
int center_lights,
165 int edge_lights,
int distance_remaining);
169 double heading,
double length,
double width,
double displacedThreshold,
170 double stopway,
int surfaceCode);
176 const std::string&
name,
const SGGeod& pos,
int freq,
int range,
double multiuse,
183 const std::string&
name,
const SGGeod& pos,
int freq,
int range,
285 int findAirway(
int network,
const std::string& aName,
bool create);
322 NavDataCache* _instance;
340 std::unique_ptr<ThreadedGUISearchPrivate> d;
355 std::function<
void(
const SceneryLocation&, std::size_t, std::size_t)> loader);
361 void beginTransaction();
362 void commitTransaction();
363 void abortTransaction();
366 std::unique_ptr<NavDataCachePrivate> d;
368 bool rebuildInProgress =
false;
SGSharedPtr< FGPositioned > FGPositionedRef
Predicate class to support custom filtering of FGPositioned queries Default implementation of this pa...
PositionedIDVec results() const
ThreadedGUISearch(const std::string &term, bool onlyAirports)
Transaction(NavDataCache *cache)
PositionedID findILS(PositionedID airport, const std::string &runway, const std::string &navIdent)
Given an airport, and runway and ILS identifier, find the corresponding cache entry.
PositionedID insertNavaid(FGPositioned::Type ty, const std::string &ident, const std::string &name, const SGGeod &pos, int freq, int range, double multiuse, PositionedID apt, PositionedID runway)
void stampCacheFile(const SGPath &path, const std::string &sha={})
void writeStringProperty(const std::string &key, const std::string &value)
PositionedID insertRunway(FGPositioned::Type ty, const std::string &ident, const SGGeod &pos, PositionedID apt, double heading, double length, double width, double displacedThreshold, double stopway, int markings, int approach, int tdz, int reil, int surfaceCode, int shoulder_code, float smoothness, int center_lights, int edge_lights, int distance_remaining)
PositionedID createPOI(FGPositioned::Type ty, const std::string &ident, const SGGeod &aPos, const std::string &aName, bool transient)
static const std::string defaultDatFile[]
PositionedID insertCommStation(FGPositioned::Type ty, const std::string &name, const SGGeod &pos, int freq, int range, PositionedID apt)
const DatFilesGroupInfo & getDatFilesInfo(DatFileType datFileType) const
void clearDynamicPositioneds()
void writeIntProperty(const std::string &key, int value)
std::string readStringProperty(const std::string &key)
void defineOctreeNode(Octree::Branch *pr, Octree::Node *nd)
int readIntProperty(const std::string &key)
void writeDoubleProperty(const std::string &key, const double &value)
static bool isAnotherProcessRebuilding()
string_list readStringListProperty(const std::string &key)
FGPositionedRef findCommByFreq(int freqKhz, const SGGeod &pos, FGPositioned::Filter *filt)
Find the closest matching comm-station on a frequency, to a position.
static NavDataCache * createInstance()
PositionedID createTransientID()
void writeOrderedStringListProperty(const std::string &key, const string_list &values, const char *separator)
int findAirway(const std::string &aName)
@ REBUILD_LOADING_AIRPORTS
@ REBUILD_READING_APT_DAT_FILES
TypedPositionedVec getOctreeLeafChildren(int64_t octreeNodeId)
given an octree leaf, return all its child positioned items and their types
void setRunwayReciprocal(PositionedID runway, PositionedID recip)
unsigned int rebuildPhaseCompletionPercentage() const
PositionedIDVec findCommsByFreq(int freqKhz, const SGGeod &pos, FGPositioned::Filter *filt)
Find all on a frequency, sorted by distance from a position The filter with be used for both type ran...
PositionedID airportItemWithIdent(PositionedID apt, FGPositioned::Type ty, const std::string &ident)
find the first match item of the specified type and ident, at an airport
FGPositionedRef findClosestWithIdent(const std::string &aIdent, const SGGeod &aPos, FGPositioned::Filter *aFilter)
double readDoubleProperty(const std::string &key)
FGPositionedList findAllWithIdent(const std::string &ident, FGPositioned::Filter *filter, bool exact)
PositionedIDVec airwayWaypts(int id)
Waypoints on the airway.
void setAirportMetar(const std::string &icao, bool hasMetar)
update the metar flag associated with an airport
void writeStringListProperty(const std::string &key, const string_list &values)
static const std::string datTypeStr[]
PositionedID insertAirport(FGPositioned::Type ty, const std::string &ident, const std::string &name, const SGPath &sceneryPath)
int getOctreeBranchChildren(int64_t octreeNodeId)
Given an Octree node ID, return a bit-mask defining which of the child nodes exist.
PositionedID findNavaidForRunway(PositionedID runway, FGPositioned::Type ty)
Given a runway and type, find the corresponding navaid (ILS / GS / OM)
void updatePosition(PositionedID item, const SGGeod &pos)
Modify the position of an existing item.
PositionedID insertRunway(FGPositioned::Type ty, const std::string &ident, const SGGeod &pos, PositionedID apt, double heading, double length, double width, double displacedThreshold, double stopway, int surfaceCode)
AirwayRef loadAirway(int airwayID)
bool removePOI(FGPositionedRef wpt)
FGPositionedRef loadById(PositionedID guid)
retrieve an FGPositioned from the cache.
void setRunwayILS(PositionedID runway, PositionedID ils)
static NavDataCache * instance()
void insertTower(PositionedID airportId, const SGGeod &pos)
char ** searchAirportNamesAndIdents(const std::string &aFilter)
Helper to implement the AirportSearch widget.
bool isCachedFileModified(const SGPath &path) const
void insertEdge(int network, int airwayID, PositionedID from, PositionedID to)
insert an edge between two positioned nodes, into the network.
friend class RebuildThread
string_list readOrderedStringListProperty(const std::string &key, const char *separator)
bool isRebuildRequired()
predicate - check if the cache needs to be rebuilt.
RebuildPhase rebuild()
run the cache rebuild - returns the current phase or 'done'
FGPositionedList findAllWithName(const std::string &ident, FGPositioned::Filter *filter, bool exact)
PositionedIDVec findNavaidsByFreq(int freqKhz, const SGGeod &pos, FGPositioned::Filter *filt)
Find all navaids matching a particular frequency, sorted by range from the supplied position.
void setRebuildPhaseProgress(RebuildPhase ph, unsigned int percent=0)
bool isInAirwayNetwork(int network, PositionedID pos)
is the specified positioned a node on the network?
void updateListsOfDatFiles()
void setNavaidColocated(PositionedID navaid, PositionedID colocatedDME)
AirwayEdgeVec airwayEdgesFrom(int network, PositionedID pos)
retrive all the destination points reachable from a positioned in an airway
AirportRunwayPair findAirportRunway(const std::string &name)
given a navaid name (or similar) from apt.dat / nav.dat, find the corresponding airport and runway ID...
std::vector< SceneryLocation > SceneryLocationList
PositionedIDVec airportItemsOfType(PositionedID apt, FGPositioned::Type ty, FGPositioned::Type maxTy=FGPositioned::INVALID)
find all items of a specified type (or range of types) at an airport
int findAirway(int network, const std::string &aName, bool create)
Octree node base class, tracks its bounding box and provides various queries relating to it.
std::vector< std::string > string_list
FlightPlan.hxx - defines a full flight-plan object, including departure, cruise, arrival information ...
std::vector< AirwayEdge > AirwayEdgeVec
std::pair< FGPositioned::Type, PositionedID > TypedPositioned
SGSharedPtr< FGPositioned > FGPositionedRef
SGSharedPtr< Airway > AirwayRef
std::pair< int, PositionedID > AirwayEdge
std::pair< PositionedID, PositionedID > AirportRunwayPair
a pair of airport ID, runway ID
std::vector< TypedPositioned > TypedPositionedVec
std::vector< PositionedID > PositionedIDVec
std::vector< FGPositionedRef > FGPositionedList
SceneryLocationList paths