aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/a03647.html
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--docs/doxygen/nel/a03647.html1078
1 files changed, 1078 insertions, 0 deletions
diff --git a/docs/doxygen/nel/a03647.html b/docs/doxygen/nel/a03647.html
new file mode 100644
index 00000000..c86effcd
--- /dev/null
+++ b/docs/doxygen/nel/a03647.html
@@ -0,0 +1,1078 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
+<title>NeL: NLMISC::ICommand class Reference</title>
+<link href="doxygen.css" rel="stylesheet" type="text/css">
+</head><body>
+<!-- Generated by Doxygen 1.3.6 -->
+<div class="qindex"> <form class="search" action="search.php" method="get">
+<a class="qindex" href="main.html">Main&nbsp;Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical&nbsp;List</a> | <a class="qindex" href="annotated.html">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="namespacemembers.html">Namespace&nbsp;Members</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a> | <a class="qindex" href="pages.html">Related&nbsp;Pages</a> | <span class="search"><u>S</u>earch&nbsp;for&nbsp;<input class="search" type="text" name="query" value="" size="20" accesskey="s"/></span></form></div>
+<h1>NLMISC::ICommand Class Reference</h1><code>#include &lt;<a class="el" href="a05585.html">command.h</a>&gt;</code>
+<p>
+<p>Inheritance diagram for NLMISC::ICommand:
+<p><center><img src="a03647.png" usemap="#NLMISC::ICommand_map" border="0" alt=""></center>
+<map name="NLMISC::ICommand_map">
+<area href="a03648.html" alt="NLMISC::IVariable" shape="rect" coords="89,56,258,80">
+<area href="a03646.html" alt="NLMISC::CVariable< T >" shape="rect" coords="0,112,169,136">
+<area href="a03650.html" alt="NLMISC::CVariablePtr< T >" shape="rect" coords="179,112,348,136">
+</map>
+<hr><a name="_details"></a><h2>Detailed Description</h2>
+Create a function that can be call in realtime. Don't use this class directly but use the macro NLMISC_COMMAND <dl compact><dt><b>Author:</b></dt><dd>Vianney Lecroart <p>
+Nevrax France </dd></dl>
+<dl compact><dt><b>Date:</b></dt><dd>2001 </dd></dl>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00094">94</a> of file <a class="el" href="a05585.html">command.h</a>.<table border=0 cellpadding=0 cellspacing=0>
+<tr><td></td></tr>
+<tr><td colspan=2><br><h2>Public Types</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>typedef std::map&lt; std::string,<br>
+ <a class="el" href="a03647.html">ICommand</a> * &gt;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablew1">TCommand</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>enum &nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablew2">TType</a> { <a class="el" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew3">Unknown</a>,
+<a class="el" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew0">Command</a>,
+<a class="el" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew4">Variable</a>
+ }</td></tr>
+
+<tr><td colspan=2><br><h2>Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1ICommanda0">execute</a> (const std::vector&lt; std::string &gt; &amp;args, <a class="el" href="a02813.html">NLMISC::CLog</a> &amp;log, bool quiet, bool human=true)=0</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>const std::string &amp;&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablea2">getName</a> () const </td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1ICommanda2">ICommand</a> (const char *commandName, const char *commandHelp, const char *commandArgs)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">Constructor. <a href="#NLMISC_1_1ICommanda2"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>virtual&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1ICommanda3">~ICommand</a> ()</td></tr>
+
+<tr><td colspan=2><br><h2>Static Public Member Functions</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablee0">execute</a> (const std::string &amp;commandWithArgs, <a class="el" href="a02813.html">NLMISC::CLog</a> &amp;log, bool quiet=false, bool human=true)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablee1">exists</a> (std::string &amp;commandName)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">returns true if the command exists <a href="#NLMISC_1_1IVariablee1"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablee2">expand</a> (std::string &amp;commandName, <a class="el" href="a02813.html">NLMISC::CLog</a> &amp;log=*<a class="el" href="a05378.html#a12">InfoLog</a>)</td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablee4">isCommand</a> (const std::string &amp;str)</td></tr>
+
+<tr><td class="mdescLeft">&nbsp;</td><td class="mdescRight">if the string begin with an upper case, it s a variable, otherwise, it s a command <a href="#NLMISC_1_1IVariablee4"></a><br><br></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablee5">serialCommands</a> (<a class="el" href="a02270.html">IStream</a> &amp;f)</td></tr>
+
+<tr><td colspan=2><br><h2>Data Fields</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariableo0">CommandArgs</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariableo1">HelpString</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03647.html#NLMISC_1_1IVariablew2">TType</a>&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariableo2">Type</a></td></tr>
+
+<tr><td colspan=2><br><h2>Static Public Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top><a class="el" href="a03647.html#NLMISC_1_1IVariablew1">TCommand</a> *&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariables0">Commands</a></td></tr>
+
+<tr><td class="memItemLeft" nowrap align=right valign=top>bool&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariables1">CommandsInit</a></td></tr>
+
+<tr><td colspan=2><br><h2>Protected Attributes</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>std::string&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablep0">_CommandName</a></td></tr>
+
+<tr><td colspan=2><br><h2>Friends</h2></td></tr>
+<tr><td class="memItemLeft" nowrap align=right valign=top>void&nbsp;</td><td class="memItemRight" valign=bottom><a class="el" href="a03647.html#NLMISC_1_1IVariablen0">cbVarChanged</a> (<a class="el" href="a02402.html">CConfigFile::CVar</a> &amp;var)</td></tr>
+
+</table>
+<hr><h2>Member Typedef Documentation</h2>
+<a class="anchor" name="NLMISC_1_1IVariablew1" doxytag="NLMISC::ICommand::TCommand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> typedef std::map&lt;std::string, <a class="el" href="a03647.html">ICommand</a> *&gt; <a class="el" href="a03647.html#NLMISC_1_1IVariablew1">NLMISC::ICommand::TCommand</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00116">116</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+Referenced by <a class="el" href="a05584.html#l00038">ICommand()</a>. </td>
+ </tr>
+</table>
+<hr><h2>Member Enumeration Documentation</h2>
+<a class="anchor" name="NLMISC_1_1IVariablew2" doxytag="NLMISC::ICommand::TType" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> enum <a class="el" href="a03647.html#NLMISC_1_1IVariablew2">NLMISC::ICommand::TType</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+<dl compact><dt><b>Enumeration values: </b></dt><dd>
+<table border=0 cellspacing=2 cellpadding=0>
+<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1IVariablew2NLMISC_1_1IVariablew3" doxytag="Unknown" ></a>Unknown</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1IVariablew2NLMISC_1_1IVariablew0" doxytag="Command" ></a>Command</em>&nbsp;</td><td>
+</td></tr>
+<tr><td valign=top><em><a class="anchor" name="NLMISC_1_1IVariablew2NLMISC_1_1IVariablew4" doxytag="Variable" ></a>Variable</em>&nbsp;</td><td>
+</td></tr>
+</table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00111">111</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+<div class="fragment"><pre>00111 { <a class="code" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew3">Unknown</a>, <a class="code" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew0">Command</a>, <a class="code" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew4">Variable</a> };
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Constructor &amp; Destructor Documentation</h2>
+<a class="anchor" name="NLMISC_1_1ICommanda2" doxytag="NLMISC::ICommand::ICommand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NLMISC::ICommand::ICommand </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>commandName</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>commandHelp</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>const char *&nbsp;</td>
+ <td class="mdname" nowrap> <em>commandArgs</em></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Constructor.
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00038">38</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+References <a class="el" href="a05585.html#l00149">_CommandName</a>, <a class="el" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew0">Command</a>, <a class="el" href="a05585.html#l00108">CommandArgs</a>, <a class="el" href="a05584.html#l00035">Commands</a>, <a class="el" href="a05584.html#l00036">CommandsInit</a>, <a class="el" href="a05585.html#l00107">HelpString</a>, <a class="el" href="a05622.html#l00460">nlstopex</a>, and <a class="el" href="a05585.html#l00116">TCommand</a>.
+<p>
+<div class="fragment"><pre>00039 {
+00040 <span class="comment">// self registration</span>
+00041
+00042 <span class="keywordflow">if</span> (!<a class="code" href="a03647.html#NLMISC_1_1IVariables1">CommandsInit</a>)
+00043 {
+00044 <span class="comment">//nlinfo ("create map");</span>
+00045 <a class="code" href="a03647.html#NLMISC_1_1IVariables0">Commands</a> = <span class="keyword">new</span> <a class="code" href="a03647.html#NLMISC_1_1IVariablew1">TCommand</a>;
+00046 <a class="code" href="a03647.html#NLMISC_1_1IVariables1">CommandsInit</a> = <span class="keyword">true</span>;
+00047 }
+00048
+00049 TCommand::iterator comm = (*Commands).find(commandName);
+00050
+00051 <span class="keywordflow">if</span> (comm != (*Commands).end ())
+00052 {
+00053 <span class="comment">// 2 commands have the same name</span>
+00054 <a class="code" href="a04199.html#a14">nlstopex</a> ((<span class="stringliteral">"There are 2 commands that have the same name in the project (command name '%s'), skip the second definition"</span>, commandName));
+00055 }
+00056 <span class="keywordflow">else</span>
+00057 {
+00058 <span class="comment">// insert the new command in the map</span>
+00059 <span class="comment">//nlinfo ("add command '%s'", commandName);</span>
+00060 <a class="code" href="a03647.html#NLMISC_1_1IVariableo1">HelpString</a> = commandHelp;
+00061 <a class="code" href="a03647.html#NLMISC_1_1IVariableo0">CommandArgs</a> = commandArgs;
+00062 <a class="code" href="a03647.html#NLMISC_1_1IVariablep0">_CommandName</a> = commandName;
+00063 <a class="code" href="a03647.html#NLMISC_1_1IVariableo2">Type</a> = <a class="code" href="a03647.html#NLMISC_1_1IVariablew2NLMISC_1_1IVariablew0">Command</a>;
+00064 (*Commands)[commandName] = <span class="keyword">this</span>;
+00065 }
+00066 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1ICommanda3" doxytag="NLMISC::ICommand::~ICommand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> NLMISC::ICommand::~<a class="el" href="a03647.html">ICommand</a> </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00068">68</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+References <a class="el" href="a05584.html#l00035">Commands</a>, <a class="el" href="a05584.html#l00036">CommandsInit</a>, and <a class="el" href="a05622.html#l00416">nlstop</a>.
+<p>
+<div class="fragment"><pre>00069 {
+00070 <span class="comment">// self deregistration</span>
+00071
+00072 <span class="keywordflow">if</span> (!<a class="code" href="a03647.html#NLMISC_1_1IVariables1">CommandsInit</a>)
+00073 {
+00074 <span class="comment">// should never happen</span>
+00075 <a class="code" href="a04199.html#a12">nlstop</a>;
+00076 <span class="keywordflow">return</span>;
+00077 }
+00078
+00079 <span class="comment">// find the command</span>
+00080
+00081 <span class="keywordflow">for</span> (TCommand::iterator comm = (*Commands).begin(); comm != (*Commands).end(); comm++)
+00082 {
+00083 <span class="keywordflow">if</span> ((*comm).second == <span class="keyword">this</span>)
+00084 {
+00085 <span class="comment">//printf("remove command\n");</span>
+00086 (*Commands).erase (comm);
+00087
+00088 <span class="keywordflow">if</span> ((*Commands).size() == 0)
+00089 {
+00090 <span class="comment">// if the commands map is empty, destroy it</span>
+00091 <span class="comment">//printf("delete map\n");</span>
+00092 <span class="keyword">delete</span> <a class="code" href="a03647.html#NLMISC_1_1IVariables0">Commands</a>;
+00093 <a class="code" href="a03647.html#NLMISC_1_1IVariables1">CommandsInit</a> = <span class="keyword">false</span>;
+00094 }
+00095
+00096 <span class="keywordflow">return</span>;
+00097 }
+00098 }
+00099 <span class="comment">// commands is not found</span>
+00100 <a class="code" href="a04199.html#a12">nlstop</a>;
+00101 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Member Function Documentation</h2>
+<a class="anchor" name="NLMISC_1_1IVariablee0" doxytag="NLMISC::ICommand::execute" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLMISC::ICommand::execute </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>commandWithArgs</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02813.html">NLMISC::CLog</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>log</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>quiet</em> = false, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>human</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Executes the command and display output to the log <dl compact><dt><b>Parameters:</b></dt><dd>
+ <table border="0" cellspacing="2" cellpadding="0">
+ <tr><td valign=top><em>quiet</em>&nbsp;</td><td>true if you don't want to display the "executing the command ..." </td></tr>
+ </table>
+</dl>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00103">103</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+References <a class="el" href="a05943.html#l00323">NLMISC::CLog::displayNL()</a>, and <a class="el" href="a05981.html#l00105">uint</a>.
+<p>
+<div class="fragment"><pre>00104 {
+00105 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Executing command : '%s'"</span>, commandWithArgs.c_str());
+00106
+00107 <span class="comment">// convert the buffer into string vector</span>
+00108 vector&lt;pair&lt;string, vector&lt;string&gt; &gt; &gt; commands;
+00109
+00110 <span class="keywordtype">bool</span> firstArg = <span class="keyword">true</span>;
+00111 <a class="code" href="a04558.html#a15">uint</a> i = 0;
+00112 <span class="keywordflow">while</span> (<span class="keyword">true</span>)
+00113 {
+00114 <span class="comment">// skip whitespace</span>
+00115 <span class="keywordflow">while</span> (<span class="keyword">true</span>)
+00116 {
+00117 <span class="keywordflow">if</span> (i == commandWithArgs.size())
+00118 {
+00119 <span class="keywordflow">goto</span> end;
+00120 }
+00121 <span class="keywordflow">if</span> (commandWithArgs[i] != <span class="charliteral">' '</span> &amp;&amp; commandWithArgs[i] != <span class="charliteral">'\t'</span> &amp;&amp; commandWithArgs[i] != <span class="charliteral">'\n'</span> &amp;&amp; commandWithArgs[i] != <span class="charliteral">'\r'</span>)
+00122 {
+00123 <span class="keywordflow">break</span>;
+00124 }
+00125 i++;
+00126 }
+00127
+00128 <span class="comment">// get param</span>
+00129 string arg;
+00130 <span class="keywordflow">if</span> (commandWithArgs[i] == <span class="charliteral">'\"'</span>)
+00131 {
+00132 <span class="comment">// starting with a quote "</span>
+00133 i++;
+00134 <span class="keywordflow">while</span> (<span class="keyword">true</span>)
+00135 {
+00136 <span class="keywordflow">if</span> (i == commandWithArgs.size())
+00137 {
+00138 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Missing end quote character \""</span>);
+00139 <span class="keywordflow">return</span>;
+00140 }
+00141 <span class="keywordflow">if</span> (commandWithArgs[i] == <span class="charliteral">'"'</span>)
+00142 {
+00143 i++;
+00144 <span class="keywordflow">break</span>;
+00145 }
+00146 <span class="keywordflow">if</span> (commandWithArgs[i] == <span class="charliteral">'\\'</span>)
+00147 {
+00148 <span class="comment">// manage escape char backslash</span>
+00149 i++;
+00150 <span class="keywordflow">if</span> (i == commandWithArgs.size())
+00151 {
+00152 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Missing character after the backslash \\ character"</span>);
+00153 <span class="keywordflow">return</span>;
+00154 }
+00155 <span class="keywordflow">switch</span> (commandWithArgs[i])
+00156 {
+00157 <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>: arg += <span class="charliteral">'\\'</span>; <span class="keywordflow">break</span>; <span class="comment">// double backslash</span>
+00158 <span class="keywordflow">case</span> <span class="charliteral">'n'</span>: arg += <span class="charliteral">'\n'</span>; <span class="keywordflow">break</span>; <span class="comment">// new line</span>
+00159 <span class="keywordflow">case</span> <span class="charliteral">'"'</span>: arg += <span class="charliteral">'"'</span>; <span class="keywordflow">break</span>; <span class="comment">// "</span>
+00160 <span class="keywordflow">default</span>:
+00161 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Unknown escape code '\\%c'"</span>, commandWithArgs[i]);
+00162 <span class="keywordflow">return</span>;
+00163 }
+00164 i++;
+00165 }
+00166 <span class="keywordflow">else</span>
+00167 {
+00168 arg += commandWithArgs[i++];
+00169 }
+00170 }
+00171 }
+00172 <span class="keywordflow">else</span>
+00173 {
+00174 <span class="comment">// normal word</span>
+00175 <span class="keywordflow">while</span> (<span class="keyword">true</span>)
+00176 {
+00177 <span class="keywordflow">if</span> (commandWithArgs[i] == <span class="charliteral">'\\'</span>)
+00178 {
+00179 <span class="comment">// manage escape char backslash</span>
+00180 i++;
+00181 <span class="keywordflow">if</span> (i == commandWithArgs.size())
+00182 {
+00183 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Missing character after the backslash \\ character"</span>);
+00184 <span class="keywordflow">return</span>;
+00185 }
+00186 <span class="keywordflow">switch</span> (commandWithArgs[i])
+00187 {
+00188 <span class="keywordflow">case</span> <span class="charliteral">'\\'</span>: arg += <span class="charliteral">'\\'</span>; <span class="keywordflow">break</span>; <span class="comment">// double backslash</span>
+00189 <span class="keywordflow">case</span> <span class="charliteral">'n'</span>: arg += <span class="charliteral">'\n'</span>; <span class="keywordflow">break</span>; <span class="comment">// new line</span>
+00190 <span class="keywordflow">case</span> <span class="charliteral">'"'</span>: arg += <span class="charliteral">'"'</span>; <span class="keywordflow">break</span>; <span class="comment">// "</span>
+00191 <span class="keywordflow">case</span> <span class="charliteral">';'</span>: arg += <span class="charliteral">';'</span>; <span class="keywordflow">break</span>; <span class="comment">// ;</span>
+00192 <span class="keywordflow">default</span>:
+00193 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a> (<span class="stringliteral">"Unknown escape code '\\%c'"</span>, commandWithArgs[i]);
+00194 <span class="keywordflow">return</span>;
+00195 }
+00196 }
+00197 <span class="keywordflow">else</span> <span class="keywordflow">if</span> (commandWithArgs[i] == <span class="charliteral">';'</span>)
+00198 {
+00199 <span class="comment">// command separator</span>
+00200 <span class="keywordflow">break</span>;
+00201 }
+00202 <span class="keywordflow">else</span>
+00203 {
+00204 arg += commandWithArgs[i];
+00205 }
+00206
+00207 i++;
+00208
+00209 <span class="keywordflow">if</span> (i == commandWithArgs.size() || commandWithArgs[i] == <span class="charliteral">' '</span> || commandWithArgs[i] == <span class="charliteral">'\t'</span> || commandWithArgs[i] == <span class="charliteral">'\n'</span> || commandWithArgs[i] == <span class="charliteral">'\r'</span>)
+00210 {
+00211 <span class="keywordflow">break</span>;
+00212 }
+00213 }
+00214 }
+00215
+00216 <span class="keywordflow">if</span> (!arg.empty())
+00217 {
+00218 <span class="keywordflow">if</span> (firstArg)
+00219 {
+00220 commands.push_back (make_pair(arg, vector&lt;string&gt; () ));
+00221 firstArg = <span class="keyword">false</span>;
+00222 }
+00223 <span class="keywordflow">else</span>
+00224 {
+00225 commands[commands.size()-1].second.push_back (arg);
+00226 }
+00227 }
+00228
+00229 <span class="comment">// separator</span>
+00230 <span class="keywordflow">if</span> (i &lt; commandWithArgs.size() &amp;&amp; commandWithArgs[i] == <span class="charliteral">';'</span>)
+00231 {
+00232 firstArg = <span class="keyword">true</span>;
+00233 i++;
+00234 }
+00235 }
+00236 end:
+00237
+00238 <span class="comment">// displays args for debug purpose</span>
+00239 <span class="comment">/* for (uint u = 0; u &lt; commands.size (); u++)</span>
+00240 <span class="comment"> {</span>
+00241 <span class="comment"> nlinfo ("c '%s'", commands[u].first.c_str());</span>
+00242 <span class="comment"> for (uint t = 0; t &lt; commands[u].second.size (); t++)</span>
+00243 <span class="comment"> {</span>
+00244 <span class="comment"> nlinfo ("p%d '%s'", t, commands[u].second[t].c_str());</span>
+00245 <span class="comment"> }</span>
+00246 <span class="comment"> }</span>
+00247 <span class="comment">*/</span>
+00248
+00249 <span class="keywordflow">for</span> (<a class="code" href="a04558.html#a15">uint</a> u = 0; u &lt; commands.size (); u++)
+00250 {
+00251 <span class="comment">// find the command </span>
+00252 TCommand::iterator comm = (*Commands).find(commands[u].first);
+00253 <span class="keywordflow">if</span> (comm == (*Commands).end ())
+00254 {
+00255 <span class="comment">// the command doesn't exist</span>
+00256 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a>(<span class="stringliteral">"Command '%s' not found, try 'help'"</span>, commands[u].first.c_str());
+00257 }
+00258 <span class="keywordflow">else</span>
+00259 {
+00260 <span class="comment">//nlinfo("execute command '%s'", commands[u].first.c_str());</span>
+00261 <span class="keywordflow">if</span> (!(*comm).second-&gt;execute (commands[u].second, log, quiet, human))
+00262 {
+00263 <span class="keywordflow">if</span> (!quiet) log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a>(<span class="stringliteral">"Bad command usage, try 'help %s'"</span>, commands[u].first.c_str());
+00264 }
+00265 }
+00266 }
+00267 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1ICommanda0" doxytag="NLMISC::ICommand::execute" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> virtual bool NLMISC::ICommand::execute </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::vector&lt; std::string &gt; &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>args</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02813.html">NLMISC::CLog</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>log</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>quiet</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap>bool&nbsp;</td>
+ <td class="mdname" nowrap> <em>human</em> = true</td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [pure virtual]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Implemented in <a class="el" href="a03648.html#NLMISC_1_1IVariablea0">NLMISC::IVariable</a>, <a class="el" href="a03646.html#NLMISC_1_1CVariablea1">NLMISC::CVariable&lt; T &gt;</a>, <a class="el" href="a03646.html#NLMISC_1_1CVariablea1">NLMISC::CVariable&lt; uint16 &gt;</a>, and <a class="el" href="a03646.html#NLMISC_1_1CVariablea1">NLMISC::CVariable&lt; std::string &gt;</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariablee1" doxytag="NLMISC::ICommand::exists" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLMISC::ICommand::exists </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::string &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>commandName</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+returns true if the command exists
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00384">384</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+<div class="fragment"><pre>00385 {
+00386 <span class="keywordflow">return</span> ((*Commands).find(commandName) != (*Commands).end ());
+00387 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariablee2" doxytag="NLMISC::ICommand::expand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLMISC::ICommand::expand </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">std::string &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>commandName</em>, </td>
+ </tr>
+ <tr>
+ <td class="md" nowrap align="right"></td>
+ <td></td>
+ <td class="md" nowrap><a class="el" href="a02813.html">NLMISC::CLog</a> &amp;&nbsp;</td>
+ <td class="mdname" nowrap> <em>log</em> = *<a class="el" href="a05378.html#a12">InfoLog</a></td>
+ </tr>
+ <tr>
+ <td></td>
+ <td class="md">)&nbsp;</td>
+ <td class="md" colspan="2"><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+Command name completion. Case-sensitive. Displays the list after two calls with the same non-unique completion. Completes commands used with prefixes (such as "help " for example) as well.
+<p>
+Definition at line <a class="el" href="a05584.html#l00275">275</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+References <a class="el" href="a05943.html#l00323">NLMISC::CLog::displayNL()</a>, <a class="el" href="a05586.html#l00536">NLMISC::strlwr()</a>, <a class="el" href="a05981.html#l00105">uint</a>, and <a class="el" href="a05981.html#l00100">uint32</a>.
+<p>
+<div class="fragment"><pre>00276 {
+00277 <span class="comment">// Take out the string before the last separator and remember it as a prefix</span>
+00278 <a class="code" href="a04558.html#a11">uint32</a> lastseppos = commandName.find_last_of( <span class="stringliteral">" "</span> );
+00279 string prefix;
+00280 <span class="keywordtype">bool</span> useprefix;
+00281 <span class="keywordflow">if</span> ( lastseppos != string::npos )
+00282 {
+00283 prefix = commandName.substr( 0, lastseppos+1 );
+00284 commandName.erase( 0, lastseppos+1 );
+00285 useprefix = <span class="keyword">true</span>;
+00286 }
+00287 <span class="keywordflow">else</span>
+00288 {
+00289 useprefix = <span class="keyword">false</span>;
+00290 }
+00291
+00292 string lowerCommandName = <a class="code" href="a05378.html#a273">strlwr</a>(const_cast&lt;const string &amp;&gt;(commandName));
+00293 <span class="comment">// Build the list of matching command names</span>
+00294 vector&lt;string&gt; matchingnames;
+00295 <span class="keywordflow">for</span> (TCommand::iterator comm = (*Commands).begin(); comm != (*Commands).end(); comm++)
+00296 {
+00297 string first = <a class="code" href="a05378.html#a273">strlwr</a>(const_cast&lt;const string &amp;&gt;((*comm).first));
+00298 <span class="keywordflow">if</span> (first.find( lowerCommandName ) == 0)
+00299 {
+00300 matchingnames.push_back( (*comm).first );
+00301 }
+00302 }
+00303
+00304 <span class="comment">// Do not complete if there is no result</span>
+00305 <span class="keywordflow">if</span> ( matchingnames.empty() )
+00306 {
+00307 log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a>( <span class="stringliteral">"No matching command"</span> );
+00308 <span class="keywordflow">goto</span> returnFromExpand;
+00309 }
+00310
+00311 <span class="comment">// Complete if there is a single result</span>
+00312 <span class="keywordflow">if</span> ( matchingnames.size() == 1 )
+00313 {
+00314 commandName = matchingnames.front() + <span class="stringliteral">" "</span>;
+00315 <span class="keywordflow">goto</span> returnFromExpand;
+00316 }
+00317
+00318 <span class="comment">// Try to complete to the common part if there are several results</span>
+00319 {
+00320 <span class="comment">// Stop loop when a name size is i or names[i] are different</span>
+00321 string commonstr = commandName;
+00322 <a class="code" href="a04558.html#a15">uint</a> i = commandName.size();
+00323 <span class="keywordflow">while</span> ( <span class="keyword">true</span> )
+00324 {
+00325 <span class="keywordtype">char</span> letter = 0;
+00326 vector&lt;string&gt;::iterator imn;
+00327 <span class="keywordflow">for</span> ( imn=matchingnames.begin(); imn!=matchingnames.end(); ++imn )
+00328 {
+00329 <span class="comment">// Return common string if the next letter is not the same in all matching names</span>
+00330 <span class="keywordflow">if</span> ( ((*imn).size() == i) || ( (letter!=0) &amp;&amp; ((*imn)[i] != letter) ) )
+00331 {
+00332 log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a>( <span class="stringliteral">"(Matching command not unique)"</span> );
+00333 <span class="keyword">static</span> string lastCommandName;
+00334 commandName = commonstr;
+00335 <span class="keywordflow">if</span> ( lastCommandName == commandName )
+00336 {
+00337 <span class="comment">// Display all the matching names </span>
+00338 vector&lt;string&gt;::iterator imn2;
+00339 <span class="comment">//stringstream ss;</span>
+00340 string str;
+00341 <span class="comment">//ss &lt;&lt; "Matching commands:" &lt;&lt; endl;</span>
+00342 str += <span class="stringliteral">"Matching commands:\n"</span>;
+00343 <span class="keywordflow">for</span> ( imn2=matchingnames.begin(); imn2!=matchingnames.end(); ++imn2 )
+00344 {
+00345 <span class="comment">//ss &lt;&lt; " " &lt;&lt; (*imn2);</span>
+00346 str += <span class="stringliteral">" "</span> + (*imn2);
+00347 }
+00348 log.<a class="code" href="a02813.html#NLNET_1_1CNetLoga7">displayNL</a>( <span class="stringliteral">"%s"</span>, str.c_str() );
+00349 }
+00350 lastCommandName = commandName;
+00351 <span class="keywordflow">goto</span> returnFromExpand;
+00352 }
+00353 <span class="comment">// Add the next letter to the common string if it is the same in all matching names</span>
+00354 <span class="keywordflow">else</span> <span class="keywordflow">if</span> ( letter == 0 )
+00355 {
+00356 letter = (*imn)[i];
+00357 }
+00358 }
+00359 commonstr += letter;
+00360 ++i;
+00361 }
+00362 }
+00363
+00364 returnFromExpand:
+00365
+00366 <span class="comment">// Put back the prefix</span>
+00367 <span class="keywordflow">if</span> ( useprefix )
+00368 {
+00369 commandName = prefix + commandName;
+00370 }
+00371 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariablea2" doxytag="NLMISC::ICommand::getName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> const std::string&amp; NLMISC::ICommand::getName </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">void&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap> const<code> [inline]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00145">145</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+References <a class="el" href="a05585.html#l00149">_CommandName</a>.
+<p>
+Referenced by <a class="el" href="a06364.html#l00230">NLNET::cbDirectoryChanged()</a>.
+<p>
+<div class="fragment"><pre>00145 { <span class="keywordflow">return</span> <a class="code" href="a03647.html#NLMISC_1_1IVariablep0">_CommandName</a>; }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariablee4" doxytag="NLMISC::ICommand::isCommand" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool NLMISC::ICommand::isCommand </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top">const std::string &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>str</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [inline, static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+if the string begin with an upper case, it s a variable, otherwise, it s a command
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00137">137</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+<div class="fragment"><pre>00138 {
+00139 <span class="keywordflow">if</span> (str.empty())
+00140 <span class="keywordflow">return</span> <span class="keyword">false</span>;
+00141
+00142 <span class="keywordflow">return</span> isupper(str[0]) == 0;
+00143 }
+</pre></div> </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariablee5" doxytag="NLMISC::ICommand::serialCommands" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void NLMISC::ICommand::serialCommands </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02270.html">IStream</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>f</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [static]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00374">374</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+References <a class="el" href="a06462.html#l00324">NLMISC::IStream::serialCont()</a>.
+<p>
+<div class="fragment"><pre>00375 {
+00376 vector&lt;CSerialCommand&gt; cmd;
+00377 <span class="keywordflow">for</span> (TCommand::iterator comm = (*Commands).begin(); comm != (*Commands).end(); comm++)
+00378 {
+00379 cmd.push_back (<a class="code" href="a03364.html">CSerialCommand</a> ((*comm).first, (*comm).second-&gt;Type));
+00380 }
+00381 f.serialCont (cmd);
+00382 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Friends And Related Function Documentation</h2>
+<a class="anchor" name="NLMISC_1_1IVariablen0" doxytag="NLMISC::ICommand::cbVarChanged" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> void cbVarChanged </td>
+ <td class="md" valign="top">(&nbsp;</td>
+ <td class="md" nowrap valign="top"><a class="el" href="a02402.html">CConfigFile::CVar</a> &amp;&nbsp;</td>
+ <td class="mdname1" valign="top" nowrap> <em>var</em> </td>
+ <td class="md" valign="top">&nbsp;)&nbsp;</td>
+ <td class="md" nowrap><code> [friend]</code></td>
+ </tr>
+
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a06665.html#l00036">36</a> of file <a class="el" href="a06665.html">variable.cpp</a>.
+<p>
+<div class="fragment"><pre>00037 {
+00038 <span class="keywordflow">for</span> (ICommand::TCommand::iterator comm = (*ICommand::Commands).begin(); comm != (*ICommand::Commands).end(); comm++)
+00039 {
+00040 <span class="keywordflow">if</span> ((*comm).second-&gt;Type == ICommand::Variable &amp;&amp; (*comm).second-&gt;_CommandName == cvar.Name)
+00041 {
+00042 <a class="code" href="a03648.html">IVariable</a> *var = (<a class="code" href="a03648.html">IVariable</a> *)((*comm).second);
+00043 string val = cvar.<a class="code" href="a02402.html#NLMISC_1_1CConfigFile_1_1CVarz1933_3">asString</a>();
+00044 <a class="code" href="a04199.html#a1">nlinfo</a> (<span class="stringliteral">"VAR: Setting variable '%s' with value '%s' from config file"</span>, cvar.Name.c_str(), val.c_str());
+00045 var-&gt;<a class="code" href="a03648.html#NLMISC_1_1IVariablea1">fromString</a>(val, <span class="keyword">true</span>);
+00046 }
+00047 }
+00048 }
+</pre></div> </td>
+ </tr>
+</table>
+<hr><h2>Field Documentation</h2>
+<a class="anchor" name="NLMISC_1_1IVariablep0" doxytag="NLMISC::ICommand::_CommandName" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::string <a class="el" href="a03647.html#NLMISC_1_1IVariablep0">NLMISC::ICommand::_CommandName</a><code> [protected]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00149">149</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+Referenced by <a class="el" href="a05585.html#l00145">getName()</a>, <a class="el" href="a05584.html#l00038">ICommand()</a>, and <a class="el" href="a06665.html#l00050">NLMISC::IVariable::init()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariableo0" doxytag="NLMISC::ICommand::CommandArgs" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::string <a class="el" href="a03647.html#NLMISC_1_1IVariableo0">NLMISC::ICommand::CommandArgs</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00108">108</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+Referenced by <a class="el" href="a05584.html#l00038">ICommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariables0" doxytag="NLMISC::ICommand::Commands" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03647.html#NLMISC_1_1IVariablew1">ICommand::TCommand</a> * <a class="el" href="a03647.html#NLMISC_1_1IVariables0">NLMISC::ICommand::Commands</a><code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00035">35</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05584.html#l00038">ICommand()</a>, and <a class="el" href="a05584.html#l00068">~ICommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariables1" doxytag="NLMISC::ICommand::CommandsInit" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> bool <a class="el" href="a03647.html#NLMISC_1_1IVariables1">NLMISC::ICommand::CommandsInit</a><code> [static]</code>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05584.html#l00036">36</a> of file <a class="el" href="a05584.html">command.cpp</a>.
+<p>
+Referenced by <a class="el" href="a05584.html#l00038">ICommand()</a>, and <a class="el" href="a05584.html#l00068">~ICommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariableo1" doxytag="NLMISC::ICommand::HelpString" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> std::string <a class="el" href="a03647.html#NLMISC_1_1IVariableo1">NLMISC::ICommand::HelpString</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00107">107</a> of file <a class="el" href="a05585.html">command.h</a>.
+<p>
+Referenced by <a class="el" href="a05584.html#l00038">ICommand()</a>. </td>
+ </tr>
+</table>
+<a class="anchor" name="NLMISC_1_1IVariableo2" doxytag="NLMISC::ICommand::Type" ></a><p>
+<table class="mdTable" width="100%" cellpadding="2" cellspacing="0">
+ <tr>
+ <td class="mdRow">
+ <table cellpadding="0" cellspacing="0" border="0">
+ <tr>
+ <td class="md" nowrap valign="top"> <a class="el" href="a03647.html#NLMISC_1_1IVariablew2">TType</a> <a class="el" href="a03647.html#NLMISC_1_1IVariableo2">NLMISC::ICommand::Type</a>
+ </table>
+ </td>
+ </tr>
+</table>
+<table cellspacing=5 cellpadding=0 border=0>
+ <tr>
+ <td>
+ &nbsp;
+ </td>
+ <td>
+
+<p>
+
+<p>
+Definition at line <a class="el" href="a05585.html#l00112">112</a> of file <a class="el" href="a05585.html">command.h</a>. </td>
+ </tr>
+</table>
+<hr>The documentation for this class was generated from the following files:<ul>
+<li><a class="el" href="a05585.html">command.h</a><li><a class="el" href="a05584.html">command.cpp</a></ul>
+<hr size="1"><address style="align: right;"><small>Generated on Tue Mar 16 13:45:24 2004 for NeL by
+<a href="http://www.doxygen.org/index.html">
+<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
+</a>1.3.6 </small></address>
+</body>
+</html>