1#ifndef OSMSCOUT_LOCATIONINDEX_H
2#define OSMSCOUT_LOCATIONINDEX_H
27#include <unordered_set>
57 std::shared_ptr<LocationIndex> index;
60 index(
std::move(index))
89 class FileScannerPool:
public ObjectPool<FileScanner>
93 bool memoryMappedData=
false;
99 ~FileScannerPool()
override {
103 Ptr Borrow()
override;
105 FileScanner* MakeNew() noexcept override;
107 void Destroy(FileScanner*) noexcept override;
109 bool IsValid(FileScanner* o) noexcept override;
112 using FileScannerPtr = FileScannerPool::Ptr;
115 mutable FileScannerPool fileScannerPool;
116 uint8_t bytesForNodeFileOffset;
117 uint8_t bytesForAreaFileOffset;
118 uint8_t bytesForWayFileOffset;
119 std::vector<std::
string> regionIgnoreTokens;
120 std::unordered_set<std::
string> regionIgnoreTokenSet;
121 std::vector<std::
string> poiIgnoreTokens;
122 std::unordered_set<std::
string> poiIgnoreTokenSet;
123 std::vector<std::
string> locationIgnoreTokens;
124 std::unordered_set<std::
string> locationIgnoreTokenSet;
125 uint32_t minRegionChars;
126 uint32_t maxRegionChars;
127 uint32_t minRegionWords;
128 uint32_t maxRegionWords;
129 uint32_t maxPOIWords;
130 uint32_t minLocationChars;
131 uint32_t maxLocationChars;
132 uint32_t minLocationWords;
133 uint32_t maxLocationWords;
134 uint32_t maxAddressWords;
135 FileOffset indexOffset;
138 void Read(FileScanner& scanner,
139 ObjectFileRef&
object) const;
141 bool LoadAdminRegion(FileScanner& scanner,
142 AdminRegion& region) const;
144 AdminRegionVisitor::Action VisitRegionEntries(const AdminRegion& region,
145 FileScanner& scanner,
146 AdminRegionVisitor& visitor) const;
148 bool VisitRegionPOIs(const AdminRegion& region,
149 FileScanner& scanner,
152 bool& stopped) const;
154 bool VisitPostalArea(const AdminRegion& adminRegion,
155 const PostalArea& postalArea,
156 FileScanner& scanner,
157 LocationVisitor& visitor,
159 bool& stopped) const;
161 bool VisitLocations(const AdminRegion& adminRegion,
162 FileScanner& scanner,
163 LocationVisitor& visitor,
165 bool& stopped) const;
167 bool VisitPostalAreaLocations(const AdminRegion& adminRegion,
168 const PostalArea& postalArea,
169 FileScanner& scanner,
170 LocationVisitor& visitor,
171 bool& stopped) const;
173 bool VisitLocation(FileScanner& scanner,
174 const AdminRegion& region,
175 const PostalArea& postalArea,
176 const Location& location,
177 AddressVisitor& visitor,
178 bool& stopped) const;
184 bool Load(const
std::
string& path,
bool memoryMappedData);
188 return regionIgnoreTokens;
193 return poiIgnoreTokens;
198 return locationIgnoreTokens;
206 return maxRegionWords;
216 return maxLocationWords;
221 return maxAddressWords;
240 bool recursive=
true)
const;
247 bool recursive=
true)
const;
255 bool recursive=
true)
const;
266 std::map<FileOffset,AdminRegionRef>& refs)
const;
#define OSMSCOUT_API
Definition CoreImportExport.h:45
Definition Location.h:199
Definition Location.h:147
Definition LocationIndex.h:56
ScopeCacheCleaner(std::shared_ptr< LocationIndex > index)
Definition LocationIndex.h:59
ScopeCacheCleaner & operator=(ScopeCacheCleaner &&)=delete
ScopeCacheCleaner(const ScopeCacheCleaner &)=delete
ScopeCacheCleaner(ScopeCacheCleaner &&)=delete
~ScopeCacheCleaner()
Definition LocationIndex.h:68
ScopeCacheCleaner & operator=(const ScopeCacheCleaner &)=delete
static const char *const FILENAME_LOCATION_IDX
Definition LocationIndex.h:51
uint32_t GetAddressMaxWords() const
Definition LocationIndex.h:219
bool VisitAddresses(const AdminRegion ®ion, const PostalArea &postalArea, const Location &location, AddressVisitor &visitor) const
void DumpStatistics() const
bool ResolveAdminRegionHierachie(const AdminRegionRef ®ion, std::map< FileOffset, AdminRegionRef > &refs) const
bool VisitLocations(const AdminRegion &adminRegion, const PostalArea &postalArea, LocationVisitor &visitor, bool recursive=true) const
bool Load(const std::string &path, bool memoryMappedData)
bool VisitPOIs(const AdminRegion ®ion, POIVisitor &visitor, bool recursive=true) const
const std::vector< std::string > & GetRegionIgnoreTokens() const
Definition LocationIndex.h:186
bool VisitAdminRegions(AdminRegionVisitor &visitor) const
uint32_t GetRegionMaxWords() const
Definition LocationIndex.h:204
uint32_t GetPOIMaxWords() const
Definition LocationIndex.h:209
bool VisitAdminRegions(const AdminRegion &adminRegion, AdminRegionVisitor &visitor) const
bool IsRegionIgnoreToken(const std::string &token) const
uint32_t GetLocationMaxWords() const
Definition LocationIndex.h:214
const std::vector< std::string > & GetPOIIgnoreTokens() const
Definition LocationIndex.h:191
const std::vector< std::string > & GetLocationIgnoreTokens() const
Definition LocationIndex.h:196
bool IsLocationIgnoreToken(const std::string &token) const
bool VisitLocations(const AdminRegion &adminRegion, LocationVisitor &visitor, bool recursive=true) const
Definition Location.h:164
Definition ObjectPool.h:33
Definition Location.h:131
std::shared_ptr< AdminRegion > AdminRegionRef
Definition Location.h:83
std::shared_ptr< LocationIndex > LocationIndexRef
Definition LocationIndex.h:273