IQuerySort.hpp
1 #pragma once
2 
3 
4 #include "DM/config.hpp"
5 #include "DM/Handle.hpp"
6 #include "DM/ObjectBase.hpp"
7 #include "DM/IAddInfoLayout.hpp"
8 
9 DM_NAMESPACE_BEGIN
10 
11 
12 /// \brief For defining post spatial query sorting
13 class DM_API IQuerySort : public ObjectBase
14 {
15 public:
16  enum struct SortMode
17  {
18  distance2d = -5,
19  distance3d = -4,
20  coor_x = -3,
21  coor_y = -2,
22  coor_z = -1,
23  standard = distance3d,
24  attribute = 1 ///< attribute defined by a single column layout
25  };
26 
27  enum struct SortOrder
28  {
29  ascending = 0,
30  descending = 1
31  };
32 
33  static IQuerySort *New(SortMode mode, SortOrder order = SortOrder::ascending, const AddInfoLayoutHandle &layout = AddInfoLayoutHandle());
34 
35 protected:
36  virtual ~IQuerySort() {}
37 
38 public:
39  virtual bool isDistanceBased() const = 0;
40  virtual bool isAttributeBased() const = 0;
41  virtual bool isCoordianteBased() const = 0;
42 
43  virtual SortMode mode() const = 0;
44  virtual SortOrder order() const = 0;
45  virtual const AddInfoLayoutHandle& layout() const = 0;
46 
47  virtual void mode(SortMode m) = 0;
48  virtual void order(SortOrder o) = 0;
49  virtual void layout(const AddInfoLayoutHandle& l) = 0;
50 
51  /// get an object copy
52  virtual IQuerySort* clone() const = 0;
53 };
54 
55 typedef Handle< IQuerySort > QuerySortHandle;
56 
57 DM_NAMESPACE_END
SortOrder
Definition: ISpatialQueryDescriptor.hpp:12
For defining post spatial query sorting.
Definition: IQuerySort.hpp:13
SortMode
Definition: IQuerySort.hpp:16
Definition: M/c++_api/inc/DM/ObjectBase.hpp:8