13 #include <tbb/recursive_mutex.h>
15 namespace MAKVRinTerra
17 class DtUnusedFeatureTileTracker;
32 typedef boost::shared_ptr<DtPagingFeatureSet>
Ptr;
41 typedef boost::function<void (const FeatureSet&, DtFeatureGeometry)>
Callback;
50 bool loaded(
double)
const;
51 unsigned numberOfFeatures()
const;
63 virtual void forEachLoadedFeature(
65 virtual void forEachLoadedFeatureParallel(
68 virtual void getAllLoadedTileGeometries(
72 LeafVector&, boost::optional<DtFeatureGeometry>) = 0;
74 virtual bool loaded(
double)
const = 0;
90 typedef boost::shared_ptr<GlobalInfo>
Ptr;
103 Tile(
GridPtr parent,
unsigned xindex,
unsigned yindex);
117 template <
typename F>
120 ,
public boost::enable_shared_from_this<typename DtPagingFeatureSet<F>::Grid>
123 void forEachLoadedFeature(
125 void forEachLoadedFeatureParallel(
129 LeafVector&, boost::optional<DtFeatureGeometry>);
131 TilePtr getSubtile(
unsigned x,
unsigned y);
133 bool loaded(
double)
const;
136 DtProj::Bounds computeSubtileBounds(
unsigned xindex,
unsigned yindex)
const;
142 unsigned maxTasks = 0);
147 struct ParallelCaller;
149 Grid(
GridPtr parent,
unsigned xindex,
unsigned yindex);
156 template <
typename F>
160 ,
public boost::enable_shared_from_this<typename DtPagingFeatureSet<F>::Leaf>
167 void forEachLoadedFeature(
169 void forEachLoadedFeatureParallel(
173 LeafVector&, boost::optional<DtFeatureGeometry>);
175 bool loaded(
double)
const;
179 unsigned size()
const;
180 boost::shared_ptr<DtUnusedFeatureTileTracker::Trackable> getPtr();
182 Leaf(
GridPtr parent,
unsigned xindex,
unsigned yindex);
185 struct CallbackWrapper;
196 template <
typename F>
206 bool loaded(
double)
const;
210 struct WrapWithPagingFeature;