IKernel.hpp
1 #pragma once
2 
3 #include "DM/config.hpp"
4 #include "DM/IPoint.hpp"
5 #include "DM/IPolyline.hpp"
6 #include "DM/IBox.hpp"
7 #include "DM/IPointIndexLeaf.hpp"
8 #include "DM/IFilter.hpp"
9 #include "DM/ObjectBase.hpp"
10 
11 #include "DM/Processor/AutoLink.hpp"
12 
13 DM_NAMESPACE_BEGIN
14 
15 /// \brief The kernel processor concept is used for manipulating geometry objects within an ODM in an efficient and easy manner
16 class DM_PS_API IKernelBase : public ObjectBase
17 {
18 public:
19  virtual ~IKernelBase() {}
20 
21  ///gets a copy of the object (required for multi-threaded execution)
22  virtual IKernelBase* threadClone() const = 0;
23 
24  ///function is called, when the spatial index leaf changes
25  virtual void leafChanged(const IPointIndexLeaf &leaf) = 0;
26 };
28 
29 
30 /// \brief kernel for handling point object
31 class DM_PS_API IPointKernel : public IKernelBase
32 {
33 public:
34  virtual ~IPointKernel() {}
35 
36  /// Speed-up: inspect the bounding box and attribute statistics of each tile before it is loaded and processed.
37  /// Skip tiles for which surely none of their points pass this filter.
38  /// The returned filter is usually the same as the filter used internally by the kernel to decide if a point shall be processed.
39  /// If all tiles shall be processed, return an empty handle.
40  virtual FilterHandle tileFilter() = 0;
41 
42  virtual bool process(const IPoint &source, IPoint &target) = 0;
43 };
45 
46 
47 /// \brief kernel for handling polyline object
48 class DM_PS_API IPolylineKernel : public IKernelBase
49 {
50 public:
51  virtual ~IPolylineKernel() {}
52 
53  virtual bool process(const IPolyline &source, IPolyline &target) = 0;
54 };
56 
57 
58 class DM_PS_API IGeometryKernel : public IKernelBase
59 {
60 public:
61  virtual ~IGeometryKernel() {}
62 
63  virtual bool process(const IGeometry &source, IGeometry &target) = 0;
64 };
66 
67 
68 DM_NAMESPACE_END
The kernel processor concept is used for manipulating geometry objects within an ODM in an efficient ...
Definition: IKernel.hpp:16
kernel for handling point object
Definition: IKernel.hpp:31
object representing a spatial leaf within a point index
Definition: IPointIndexLeaf.hpp:30
Definition: IPolyline.hpp:14
kernel for handling polyline object
Definition: IKernel.hpp:48
Base class of all geometry objects.
Definition: IGeometry.hpp:26
Definition: IKernel.hpp:58
Smart pointer class using reference counting with support for DM objects (see ObjectBase)
Definition: Handle.hpp:98
Definition: M/c++_api/inc/DM/ObjectBase.hpp:8
3d point object
Definition: IPoint.hpp:14