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;
50 template <
typename>
class PtrTemplate = boost::scoped_ptr,
51 typename InnerFS = FS>
60 template <
typename FS,
typename InnerFS = FS>
63 template <
size_t N,
typename FS,
typename InnerFS = FS>
66 template <
typename FS>
69 template <
typename FS>
72 template <
typename FS,
typename F =
typename FS::Feature>
75 template <
typename FS>
94 :
private boost::noncopyable
175 template <
typename FS>
178 std::auto_ptr<FS>
set(fs);
192 template <
typename FS>
195 if (!fs.get() || fs->elided())
201 template <
typename FS>
204 if (!fs || fs->elided())
210 template <
typename FS>
213 boost::shared_ptr<FS> ptr(fs.lock());
214 if (!ptr || ptr->elided())
227 virtual std::string label()
const = 0;
236 virtual void forEachFeatureParallel(
const ForEachFunction& func)
const = 0;
239 void forEachFeature(
const ForEachFunction& func)
const;
244 bool forEachFeatureParallelBlock(
const ForEachFunction& func,
double timeout = 60)
const;
245 bool forEachFeatureBlock(
const ForEachFunction& func,
double timeout = 60)
const;
272 virtual DetachCallback forEachFeatureAsync(
const ForEachFunction& func)
const = 0;
288 const boost::optional<DtFeatureGeometry>& geometry,
295 const boost::optional<DtFeatureGeometry>& geometry,
DtLoadType load)
const;
307 const boost::optional<DtFeatureGeometry>& geometry)
const;
309 bool load(
const DtQuery& query)
const;
310 bool load(
const boost::optional<DtFeatureGeometry>& geometry)
const;
338 virtual bool loaded(
double timeout=0.0)
const = 0;
349 virtual DetachCallback addLoadedCallback(
const LoadedCallback&)
const = 0;
360 virtual bool elided()
const = 0;
369 virtual bool empty()
const = 0;
373 virtual bool isIndexed()
const;
389 virtual unsigned numberOfFeatures()
const;
421 class SynchronizedFunction;
422 struct FeatureCounter;
426 template <
typename F>
435 template <
typename FS>
441 template <
typename FS>
455 #define DT_INSTANTIATE_FEATURE_SETS(F) \
456 template class MAKVRinTerra::DtFeatureSetTemplate<F>; \
457 template class MAKVRinTerra::DtFeatureSetList< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
458 template class MAKVRinTerra::DtFeatureSetArray<4, MAKVRinTerra::DtFeatureSetTemplate<F> >; \
459 template class MAKVRinTerra::DtFilteredFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
460 template class MAKVRinTerra::DtEmptyFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
461 template class MAKVRinTerra::DtSinkFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
462 template class MAKVRinTerra::DtSourceFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
463 template class MAKVRinTerra::DtAsyncLoadingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
464 template class MAKVRinTerra::DtPagingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \