Processor/ICUObject.hpp
1 #ifndef DM_PROCESSOR_ICU_OBJECT_HPP_INCLUDED
2 #define DM_PROCESSOR_ICU_OBJECT_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/IWindow.hpp"
11 #include "DM/Iterator.hpp"
12 #include "DM/IPointIndexLeaf.hpp"
13 #include "DM/ObjectBaseRefCounting.hpp"
14 #include "DM/Processor/AutoLink.hpp" //enable autolink
15 
16 DM_NAMESPACE_BEGIN
17 
18 class DM_PS_API ICUObject : public ObjectBaseRefCounting
19 {
20 public:
21  // Iterator typedefs ============================================================================
23 
24 protected:
25  virtual ~ICUObject() {}
26 
27 public:
28  // General memeber functions ====================================================================
29  virtual unsigned xindex() const = 0;
30  virtual unsigned yindex() const = 0;
31 
32  virtual WindowHandle getLimit(bool nettoSize = true) const = 0;
33 
34  virtual double overlap() const = 0;
35 
36  /// number of leafs that are covered by the CU object
37  virtual unsigned sizeLeaf() const = 0;
38 
39  /// true if limit doesn't interset any leaf (equal to beginLeaf() == endLeaf())
40  virtual bool emptyLeaf() const = 0;
41 
42  virtual const_iterator_leaf beginLeaf() const = 0;
43  virtual const_iterator_leaf endLeaf() const = 0;
44 };
45 
46 
47 typedef Handle< ICUObject > CUObjectHandle;
48 
49 
50 DM_NAMESPACE_END
51 
52 #endif //DM_PROCESSOR_ICU_OBJECT_HPP_INCLUDED