+ /**
+ * Map a candidate type string to a real type. Returns INVALID if the string
+ * does not correspond to a defined type.
+ */
+ static Type typeFromName(const std::string& aName);
+
+ /**
+ * Map a type to a human-readable string
+ */
+ static const char* nameForType(Type aTy);
+
+ static FGPositioned* createUserWaypoint(const std::string& aIdent, const SGGeod& aPos);
+ static bool deleteUserWaypoint(const std::string& aIdent);
+protected:
+ friend class flightgear::NavDataCache;
+
+ FGPositioned(PositionedID aGuid, Type ty, const std::string& aIdent, const SGGeod& aPos);
+
+ void modifyPosition(const SGGeod& newPos);
+
+ static FGPositionedRef loadByIdImpl(PositionedID id);
+