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->empty())
201 template <
typename FS>
204 if (!fs || fs->empty())
210 template <
typename FS>
213 boost::shared_ptr<FS> ptr(fs.lock());
214 if (!ptr || ptr->empty())
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 empty()
const;
364 virtual bool isIndexed()
const;
380 virtual unsigned numberOfFeatures()
const;
412 class SynchronizedFunction;
413 struct FeatureCounter;
417 template <
typename F>
426 template <
typename FS>
432 template <
typename FS>
446 #define DT_INSTANTIATE_FEATURE_SETS(F) \
447 template class MAKVRinTerra::DtFeatureSetTemplate<F>; \
448 template class MAKVRinTerra::DtFeatureSetList< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
449 template class MAKVRinTerra::DtFeatureSetArray<4, MAKVRinTerra::DtFeatureSetTemplate<F> >; \
450 template class MAKVRinTerra::DtFilteredFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
451 template class MAKVRinTerra::DtEmptyFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
452 template class MAKVRinTerra::DtSinkFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
453 template class MAKVRinTerra::DtSourceFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
454 template class MAKVRinTerra::DtAsyncLoadingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \
455 template class MAKVRinTerra::DtPagingFeatureSet< MAKVRinTerra::DtFeatureSetTemplate<F> >; \