IKernelEx.hpp
1 #ifndef DM_PROCESSOR_IKERNEL_EX_HPP_INCLUDED
2 #define DM_PROCESSOR_IKERNEL_EX_HPP_INCLUDED
3 
4 #ifdef _MSC_VER
5  #pragma once
6 #endif
7 
8 #include "DM/config.hpp"
9 #include "DM/IPoint.hpp"
10 #include "DM/IPolyline.hpp"
11 #include "DM/IBox.hpp"
12 #include "DM/IPointIndexLeaf.hpp"
13 #include "DM/ObjectBase.hpp"
14 #include "DM/IPointSet.hpp"
15 
16 #include "DM/Processor/AutoLink.hpp"
17 
18 DM_NAMESPACE_BEGIN
19 
20 /// \brief The kernel processor concept is used for manipulating geometry objects within an ODM in an efficient and easy manner
21 class DM_PS_API IKernelExBase : public ObjectBase
22 {
23 public:
24  virtual ~IKernelExBase() {}
25 
26  ///gets a copy of the object (required for multi-threaded execution)
27  virtual IKernelExBase* threadClone() const = 0;
28 
29  ///function is called, when the spatial index leaf changes
30  virtual void leafChanged(const IPointIndexLeaf &leaf, PointIndexLeafHandle &localTree) = 0;
31 };
33 
34 
35 
36 /// \brief kernel for handling point object
37 class DM_PS_API IPointKernelEx : public IKernelExBase
38 {
39 public:
40  virtual ~IPointKernelEx() {}
41 
42  virtual bool process(const IPoint &source, IPoint &target, const IPointSet &neighbors) = 0;
43 };
45 
46 
47 DM_NAMESPACE_END
48 
49 #endif //DM_PROCESSOR_IKERNEL_EX_HPP_INCLUDED