17 #include <boost/scoped_ptr.hpp>
18 #include <boost/shared_ptr.hpp>
20 #include <tbb/spin_rw_mutex.h>
43 namespace MAKVRinTerra
47 template <
typename FS>
56 typedef typename FeatureSet::Feature
Feature;
65 std::string label()
const;
68 FS* filter(
const DtQuery&,
const boost::optional<DtFeatureGeometry>&,
DtLoadType)
const;
70 bool loaded(
double = 0.0)
const;
72 unsigned numberOfFeatures()
const;
75 bool isIndexed()
const;
95 template <
typename FS>
110 std::string label()
const;
115 bool loaded(
double = 0.0)
const;
117 unsigned numberOfFeatures()
const;
134 template <
typename FS,
typename F>
138 ,
public boost::enable_shared_from_this< DtSinkFeatureSet<FS,F> >
146 typedef boost::shared_ptr<DtSinkFeatureSet>
Ptr;
170 template <
typename Factory>
173 typedef AddFeatureFactory<Factory> FactoryType;
177 if (sink->input && !sink->input->elided())
183 static Ptr Make(FeatureSet*);
188 std::string label()
const;
189 FS* filter(
const DtQuery&,
const boost::optional<DtFeatureGeometry>&,
DtLoadType)
const;
190 void forEachFeatureParallel(
const ForEachFunction&)
const;
191 DetachCallback forEachFeatureAsync(
const ForEachFunction& func)
const;
193 bool loaded(
double = 0.0)
const;
194 DetachCallback addLoadedCallback(
const LoadedCallback&)
const;
195 unsigned numberOfFeatures()
const;
199 virtual DetachCallback forEachFeaturePtrAsync(
const ForEachPtrFunction&)
const;
201 struct ParallelCaller;
203 template <
typename Function>
struct AddFeatureFactory;
204 struct GeometryFilterAdder;
205 struct AttributeFilterAdder;
206 struct RemoveFeature;
207 struct ParallelAdder;
208 struct RemoveCallback;
215 struct CallbackRecord;
221 typedef tbb::spin_rw_mutex
Mutex;
226 virtual void addFeatureImpl(
const FeaturePtr&);
227 virtual void removeFeature(
typename FeatureSequence::iterator i);
229 virtual void removeCallback(
typename FeatureCallbacks::iterator i);
238 template <
typename FS>
251 typedef boost::shared_ptr<DtDeletingSinkFeatureSet>
Ptr;
252 typedef boost::shared_ptr<const DtDeletingSinkFeatureSet>
CPtr;
254 static Ptr Make(FS*);
258 Ptr shared_from_this();
259 CPtr shared_from_this()
const;
274 template <
typename FS>
288 typedef typename boost::shared_ptr<DtSourceFeatureSet>
Ptr;
290 static Ptr Make(FS* input = 0);
297 std::string label()
const;