X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FNavaids%2FNavDataCache.hxx;h=93ef318c7d1ca599dffd61dcafcfec78d17a5f58;hb=4b573ebd13bbf301795f57293a0e190d0993ea47;hp=71e3d5853af2202aae35c9a5e5ae29ebf8b0bbd9;hpb=ec2975bac32dfcc368ebb8082c4c865b15086ff0;p=flightgear.git diff --git a/src/Navaids/NavDataCache.hxx b/src/Navaids/NavDataCache.hxx index 71e3d5853..93ef318c7 100644 --- a/src/Navaids/NavDataCache.hxx +++ b/src/Navaids/NavDataCache.hxx @@ -85,11 +85,6 @@ public: string_list readStringListProperty(const std::string& key); void writeStringListProperty(const std::string& key, const string_list& values); -// transaction API wrappers - void beginTransaction(); - void commitTransaction(); - void abortTransaction(); - /** * retrieve an FGPositioned from the cache. * This may be trivial if the object is previously loaded, or require actual @@ -121,8 +116,10 @@ public: PositionedID apt); PositionedID insertFix(const std::string& ident, const SGGeod& aPos); - PositionedID createUserWaypoint(const std::string& ident, const SGGeod& aPos); + PositionedID createPOI(FGPositioned::Type ty, const std::string& ident, const SGGeod& aPos); + void removePOI(FGPositioned::Type ty, const std::string& aIdent); + void dropGroundnetFor(PositionedID aAirport); PositionedID insertParking(const std::string& name, const SGGeod& aPos, @@ -250,12 +247,31 @@ public: PositionedIDVec findAirportParking(PositionedID airport, const std::string& flightType, int radius); + + + class Transaction + { + public: + Transaction(NavDataCache* cache); + ~Transaction(); + + void commit(); + private: + NavDataCache* _instance; + bool _committed; + }; private: NavDataCache(); friend class RebuildThread; void doRebuild(); + friend class Transaction; + + void beginTransaction(); + void commitTransaction(); + void abortTransaction(); + class NavDataCachePrivate; std::auto_ptr d; };