17 #include <boost/function.hpp>
18 #include <boost/scoped_ptr.hpp>
19 #include <boost/shared_ptr.hpp>
20 #include <boost/weak_ptr.hpp>
22 #include <boost/optional.hpp>
23 #include <boost/noncopyable.hpp>
28 namespace MAKVRinTerra
32 class DtFeatureGeometry;
51 virtual void layerName(
const std::string&) = 0;
52 virtual void percent(
double) = 0;
53 virtual bool isCancelled() = 0;
58 template <
typename>
class PtrTemplate = boost::scoped_ptr,
59 typename InnerFS = FS>
68 template <
typename FS,
typename InnerFS = FS>
71 template <
size_t N,
typename FS,
typename InnerFS = FS>
74 template <
typename FS>
77 template <
typename FS>
80 template <
typename FS,
typename F =
typename FS::Feature>
83 template <
typename FS>
100 template <
typename F>
102 :
private boost::noncopyable
183 template <
typename FS>
186 std::auto_ptr<FS>
set(fs);
200 template <
typename FS>
203 if (!fs.get() || fs->elided())
209 template <
typename FS>
212 if (!fs || fs->elided())
218 template <
typename FS>
221 boost::shared_ptr<FS> ptr(fs.lock());
222 if (!ptr || ptr->elided())
235 virtual std::string label()
const = 0;
244 virtual void forEachFeatureParallel(
const ForEachFunction& func)
const = 0;
247 void forEachFeature(
const ForEachFunction& func)
const;
252 bool forEachFeatureParallelBlock(
const ForEachFunction& func,
double timeout = 60)
const;
253 bool forEachFeatureBlock(
const ForEachFunction& func,
double timeout = 60)
const;
280 virtual DetachCallback forEachFeatureAsync(
const ForEachFunction& func)
const = 0;
296 const boost::optional<DtFeatureGeometry>& geometry,
303 const boost::optional<DtFeatureGeometry>& geometry,
DtLoadType load)
const;
315 const boost::optional<DtFeatureGeometry>& geometry)
const;
317 bool load(
const DtQuery& query)
const;
318 bool load(
const boost::optional<DtFeatureGeometry>& geometry)
const;
346 virtual bool loaded(
double timeout=0.0)
const = 0;
357 virtual DetachCallback addLoadedCallback(
const LoadedCallback&)
const = 0;
368 virtual bool elided()
const = 0;
377 virtual bool empty()
const = 0;
381 virtual bool isIndexed()
const;
386 virtual bool isCacheable(
const boost::optional<DtFeatureGeometry>& area = boost::none_t())
const;
391 virtual void cacheEstimate(
392 double& time,
double&
size,
393 const boost::optional<DtFeatureGeometry>& area = boost::none_t())
const;
397 virtual void cacheData(
398 const boost::optional<DtFeatureGeometry>& area = boost::none_t(),
416 virtual unsigned numberOfFeatures()
const;
448 class SynchronizedFunction;
449 struct FeatureCounter;
453 template <
typename F>
462 template <
typename FS>
468 template <
typename FS>
482 #define DT_INSTANTIATE_FEATURE_SETS(F) \
483 template class MAKVRinTerra::DtFeatureSetTemplate<F>; \
484 template class MAKVRinTerra::DtFeatureSetList< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
485 template class MAKVRinTerra::DtFeatureSetArray<4, MAKVRinTerra::DtFeatureSetTemplate<F> >; \
486 template class MAKVRinTerra::DtFilteredFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
487 template class MAKVRinTerra::DtEmptyFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
488 template class MAKVRinTerra::DtSinkFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
489 template class MAKVRinTerra::DtSourceFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
490 template class MAKVRinTerra::DtAsyncLoadingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
491 template class MAKVRinTerra::DtPagingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \