comparison src/org/tmatesoft/hg/repo/HgParentChildMap.java @ 645:14dac192aa26

Push: phase2 - upload bundle with changes to remote server
author Artem Tikhomirov <tikhomirov.artem@gmail.com>
date Thu, 20 Jun 2013 19:15:09 +0200
parents 6526d8adbc0f
children 3b7d51ed4c65
comparison
equal deleted inserted replaced
644:1deea2f33218 645:14dac192aa26
18 18
19 import static org.tmatesoft.hg.repo.HgRepository.TIP; 19 import static org.tmatesoft.hg.repo.HgRepository.TIP;
20 20
21 import java.util.Arrays; 21 import java.util.Arrays;
22 import java.util.Collection; 22 import java.util.Collection;
23 import java.util.Collections;
23 import java.util.HashSet; 24 import java.util.HashSet;
24 import java.util.LinkedList; 25 import java.util.LinkedList;
25 import java.util.List; 26 import java.util.List;
26 27
27 import org.tmatesoft.hg.core.Nodeid; 28 import org.tmatesoft.hg.core.Nodeid;
54 * @author Artem Tikhomirov 55 * @author Artem Tikhomirov
55 * @author TMate Software Ltd. 56 * @author TMate Software Ltd.
56 */ 57 */
57 public final class HgParentChildMap<T extends Revlog> implements ParentInspector { 58 public final class HgParentChildMap<T extends Revlog> implements ParentInspector {
58 59
59
60 private Nodeid[] sequential; // natural repository order, childrenOf rely on ordering 60 private Nodeid[] sequential; // natural repository order, childrenOf rely on ordering
61 private Nodeid[] sorted; // for binary search 61 private Nodeid[] sorted; // for binary search
62 private int[] sorted2natural; 62 private int[] sorted2natural;
63 private Nodeid[] firstParent; 63 private Nodeid[] firstParent;
64 private Nodeid[] secondParent; 64 private Nodeid[] secondParent;
178 // nodes, their parents and so on. 178 // nodes, their parents and so on.
179 179
180 // @return ordered collection of all children rooted at supplied nodes. Nodes shall not be descendants of each other! 180 // @return ordered collection of all children rooted at supplied nodes. Nodes shall not be descendants of each other!
181 // Nodeids shall belong to this revlog 181 // Nodeids shall belong to this revlog
182 public List<Nodeid> childrenOf(List<Nodeid> roots) { 182 public List<Nodeid> childrenOf(List<Nodeid> roots) {
183 if (roots.isEmpty()) {
184 return Collections.emptyList();
185 }
183 HashSet<Nodeid> parents = new HashSet<Nodeid>(); 186 HashSet<Nodeid> parents = new HashSet<Nodeid>();
184 LinkedList<Nodeid> result = new LinkedList<Nodeid>(); 187 LinkedList<Nodeid> result = new LinkedList<Nodeid>();
185 int earliestRevision = Integer.MAX_VALUE; 188 int earliestRevision = Integer.MAX_VALUE;
186 assert sequential.length == firstParent.length && firstParent.length == secondParent.length; 189 assert sequential.length == firstParent.length && firstParent.length == secondParent.length;
187 // first, find earliest index of roots in question, as there's no sense 190 // first, find earliest index of roots in question, as there's no sense
242 return true; 245 return true;
243 } 246 }
244 } 247 }
245 return false; 248 return false;
246 } 249 }
250
251 /**
252 * @return all revisions this map knows about
253 */
254 public List<Nodeid> all() {
255 return Arrays.asList(sequential);
256 }
247 } 257 }