Separated types checkers for sponsored objects

This commit is contained in:
r.kuznetsov 2017-10-13 15:23:05 +03:00 committed by Yuri Gorshenin
parent 77ae76606d
commit d80392371f
12 changed files with 88 additions and 255 deletions

View file

@ -12,6 +12,7 @@
#include "indexer/feature_algo.hpp"
#include "indexer/feature_visibility.hpp"
#include "indexer/ftypes_matcher.hpp"
#include "indexer/ftypes_sponsored.hpp"
#include "indexer/map_style_reader.hpp"
#include "indexer/road_shields_parser.hpp"
#include "indexer/scales.hpp"

View file

@ -178,25 +178,11 @@ IsBuildingHasPartsChecker::IsBuildingHasPartsChecker()
m_types.push_back(classif().GetTypeByPath({"building", "has_parts"}));
}
// static
IsBuildingHasPartsChecker const & IsBuildingHasPartsChecker::Instance()
{
static IsBuildingHasPartsChecker const inst;
return inst;
}
IsBuildingPartChecker::IsBuildingPartChecker() : BaseChecker(1 /* level */)
{
m_types.push_back(classif().GetTypeByPath({"building:part"}));
}
// static
IsBuildingPartChecker const & IsBuildingPartChecker::Instance()
{
static IsBuildingPartChecker const inst;
return inst;
}
IsHatchingTerritoryChecker::IsHatchingTerritoryChecker()
{
Classificator const & c = classif();
@ -207,14 +193,6 @@ IsHatchingTerritoryChecker::IsHatchingTerritoryChecker()
m_types.push_back(c.GetTypeByPath({p[0], p[1]}));
}
// static
IsHatchingTerritoryChecker const & IsHatchingTerritoryChecker::Instance()
{
static IsHatchingTerritoryChecker const inst;
return inst;
}
void CaptionDescription::Init(FeatureType const & f,
int8_t deviceLang,
int const zoomLevel,

View file

@ -15,26 +15,25 @@ namespace drule { class BaseRule; }
namespace df
{
class IsBuildingHasPartsChecker : public ftypes::BaseChecker
{
IsBuildingHasPartsChecker();
public:
static IsBuildingHasPartsChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsBuildingHasPartsChecker);
};
class IsBuildingPartChecker : public ftypes::BaseChecker
{
IsBuildingPartChecker();
public:
static IsBuildingPartChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsBuildingPartChecker);
};
class IsHatchingTerritoryChecker : public ftypes::BaseChecker
{
IsHatchingTerritoryChecker();
public:
static IsHatchingTerritoryChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsHatchingTerritoryChecker);
};
struct CaptionDescription

View file

@ -75,6 +75,8 @@ set(
ftraits.hpp
ftypes_matcher.cpp
ftypes_matcher.hpp
ftypes_sponsored.cpp
ftypes_sponsored.hpp
geometry_coding.cpp
geometry_coding.hpp
geometry_serialization.cpp

View file

@ -150,61 +150,30 @@ IsPeakChecker::IsPeakChecker()
m_types.push_back(c.GetTypeByPath({"natural", "peak"}));
}
IsPeakChecker const & IsPeakChecker::Instance()
{
static IsPeakChecker const inst;
return inst;
}
IsATMChecker::IsATMChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"amenity", "atm"}));
}
IsATMChecker const & IsATMChecker::Instance()
{
static IsATMChecker const inst;
return inst;
}
IsSpeedCamChecker::IsSpeedCamChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"highway", "speed_camera"}));
}
// static
IsSpeedCamChecker const & IsSpeedCamChecker::Instance()
{
static IsSpeedCamChecker const instance;
return instance;
}
IsFuelStationChecker::IsFuelStationChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"amenity", "fuel"}));
}
IsFuelStationChecker const & IsFuelStationChecker::Instance()
{
static IsFuelStationChecker const inst;
return inst;
}
IsRailwayStationChecker::IsRailwayStationChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"railway", "station"}));
}
IsRailwayStationChecker const & IsRailwayStationChecker::Instance()
{
static IsRailwayStationChecker const inst;
return inst;
}
IsStreetChecker::IsStreetChecker()
{
// TODO (@y, @m, @vng): this list must be up-to-date with
@ -234,12 +203,6 @@ IsStreetChecker::IsStreetChecker()
m_types.push_back(c.GetTypeByPath({p[0], p[1]}));
}
IsStreetChecker const & IsStreetChecker::Instance()
{
static IsStreetChecker const inst;
return inst;
}
IsAddressObjectChecker::IsAddressObjectChecker() : BaseChecker(1 /* level */)
{
auto const paths = {"building", "amenity", "shop", "tourism", "historic", "office", "craft"};
@ -249,12 +212,6 @@ IsAddressObjectChecker::IsAddressObjectChecker() : BaseChecker(1 /* level */)
m_types.push_back(c.GetTypeByPath({p}));
}
IsAddressObjectChecker const & IsAddressObjectChecker::Instance()
{
static IsAddressObjectChecker const inst;
return inst;
}
IsVillageChecker::IsVillageChecker()
{
// TODO (@y, @m, @vng): this list must be up-to-date with
@ -267,36 +224,18 @@ IsVillageChecker::IsVillageChecker()
m_types.push_back(c.GetTypeByPath({p[0], p[1]}));
}
IsVillageChecker const & IsVillageChecker::Instance()
{
static IsVillageChecker const inst;
return inst;
}
IsOneWayChecker::IsOneWayChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"hwtag", "oneway"}));
}
IsOneWayChecker const & IsOneWayChecker::Instance()
{
static IsOneWayChecker const inst;
return inst;
}
IsRoundAboutChecker::IsRoundAboutChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"junction", "roundabout"}));
}
IsRoundAboutChecker const & IsRoundAboutChecker::Instance()
{
static IsRoundAboutChecker const inst;
return inst;
}
IsLinkChecker::IsLinkChecker()
{
Classificator const & c = classif();
@ -310,29 +249,12 @@ IsLinkChecker::IsLinkChecker()
m_types.push_back(c.GetTypeByPath(vector<string>(arr[i], arr[i] + 2)));
}
IsLinkChecker const & IsLinkChecker::Instance()
{
static IsLinkChecker const inst;
return inst;
}
IsBuildingChecker::IsBuildingChecker() : BaseChecker(1 /* level */)
{
m_types.push_back(classif().GetTypeByPath({"building"}));
}
IsBuildingChecker const & IsBuildingChecker::Instance()
{
static IsBuildingChecker const inst;
return inst;
}
IsBridgeChecker::IsBridgeChecker() : BaseChecker(3 /* level */) {}
IsBridgeChecker const & IsBridgeChecker::Instance()
{
static IsBridgeChecker const inst;
return inst;
}
bool IsBridgeChecker::IsMatched(uint32_t type) const
{
@ -340,29 +262,12 @@ bool IsBridgeChecker::IsMatched(uint32_t type) const
}
IsTunnelChecker::IsTunnelChecker() : BaseChecker(3 /* level */) {}
IsTunnelChecker const & IsTunnelChecker::Instance()
{
static IsTunnelChecker const inst;
return inst;
}
bool IsTunnelChecker::IsMatched(uint32_t type) const
{
return IsTypeConformed(type, {"highway", "*", "tunnel"});
}
IsBookingChecker::IsBookingChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"sponsored", "booking"}));
}
IsBookingChecker const & IsBookingChecker::Instance()
{
static IsBookingChecker const inst;
return inst;
}
IsHotelChecker::IsHotelChecker()
{
Classificator const & c = classif();
@ -381,12 +286,6 @@ IsHotelChecker::IsHotelChecker()
sort(m_sortedTypes.begin(), m_sortedTypes.end());
}
IsHotelChecker const & IsHotelChecker::Instance()
{
static IsHotelChecker const inst;
return inst;
}
unsigned IsHotelChecker::GetHotelTypesMask(FeatureType const & ft) const
{
feature::TypesHolder types(ft);
@ -439,12 +338,6 @@ IsWifiChecker::IsWifiChecker()
m_types.push_back(classif().GetTypeByPath({"internet_access", "wlan"}));
}
IsWifiChecker const & IsWifiChecker::Instance()
{
static IsWifiChecker const instance;
return instance;
}
IsFoodChecker:: IsFoodChecker()
{
Classificator const & c = classif();
@ -459,81 +352,23 @@ IsFoodChecker:: IsFoodChecker()
m_types.push_back(c.GetTypeByPath({path[0], path[1]}));
}
IsFoodChecker const & IsFoodChecker::Instance()
{
static const IsFoodChecker instance;
return instance;
}
IsOpentableChecker::IsOpentableChecker()
{
Classificator const & c = classif();
m_types.push_back(c.GetTypeByPath({"sponsored", "opentable"}));
}
IsOpentableChecker const & IsOpentableChecker::Instance()
{
static IsOpentableChecker const inst;
return inst;
}
IsInvisibleIndexedChecker::IsInvisibleIndexedChecker() : BaseChecker(1 /* level */)
{
m_types.push_back(classif().GetTypeByPath({"internet_access"}));
m_types.push_back(classif().GetTypeByPath({"wheelchair"}));
}
IsInvisibleIndexedChecker const & IsInvisibleIndexedChecker::Instance()
{
static IsInvisibleIndexedChecker const instance;
return instance;
}
IsCityChecker::IsCityChecker()
{
m_types.push_back(classif().GetTypeByPath({"place", "city"}));
}
IsCityChecker const & IsCityChecker::Instance()
{
static IsCityChecker const inst;
return inst;
}
IsViatorChecker::IsViatorChecker()
{
m_types.push_back(classif().GetTypeByPath({"sponsored", "viator"}));
}
IsViatorChecker const & IsViatorChecker::Instance()
{
static IsViatorChecker const inst;
return inst;
}
IsThorChecker::IsThorChecker()
{
m_types.push_back(classif().GetTypeByPath({"sponsored", "thor"}));
}
IsThorChecker const & IsThorChecker::Instance()
{
static IsThorChecker const inst;
return inst;
}
IsPublicTransportStopChecker::IsPublicTransportStopChecker()
{
m_types.push_back(classif().GetTypeByPath({"highway", "bus_stop"}));
m_types.push_back(classif().GetTypeByPath({"railway", "tram_stop"}));
}
IsPublicTransportStopChecker const & IsPublicTransportStopChecker::Instance()
{
static IsPublicTransportStopChecker const inst;
return inst;
}
IsLocalityChecker::IsLocalityChecker()
{
Classificator const & c = classif();
@ -585,12 +420,6 @@ Type IsLocalityChecker::GetType(FeatureType const & f) const
return GetType(types);
}
IsLocalityChecker const & IsLocalityChecker::Instance()
{
static IsLocalityChecker const inst;
return inst;
}
uint64_t GetPopulation(FeatureType const & ft)
{
uint64_t population = ft.GetPopulation();

View file

@ -15,6 +15,9 @@
namespace feature { class TypesHolder; }
class FeatureType;
#define DECLARE_CHECKER_INSTANCE(CheckerType) static CheckerType const & Instance() { \
static CheckerType const inst; return inst; }
namespace ftypes
{
class BaseChecker
@ -47,86 +50,85 @@ class IsPeakChecker : public BaseChecker
{
IsPeakChecker();
public:
static IsPeakChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsPeakChecker);
};
class IsATMChecker : public BaseChecker
{
IsATMChecker();
public:
static IsATMChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsATMChecker);
};
class IsSpeedCamChecker : public BaseChecker
{
IsSpeedCamChecker();
public:
static IsSpeedCamChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsSpeedCamChecker);
};
class IsFuelStationChecker : public BaseChecker
{
IsFuelStationChecker();
public:
static IsFuelStationChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsFuelStationChecker);
};
class IsRailwayStationChecker : public BaseChecker
{
IsRailwayStationChecker();
public:
static IsRailwayStationChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsRailwayStationChecker);
};
class IsStreetChecker : public BaseChecker
{
IsStreetChecker();
public:
static IsStreetChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsStreetChecker);
};
class IsAddressObjectChecker : public BaseChecker
{
IsAddressObjectChecker();
public:
static IsAddressObjectChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsAddressObjectChecker);
};
class IsVillageChecker : public BaseChecker
{
IsVillageChecker();
public:
static IsVillageChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsVillageChecker);
};
class IsOneWayChecker : public BaseChecker
{
IsOneWayChecker();
public:
static IsOneWayChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsOneWayChecker);
};
class IsRoundAboutChecker : public BaseChecker
{
IsRoundAboutChecker();
public:
static IsRoundAboutChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsRoundAboutChecker);
};
class IsLinkChecker : public BaseChecker
{
IsLinkChecker();
public:
static IsLinkChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsLinkChecker);
};
class IsBuildingChecker : public BaseChecker
{
IsBuildingChecker();
public:
static IsBuildingChecker const & Instance();
uint32_t GetMainType() const { return m_types[0]; }
DECLARE_CHECKER_INSTANCE(IsBuildingChecker);
};
class IsBridgeChecker : public BaseChecker
@ -135,7 +137,7 @@ class IsBridgeChecker : public BaseChecker
IsBridgeChecker();
public:
static IsBridgeChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsBridgeChecker);
};
class IsTunnelChecker : public BaseChecker
@ -144,14 +146,7 @@ class IsTunnelChecker : public BaseChecker
IsTunnelChecker();
public:
static IsTunnelChecker const & Instance();
};
class IsBookingChecker : public BaseChecker
{
IsBookingChecker();
public:
static IsBookingChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsTunnelChecker);
};
class IsHotelChecker : public BaseChecker
@ -174,12 +169,11 @@ public:
static_assert(static_cast<size_t>(Type::Count) <= CHAR_BIT * sizeof(unsigned),
"Too many types of hotels");
static IsHotelChecker const & Instance();
static char const * GetHotelTypeTag(Type type);
unsigned GetHotelTypesMask(FeatureType const & ft) const;
DECLARE_CHECKER_INSTANCE(IsHotelChecker);
private:
IsHotelChecker();
@ -191,65 +185,37 @@ private:
class IsWifiChecker : public BaseChecker
{
IsWifiChecker();
public:
static IsWifiChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsWifiChecker);
};
class IsFoodChecker : public BaseChecker
{
IsFoodChecker();
public:
static IsFoodChecker const & Instance();
};
class IsOpentableChecker : public BaseChecker
{
IsOpentableChecker();
public:
static IsOpentableChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsFoodChecker);
};
// Checks for types that are not drawable, but searchable.
class IsInvisibleIndexedChecker : public BaseChecker
{
IsInvisibleIndexedChecker();
public:
static IsInvisibleIndexedChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsInvisibleIndexedChecker);
};
class IsCityChecker : public BaseChecker
{
IsCityChecker();
public:
static IsCityChecker const & Instance();
};
class IsViatorChecker : public BaseChecker
{
IsViatorChecker();
public:
static IsViatorChecker const & Instance();
};
class IsThorChecker : public BaseChecker
{
IsThorChecker();
public:
static IsThorChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsCityChecker);
};
class IsPublicTransportStopChecker : public BaseChecker
{
IsPublicTransportStopChecker();
public:
static IsPublicTransportStopChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsPublicTransportStopChecker);
};
/// Type of locality (do not change values and order - they have detalization order)
@ -264,7 +230,7 @@ public:
Type GetType(feature::TypesHolder const & types) const;
Type GetType(FeatureType const & f) const;
static IsLocalityChecker const & Instance();
DECLARE_CHECKER_INSTANCE(IsLocalityChecker);
};
template <typename Types>

View file

@ -0,0 +1,11 @@
#include "indexer/ftypes_sponsored.hpp"
#include "indexer/classificator.hpp"
namespace ftypes
{
BaseSponsoredChecker::BaseSponsoredChecker(std::string const & sponsoredType)
{
m_types.push_back(classif().GetTypeByPath({"sponsored", sponsoredType}));
}
} // namespace ftypes

View file

@ -0,0 +1,27 @@
#pragma once
#include "indexer/ftypes_matcher.hpp"
#include <string>
namespace ftypes
{
class BaseSponsoredChecker : public BaseChecker
{
protected:
explicit BaseSponsoredChecker(std::string const & sponsoredType);
};
#define SPONSORED_CHECKER(ClassName, Category) \
class ClassName : public BaseSponsoredChecker { \
ClassName() : BaseSponsoredChecker(Category) {} \
public: DECLARE_CHECKER_INSTANCE(ClassName); };
// Checkers.
SPONSORED_CHECKER(IsBookingChecker, "booking");
SPONSORED_CHECKER(IsOpentableChecker, "opentable");
SPONSORED_CHECKER(IsViatorChecker, "viator");
SPONSORED_CHECKER(IsThorChecker, "thor");
#undef SPONSORED_CHECKER
} // namespace ftypes

View file

@ -41,6 +41,7 @@ SOURCES += \
features_offsets_table.cpp \
features_vector.cpp \
ftypes_matcher.cpp \
ftypes_sponsored.cpp \
geometry_coding.cpp \
geometry_serialization.cpp \
index.cpp \
@ -102,6 +103,7 @@ HEADERS += \
ftraits.hpp \
ftypes_mapping.hpp \
ftypes_matcher.hpp \
ftypes_sponsored.hpp \
geometry_coding.hpp \
geometry_serialization.hpp \
index.hpp \

View file

@ -48,6 +48,7 @@
#include "indexer/editable_map_object.hpp"
#include "indexer/feature.hpp"
#include "indexer/feature_visibility.hpp"
#include "indexer/ftypes_sponsored.hpp"
#include "indexer/map_style_reader.hpp"
#include "indexer/osm_editor.hpp"
#include "indexer/scales.hpp"

View file

@ -9,6 +9,7 @@
#include "indexer/feature.hpp"
#include "indexer/feature_algo.hpp"
#include "indexer/ftypes_matcher.hpp"
#include "indexer/ftypes_sponsored.hpp"
#include "indexer/scales.hpp"
#include "geometry/angles.hpp"

View file

@ -66,6 +66,10 @@
3D928F671D50F9FE001670E0 /* index_helpers.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 3D928F651D50F9FE001670E0 /* index_helpers.cpp */; };
3D928F681D50F9FE001670E0 /* index_helpers.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 3D928F661D50F9FE001670E0 /* index_helpers.hpp */; };
456B3FB41EDEEB65009B3D1F /* scales_patch.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 456B3FB31EDEEB65009B3D1F /* scales_patch.hpp */; };
456E1B181F90E5B7009C32E1 /* cities_boundaries_serdes.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 456E1B141F90E5B6009C32E1 /* cities_boundaries_serdes.hpp */; };
456E1B191F90E5B7009C32E1 /* ftypes_sponsored.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 456E1B151F90E5B6009C32E1 /* ftypes_sponsored.cpp */; };
456E1B1A1F90E5B7009C32E1 /* ftypes_sponsored.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 456E1B161F90E5B6009C32E1 /* ftypes_sponsored.hpp */; };
456E1B1B1F90E5B7009C32E1 /* city_boundary.hpp in Headers */ = {isa = PBXBuildFile; fileRef = 456E1B171F90E5B7009C32E1 /* city_boundary.hpp */; };
45C108B11E9CFE41000FE1F6 /* polyline_point_to_int64_test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 45C108AF1E9CFE3E000FE1F6 /* polyline_point_to_int64_test.cpp */; };
45C108BD1E9D0067000FE1F6 /* libicu.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C108BC1E9D0067000FE1F6 /* libicu.a */; };
45C108BF1E9D008D000FE1F6 /* librouting_common.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 45C108BE1E9D008D000FE1F6 /* librouting_common.a */; };
@ -290,6 +294,10 @@
3D928F651D50F9FE001670E0 /* index_helpers.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = index_helpers.cpp; sourceTree = "<group>"; };
3D928F661D50F9FE001670E0 /* index_helpers.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = index_helpers.hpp; sourceTree = "<group>"; };
456B3FB31EDEEB65009B3D1F /* scales_patch.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = scales_patch.hpp; sourceTree = "<group>"; };
456E1B141F90E5B6009C32E1 /* cities_boundaries_serdes.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = cities_boundaries_serdes.hpp; sourceTree = "<group>"; };
456E1B151F90E5B6009C32E1 /* ftypes_sponsored.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = ftypes_sponsored.cpp; sourceTree = "<group>"; };
456E1B161F90E5B6009C32E1 /* ftypes_sponsored.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = ftypes_sponsored.hpp; sourceTree = "<group>"; };
456E1B171F90E5B7009C32E1 /* city_boundary.hpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.h; path = city_boundary.hpp; sourceTree = "<group>"; };
45C108AF1E9CFE3E000FE1F6 /* polyline_point_to_int64_test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = polyline_point_to_int64_test.cpp; sourceTree = "<group>"; };
45C108BC1E9D0067000FE1F6 /* libicu.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libicu.a; path = "/Users/r.kuznetsov/Dev/Projects/omim/xcode/icu/../../../omim-build/xcode/Debug/libicu.a"; sourceTree = "<absolute>"; };
45C108BE1E9D008D000FE1F6 /* librouting_common.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = librouting_common.a; path = "/Users/r.kuznetsov/Dev/Projects/omim/xcode/routing_common/../../../omim-build/xcode/Debug/librouting_common.a"; sourceTree = "<absolute>"; };
@ -664,6 +672,10 @@
6753409C1A3F53CB00A0A8C3 /* indexer */ = {
isa = PBXGroup;
children = (
456E1B141F90E5B6009C32E1 /* cities_boundaries_serdes.hpp */,
456E1B171F90E5B7009C32E1 /* city_boundary.hpp */,
456E1B151F90E5B6009C32E1 /* ftypes_sponsored.cpp */,
456E1B161F90E5B6009C32E1 /* ftypes_sponsored.hpp */,
F6F1DABD1F13D8B4006A69B7 /* ftraits.hpp */,
456B3FB31EDEEB65009B3D1F /* scales_patch.hpp */,
3D74ABBB1EA67C1E0063A898 /* ftypes_mapping.hpp */,
@ -842,6 +854,7 @@
F6DF5F311CD0FD9A00A87154 /* categories_index.hpp in Headers */,
347F337D1C454242009758CC /* succinct_trie_builder.hpp in Headers */,
675341381A3F540F00A0A8C3 /* mwm_set.hpp in Headers */,
456E1B181F90E5B7009C32E1 /* cities_boundaries_serdes.hpp in Headers */,
670EE56D1B60033A001E8064 /* unique_index.hpp in Headers */,
6753412B1A3F540F00A0A8C3 /* geometry_coding.hpp in Headers */,
675340FF1A3F540F00A0A8C3 /* cell_coverer.hpp in Headers */,
@ -866,6 +879,7 @@
675341061A3F540F00A0A8C3 /* coding_params.hpp in Headers */,
56C74C211C749E4700B71B9F /* edits_migration.hpp in Headers */,
6753412F1A3F540F00A0A8C3 /* index_builder.hpp in Headers */,
456E1B1A1F90E5B7009C32E1 /* ftypes_sponsored.hpp in Headers */,
675341411A3F540F00A0A8C3 /* scales.hpp in Headers */,
675341321A3F540F00A0A8C3 /* interval_index_builder.hpp in Headers */,
347F337C1C454242009758CC /* rank_table.hpp in Headers */,
@ -888,6 +902,7 @@
675341261A3F540F00A0A8C3 /* feature.hpp in Headers */,
34583BCA1C88552100F94664 /* editable_map_object.hpp in Headers */,
34583BCC1C88552100F94664 /* map_object.hpp in Headers */,
456E1B1B1F90E5B7009C32E1 /* city_boundary.hpp in Headers */,
34664CF41D49FEC1003D7096 /* altitude_loader.hpp in Headers */,
670D04AC1B0BA8580013A7AC /* feature_loader_101.hpp in Headers */,
67BC92F21D21476500A4A378 /* osm_editor.hpp in Headers */,
@ -1112,6 +1127,7 @@
6753412E1A3F540F00A0A8C3 /* index_builder.cpp in Sources */,
675341011A3F540F00A0A8C3 /* classificator_loader.cpp in Sources */,
F6381BF91CD26C9C004CA943 /* new_feature_categories.cpp in Sources */,
456E1B191F90E5B7009C32E1 /* ftypes_sponsored.cpp in Sources */,
F6DF5F2D1CD0FC9D00A87154 /* categories_index.cpp in Sources */,
674125131B4C02F100A3E828 /* map_style_reader.cpp in Sources */,
675341141A3F540F00A0A8C3 /* feature_covering.cpp in Sources */,