Some forms of AbstractTreeIterator may already have the path buffer they want their child iterator to use in memory when the child is being created. Therefore they do not want the existing constructor as it would modify the parent's path buffer, and force the subclass to copy the new child's path. By allowing subclass implementations to define their own path buffer we must rely on them to do the right thing in terms of setting up a valid buffer for iteration, but the implementation can avoid copies and unwanted data changes to the parent array. Signed-off-by: Shawn O. Pearce <spearce@xxxxxxxxxxx> --- .../jgit/treewalk/AbstractTreeIterator.java | 23 ++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-) diff --git a/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java b/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java index 0c0257c..64bb5be 100644 --- a/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java +++ b/org.spearce.jgit/src/org/spearce/jgit/treewalk/AbstractTreeIterator.java @@ -146,6 +146,29 @@ public abstract class AbstractTreeIterator { } /** + * Create an iterator for a subtree of an existing iterator. + * <p> + * The caller is responsible for setting up the path of the child iterator. + * + * @param p + * parent tree iterator. + * @param childPath + * path array to be used by the child iterator. This path must + * contain the path from the top of the walk to the first child + * and must end with a '/'. + * @param childPathOffset + * position within <code>childPath</code> where the child can + * insert its data. The value at + * <code>childPath[childPathOffset-1]</code> must be '/'. + */ + protected AbstractTreeIterator(final AbstractTreeIterator p, + final byte[] childPath, final int childPathOffset) { + parent = p; + path = childPath; + pathOffset = childPathOffset; + } + + /** * Grow the path buffer larger. * * @param len -- 1.6.0.rc2.219.g1250ab -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html