Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
 All Classes Functions Enumerations Pages
domainmerger.h
1 #ifndef DOMAINMERGER_H
2 #define DOMAINMERGER_H
3 
4 namespace Ilwis{
9 {
10 public:
11 
15  DomainMerger();
16 
25  DomainMerger(const IDomain& dom1, const IDomain& dom2);
26 
38  IDomain mergeDomains(const IDomain& dom1, const IDomain& dom2);
39 
45  std::map<quint32, quint32> renumberer() const;
46 
53  virtual bool merge() = 0;
54 
61  IDomain mergedDomain() const;
62 
63 protected:
64  IDomain _domain1;
65  IDomain _domain2;
66  IDomain _mergedDomain;
67  std::map<quint32, quint32> _renumber;
68 
69 };
70 
72  friend class DomainMerger;
73 
74  NumericDomainMerger(const IDomain& dom1, const IDomain& dom2);
75  bool merge();
76 };
77 
79  friend class DomainMerger;
80 
81  ItemDomainMergerIndexedItems(const IDomain& dom1, const IDomain& dom2);
82  bool merge();
83 
84 };
85 
87  friend class DomainMerger;
88 
89  ItemDomainMergerNamedItems(const IDomain& dom1, const IDomain& dom2);
90  bool merge();
91 
92 
93 private:
94  void renumber(const std::unique_ptr<Ilwis::NamedIdentifierRange> &newRange, const QSharedPointer<NamedIdentifierRange> &range1, QSharedPointer<NamedIdentifierRange> &range2);
95 };
96 }
97 
98 #endif // DOMAINMERGER_H