blank args

This commit is contained in:
mes5k 2004-02-10 04:39:36 +00:00
parent 7295d9d49b
commit 9f691ec858

View File

@ -149,7 +149,7 @@ of "-s asdf", you can do so.
<li>If a required argument isn't provided, the program exits and displays <li>If a required argument isn't provided, the program exits and displays
the USAGE, along with an error message.</li> the USAGE, along with an error message.</li>
</ul> </ul>
<h3>Basic Properties</h3> <h3><i>Basic Properties</i></h3>
Arguments, whatever their type, have a few common basic properties. First Arguments, whatever their type, have a few common basic properties. First
is the flag or the character preceeded by a dash(-) that signals the beginning is the flag or the character preceeded by a dash(-) that signals the beginning
of the argument. Arguments also have names, which can, if desired also be of the argument. Arguments also have names, which can, if desired also be
@ -215,7 +215,7 @@ More <a href="manual.html#VISITORS">later</a> on how we get this to work.
<a name="COMPLICATIONS"></a> <a name="COMPLICATIONS"></a>
<h2>Complications</h2> <h2>Complications</h2>
Naturally, what we have seen to this point doesn't satisfy all of our needs. Naturally, what we have seen to this point doesn't satisfy all of our needs.
<h3>I tried passing multiple values on the command line with the same flag and it didn't work...</h3> <h3><i>I tried passing multiple values on the command line with the same flag and it didn't work...</i></h3>
Correct. You can neither specify mulitple <b>ValueArg</b>s or Correct. You can neither specify mulitple <b>ValueArg</b>s or
<b>SwitchArg</b>s with the same flag in the code nor on the command line. <b>SwitchArg</b>s with the same flag in the code nor on the command line.
Exceptions will occur in either case. For <b>SwitchArg</b>s it simply doesn't Exceptions will occur in either case. For <b>SwitchArg</b>s it simply doesn't
@ -250,7 +250,7 @@ A <b>MultiArg</b> is declared much like a <b>ValueArg</b>:
Note that <b>MultiArg</b>s can be added to the <b>CmdLine</b> in any Note that <b>MultiArg</b>s can be added to the <b>CmdLine</b> in any
order (unlike <a href="manual.html#UNLABELED_MULTI_ARG">UnlabeledMultiArg</a>s). order (unlike <a href="manual.html#UNLABELED_MULTI_ARG">UnlabeledMultiArg</a>s).
<h3>But I don't like labelling all of my arguments... </h3> <h3><i>But I don't like labelling all of my arguments...</i> </h3>
To this point all of our arguments have had labels (flags) indentifying them To this point all of our arguments have had labels (flags) indentifying them
on the command line, but on the command line, but
there are some situations where flags are burdensome and not worth the effort. there are some situations where flags are burdensome and not worth the effort.
@ -287,7 +287,7 @@ is important for unlabeled arguments.
<a name="UNLABELED_MULTI_ARG"></a> <a name="UNLABELED_MULTI_ARG"></a>
<h3>But I want an arbitrary number of arguments to be accepted...</h3> <h3><i>But I want an arbitrary number of arguments to be accepted...</i></h3>
Don't worry, we've got you covered. Say you want a strange command that Don't worry, we've got you covered. Say you want a strange command that
searches each file specified for a given string (lets call it <i>grep</i>), searches each file specified for a given string (lets call it <i>grep</i>),
but you don't want to have to type in all of the file names or write a but you don't want to have to type in all of the file names or write a
@ -348,7 +348,7 @@ floats, etc.) then just declare the <b>UnlabeledMultiArg</b> as type
and parse the different values yourself. and parse the different values yourself.
<a name="XOR"></a> <a name="XOR"></a>
<h3>I want one argument or the other, but not both...</h3> <h3><i>I want one argument or the other, but not both...</i></h3>
<b>New Feature!</b> Suppose you have a command that must read input from one <b>New Feature!</b> Suppose you have a command that must read input from one
of two possible locations, either a local file or a URL. The command of two possible locations, either a local file or a URL. The command
<i>must</i> read something, so <i>one</i> argument is required, but not both, <i>must</i> read something, so <i>one</i> argument is required, but not both,
@ -403,6 +403,30 @@ was not xor'd and wasn't matched, it will also return <b>FALSE</b>.)
</pre> </pre>
<br> <br> <br> <br>
<a name="NO_FLAG"></a>
<h3><i>I have more arguments than single flags make sense for...</i></h3>
<b>New Feature!</b> Some commands have so many options that single flags
no longer map sensibly to the available options. In this case, it is
desirable to specify <b>Arg</b>s using only long options.
This one is easy to accomplish, just make the flag value blank in
the <b>Arg</b> constructor. This will tell the <b>Arg</b> that only the
long option should be matched and will force users to specify the long
option on the command line</b>.
The help output is updated accordingly.
<br> <br>
<pre>
...
ValueArg < string > fileArg("","file","File name",true,"homer","filename");
SwitchArg caseSwitch("","upperCase","Print in upper case",false);
...
</pre>
<br> <br>
<a name="VISITORS"></a> <a name="VISITORS"></a>
<h2>Visitors</h2> <h2>Visitors</h2>
Disclaimer: Almost no one will have any use for Visitors, they were added Disclaimer: Almost no one will have any use for Visitors, they were added
@ -467,7 +491,7 @@ processing any further (as specified in the <i>visit()</i> method).
<a name="EXCEPTIONS"></a> <a name="EXCEPTIONS"></a>
<h2>Exceptions</h2> <h2>Exceptions</h2>
Like all good rules, there are many exceptions.... Like all good rules, there are many exceptions....
<h3>Ignoring arguments...</h3> <h3><i>Ignoring arguments...</i></h3>
The <i>--</i> flag is automatically included in the <b>CmdLine</b>. As (almost) The <i>--</i> flag is automatically included in the <b>CmdLine</b>. As (almost)
per POSIX and GNU standards, any argument specified after the <i>--</i> flag per POSIX and GNU standards, any argument specified after the <i>--</i> flag
is ignored. <i>Almost</i> because if an <b>UnlabeledValueArg</b> that has is ignored. <i>Almost</i> because if an <b>UnlabeledValueArg</b> that has
@ -484,7 +508,7 @@ ignore arguments after the <i>--</i>. To accomodate this, we can make both
<b>UnlabeledValueArg</b>s and <b>UnlabeledMultiArg</b>s ignoreable in <b>UnlabeledValueArg</b>s and <b>UnlabeledMultiArg</b>s ignoreable in
their constructors. See their constructors. See
the <a href="html/index.html">API Documentation</a> for details. the <a href="html/index.html">API Documentation</a> for details.
<h3>Multiple Identical Switches</h3> <h3><i>Multiple Identical Switches</i></h3>
If you absolutely must allow for multiple, identical switches to be allowed, If you absolutely must allow for multiple, identical switches to be allowed,
don't use a <b>SwitchArg</b>, instead use a <b>MultiArg</b> of type don't use a <b>SwitchArg</b>, instead use a <b>MultiArg</b> of type
<i>bool</i>. This means you'll need to specify <i>bool</i>. This means you'll need to specify
@ -492,7 +516,7 @@ a 1 or 0 on the command line with the switch (as values are required), but
this should allow you to turn your favorite switch on and off to your hearts this should allow you to turn your favorite switch on and off to your hearts
content. content.
<a name="DESCRIPTION_EXCEPTIONS"></a> <a name="DESCRIPTION_EXCEPTIONS"></a>
<h3>Type Descriptions</h3> <h3><i>Type Descriptions</i></h3>
Ideally this library would use RTTI to return a human readable name of the Ideally this library would use RTTI to return a human readable name of the
type declared for a particular argument. Unfortunately, at least for g++, type declared for a particular argument. Unfortunately, at least for g++,
the names returned aren't particularly useful. the names returned aren't particularly useful.