- inline Tag *operator ->() {return Tg;};
- inline Tag const *operator ->() const {return Tg;};
- inline Tag &operator *() {return *Tg;};
- inline Tag const &operator *() const {return *Tg;};
- inline operator Tag *() {return Tg == Owner->TagP?0:Tg;};
- inline operator Tag const *() const {return Tg == Owner->TagP?0:Tg;};
- inline pkgCache *Cache() {return Owner;};
-
- inline const char *Name() const {return Owner->StrP + Tg->Name;};
- inline unsigned long Index() const {return Tg - Owner->TagP;};
-
- inline TagIterator() : Tg(0), Owner(0) {};
- inline TagIterator(pkgCache &Owner,Tag *Trg = 0) : Tg(Trg),
- Owner(&Owner)
- {
- if (Tg == 0)
- Tg = Owner.TagP;
- };
+ inline const char *Name() const {return Owner->StrP + S->Name;};
+ inline unsigned long Index() const {return S - Owner->TagP;};
+
+ inline TagIterator(pkgCache &Owner,Tag *Trg = 0) : Iterator<Tag, TagIterator>(Owner, Trg) {
+ if (S == 0)
+ S = OwnerPointer();
+ }
+ inline TagIterator() : Iterator<Tag, TagIterator>() {}