1 #ifndef OSMSCOUT_TILEDDATACACHE_H 2 #define OSMSCOUT_TILEDDATACACHE_H 55 mutable std::mutex mutex;
59 std::vector<O> prefillData;
72 std::scoped_lock<std::mutex> guard(mutex);
82 std::scoped_lock<std::mutex> guard(mutex);
92 const std::vector<O>& data)
94 std::scoped_lock<std::mutex> guard(mutex);
96 if (this->types.Empty()) {
100 this->types.Add(types);
103 if (this->prefillData.empty()) {
104 this->prefillData=data;
107 this->prefillData.reserve(this->prefillData.size()+data.size());
108 this->prefillData.insert(this->prefillData.end(),data.begin(),data.end());
119 std::vector<O>&& data)
121 std::scoped_lock<std::mutex> guard(mutex);
123 if (this->types.Empty()) {
127 this->types.Add(types);
130 if (this->prefillData.empty()) {
131 this->prefillData=std::move(data);
134 this->prefillData.reserve(this->prefillData.size()+data.size());
135 this->prefillData.insert(this->prefillData.end(),data.begin(),data.end());
145 const std::vector<O>& data)
147 std::scoped_lock<std::mutex> guard(mutex);
149 this->data.insert(this->data.end(), data.begin(), data.end());
150 this->types.Add(types);
159 const std::vector<O>& data)
161 std::scoped_lock<std::mutex> guard(mutex);
173 std::vector<O>&& data)
175 std::scoped_lock<std::mutex> guard(mutex);
177 this->data=std::move(data);
189 std::scoped_lock<std::mutex> guard(mutex);
199 std::scoped_lock<std::mutex> guard(mutex);
212 std::scoped_lock<std::mutex> guard(mutex);
219 std::scoped_lock<std::mutex> guard(mutex);
221 return prefillData.size()+data.size();
224 void CopyData(std::function<
void(
const O&)>
function)
const 226 std::scoped_lock<std::mutex> guard(mutex);
228 std::for_each(prefillData.begin(),prefillData.end(),
function);
229 std::for_each(data.begin(),data.end(),
function);
352 return optimizedWayData;
360 return optimizedAreaData;
400 return optimizedWayData;
408 return optimizedAreaData;
478 using Cache = std::list<CacheEntry>;
481 using CacheRef = Cache::iterator;
484 using CacheIndex = std::map<TileKey, CacheRef>;
489 mutable CacheIndex tileIndex;
490 mutable Cache tileCache;
492 void ResolveNodesFromParent(
Tile& tile,
493 const Tile& parentTile,
494 const GeoBox& boundingBox,
495 const TypeInfoSet& nodeTypes);
496 void ResolveWaysFromParent(
Tile& tile,
497 const Tile& parentTile,
498 const GeoBox& boundingBox,
499 const TypeInfoSet& wayTypes);
500 void ResolveAreasFromParent(
Tile& tile,
501 const Tile& parentTile,
502 const GeoBox& boundingBox,
503 const TypeInfoSet& areaTypes);
504 void ResolveRoutesFromParent(
Tile& route,
505 const Tile& parentTile,
506 const GeoBox& boundingBox,
507 const TypeInfoSet& routeTypes);
512 void SetSize(
size_t cacheSize);
521 return tileCache.size();
526 void InvalidateCache();
531 void GetTilesForBoundingBox(
const Magnification& magnification,
532 const GeoBox& boundingBox,
533 std::list<TileRef>& tiles)
const;
535 void PrefillDataFromCache(
Tile& tile,
536 const TypeInfoSet& nodeTypes,
537 const TypeInfoSet& wayTypes,
538 const TypeInfoSet& areaTypes,
539 const TypeInfoSet& routeTypes,
540 const TypeInfoSet& optimizedWayTypes,
541 const TypeInfoSet& optimizedAreaTypes);
const TileWayData & GetWayData() const
Definition: DataTileCache.h:326
void SetComplete()
Definition: DataTileCache.h:187
void Invalidate()
Definition: DataTileCache.h:80
TileAreaData & GetAreaData()
Definition: DataTileCache.h:382
std::shared_ptr< Tile > TileRef
Definition: DataTileCache.h:443
const TileAreaData & GetAreaData() const
Definition: DataTileCache.h:334
TileKey GetKey() const
Definition: DataTileCache.h:294
TileRouteData & GetRouteData()
Definition: DataTileCache.h:390
size_t GetCurrentSize() const
Definition: DataTileCache.h:519
bool IsEmpty() const
Definition: DataTileCache.h:427
TileWayData & GetOptimizedWayData()
Definition: DataTileCache.h:398
uint32_t GetLevel() const
Definition: DataTileCache.h:302
TileAreaData & GetOptimizedAreaData()
Definition: DataTileCache.h:406
void CopyData(std::function< void(const O &)> function) const
Definition: DataTileCache.h:224
GeoBox GetBoundingBox() const
Definition: DataTileCache.h:310
void AddPrefillData(const TypeInfoSet &types, std::vector< O > &&data)
Definition: DataTileCache.h:118
bool IsEmpty() const
Definition: DataTileCache.h:70
TileWayData & GetWayData()
Definition: DataTileCache.h:374
TileNodeData & GetNodeData()
Definition: DataTileCache.h:366
#define OSMSCOUT_MAP_API
Definition: MapImportExport.h:45
Definition: DataTileCache.h:456
Definition: DataTileCache.h:52
size_t GetDataSize() const
Definition: DataTileCache.h:217
size_t GetSize() const
Definition: DataTileCache.h:514
void AddData(const TypeInfoSet &types, const std::vector< O > &data)
Definition: DataTileCache.h:144
void SetData(const TypeInfoSet &types, const std::vector< O > &data)
Definition: DataTileCache.h:158
const TileRouteData & GetRouteData() const
Definition: DataTileCache.h:342
TypeInfoSet GetTypes() const
Definition: DataTileCache.h:210
bool IsComplete() const
Definition: DataTileCache.h:197
Definition: DataTileCache.h:271
const TileAreaData & GetOptimizedAreaData() const
Definition: DataTileCache.h:358
const TileNodeData & GetNodeData() const
Definition: DataTileCache.h:318
bool IsComplete() const
Definition: DataTileCache.h:414
const TileWayData & GetOptimizedWayData() const
Definition: DataTileCache.h:350
void AddPrefillData(const TypeInfoSet &types, const std::vector< O > &data)
Definition: DataTileCache.h:91
std::shared_ptr< DataTileCache > TiledDataCacheRef
Definition: DataTileCache.h:549
void SetData(const TypeInfoSet &types, std::vector< O > &&data)
Definition: DataTileCache.h:172
uint32_t GetLevel() const
Definition: TileId.h:139