Ilwis-Objects  1.0
GIS and Remote Sensing framework for data access and processing
All Classes Functions Enumerations Pages
itemrange.h
1 #ifndef ITEMRANGE_H
2 #define ITEMRANGE_H
3 
4 namespace Ilwis {
5 
6 class DomainItem;
7 class Domain;
8 
9 typedef IlwisData<Domain> IDomain;
10 
11 typedef DomainItem* (*CreateItemFunc)(const QString&);
12 typedef QSharedPointer<DomainItem> SPDomainItem;
17 class KERNELSHARED_EXPORT ItemRange : public Range
18 {
19 public:
20  template<typename T> friend class ItemDomain;
21 
29  virtual QVariant impliedValue(const QVariant& v) const = 0;
30 
37  virtual quint32 count() const = 0;
38 
46  virtual SPDomainItem item(quint32 raw) const = 0;
47 
55  virtual SPDomainItem item(const QString &nam) const = 0;
56 
64  virtual SPDomainItem itemByOrder(quint32 index) const = 0;
65 
74  virtual bool contains(const QVariant& name, bool inclusive = true) const = 0;
75 
84  virtual bool contains(SPRange rng, bool inclusive=true) const;
85 
94  virtual bool contains(const ItemRange& itemrng, bool inclusive=true) const;
95 
101  virtual bool isValid() const = 0;
102 
109  virtual void add(DomainItem *item) = 0;
110 
117  virtual void add(SPDomainItem item) = 0;
118 
125  virtual void remove(const QString& nm) = 0;
126 
130  QVariant ensure(const QVariant& v, bool inclusive = true) const;
131 
139  virtual void addRange(const ItemRange& range);
140 
149  virtual qint32 gotoIndex(qint32 index, qint32 step) const =0;
150 
154  static DomainItem *create(const QString& type);
155 
159  static void addCreateItem(const QString& type, CreateItemFunc func);
160 
168  ItemRange *merge(const QSharedPointer<Range> &otherRange) const;
169 
170  virtual void clear() = 0;
179  static ItemRange *merge(const QSharedPointer<ItemRange>& nr1, const QSharedPointer<ItemRange>& nr2);
180 
181 protected:
182 private:
183  virtual bool alignWithParent(const IDomain& dom) = 0;
184  static QHash<QString, CreateItemFunc> _createItem;
185 };
186 
187 typedef QSharedPointer<ItemRange> SPItemRange;
188 }
189 
190 #endif // ITEMRANGE_H