/// <exception cref="NGit.Errors.MissingObjectException"></exception> /// <exception cref="NGit.Errors.IncorrectObjectTypeException"></exception> /// <exception cref="System.IO.IOException"></exception> internal override RevCommit Next() { RevCommit c = this.source.Next(); if (c != null) { foreach (RevCommit p in c.parents) { if ((p.flags & BoundaryGenerator.UNINTERESTING) != 0) { this.held.Add(p); } } return(c); } FIFORevQueue boundary = new FIFORevQueue(); boundary.ShareFreeList(this.held); for (; ;) { c = this.held.Next(); if (c == null) { break; } if ((c.flags & BoundaryGenerator.InitialGenerator.DUPLICATE) != 0) { continue; } if ((c.flags & BoundaryGenerator.InitialGenerator.PARSED) == 0) { c.ParseHeaders(this.walk); } c.flags |= BoundaryGenerator.InitialGenerator.DUPLICATE; boundary.Add(c); } boundary.RemoveFlag(BoundaryGenerator.InitialGenerator.DUPLICATE); this._enclosing.g = boundary; return(boundary.Next()); }
internal override void ShareFreeList(BlockRevQueue q) { pending.ShareFreeList(q); }
/// <exception cref="NGit.Errors.MissingObjectException"></exception> /// <exception cref="NGit.Errors.IncorrectObjectTypeException"></exception> /// <exception cref="System.IO.IOException"></exception> internal override RevCommit Next() { RevCommit c = this.source.Next(); if (c != null) { foreach (RevCommit p in c.parents) { if ((p.flags & BoundaryGenerator.UNINTERESTING) != 0) { this.held.Add(p); } } return c; } FIFORevQueue boundary = new FIFORevQueue(); boundary.ShareFreeList(this.held); for (; ; ) { c = this.held.Next(); if (c == null) { break; } if ((c.flags & BoundaryGenerator.InitialGenerator.DUPLICATE) != 0) { continue; } if ((c.flags & BoundaryGenerator.InitialGenerator.PARSED) == 0) { c.ParseHeaders(this.walk); } c.flags |= BoundaryGenerator.InitialGenerator.DUPLICATE; boundary.Add(c); } boundary.RemoveFlag(BoundaryGenerator.InitialGenerator.DUPLICATE); this._enclosing.g = boundary; return boundary.Next(); }