Planet
navi homePPSaboutscreenshotsdownloaddevelopmentforum

source: downloads/boost_1_34_1/doc/html/program_options/overview.html @ 46

Last change on this file since 46 was 29, checked in by landauf, 17 years ago

updated boost from 1_33_1 to 1_34_1

File size: 29.9 KB
Line 
1<html>
2<head>
3<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
4<title>Library Overview</title>
5<link rel="stylesheet" href="../boostbook.css" type="text/css">
6<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
7<link rel="start" href="../index.html" title="The Boost C++ Libraries BoostBook Documentation Subset">
8<link rel="up" href="../program_options.html" title="Chapter 10. Boost.Program_options">
9<link rel="prev" href="tutorial.html" title="Tutorial">
10<link rel="next" href="howto.html" title="How To">
11</head>
12<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
13<table cellpadding="2" width="100%">
14<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../boost.png"></td>
15<td align="center"><a href="../../../index.htm">Home</a></td>
16<td align="center"><a href="../../../libs/libraries.htm">Libraries</a></td>
17<td align="center"><a href="../../../people/people.htm">People</a></td>
18<td align="center"><a href="../../../more/faq.htm">FAQ</a></td>
19<td align="center"><a href="../../../more/index.htm">More</a></td>
20</table>
21<hr>
22<div class="spirit-nav">
23<a accesskey="p" href="tutorial.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../program_options.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="howto.html"><img src="../images/next.png" alt="Next"></a>
24</div>
25<div class="section" lang="en">
26<div class="titlepage"><div><div><h2 class="title" style="clear: both">
27<a name="program_options.overview"></a>Library Overview</h2></div></div></div>
28<div class="toc"><dl>
29<dt><span class="section"><a href="overview.html#id1591423">Options Description Component</a></span></dt>
30<dt><span class="section"><a href="overview.html#id1592003">Parsers Component</a></span></dt>
31<dt><span class="section"><a href="overview.html#id1592104">Storage Component</a></span></dt>
32<dt><span class="section"><a href="overview.html#id1592208">Specific parsers</a></span></dt>
33<dt><span class="section"><a href="overview.html#id1592393">Annotated List of Symbols</a></span></dt>
34</dl></div>
35<p>In the tutorial section, we saw several examples of library usage.
36    Here we will describe the overall library design including the primary
37    components and their function.
38  </p>
39<p>The library has three main components:
40    </p>
41<div class="itemizedlist"><ul type="disc">
42<li><p>The options description component, which describes the allowed options
43          and what to do with the values of the options.
44        </p></li>
45<li><p>The parsers component, which uses this information to find option names
46          and values in the input sources and return them.
47        </p></li>
48<li><p>The storage component, which provides the
49          interface to access the value of an option. It also converts the string
50          representation of values that parsers return into desired C++ types.
51        </p></li>
52</ul></div>
53<p>
54  </p>
55<p>To be a little more concrete, the <code class="computeroutput">options_description</code>
56  class is from the options description component, the
57  <code class="computeroutput">parse_command_line</code> function is from the parsers component, and the
58  <code class="computeroutput">variables_map</code> class is from the storage component. </p>
59<p>In the tutorial we've learned how those components can be used by the
60    <code class="computeroutput">main</code> function to parse the command line and config
61    file. Before going into the details of each component, a few notes about
62    the world outside of <code class="computeroutput">main</code>.
63  </p>
64<p>
65    For that outside world, the storage component is the most important. It
66    provides a class which stores all option values and that class can be
67    freely passed around your program to modules which need access to the
68    options. All the other components can be used only in the place where
69    the actual parsing is the done.  However, it might also make sense for the
70    individual program modules to describe their options and pass them to the
71    main module, which will merge all options. Of course, this is only
72    important when the number of options is large and declaring them in one
73    place becomes troublesome.
74  </p>
75<div class="section" lang="en">
76<div class="titlepage"><div><div><h3 class="title">
77<a name="id1591423"></a>Options Description Component</h3></div></div></div>
78<div class="toc"><dl>
79<dt><span class="section"><a href="overview.html#id1591676">Syntactic Information</a></span></dt>
80<dt><span class="section"><a href="overview.html#id1591838">Semantic Information</a></span></dt>
81<dt><span class="section"><a href="overview.html#id1591885">Positional Options</a></span></dt>
82</dl></div>
83<p>The options description component has three main classes:
84      <code class="computeroutput"><a href="../boost/program_options/option_description.html" title="Class option_description">option_description</a></code>, <code class="computeroutput"><a href="../boost/program_options/value_semantic.html" title="Class value_semantic">value_semantic</a></code> and <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code>. The
85      first two together describe a single option. The <code class="computeroutput"><a href="../boost/program_options/option_description.html" title="Class option_description">option_description</a></code>
86      class contains the option's name, description and a pointer to <code class="computeroutput"><a href="../boost/program_options/value_semantic.html" title="Class value_semantic">value_semantic</a></code>,
87      which, in turn, knows the type of the option's value and can parse the value,
88      apply the default value, and so on. The <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code> class is a
89      container for instances of <code class="computeroutput"><a href="../boost/program_options/option_description.html" title="Class option_description">option_description</a></code>.
90    </p>
91<p>For almost every library, those classes could be created in a
92      conventional way: that is, you'd create new options using constructors and
93      then call the <code class="computeroutput">add</code> method of <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code>. However,
94      that's overly verbose for declaring 20 or 30 options. This concern led
95      to creation of the syntax that you've already seen:
96</p>
97<pre class="programlisting">
98options_description desc;
99desc.add_options()
100    ("help", "produce help")
101    ("optimization", value&lt;int&gt;()-&gt;default_value(10), "optimization level")
102    ;
103</pre>
104<p>     
105    </p>
106<p>The call to the <code class="computeroutput">value</code> function creates an instance of
107      a class derived from the <code class="computeroutput">value_semantic</code> class: <code class="computeroutput">typed_value</code>.
108      That class contains the code to parse
109      values of a specific type, and contains a number of methods which can be
110      called by the user to specify additional information. (This
111      essentially emulates named parameters of the constructor.) Calls to
112      <code class="computeroutput">operator()</code> on the object returned by <code class="computeroutput">add_options</code>
113      forward arguments to the constructor of the <code class="computeroutput">option_description</code>
114      class and add the new instance.
115    </p>
116<p>
117      Note that in addition to the
118      <code class="computeroutput">value</code>, library provides the <code class="computeroutput">bool_switch</code>
119      function, and user can write his own function which will return
120      other subclasses of <code class="computeroutput">value_semantic</code> with
121      different behaviour. For the remainder of this section, we'll talk only
122      about the <code class="computeroutput">value</code> function.
123    </p>
124<p>The information about an option is divided into syntactic and
125      semantic. Syntactic information includes the name of the option and the
126      number of tokens which can be used to specify the value. This
127      information is used by parsers to group tokens into (name, value) pairs,
128      where value is just a vector of strings
129      (<code class="computeroutput">std::vector&lt;std::string&gt;</code>). The semantic layer
130      is responsible for converting the value of the option into more usable C++
131      types.
132    </p>
133<p>This separation is an important part of library design. The parsers
134      use only the syntactic layer, which takes away some of the freedom to
135      use overly complex structures. For example, it's not easy to parse
136      syntax like: </p>
137<pre class="screen">calc --expression=1 + 2/3</pre>
138<p> because it's not
139      possible to parse </p>
140<pre class="screen">1 + 2/3</pre>
141<p> without knowing that it's a C
142      expression. With a little help from the user the task becomes trivial,
143      and the syntax clear: </p>
144<pre class="screen">calc --expression="1 + 2/3"</pre>
145<p>
146    </p>
147<div class="section" lang="en">
148<div class="titlepage"><div><div><h4 class="title">
149<a name="id1591676"></a>Syntactic Information</h4></div></div></div>
150<div class="toc"><dl><dt><span class="section"><a href="overview.html#id1591766">Description formatting</a></span></dt></dl></div>
151<p>The syntactic information is provided by the
152        <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">boost::program_options::options_description</a></code> class
153        and some methods of the
154        <code class="computeroutput"><a href="../boost/program_options/value_semantic.html" title="Class value_semantic">boost::program_options::value_semantic</a></code> class
155        and includes:       
156        </p>
157<div class="itemizedlist"><ul type="disc">
158<li><p>
159              name of the option, used to identify the option inside the
160              program,
161            </p></li>
162<li><p>
163              description of the option, which can be presented to the user,
164            </p></li>
165<li><p>
166              the allowed number of source tokens that comprise options's
167              value, which is used during parsing.
168            </p></li>
169</ul></div>
170<p>
171      </p>
172<p>Consider the following example:
173      </p>
174<pre class="programlisting">
175options_description desc;
176desc.add_options()
177    ("help", "produce help message")
178    ("compression", value&lt;string&gt;(), "compression level")
179    ("verbose", value&lt;string&gt;()-&gt;zero_token(), "verbosity level")
180    ("email", value&lt;string&gt;()-&gt;multitoken(), "email to send to")
181    ;
182      </pre>
183<p>
184      For the first parameter, we specify only the name and the
185      description. No value can be specified in the parsed source.
186      For the first option, the user must specify a value, using a single
187      token. For the third option, the user may either provide a single token
188      for the value, or no token at all. For the last option, the value can
189      span several tokens. For example, the following command line is OK:
190      </p>
191<pre class="screen">
192          test --help --compression 10 --verbose --email beadle@mars beadle2@mars
193      </pre>
194<p>     
195      </p>
196<div class="section" lang="en">
197<div class="titlepage"><div><div><h5 class="title">
198<a name="id1591766"></a>Description formatting</h5></div></div></div>
199<p>
200          Sometimes the description can get rather long, for example, when
201          several option's values need separate documentation. Below we
202          describe some simple formatting mechanisms you can use.
203        </p>
204<p>The description string has one or more paragraphs, separated by
205        the newline character ('\n'). When an option is output, the library
206        will compute the indentation for options's description. Each of the
207        paragraph is output as a separate line with that intentation. If
208        a paragraph does not fit on one line it is spanned over multiple
209        lines (which will have the same indentation).
210        </p>
211<p>You may specify additional indent for the first specified by
212        inserting spaces at the beginning of a paragraph. For example:
213        </p>
214<pre class="programlisting">
215options.add_options()
216    ("help", "   A long help msg a long help msg a long help msg a long help
217msg a long help msg a long help msg a long help msg a long help msg ")
218    ; 
219        </pre>
220<p>
221        will specify a four-space indent for the first line. The output will
222        look like:
223        </p>
224<pre class="screen">
225  --help                    A long help msg a long
226                        help msg a long help msg
227                        a long help msg a long
228                        help msg a long help msg
229                        a long help msg a long
230                        help msg
231         
232        </pre>
233<p>
234        </p>
235<p>For the case where line is wrapped, you can want an additional
236        indent for wrapped text. This can be done by
237        inserting a tabulator character ('\t') at the desired position. For
238        example:
239        </p>
240<pre class="programlisting">
241options.add_options()
242      ("well_formated", "As you can see this is a very well formatted
243option description.\n"
244                        "You can do this for example:\n\n"
245                        "Values:\n"
246                        "  Value1: \tdoes this and that, bla bla bla bla
247bla bla bla bla bla bla bla bla bla bla bla\n"
248                        "  Value2: \tdoes something else, bla bla bla bla
249bla bla bla bla bla bla bla bla bla bla bla\n\n"
250                        "    This paragraph has a first line indent only,
251bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla");         
252        </pre>
253<p>
254        will produce:
255        </p>
256<pre class="screen">
257  --well_formated       As you can see this is a
258                        very well formatted
259                        option description.
260                        You can do this for
261                        example:
262
263                        Values:
264                          Value1: does this and
265                                  that, bla bla
266                                  bla bla bla bla
267                                  bla bla bla bla
268                                  bla bla bla bla
269                                  bla
270                          Value2: does something
271                                  else, bla bla
272                                  bla bla bla bla
273                                  bla bla bla bla
274                                  bla bla bla bla
275                                  bla
276
277                            This paragraph has a
278                        first line indent only,
279                        bla bla bla bla bla bla
280                        bla bla bla bla bla bla
281                        bla bla bla
282        </pre>
283<p>
284        The tab character is removed before output. Only one tabulator per
285        paragraph is allowed, otherwisee an exception of type
286        program_options::error is thrown. Finally, the tabulator is ignored if
287        it's is not on the first line of the paragraph or is on the last
288        possible position of the first line.
289        </p>
290</div>
291</div>
292<div class="section" lang="en">
293<div class="titlepage"><div><div><h4 class="title">
294<a name="id1591838"></a>Semantic Information</h4></div></div></div>
295<p>The semantic information is completely provided by the
296        <code class="computeroutput"><a href="../boost/program_options/value_semantic.html" title="Class value_semantic">boost::program_options::value_semantic</a></code> class. For
297        example:
298</p>
299<pre class="programlisting">
300options_description desc;
301desc.add_options()
302    ("compression", value&lt;int&gt;()-&gt;default_value(10), "compression level")
303    ("email", value&lt; vector&lt;string&gt; &gt;()
304        -&gt;composing()-&gt;notifier(&amp;your_function), "email")
305    ;
306</pre>
307<p>     
308        These declarations specify that default value of the first option is 10,
309        that the second option can appear several times and all instances should
310        be merged, and that after parsing is done, the library will  call
311        function <code class="computeroutput">&amp;your_function</code>, passing the value of the
312        "email" option as argument.     
313      </p>
314</div>
315<div class="section" lang="en">
316<div class="titlepage"><div><div><h4 class="title">
317<a name="id1591885"></a>Positional Options</h4></div></div></div>
318<p>Our definition of option as (name, value) pairs is simple and
319        useful, but in one special case of the command line, there's a
320        problem. A command line can include a <em class="firstterm">positional option</em>,
321        which does not specify any name at all, for example:
322        </p>
323<pre class="screen">
324          archiver --compression=9 /etc/passwd
325        </pre>
326<p>
327        Here, the "/etc/passwd" element does not have any option name.
328      </p>
329<p>One solution is to ask the user to extract positional options
330        himself and process them as he likes. However, there's a nicer approach
331        -- provide a method to automatically assign the names for positional
332        options, so that the above command line can be interpreted the same way
333        as:
334        </p>
335<pre class="screen">
336          archiver --compression=9 --input-file=/etc/passwd
337        </pre>
338<p>
339      </p>
340<p>The <code class="computeroutput"><a href="../boost/program_options/positional_options_description.html" title="Class positional_options_description">positional_options_description</a></code> class allows the command line
341        parser to assign the names. The class specifies how many positional options
342        are allowed, and for each allowed option, specifies the name. For example:
343</p>
344<pre class="programlisting">
345positional_options_description pd; pd.add("input-file", 1);
346</pre>
347<p> specifies that for exactly one, first, positional
348        option the name will be "input-file".
349      </p>
350<p>It's possible to specify that a number, or even all positional options, be
351        given the same name.
352</p>
353<pre class="programlisting">
354positional_options_description pd;
355pd.add("output-file", 2).add("input-file", -1);
356</pre>
357<p>
358        In the above example, the first two positional options will be associated
359        with name "output-file", and any others with the name "input-file".
360      </p>
361<div class="warning"><table border="0" summary="Warning">
362<tr>
363<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
364<th align="left">Warning</th>
365</tr>
366<tr><td align="left" valign="top"><p>The <code class="computeroutput"><a href="../boost/program_options/positional_options_description.html" title="Class positional_options_description">positional_options_description</a></code> class only specifies translation from
367      position to name, and the option name should still be registered with
368      an instance of the <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code> class.</p></td></tr>
369</table></div>
370</div>
371</div>
372<div class="section" lang="en">
373<div class="titlepage"><div><div><h3 class="title">
374<a name="id1592003"></a>Parsers Component</h3></div></div></div>
375<p>The parsers component splits input sources into (name, value) pairs.
376      Each parser looks for possible options and consults the options
377      description component to determine if the option is known and how its value
378      is specified. In the simplest case, the name is explicitly specified,
379      which allows the library to decide if such option is known. If it is known, the
380      <code class="computeroutput"><a href="../boost/program_options/value_semantic.html" title="Class value_semantic">value_semantic</a></code> instance determines how the value is specified. (If
381      it is not known, an exception is thrown.) Common
382      cases are when the value is explicitly specified by the user, and when
383      the value cannot be specified by the user, but the presence of the
384      option implies some value (for example, <code class="computeroutput">true</code>). So, the
385      parser checks that the value is specified when needed and not specified
386      when not needed, and returns new (name, value) pair.
387    </p>
388<p>
389      To invoke a parser you typically call a function, passing the options
390      description and command line or config file or something else.
391      The results of parsing are returned as an instance of the <code class="computeroutput">parsed_options</code>
392      class. Typically, that object is passed directly to the storage
393      component. However, it also can be used directly, or undergo some additional
394      processing.
395    </p>
396<p>
397      There are three exceptions to the above model -- all related to
398      traditional usage of the command line. While they require some support
399      from the options description component, the additional complexity is
400      tolerable.
401      </p>
402<div class="itemizedlist"><ul type="disc">
403<li><p>The name specified on the command line may be
404            different from the option name -- it's common to provide a "short option
405            name" alias to a longer name. It's also common to allow an abbreviated name
406            to be specified on the command line.
407          </p></li>
408<li><p>Sometimes it's desirable to specify value as several
409          tokens. For example, an option "--email-recipient" may be followed
410          by several emails, each as a separate command line token. This
411          behaviour is supported, though it can lead to parsing ambiguities
412          and is not enabled by default.
413          </p></li>
414<li><p>The command line may contain positional options -- elements
415            which don't have any name. The command line parser provides a
416            mechanism to guess names for such options, as we've seen in the
417            tutorial.
418          </p></li>
419</ul></div>
420<p>
421    </p>
422</div>
423<div class="section" lang="en">
424<div class="titlepage"><div><div><h3 class="title">
425<a name="id1592104"></a>Storage Component</h3></div></div></div>
426<p>The storage component is responsible for:
427      </p>
428<div class="itemizedlist"><ul type="disc">
429<li><p>Storing the final values of an option into a special class and in
430            regular variables</p></li>
431<li><p>Handling priorities among different sources.</p></li>
432<li><p>Calling user-specified <code class="computeroutput">notify</code> functions with the final
433         values of options.</p></li>
434</ul></div>
435<p>
436    </p>
437<p>Let's consider an example:
438</p>
439<pre class="programlisting">
440variables_map vm;
441store(parse_command_line(argc, argv, desc), vm);
442store(parse_config_file("example.cfg", desc), vm);
443notify(vm);
444</pre>
445<p>
446      The <code class="computeroutput">variables_map</code> class is used to store the option
447      values. The two calls to the <code class="computeroutput">store</code> function add values
448      found on the command line and in the config file. Finally the call to
449      the <code class="computeroutput">notify</code> function runs the user-specified notify
450      functions and stores the values into regular variables, if needed.
451    </p>
452<p>The priority is handled in a simple way: the <code class="computeroutput">store</code>
453      function will not change the value of an option if it's already
454      assigned. In this case, if the command line specifies the value for an
455      option, any value in the config file is ignored.
456    </p>
457<div class="warning"><table border="0" summary="Warning">
458<tr>
459<td rowspan="2" align="center" valign="top" width="25"><img alt="[Warning]" src="../images/warning.png"></td>
460<th align="left">Warning</th>
461</tr>
462<tr><td align="left" valign="top"><p>Don't forget to call the <code class="computeroutput">notify</code> function after you've
463      stored all parsed values.</p></td></tr>
464</table></div>
465</div>
466<div class="section" lang="en">
467<div class="titlepage"><div><div><h3 class="title">
468<a name="id1592208"></a>Specific parsers</h3></div></div></div>
469<div class="toc"><dl><dt><span class="section"><a href="overview.html#id1592214">Environment variables</a></span></dt></dl></div>
470<div class="section" lang="en">
471<div class="titlepage"><div><div><h4 class="title">
472<a name="id1592214"></a>Environment variables</h4></div></div></div>
473<p><em class="firstterm">Environment variables</em> are string variables
474      which are available to all programs via the <code class="computeroutput">getenv</code> function
475      of C runtime library. The operating system allows to set initial values
476      for a given user, and the values can be further changed on the command
477      line.  For example, on Windows one can use the
478      <code class="filename">autoexec.bat</code> file or (on recent versions) the
479      <code class="filename">Control Panel/System/Advanced/Environment Variables</code>
480      dialog, and on Unix &#8212;, the <code class="filename">/etc/profile</code>,
481      <code class="filename">~/.profile</code> and <code class="filename">~/.bash_profile</code>
482      files. Because environment variables can be set for the entire system,
483      they are particularly suitable for options which apply to all programs.
484      </p>
485<p>The environment variables can be parsed with the
486      <code class="computeroutput"><a href="../id1004920-bb.html" title="Function parse_environment">parse_environment</a></code> function. The function have several overloaded
487      versions. The first parameter is always an <code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code>
488      instance, and the second specifies what variables must be processed, and
489      what option names must correspond to it. To describe the second
490      parameter we need to consider naming conventions for environment
491      variables.</p>
492<p>If you have an option that should be specified via environment
493      variable, you need make up the variable's name. To avoid name clashes,
494      we suggest that you use a sufficiently unique prefix for environment
495      variables. Also, while option names are most likely in lower case,
496      environment variables conventionally use upper case. So, for an option
497      name <code class="literal">proxy</code> the environment variable might be called
498      <code class="envar">BOOST_PROXY</code>. During parsing, we need to perform reverse
499      conversion of the names. This is accomplished by passing the choosen
500      prefix as the second parameter of the <code class="computeroutput"><a href="../id1004920-bb.html" title="Function parse_environment">parse_environment</a></code> function.
501      Say, if you pass <code class="literal">BOOST_</code> as the prefix, and there are
502      two variables, <code class="envar">CVSROOT</code> and <code class="envar">BOOST_PROXY</code>, the
503      first variable will be ignored, and the second one will be converted to
504      option <code class="literal">proxy</code>.
505      </p>
506<p>The above logic is sufficient in many cases, but it is also
507      possible to pass, as the second parameter of the <code class="computeroutput"><a href="../id1004920-bb.html" title="Function parse_environment">parse_environment</a></code>
508      function, any function taking a <code class="computeroutput">std::string</code> and returning
509      <code class="computeroutput">std::string</code>. That function will be called for each
510      environment variable and should return either the name of the option, or
511      empty string if the variable should be ignored.
512      </p>
513</div>
514</div>
515<div class="section" lang="en">
516<div class="titlepage"><div><div><h3 class="title">
517<a name="id1592393"></a>Annotated List of Symbols</h3></div></div></div>
518<p>The following table describes all the important symbols in the
519      library, for quick access.</p>
520<div class="informaltable"><table class="table" width="100%">
521<colgroup>
522<col>
523<col>
524</colgroup>
525<thead><tr>
526<th>Symbol</th>
527<th>Description</th>
528</tr></thead>
529<tbody>
530<tr><td colspan="2">Options description component</td></tr>
531<tr>
532<td><code class="computeroutput"><a href="../boost/program_options/options_description.html" title="Class options_description">options_description</a></code></td>
533<td>describes a number of options</td>
534</tr>
535<tr>
536<td><code class="computeroutput"><a href="../boost/program_options/value.html" title="Function value">value</a></code></td>
537<td>defines the option's value</td>
538</tr>
539<tr><td colspan="2">Parsers component</td></tr>
540<tr>
541<td><code class="computeroutput"><a href="../boost/program_options/parse_command_line.html" title="Function template parse_command_line">parse_command_line</a></code></td>
542<td>parses command line (simpified interface)</td>
543</tr>
544<tr>
545<td><code class="computeroutput"><a href="../boost/program_options/basic_command_line_parser.html" title="Class template basic_command_line_parser">basic_command_line_parser</a></code></td>
546<td>parses command line (extended interface)</td>
547</tr>
548<tr>
549<td><code class="computeroutput"><a href="../boost/program_options/parse_config_file.html" title="Function template parse_config_file">parse_config_file</a></code></td>
550<td>parses config file</td>
551</tr>
552<tr>
553<td><code class="computeroutput"><a href="../id1004920-bb.html" title="Function parse_environment">parse_environment</a></code></td>
554<td>parses environment</td>
555</tr>
556<tr><td colspan="2">Storage component</td></tr>
557<tr>
558<td><code class="computeroutput"><a href="../boost/program_options/variables_map.html" title="Class variables_map">variables_map</a></code></td>
559<td>storage for option values</td>
560</tr>
561</tbody>
562</table></div>
563</div>
564</div>
565<table width="100%"><tr>
566<td align="left"></td>
567<td align="right"><small>Copyright © 2002-2004 Vladimir Prus</small></td>
568</tr></table>
569<hr>
570<div class="spirit-nav">
571<a accesskey="p" href="tutorial.html"><img src="../images/prev.png" alt="Prev"></a><a accesskey="u" href="../program_options.html"><img src="../images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../images/home.png" alt="Home"></a><a accesskey="n" href="howto.html"><img src="../images/next.png" alt="Next"></a>
572</div>
573</body>
574</html>
Note: See TracBrowser for help on using the repository browser.