@@ -29,33 +29,6 @@ class DataSource : public MwmSet
29
29
using FeatureCallback = std::function<void (FeatureType &)>;
30
30
using FeatureIdCallback = std::function<void (FeatureID const &)>;
31
31
32
- // / Guard for loading features from particular MWM by demand.
33
- // / @note This guard is suitable when mwm is loaded.
34
- class FeaturesLoaderGuard
35
- {
36
- public:
37
- FeaturesLoaderGuard (DataSource const & dataSource, MwmId const & id,
38
- FeatureSourceFactory const & factory)
39
- : m_handle(dataSource.GetMwmHandleById(id)), m_source(factory(m_handle))
40
- {
41
- }
42
-
43
- MwmSet::MwmId const & GetId () const { return m_handle.GetId (); }
44
- std::string GetCountryFileName () const ;
45
- bool IsWorld () const ;
46
- std::unique_ptr<FeatureType> GetOriginalFeatureByIndex (uint32_t index) const ;
47
- std::unique_ptr<FeatureType> GetOriginalOrEditedFeatureByIndex (uint32_t index) const ;
48
- // / Everyone, except Editor core, should use this method.
49
- WARN_UNUSED_RESULT bool GetFeatureByIndex (uint32_t index, FeatureType & ft) const ;
50
- // / Editor core only method, to get 'untouched', original version of feature.
51
- WARN_UNUSED_RESULT bool GetOriginalFeatureByIndex (uint32_t index, FeatureType & ft) const ;
52
- size_t GetNumFeatures () const { return m_source->GetNumFeatures (); }
53
-
54
- private:
55
- MwmHandle m_handle;
56
- std::unique_ptr<FeatureSource> m_source;
57
- };
58
-
59
32
~DataSource () override = default ;
60
33
61
34
// / Registers a new map.
@@ -95,6 +68,8 @@ class DataSource : public MwmSet
95
68
std::unique_ptr<MwmValueBase> CreateValue (MwmInfo & info) const override ;
96
69
97
70
private:
71
+ friend class FeaturesLoaderGuard ;
72
+
98
73
std::unique_ptr<FeatureSourceFactory> m_factory;
99
74
};
100
75
@@ -106,11 +81,28 @@ class FrozenDataSource : public DataSource
106
81
FrozenDataSource () : DataSource(std::make_unique<FeatureSourceFactory>()) {}
107
82
};
108
83
109
- class FrozenFeaturesLoaderGuard : public DataSource ::FeaturesLoaderGuard
84
+ // / Guard for loading features from particular MWM by demand.
85
+ // / @note This guard is suitable when mwm is loaded.
86
+ class FeaturesLoaderGuard
110
87
{
111
88
public:
112
- FrozenFeaturesLoaderGuard (DataSource const & dataSource, DataSource::MwmId const & id)
113
- : DataSource::FeaturesLoaderGuard (dataSource, id, FeatureSourceFactory( ))
89
+ FeaturesLoaderGuard (DataSource const & dataSource, DataSource::MwmId const & id)
90
+ : m_handle (dataSource.GetMwmHandleById(id)), m_source((*dataSource.m_factory)(m_handle ))
114
91
{
115
92
}
93
+
94
+ MwmSet::MwmId const & GetId () const { return m_handle.GetId (); }
95
+ std::string GetCountryFileName () const ;
96
+ bool IsWorld () const ;
97
+ std::unique_ptr<FeatureType> GetOriginalFeatureByIndex (uint32_t index) const ;
98
+ std::unique_ptr<FeatureType> GetOriginalOrEditedFeatureByIndex (uint32_t index) const ;
99
+ // / Everyone, except Editor core, should use this method.
100
+ WARN_UNUSED_RESULT bool GetFeatureByIndex (uint32_t index, FeatureType & ft) const ;
101
+ // / Editor core only method, to get 'untouched', original version of feature.
102
+ WARN_UNUSED_RESULT bool GetOriginalFeatureByIndex (uint32_t index, FeatureType & ft) const ;
103
+ size_t GetNumFeatures () const { return m_source->GetNumFeatures (); }
104
+
105
+ private:
106
+ DataSource::MwmHandle m_handle;
107
+ std::unique_ptr<FeatureSource> m_source;
116
108
};
0 commit comments