VR-Forces 4.8 Class Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
featureSetList.h
Go to the documentation of this file.
1 
5 #pragma once
6 
7 #include <features/featureSet.h>
8 
9 #include <vector>
10 
11 #include <tbb/spin_mutex.h>
12 
13 namespace MAKVRinTerra
14 {
20  template <typename FS, typename Inner>
22  : public FS
23  , public DtObjectDebugger< DtFeatureSetList<FS,Inner> >
24  {
25  public:
26  using FS::filter;
27 
28  typedef FS FeatureSet;
29  typedef typename FeatureSet::ForEachFunction ForEachFunction;
30  typedef typename FeatureSet::LoadedCallback LoadedCallback;
31  typedef typename FeatureSet::DetachCallback DetachCallback;
32  typedef typename FS::Visitor Visitor;
33  typedef typename FS::ConstVisitor ConstVisitor;
34 
35  explicit DtFeatureSetList();
36  explicit DtFeatureSetList(size_t);
37 
39 
46  void add(Inner* fs);
47  void add(const Inner&);
48  void add(std::auto_ptr<Inner>);
49 
51  void addFront(Inner*);
52 
53  std::string label() const;
54  void forEachFeatureParallel(const ForEachFunction& func) const;
55  DetachCallback forEachFeatureAsync(const ForEachFunction& func) const;
56  FS* filter(const DtQuery&, const boost::optional<DtFeatureGeometry>&, DtLoadType) const;
57  DtFeatureSetList* clone() const;
58  bool loaded(double = 0.0) const;
59  DetachCallback addLoadedCallback(const LoadedCallback&) const;
60  unsigned numberOfFeatures() const;
61  bool elided() const;
62  bool empty() const;
63  bool isIndexed() const;
64  bool isCacheable(const boost::optional<DtFeatureGeometry>& area) const;
65  void cacheEstimate(double& time, double& size, const boost::optional<DtFeatureGeometry>& area) const;
66  void cacheData(
67  const boost::optional<DtFeatureGeometry>& area,
68  DtFeatureCacheProgressCallback* progress) const;
69 
70  void accept(Visitor&);
71  void accept(ConstVisitor&) const;
72 
73  protected:
74  struct ParallelIterator;
75  template <typename Function> struct ParallelAsyncIterator;
76  struct ParallelFilter;
77 
78  struct LoadDetacher;
79 
81  explicit DtFeatureSetList(const DtFeatureSetList&);
82 
83  typedef tbb::spin_mutex AddMutex;
85 
86  typedef std::vector<Inner*> PtrList;
88  };
89 
90  template <size_t N, typename FS, typename Inner>
92  : public FS
93  , public DtObjectDebugger< DtFeatureSetArray<N,FS,Inner> >
94  {
95  public:
96  using FS::filter;
97 
98  typedef FS FeatureSet;
99  typedef typename FeatureSet::ForEachFunction ForEachFunction;
100  typedef typename FeatureSet::LoadedCallback LoadedCallback;
101  typedef typename FeatureSet::DetachCallback DetachCallback;
102  typedef typename FS::Visitor Visitor;
103  typedef typename FS::ConstVisitor ConstVisitor;
104 
106 
113  void set(size_t n, Inner* fs);
114  void set(size_t n, const Inner&);
115  void set(size_t n, std::auto_ptr<Inner>);
116 
117  std::string label() const;
118  void forEachFeatureParallel(const ForEachFunction& func) const;
119  DetachCallback forEachFeatureAsync(const ForEachFunction& func) const;
120  FS* filter(const DtQuery&, const boost::optional<DtFeatureGeometry>&, DtLoadType) const;
121  DtFeatureSetArray* clone() const;
122  bool loaded(double = 0.0) const;
123  DetachCallback addLoadedCallback(const LoadedCallback&) const;
124  unsigned numberOfFeatures() const;
125  bool elided() const;
126  bool empty() const;
127  bool isIndexed() const;
128  bool isCacheable(const boost::optional<DtFeatureGeometry>& area) const;
129  void cacheEstimate(double& time, double& size, const boost::optional<DtFeatureGeometry>& area) const;
130  void cacheData(
131  const boost::optional<DtFeatureGeometry>& area,
132  DtFeatureCacheProgressCallback* progress) const;
133 
134  void accept(Visitor&);
135  void accept(ConstVisitor&) const;
136 
137  protected:
138  struct ParallelIterator;
139  template <typename Function> struct ParallelAsyncIterator;
140  struct ParallelFilter;
141 
142  struct LoadDetacher;
143 
145  explicit DtFeatureSetArray(const DtFeatureSetArray&);
146 
147  typedef tbb::spin_mutex AddMutex;
149 
150  std::auto_ptr<Inner> myFeatures[N];
151  };
152 }
153 
155 //DT_DEFINE_OBJECT_DEBUGGER_NAME_TEMPLATE(MAKVRinTerra::DtFeatureSetArray);
#define DT_DLL_features
stop complaining about multiple independent base classes for boost::noncopyable this should probably ...
Definition: featuresDefines.h:36
Definition: featureSetList.h:91
AddMutex myAddMutex
Definition: featureSetList.h:84
PtrList myFeatures
Definition: featureSetList.h:87
AddMutex myAddMutex
Definition: featureSetList.h:148
tbb::spin_mutex AddMutex
Definition: featureSetList.h:147
FS::Visitor Visitor
Definition: featureSetList.h:32
voidpf void uLong size
Definition: ioapi.h:39
Default on in debug, off in release.
Definition: objectCounter.h:31
FS::Visitor Visitor
Definition: featureSetList.h:102
FS FeatureSet
Definition: featureSetList.h:28
FeatureSet::ForEachFunction ForEachFunction
Definition: featureSetList.h:99
FS FeatureSet
Definition: featureSetList.h:98
FS::ConstVisitor ConstVisitor
Definition: featureSetList.h:103
FeatureSet::ForEachFunction ForEachFunction
Definition: featureSetList.h:29
std::vector< Inner * > PtrList
Definition: featureSetList.h:86
FeatureSet::LoadedCallback LoadedCallback
Definition: featureSetList.h:30
class DT_DLL_features DtFeatureSetArray
Definition: featureSet.h:72
Represents a set of characeters a DtFeature object can have.
Definition: query.h:38
tbb::spin_mutex AddMutex
Definition: featureSetList.h:83
FeatureSet::DetachCallback DetachCallback
Definition: featureSetList.h:101
FS::ConstVisitor ConstVisitor
Definition: featureSetList.h:33
#define DT_DEFINE_OBJECT_DEBUGGER_NAME_TEMPLATE(type)
Definition: objectCounter.h:275
FeatureSet::DetachCallback DetachCallback
Definition: featureSetList.h:31
class DT_DLL_features DtFeatureSetList
Definition: featureSet.h:69
DtLoadType
Used to indicate whether to load features.
Definition: featureSet.h:36
DtFeatureSet used to combine multiple feature sets into one.
Definition: featureSetList.h:21
FeatureSet::LoadedCallback LoadedCallback
Definition: featureSetList.h:100

Document ID: Generated on Thu Aug 27 10:56:05 EDT 2020 from SVN revision 217100
Copyright © 2005-2020 MAK Technologies. All Rights Reserved (www.mak.com)