IProcessor.hpp
1 #ifndef DM_PROCESSOR_IPROCESSOR_HPP_INCLUDED
2 #define DM_PROCESSOR_IPROCESSOR_HPP_INCLUDED
3 
4 #ifdef _MSC_VER
5  #pragma once
6 #endif
7 
8 #include "DM/config.hpp"
9 #include "DM/Handle.hpp"
10 #include "DM/Processor/IKernel.hpp"
11 #include "DM/IDatamanager.hpp"
12 #include "DM/IMessageOutput.hpp"
13 
14 #include "DM/Processor/AutoLink.hpp" //enable autolink
15 
16 DM_NAMESPACE_BEGIN
17 
18 class DM_PS_API IProcessor : public ObjectBase
19 {
20 public:
21  static IProcessor* New(IDatamanager &manager, E_IteratorOrder processOrder);
22  static IProcessor* New(IDatamanager &manager, E_IteratorOrder processOrder,
23  AddInfoLayoutHandle viewLayout, bool viewReadOnly = false);
24  static IProcessor* New(const IDatamanager &inManager, IDatamanager &outManager,
25  E_IteratorOrder processOrder);
26  static IProcessor* New(const IDatamanager &inManager, IDatamanager &outManager,
27  E_IteratorOrder processOrder, AddInfoLayoutHandle viewLayout, bool viewReadOnly = false);
28 
29  static IProcessor* New(const char *inFilename, const IAddInfoLayout &appendLayout);
30 
31 
32 protected:
33  virtual ~IProcessor() {}
34 
35 public:
36  virtual void run(IPointKernel &kernel) = 0;
37  virtual void run(IPolylineKernel &kernel) = 0;
38  virtual void run(IGeometryKernel &kernel) = 0;
39 
40  virtual void runThreaded(IPointKernel &kernel, int threads = 0, MessageOutputHandle exceptionOutput = MessageOutputHandle()) = 0;
41 };
42 
44 
45 
46 DM_NAMESPACE_END
47 
48 #endif //DM_IPROCESSOR_HPP_INCLUDED