17 #include <boost/scoped_ptr.hpp>
18 #include <boost/shared_ptr.hpp>
20 #include <tbb/spin_rw_mutex.h>
40 namespace MAKVRinTerra
44 template <
typename FS>
53 typedef typename FeatureSet::Feature
Feature;
62 std::string label()
const;
65 FS* filter(
const DtQuery&,
const boost::optional<DtFeatureGeometry>&,
DtLoadType)
const;
67 bool loaded(
double = 0.0)
const;
69 unsigned numberOfFeatures()
const;
72 bool isIndexed()
const;
92 template <
typename FS>
107 std::string label()
const;
112 bool loaded(
double = 0.0)
const;
114 unsigned numberOfFeatures()
const;
131 template <
typename FS,
typename F>
135 ,
public boost::enable_shared_from_this< DtSinkFeatureSet<FS,F> >
143 typedef boost::shared_ptr<DtSinkFeatureSet>
Ptr;
167 template <
typename Factory>
170 typedef AddFeatureFactory<Factory> FactoryType;
174 if (sink->input && !sink->input->elided())
180 static Ptr Make(FeatureSet*);
184 std::string label()
const;
185 FS* filter(
const DtQuery&,
const boost::optional<DtFeatureGeometry>&,
DtLoadType)
const;
186 void forEachFeatureParallel(
const ForEachFunction&)
const;
187 DetachCallback forEachFeatureAsync(
const ForEachFunction& func)
const;
189 bool loaded(
double = 0.0)
const;
190 DetachCallback addLoadedCallback(
const LoadedCallback&)
const;
191 unsigned numberOfFeatures()
const;
195 virtual DetachCallback forEachFeaturePtrAsync(
const ForEachPtrFunction&)
const;
197 struct ParallelCaller;
199 template <
typename Function>
struct AddFeatureFactory;
200 struct GeometryFilterAdder;
201 struct RemoveFeature;
202 struct ParallelAdder;
203 struct RemoveCallback;
210 struct CallbackRecord;
216 typedef tbb::spin_rw_mutex
Mutex;
221 virtual void addFeatureImpl(
const FeaturePtr&);
222 virtual void removeFeature(
typename FeatureSequence::iterator i);
224 virtual void removeCallback(
typename FeatureCallbacks::iterator i);
233 template <
typename FS>
246 typedef boost::shared_ptr<DtDeletingSinkFeatureSet>
Ptr;
247 typedef boost::shared_ptr<const DtDeletingSinkFeatureSet>
CPtr;
249 static Ptr Make(FS*);
253 Ptr shared_from_this();
254 CPtr shared_from_this()
const;
269 template <
typename FS>
283 typedef typename boost::shared_ptr<DtSourceFeatureSet>
Ptr;
285 static Ptr Make(FS* input = 0);
292 std::string label()
const;