001    /**
002     * Copyright 2003-2004 The Apache Software Foundation
003     * Copyright 2005 Stephen McConnell
004     *
005     * Licensed under the Apache License, Version 2.0 (the "License");
006     * you may not use this file except in compliance with the License.
007     * You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     * Unless required by applicable law or agreed to in writing, software
012     * distributed under the License is distributed on an "AS IS" BASIS,
013     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     * See the License for the specific language governing permissions and
015     * limitations under the License.
016     */
017    package net.dpml.cli;
018    
019    import java.util.ListIterator;
020    
021    /**
022     * An Option that can have an argument and/or group of child Options in the form 
023     * "-f <arg> [-a|-b|-c]".
024     *
025     * @author <a href="http://www.dpml.net">Digital Product Meta Library</a>
026     * @version 1.0.0
027     */
028    public interface Parent extends Option
029    {
030    
031        /**
032         * Processes the parent part of the Option.  The combination of parent,
033         * argument and children is handled by the process method.
034         * @see Option#process(WriteableCommandLine, ListIterator)
035         * 
036         * @param commandLine the CommandLine to write results to
037         * @param args a ListIterator over argument strings positioned at the next
038         *             argument to process
039         * @throws OptionException if an error occurs while processing
040         */
041        void processParent(
042          WriteableCommandLine commandLine, ListIterator args )
043          throws OptionException;
044    }