Add breaks
[oota-llvm.git] / docs / CommandLine.html
index 8c59b2b3716d5faf1532b05d4ccd327ca7b80a1d..7353375019101b4a30e102e6a93bcc7f4f378e70 100644 (file)
@@ -84,8 +84,8 @@
     </ol></li>
 </ol>
 
-<div class="doc_text">
-  <p><b>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></b></p>
+<div class="doc_author">
+  <p>Written by <a href="mailto:sabre@nondot.org">Chris Lattner</a></p>
 </div>
 
 <!-- *********************************************************************** -->
@@ -215,10 +215,10 @@ we would like to support the unix standard '<tt>-o &lt;filename&gt;</tt>' option
 to specify where to put the output.  With the CommandLine library, this is
 represented like this:</p>
 
-<p><tt>
-<a name="value_desc_example">
-<a href="#cl::opt">cl::opt</a>&lt;string&gt; OutputFilename("<i>o</i>", <a href="#cl::desc">cl::desc</a>("<i>Specify output filename</i>"), <a href="#cl::value_desc">cl::value_desc</a>("<i>filename</i>"));</a>
-</tt></p>
+<a name="value_desc_example"></a>
+<pre>
+<a href="#cl::opt">cl::opt</a>&lt;string&gt; OutputFilename("<i>o</i>", <a href="#cl::desc">cl::desc</a>("<i>Specify output filename</i>"), <a href="#cl::value_desc">cl::value_desc</a>("<i>filename</i>"));
+</pre>
 
 <p>This declares a global variable "<tt>OutputFilename</tt>" that is used to
 capture the result of the "<tt>o</tt>" argument (first parameter).  We specify
@@ -493,7 +493,7 @@ enum OptLevel {
     clEnumVal(O1, "<i>Enable trivial optimizations</i>"),
     clEnumVal(O2, "<i>Enable default optimizations</i>"),
     clEnumVal(O3, "<i>Enable expensive optimizations</i>"),
-   0));
+   clEnumValEnd));
 
 ...
   if (OptimizationLevel &gt;= O2) doPartialRedundancyElimination(...);
@@ -503,7 +503,8 @@ enum OptLevel {
 <p>This declaration defines a variable "<tt>OptimizationLevel</tt>" of the
 "<tt>OptLevel</tt>" enum type.  This variable can be assigned any of the values
 that are listed in the declaration (Note that the declaration list must be
-terminated with the "<tt>0</tt>" argument!).  The CommandLine library enforces
+terminated with the "<tt>clEnumValEnd</tt>" argument!).  The CommandLine 
+library enforces
 that the user can only specify one of the options, and it ensure that only valid
 enum values can be specified.  The "<tt>clEnumVal</tt>" macros ensure that the
 command line arguments matched the enum values.  With this option added, our
@@ -540,7 +541,7 @@ enum OptLevel {
     clEnumVal(O1        , "<i>Enable trivial optimizations</i>"),
     clEnumVal(O2        , "<i>Enable default optimizations</i>"),
     clEnumVal(O3        , "<i>Enable expensive optimizations</i>"),
-   0));
+   clEnumValEnd));
 
 ...
   if (OptimizationLevel == Debug) outputDebugInfo(...);
@@ -581,7 +582,7 @@ enum DebugLev {
     clEnumValN(nodebuginfo, "none", "<i>disable debug information</i>"),
      clEnumVal(quick,               "<i>enable quick debug information</i>"),
      clEnumVal(detailed,            "<i>enable detailed debug information</i>"),
-    0));
+    clEnumValEnd));
 </pre>
 
 <p>This definition defines an enumerated command line variable of type "<tt>enum
@@ -648,7 +649,7 @@ enum Opts {
     clEnumVal(constprop         , "<i>Constant Propagation</i>"),
    clEnumValN(inlining, "<i>inline</i>", "<i>Procedure Integration</i>"),
     clEnumVal(strip             , "<i>Strip Symbols</i>"),
-  0));
+  clEnumValEnd));
 </pre>
 
 <p>This defines a variable that is conceptually of the type
@@ -870,13 +871,14 @@ name).</p>
 <p>There are several limitations to when <tt>cl::ConsumeAfter</tt> options can
 be specified.  For example, only one <tt>cl::ConsumeAfter</tt> can be specified
 per program, there must be at least one <a href="#positional">positional
-argument</a> specified, and the <tt>cl::ConsumeAfter</tt> option should be a <a
+argument</a> specified, there must not be any <a href="#cl::list">cl::list</a>
+positional arguments, and the <tt>cl::ConsumeAfter</tt> option should be a <a
 href="#cl::list">cl::list</a> option.</p>
 
 </div>
 
 <!-- ======================================================================= -->
-<div class="subsection">
+<div class="doc_subsection">
   <a name="storage">Internal vs External Storage</a>
 </div>
 
@@ -933,7 +935,7 @@ attribute:</p>
 <pre>
 bool DebugFlag;      <i>// the actual value</i>
 static <a href="#cl::opt">cl::opt</a>&lt;bool, true&gt;       <i>// The parser</i>
-Debug("<i>debug</i>", <a href="#cl::desc">cl::desc</a>("<i>Enable debug output</i>")</a>, <a href="#cl::Hidden">cl::Hidden</a>,
+Debug("<i>debug</i>", <a href="#cl::desc">cl::desc</a>("<i>Enable debug output</i>"), <a href="#cl::Hidden">cl::Hidden</a>,
       <a href="#cl::location">cl::location</a>(DebugFlag));
 </pre>
 
@@ -997,7 +999,8 @@ for.</li>
 
 <li><a name="cl::values">The <b><tt>cl::values</tt></b></a> attribute specifies
 the string-to-value mapping to be used by the generic parser.  It takes a
-<b>null terminated</b> list of (option, value, description) triplets that
+<b>clEnumValEnd terminated</b> list of (option, value, description) triplets 
+that
 specify the option name, the value mapped to, and the description shown in the
 <tt>--help</tt> for the tool.  Because the generic parser is used most
 frequently with enum values, two macros are often useful:
@@ -1241,6 +1244,7 @@ input option into (potentially multiple) prefix and grouping options.  The
 strategy basically looks like this:</p>
 
 <p><tt>parse(string OrigInput) {</tt>
+
 <ol>
 <li><tt>string input = OrigInput;</tt>
 <li><tt>if (isOption(input)) return getOption(input).parse();</tt>&nbsp;&nbsp;&nbsp;&nbsp;<i>// Normal option</i>
@@ -1254,11 +1258,11 @@ strategy basically looks like this:</p>
 &nbsp;&nbsp;input = OrigInput;<br>
 &nbsp;&nbsp;while (!isOption(input) &amp;&amp; !input.empty()) input.pop_back();<br>
 }</tt>
-<li><tt>if (!OrigInput.empty()) error();</tt>
-</tt>
+<li><tt>if (!OrigInput.empty()) error();</tt></li>
 
 </ol>
-<tt>}</tt></p>
+
+<p><tt>}</tt></p>
 
 </div>
 
@@ -1283,10 +1287,19 @@ options are equivalent when <tt>cl::CommaSeparated</tt> is specified:
 makes sense to be used in a case where the option is allowed to accept one or
 more values (i.e. it is a <a href="#cl::list">cl::list</a> option).</li>
 
+<li><a name="cl::PositionalEatsArgs">The
+<b><tt>cl::PositionalEatsArgs</tt></b></a> modifier (which only applies to
+positional arguments, and only makes sense for lists) indicates that positional
+argument should consume any strings after it (including strings that start with
+a "-") up until another recognized positional argument.  For example, if you
+have two "eating" positional arguments "<tt>pos1</tt>" and "<tt>pos2</tt>" the
+string "<tt>-pos1 -foo -bar baz -pos2 -bork</tt>" would cause the "<tt>-foo -bar
+-baz</tt>" strings to be applied to the "<tt>-pos1</tt>" option and the
+"<tt>-bork</tt>" string to be applied to the "<tt>-pos2</tt>" option.</li>
+
 </ul>
 
-<p>So far, the only miscellaneous option modifier is the
-<tt>cl::CommaSeparated</tt> modifier.</p>
+<p>So far, these are the only two miscellaneous option modifiers.</p>
 
 </div>
 
@@ -1688,12 +1701,16 @@ tutorial.</p>
 <!-- *********************************************************************** -->
 
 <hr>
-<div class="doc_footer">
-  <address><a href="mailto:sabre@nondot.org">Chris Lattner</a></address>
-  <a href="http://llvm.cs.uiuc.edu">The LLVM Compiler Infrastructure</a>
-  <br>
+<address>
+  <a href="http://jigsaw.w3.org/css-validator/check/referer"><img
+  src="http://jigsaw.w3.org/css-validator/images/vcss" alt="Valid CSS!"></a>
+  <a href="http://validator.w3.org/check/referer"><img
+  src="http://www.w3.org/Icons/valid-html401" alt="Valid HTML 4.01!"></a>
+
+  <a href="mailto:sabre@nondot.org">Chris Lattner</a><br>
+  <a href="http://llvm.cs.uiuc.edu">LLVM Compiler Infrastructure</a><br>
   Last modified: $Date$
-</div>
+</address>
 
 </body>
 </html>