18 #include <tbb/queuing_rw_mutex.h>
19 #include <tbb/spin_rw_mutex.h>
21 #include <boost/logic/tribool.hpp>
23 namespace MAKVRinTerra
25 class DtUnusedFeatureTileTracker;
27 template <
typename FS>
38 template <
typename FS>
55 typedef typename FeatureSet::Feature
Feature;
58 typedef boost::shared_ptr<DtPagingFeatureSet>
Ptr;
62 typedef boost::shared_ptr<const Grid>
GridCPtr;
64 typedef boost::shared_ptr<const Leaf>
LeafCPtr;
71 typedef boost::shared_ptr<Config>
Ptr;
94 : inputFeatureSet(cfg.inputFeatureSet)
95 , unusedTileTracker(cfg.unusedTileTracker)
96 , taskQueue(cfg.taskQueue)
97 , tileFeatures(cfg.tileFeatures)
114 return Make(
new Config(cfg), bounds);
118 FS* filter(
const DtQuery&,
const boost::optional<DtFeatureGeometry>&,
DtLoadType)
const;
120 bool loaded(
double)
const;
122 bool isCacheable(
const boost::optional<DtFeatureGeometry>& area)
const;
123 void cacheEstimate(
double& time,
double&
size,
const boost::optional<DtFeatureGeometry>& area)
const;
126 const boost::optional<DtFeatureGeometry>& area,
139 template <
typename FS>
161 const boost::optional<DtFeatureGeometry>&,
165 unsigned indexLevel = 0)
const = 0;
169 virtual boost::optional<unsigned>
sizeEstimate()
const = 0;
185 template <
typename FS>
186 template <
template <
class>
class PtrT>
204 std::string label()
const;
209 boost::optional<unsigned> sizeEstimate()
const;
215 Tile& getSubtile(
unsigned);
216 const Tile& getSubtile(
unsigned)
const;
218 bool loaded(
double)
const;
220 unsigned numberOfFeatures()
const;
243 template <
typename FS>
246 ,
public boost::enable_shared_from_this<typename DtPagingFeatureSet<FS>::Grid>
252 const boost::optional<DtFeatureGeometry>&,
256 unsigned indexLevel)
const;
258 void cacheEstimate(
double& time,
double&
size,
const boost::optional<DtFeatureGeometry>& area)
const;
261 const boost::optional<DtFeatureGeometry>& area,
269 virtual bool makeLeaf(
unsigned)
const;
274 template <
typename FS>
288 bool loaded(
double = 0)
const;
289 unsigned numberOfFeatures()
const;
298 const boost::optional<DtFeatureGeometry>&,
302 unsigned indexLevel)
const;
304 boost::optional<unsigned> sizeEstimate()
const;
308 std::string label()
const;
320 void start(
bool wait);
322 FS* createFeatureSet(FS*)
const;
323 void inputLoadedCallback();
DtPagingFeatureSet< FS >::SubsetPtr SubsetPtr
Definition: pagingFeatureSet.h:145
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:36
boost::shared_ptr< const Grid > GridCPtr
Definition: pagingFeatureSet.h:62
virtual boost::optional< unsigned > sizeEstimate() const =0
FeatureSet::ForEachFunction ForEachFunction
Definition: asyncLoadingFeatureSet.h:44
FeatureSet::Feature Feature
Definition: pagingFeatureSet.h:55
Class DtTerrainInterfaceConfig is a readable-writable class holding terrain interface configuration o...
Definition: terrainInterfaceConfig.h:32
boost::shared_ptr< const Leaf > LeafCPtr
Definition: pagingFeatureSet.h:64
boost::shared_ptr< Leaf > LeafPtr
Definition: pagingFeatureSet.h:63
Definition: pagingFeatureSet.h:191
tbb::spin_rw_mutex SizeMutex
Definition: pagingFeatureSet.h:231
FS::ForEachFunction ForEachFunction
Definition: pagingFeatureSet.h:281
boost::shared_ptr< Config > Ptr
Definition: pagingFeatureSet.h:71
boost::shared_ptr< const Subset > SubsetCPtr
Definition: pagingFeatureSet.h:60
boost::weak_ptr< DtUnusedFeatureTileTracker > WeakPtr
Definition: unusedFeatureTileTracker.h:51
Definition: asyncLoadingFeatureSet.h:161
Definition: pagingFeatureSet.h:187
FS * filter(const DtQuery &, const boost::optional< DtFeatureGeometry > &, DtLoadType) const
const Config & config() const
Definition: pagingFeatureSet.h:152
FS FeatureSet
Definition: pagingFeatureSet.h:54
const bool myEmptyFlag
Definition: pagingFeatureSet.h:240
Definition: featureSet.h:48
tbb::spin_mutex TileFeatureMutex
Definition: pagingFeatureSet.h:325
boost::optional< unsigned > mySizeEstimate
Definition: pagingFeatureSet.h:239
voidpf void uLong size
Definition: ioapi.h:39
void cacheEstimate(double &time, double &size, const boost::optional< DtFeatureGeometry > &area) const
Tile mySubtile3
Definition: pagingFeatureSet.h:237
virtual void updateStats()
TileFeatureMutex myTileFeatureMutex
Definition: pagingFeatureSet.h:326
const DtProj::Bounds myBounds
Definition: pagingFeatureSet.h:181
const DtProj::Bounds bounds
Definition: pagingFeatureSet.h:195
std::auto_ptr< DtTileFeature > myTileFeature
Definition: pagingFeatureSet.h:327
Default on in debug, off in release.
Definition: objectCounter.h:31
DtUnusedFeatureTileTracker::WeakPtr unusedTileTracker
Unused tile tracker which will manage the feature sets.
Definition: pagingFeatureSet.h:80
DtPagingFeatureSet< FS >::GridCPtr GridCPtr
Definition: pagingFeatureSet.h:148
const SubsetPtr myParent
Definition: pagingFeatureSet.h:179
Definition: featureGeometry.h:54
Simple asynchronous callback queue.
Definition: vrfCallbackQueue.h:32
Definition: featureSet.h:60
FeatureSet::ForEachFunction ForEachFunction
Definition: pagingFeatureSet.h:56
FS * filter(const DtQuery &, const boost::optional< DtFeatureGeometry > &, DtLoadType) const
FS::DetachCallback DetachCallback
Definition: pagingFeatureSet.h:282
Tile mySubtile1
Definition: pagingFeatureSet.h:235
DtPagingFeatureSetSubset(const GridCPtr &parent, unsigned i)
DtPagingFeatureSet< FS >::Config Config
Definition: pagingFeatureSet.h:150
DtPagingFeatureSet< FS >::Grid Grid
Definition: pagingFeatureSet.h:147
virtual FS * filterCache(const DtQuery &, const boost::optional< DtFeatureGeometry > &, DtLoadType, SubsetCPtr &highestSubset, const DtProj::Bounds::LineSegment *=0, unsigned indexLevel=0) const =0
SizeMutex mySizeMutex
Definition: pagingFeatureSet.h:232
Definition: pagingFeatureSet.h:244
tbb::spin_mutex Mutex
Definition: pagingFeatureSet.h:133
static DtPagingFeatureSet * Make(Config *cfg, const DtProj::Bounds &bounds)
Factory functions for creating a pagetables.
Definition: pagingFeatureSet.h:105
Tile mySubtile2
Definition: pagingFeatureSet.h:236
DtPagingFeatureSetSubset< FS > Subset
Definition: pagingFeatureSet.h:49
int level() const
Definition: pagingFeatureSet.h:157
std::vector< typename Feature::CPtr > FeatureVector
Definition: pagingFeatureSet.h:284
Represents a set of characeters a DtFeature object can have.
Definition: query.h:38
FS::LoadedCallback LoadedCallback
Definition: pagingFeatureSet.h:202
Configuration object.
Definition: pagingFeatureSet.h:68
Features pagetable class.
Definition: featuresDebugger.h:31
SubsetPtr parent() const
Definition: pagingFeatureSet.h:156
DtPagingFeatureSet< FS >::SubsetCPtr SubsetCPtr
Definition: pagingFeatureSet.h:146
bool loaded(double) const
FeatureSet::DetachCallback DetachCallback
Definition: asyncLoadingFeatureSet.h:46
void cacheData(const boost::optional< DtFeatureGeometry > &area, DtFeatureCacheProgressCallback *progress) const
SubsetCPtr myTile
Definition: pagingFeatureSet.h:136
#define DT_DEFINE_OBJECT_DEBUGGER_NAME_TEMPLATE(type)
Definition: objectCounter.h:275
DtQueueLoadingFeatureSet< FeatureSet >::Queue Queue
Definition: pagingFeatureSet.h:72
Tile mySubtile0
Definition: pagingFeatureSet.h:234
FS::DetachCallback DetachCallback
Definition: pagingFeatureSet.h:201
class DT_DLL_features Grid
Definition: pagingFeatureSet.h:50
boost::shared_ptr< DtFeatureSet::Source > tileFeatures
Feature set used to represent tile boundaries This is only used for debug drawing currently...
Definition: pagingFeatureSet.h:87
boost::shared_ptr< Grid > GridPtr
Definition: pagingFeatureSet.h:61
const Config::Ptr myInfo
Definition: pagingFeatureSet.h:176
boost::shared_ptr< DtPagingFeatureSet > Ptr
Definition: pagingFeatureSet.h:58
DtFeatureSetWrapper< FS, boost::shared_ptr, DtPagingFeatureSetSubset< FS > > Base
Definition: pagingFeatureSet.h:44
DtFeatureSetWrapper< FS, PtrT, Subset > subtile
Definition: pagingFeatureSet.h:198
DtPagingFeatureSet * clone() const
const DtFeatureGeometry::Area myTileGeometry
Definition: pagingFeatureSet.h:182
DtLoadType
Used to indicate whether to load features.
Definition: featureSet.h:36
class DT_DLL_features Leaf
Definition: pagingFeatureSet.h:52
const FS & input() const
Definition: pagingFeatureSet.h:153
static DtPagingFeatureSet * Make(const Config &cfg, const DtProj::Bounds &bounds)
Definition: pagingFeatureSet.h:112
DtFeatureGeometry::Area tileGeometry() const
Definition: pagingFeatureSet.h:155
class DT_DLL_features GridTemplate
Definition: pagingFeatureSet.h:48
boost::weak_ptr< Queue > taskQueue
Task queue used for loading tiles.
Definition: pagingFeatureSet.h:83
Definition: pagingFeatureSet.h:140
boost::shared_ptr< FeatureSet > inputFeatureSet
Feature set the pagetable will read from.
Definition: pagingFeatureSet.h:75
boost::shared_ptr< Subset > SubsetPtr
Definition: pagingFeatureSet.h:59
const DtFeatureGeometry::Area tileGeometry
Definition: pagingFeatureSet.h:196
const int myLevel
Definition: pagingFeatureSet.h:177
Mutex myMutex
Definition: pagingFeatureSet.h:135
Config(const Config &cfg)
Copy constructor.
Definition: pagingFeatureSet.h:93
Represents a feature geometry.
Definition: featureGeometry.h:35
Definition: pagingFeatureSet.h:275
DtProj::Bounds bounds() const
Definition: pagingFeatureSet.h:154