001    /*
002     * Copyright (c) 2002-2007, Marc Prud'hommeaux. All rights reserved.
003     *
004     * This software is distributable under the BSD license. See the terms of the
005     * BSD license in the documentation provided with this software.
006     */
007    package jline;
008    
009    import java.util.*;
010    
011    /**
012     *  A Completor is the mechanism by which tab-completion candidates
013     *  will be resolved.
014     *
015     *  @author  <a href="mailto:mwp1@cornell.edu">Marc Prud'hommeaux</a>
016     */
017    public interface Completor {
018        /**
019         *  Populates <i>candidates</i> with a list of possible
020         *  completions for the <i>buffer</i>. The <i>candidates</i>
021         *  list will not be sorted before being displayed to the
022         *  user: thus, the complete method should sort the
023         *  {@link List} before returning.
024         *
025         *
026         *  @param  buffer     the buffer
027         *  @param  candidates the {@link List} of candidates to populate
028         *  @return            the index of the <i>buffer</i> for which
029         *                     the completion will be relative
030         */
031        int complete(String buffer, int cursor, List candidates);
032    }