IQueryCombined.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/Handle.hpp"
5 #include "DM/IQueryBase.hpp"
6 #include "DM/IQueryGeometry.hpp"
7 #include "DM/IQueryKnn.hpp"
8 
9 DM_NAMESPACE_BEGIN
10 
11 /// \brief combined spatial queries
12 class DM_API IQueryCombined : public IQueryBase
13 {
14 public:
15  enum struct Operation
16  {
17  and_,
18  or_
19  };
20 
21  static IQueryCombined* New(const IQueryGeometry &region, const IQueryKnn &knn, Operation op = Operation::and_);
22  static IQueryCombined* New(const IQueryKnn &knn, const IQueryGeometry &region, Operation op = Operation::and_);
23 
24 protected:
25  virtual ~IQueryCombined() {}
26 
27 public:
28  virtual const IQueryBase &left() const = 0;
29  virtual const IQueryBase &right() const = 0;
30  virtual Operation operatorType() const = 0;
31 
32  virtual void left(const IQueryBase &l) = 0;
33  virtual void right(const IQueryBase &r) = 0;
34  virtual void operatorType(Operation op) = 0;
35 };
36 
38 
39 // and/or operator as alternative for IQueryCombined::New method
40 DM_API QueryCombinedHandle operator&&(const IQueryGeometry&, const IQueryKnn&);
41 DM_API QueryCombinedHandle operator&&(const IQueryKnn&, const IQueryGeometry&);
42 
43 DM_API QueryCombinedHandle operator||(const IQueryGeometry&, const IQueryKnn&);
44 DM_API QueryCombinedHandle operator||(const IQueryKnn&, const IQueryGeometry&);
45 
46 
47 DM_NAMESPACE_END
48 
Base class of all query geometry objects.
Definition: IQueryGeometry.hpp:17
Base class of all query objects.
Definition: IQueryBase.hpp:55
Base class of all query objects.
Definition: IQueryKnn.hpp:22
combined spatial queries
Definition: IQueryCombined.hpp:12
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:75