<?xml version="1.0"?>
<!--
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
 
  http://www.apache.org/licenses/LICENSE-2.0
 
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->
<document>

  <properties>
    <author email="dev@commons.apache.org">commons-dev</author>
    <title>Option Properties</title>
  </properties>

  <body>
    <section name="Option Properties">
      <p>
        The following are the properties that each 
        <a href="api-release/org/apache/commons/cli/Option.html">Option</a> has.  All of these
        can be set using the accessors or using the methods
        defined in the
        <a href="api-release/org/apache/commons/cli/OptionBuilder.html">OptionBuilder</a>.
      </p>
      <table>
        <tr>
          <th>Name</th>
          <th>Type</th>
          <th>Description</th>
        </tr>
        <tr>
          <td>opt</td>
          <td>java.lang.String</td>
          <td>the identification string of the Option.</td>
        </tr>
        <tr>
          <td>longOpt</td>
          <td>java.lang.String</td>
          <td>an alias and more descriptive identification string</td>
        </tr>
        <tr>
          <td>description</td>
          <td>java.lang.String</td>
          <td>a description of the function of the option</td>
        </tr>
        <tr>
          <td>required</td>
          <td>boolean</td>
          <td>a flag to say whether the option <b>must</b> appear on 
            the command line.</td>
        </tr>
        <tr>
          <td>arg</td>
          <td>boolean</td>
          <td>a flag to say whether the option takes an argument</td>
        </tr>
        <tr>
          <td>args</td>
          <td>boolean</td>
          <td>a flag to say whether the option takes more than one argument</td>
        </tr>
        <tr>
          <td>optionalArg</td>
          <td>boolean</td>
          <td>a flag to say whether the option's argument is optional</td>
        </tr>
        <tr>
          <td>argName</td>
          <td>java.lang.String</td>
          <td>the name of the argument value for the usage statement</td>
        </tr>
        <tr>
          <td>valueSeparator</td>
          <td>char</td>
          <td>the character value used to split the argument string, that
            is used in conjunction with multipleArgs e.g.
            if the separator is ',' and the argument string is 'a,b,c' then
            there are three argument values, 'a', 'b' and 'c'.</td>
        </tr>
        <tr>
          <td>type</td>
          <td>java.lang.Object</td>
          <td>the type of the argument</td>
        </tr>
        <tr>
          <td>value</td>
          <td>java.lang.String</td>
          <td>the value of the option</td>
        </tr>
        <tr>
          <td>values</td>
          <td>java.lang.String[]</td>
          <td>the values of the option</td>
        </tr>
      </table>
    </section>
  </body>
</document>
