aboutsummaryrefslogtreecommitdiff
path: root/docs/doxygen/nel/form__elm_8cpp-source.html
diff options
context:
space:
mode:
Diffstat (limited to 'docs/doxygen/nel/form__elm_8cpp-source.html')
-rw-r--r--docs/doxygen/nel/form__elm_8cpp-source.html3132
1 files changed, 3132 insertions, 0 deletions
diff --git a/docs/doxygen/nel/form__elm_8cpp-source.html b/docs/doxygen/nel/form__elm_8cpp-source.html
new file mode 100644
index 00000000..37709766
--- /dev/null
+++ b/docs/doxygen/nel/form__elm_8cpp-source.html
@@ -0,0 +1,3132 @@
+<!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
+<HTML>
+<HEAD>
+ <TITLE>nevrax.org : docs</TITLE>
+ <LINK REL=stylesheet TYPE="text/css" HREF="http://www.nevrax.org/inc/css/nevrax.css">
+ <link href="doxygen.css" rel="stylesheet" type="text/css">
+</HEAD>
+<BODY MARGINHEIGHT="0" MARGINWIDTH="0">
+
+<!-- uplinks -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ <TD><IMG width=6 height=14 SRC="http://www.nevrax.org/inc/img/reddots.gif" ALT="#" VSPACE=2 HSPACE=2 BORDER=0 ></TD><TD VALIGN=middle>&nbsp;<A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A>&nbsp;&nbsp;&nbsp;</TD>
+ </TR>
+</TABLE>
+
+<!-- banner Nevrax -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 WIDTH=100%>
+ <TR><TD BGCOLOR="#000000" BACKGROUND="http://www.nevrax.org/inc/img/black_banner.jpg"><A HREF="http://www.nevrax.org"><IMG SRC="http://www.nevrax.org/inc/img/nevrax.gif" WIDTH="170" HEIGHT="45" BORDER=0 ALT="Nevrax" ></A></TD></TR>
+</TABLE>
+
+<!-- main table -->
+<TABLE CELLSPACING=0 CELLPADDING=0 BORDER=0 height=100%>
+ <TR>
+ <TD WIDTH=16><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="10" BORDER=0 ALT=""></TD>
+ <TD WIDTH=140 BGCOLOR=#dddddd VALIGN=TOP ALIGN=middle><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+ <!------ Begin Box ------>
+ <TABLE BORDER=0 CELLSPACING=0 CELLPADDING=0 BGCOLOR=black><TR><TD><TABLE border=0 cellspacing=2 cellpadding=0 width=120><tr><TD ALIGN=middle bgcolor=black>
+ <FONT COLOR=white FACE="sans-serif"><B>Nevrax.org</B></FONT></TD></TR><tr><td colspan=2 bgcolor=#FFFFFF>
+ <TABLE cellspacing=0 cellpadding=1 border=0>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="Rubrique news"><img width=13 height=15 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-news.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/news/" TITLE="News">News</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Rubrique mail"><img width=15 height=11 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-mail.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/mail/" TITLE="Mailing list archive">Mailing-list</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Rubrique docs"><img width=14 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-docs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/docs/" TITLE="Documentation">Documentation</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="Rubrique cvs"><img width=13 height=17 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-cvs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/cvs/" TITLE="CVS Web">CVS</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Rubrique bugs"><img width=20 height=16 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-bugs.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/bugs/" TITLE="Bugtracking">Bugs</a></td></tr>
+ <tr><td ALIGN=middle><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="Rubrique license"><img width=18 height=12 hspace=5 border=0 src=http://www.nevrax.org/inc/img/picto-gpl.gif ALT=#></A></td><td><a class='linkbox' href="http://www.nevrax.org/GPL.php3" TITLE="License">License</a></td></tr>
+ </TABLE>
+ </TD></TR></TABLE></TD></TR></TABLE>
+ <!------ End Box ------>
+
+ </TD>
+ <TD WIDTH=15><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="16" HEIGHT="16" BORDER=0 ALT=""></TD>
+ <TD ALIGN=left valign=top><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="140" HEIGHT="10" BORDER=0 ALT="">
+
+<!-- title -->
+<TABLE background="http://www.nevrax.org/inc/img/redline.gif" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td>
+<A HREF="http://www.nevrax.org/docs/"><img src="http://www.nevrax.org/inc/img/t_docs.gif" ALT="Docs" HEIGHT=20 BORDER=0></A>
+</td><td><IMG SRC="http://www.nevrax.org/inc/img/pixel.gif" WIDTH="1" HEIGHT="1" BORDER=0 ALT="">
+</td></tr></table>
+&nbsp;
+
+<!-- block -->
+<TABLE bgcolor="#dddddd" CELLSPACING=0 CELLPADDING=0 BORDER=0 width=100%><tr><td width=1% valign=middle><img width=6 height=14 hspace=2 vspace=2 src="http://www.nevrax.org/inc/img/reddots.gif"></TD>
+ <TD><B>Documentation</B></TD>
+ <TD ALIGN=RIGHT>&nbsp;</td>
+</tr></table>
+<!-- Generated by Doxygen 1.2.14 -->
+<center>
+<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="namespaces.html">Namespace List</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="namespacemembers.html">Namespace Members</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; <a class="qindex" href="pages.html">Related Pages</a> &nbsp; <a class="qindexRef" doxygen="_cgi:http://www.nevrax.org/cgi-bin/nel-search.cgi" href="http://www.nevrax.org/cgi-bin/nel-search.cgi">Search</a> &nbsp; </center>
+<hr><h1>form_elm.cpp</h1><a href="form__elm_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001
+00007 <font class="comment">/* Copyright, 2000 Nevrax Ltd.</font>
+00008 <font class="comment"> *</font>
+00009 <font class="comment"> * This file is part of NEVRAX NEL.</font>
+00010 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font>
+00011 <font class="comment"> * it under the terms of the GNU General Public License as published by</font>
+00012 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font>
+00013 <font class="comment"> * any later version.</font>
+00014 <font class="comment"></font>
+00015 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font>
+00016 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font>
+00017 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font>
+00018 <font class="comment"> * General Public License for more details.</font>
+00019 <font class="comment"></font>
+00020 <font class="comment"> * You should have received a copy of the GNU General Public License</font>
+00021 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font>
+00022 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font>
+00023 <font class="comment"> * MA 02111-1307, USA.</font>
+00024 <font class="comment"> */</font>
+00025
+00026
+00027 <font class="preprocessor">#include "<a class="code" href="stdgeorges_8h.html">stdgeorges.h</a>"</font>
+00028
+00029 <font class="preprocessor">#include "<a class="code" href="o__xml_8h.html">nel/misc/o_xml.h</a>"</font>
+00030 <font class="preprocessor">#include "<a class="code" href="i__xml_8h.html">nel/misc/i_xml.h</a>"</font>
+00031
+00032 <font class="preprocessor">#include "<a class="code" href="form_8h.html">form.h</a>"</font>
+00033 <font class="preprocessor">#include "<a class="code" href="form__elm_8h.html">form_elm.h</a>"</font>
+00034 <font class="preprocessor">#include "<a class="code" href="form__loader_8h.html">form_loader.h</a>"</font>
+00035 <font class="preprocessor">#include "<a class="code" href="type_8h.html">type.h</a>"</font>
+00036
+00037 <font class="keyword">using</font> <font class="keyword">namespace </font>NLMISC;
+00038 <font class="keyword">using</font> <font class="keyword">namespace </font>std;
+00039
+00040 <font class="keyword">namespace </font>NLGEORGES
+00041 {
+00042
+<a name="l00043"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">00043</a> uint32 CFormElm::LastRound = 0;
+00044
+00045 <font class="comment">// ***************************************************************************</font>
+00046 <font class="comment">// class CFormElm</font>
+00047 <font class="comment">// ***************************************************************************</font>
+00048
+00049 <font class="comment">// ***************************************************************************</font>
+00050
+00051 <font class="keywordtype">void</font> <a class="code" href="namespaceNLGEORGES.html#a0">warning</a> (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... );
+00052
+00053 <font class="comment">// ***************************************************************************</font>
+00054
+<a name="l00055"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a30">00055</a> <font class="keywordtype">bool</font> CFormElm::isArray ()<font class="keyword"> const </font>
+00056 <font class="keyword"></font>{
+00057 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00058 };
+00059
+00060 <font class="comment">// ***************************************************************************</font>
+00061
+<a name="l00062"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a31">00062</a> <font class="keywordtype">bool</font> CFormElm::getArraySize (uint &amp;size)<font class="keyword"> const </font>
+00063 <font class="keyword"></font>{
+00064 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArraySize"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00065 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00066 };
+00067
+00068 <font class="comment">// ***************************************************************************</font>
+00069
+<a name="l00070"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a32">00070</a> <font class="keywordtype">bool</font> CFormElm::getArrayNode (<font class="keyword">const</font> UFormElm **result, uint arrayIndex)<font class="keyword"> const</font>
+00071 <font class="keyword"></font>{
+00072 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNode"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00073 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00074 };
+00075
+00076 <font class="comment">// ***************************************************************************</font>
+00077
+<a name="l00078"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a33">00078</a> <font class="keywordtype">bool</font> CFormElm::getArrayNode (UFormElm **result, uint arrayIndex)
+00079 {
+00080 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNode"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00081 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00082 };
+00083
+00084 <font class="comment">// ***************************************************************************</font>
+00085
+<a name="l00086"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a34">00086</a> <font class="keywordtype">bool</font> CFormElm::getArrayNodeName (std::string &amp;result, uint arrayIndex)<font class="keyword"> const</font>
+00087 <font class="keyword"></font>{
+00088 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNodeName"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00089 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00090 }
+00091
+00092 <font class="comment">// ***************************************************************************</font>
+00093
+<a name="l00094"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a35">00094</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (std::string &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00095 <font class="keyword"></font>{
+00096 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNode"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00097 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00098 }
+00099
+00100 <font class="comment">// ***************************************************************************</font>
+00101
+<a name="l00102"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a36">00102</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (sint8 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00103 <font class="keyword"></font>{
+00104 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00105 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00106 }
+00107
+00108 <font class="comment">// ***************************************************************************</font>
+00109
+<a name="l00110"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a37">00110</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (uint8 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00111 <font class="keyword"></font>{
+00112 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00113 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00114 }
+00115
+00116 <font class="comment">// ***************************************************************************</font>
+00117
+<a name="l00118"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a38">00118</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (sint16 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00119 <font class="keyword"></font>{
+00120 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00121 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00122 }
+00123
+00124 <font class="comment">// ***************************************************************************</font>
+00125
+<a name="l00126"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a39">00126</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (uint16 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00127 <font class="keyword"></font>{
+00128 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00129 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00130 }
+00131
+00132 <font class="comment">// ***************************************************************************</font>
+00133
+<a name="l00134"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a40">00134</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (sint32 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00135 <font class="keyword"></font>{
+00136 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00137 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00138 }
+00139
+00140 <font class="comment">// ***************************************************************************</font>
+00141
+<a name="l00142"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a41">00142</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (uint32 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00143 <font class="keyword"></font>{
+00144 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00145 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00146 }
+00147
+00148 <font class="comment">// ***************************************************************************</font>
+00149
+<a name="l00150"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a42">00150</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (<font class="keywordtype">float</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00151 <font class="keyword"></font>{
+00152 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00153 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00154 }
+00155
+00156 <font class="comment">// ***************************************************************************</font>
+00157
+<a name="l00158"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a43">00158</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (<font class="keywordtype">double</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00159 <font class="keyword"></font>{
+00160 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00161 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00162 }
+00163
+00164 <font class="comment">// ***************************************************************************</font>
+00165
+<a name="l00166"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a44">00166</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (<font class="keywordtype">bool</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00167 <font class="keyword"></font>{
+00168 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00169 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00170 }
+00171
+00172 <font class="comment">// ***************************************************************************</font>
+00173
+<a name="l00174"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a45">00174</a> <font class="keywordtype">bool</font> CFormElm::getArrayValue (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+00175 <font class="keyword"></font>{
+00176 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This node is not an array."</font>);
+00177 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00178 }
+00179
+00180 <font class="comment">// ***************************************************************************</font>
+00181
+<a name="l00182"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a46">00182</a> <font class="keywordtype">bool</font> CFormElm::isStruct ()<font class="keyword"> const </font>
+00183 <font class="keyword"></font>{
+00184 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00185 };
+00186
+00187 <font class="comment">// ***************************************************************************</font>
+00188
+<a name="l00189"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a47">00189</a> <font class="keywordtype">bool</font> CFormElm::isVirtualStruct ()<font class="keyword"> const </font>
+00190 <font class="keyword"></font>{
+00191 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00192 };
+00193
+00194 <font class="comment">// ***************************************************************************</font>
+00195
+<a name="l00196"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a48">00196</a> <font class="keywordtype">bool</font> CFormElm::getDfnName (std::string &amp;dfnName )<font class="keyword"> const</font>
+00197 <font class="keyword"></font>{
+00198 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00199 }
+00200
+00201 <font class="comment">// ***************************************************************************</font>
+00202
+<a name="l00203"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a49">00203</a> <font class="keywordtype">bool</font> CFormElm::getStructSize (uint &amp;size)<font class="keyword"> const </font>
+00204 <font class="keyword"></font>{
+00205 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructSize"</font>, <font class="stringliteral">"This node is not a struct."</font>);
+00206 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00207 };
+00208
+00209 <font class="comment">// ***************************************************************************</font>
+00210
+<a name="l00211"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a50">00211</a> <font class="keywordtype">bool</font> CFormElm::getStructNodeName (uint element, string &amp;result)<font class="keyword"> const </font>
+00212 <font class="keyword"></font>{
+00213 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNodeName"</font>, <font class="stringliteral">"This node is not a struct."</font>);
+00214 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00215 };
+00216
+00217 <font class="comment">// ***************************************************************************</font>
+00218
+<a name="l00219"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a51">00219</a> <font class="keywordtype">bool</font> CFormElm::getStructNode (uint element, <font class="keyword">const</font> UFormElm **result)<font class="keyword"> const </font>
+00220 <font class="keyword"></font>{
+00221 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNode"</font>, <font class="stringliteral">"This node is not a struct."</font>);
+00222 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00223 };
+00224
+00225 <font class="comment">// ***************************************************************************</font>
+00226
+<a name="l00227"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a52">00227</a> <font class="keywordtype">bool</font> CFormElm::getStructNode (uint element, UFormElm **result)
+00228 {
+00229 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNode"</font>, <font class="stringliteral">"This node is not a struct."</font>);
+00230 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00231 };
+00232
+00233 <font class="comment">// ***************************************************************************</font>
+00234
+<a name="l00235"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a53">00235</a> <font class="keywordtype">bool</font> CFormElm::isAtom ()<font class="keyword"> const </font>
+00236 <font class="keyword"></font>{
+00237 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00238 };
+00239
+00240 <font class="comment">// ***************************************************************************</font>
+00241
+<a name="l00242"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a54">00242</a> <font class="keywordtype">bool</font> CFormElm::getValue (string &amp;result, TEval evaluate)<font class="keyword"> const </font>
+00243 <font class="keyword"></font>{
+00244 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00245 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00246 };
+00247
+00248 <font class="comment">// ***************************************************************************</font>
+00249
+<a name="l00250"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a55">00250</a> <font class="keywordtype">bool</font> CFormElm::getValue (sint8 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00251 <font class="keyword"></font>{
+00252 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00253 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00254 }
+00255
+00256 <font class="comment">// ***************************************************************************</font>
+00257
+<a name="l00258"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a56">00258</a> <font class="keywordtype">bool</font> CFormElm::getValue (uint8 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00259 <font class="keyword"></font>{
+00260 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00261 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00262 }
+00263
+00264 <font class="comment">// ***************************************************************************</font>
+00265
+<a name="l00266"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a57">00266</a> <font class="keywordtype">bool</font> CFormElm::getValue (sint16 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00267 <font class="keyword"></font>{
+00268 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00269 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00270 }
+00271
+00272 <font class="comment">// ***************************************************************************</font>
+00273
+<a name="l00274"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a58">00274</a> <font class="keywordtype">bool</font> CFormElm::getValue (uint16 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00275 <font class="keyword"></font>{
+00276 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00277 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00278 }
+00279
+00280 <font class="comment">// ***************************************************************************</font>
+00281
+<a name="l00282"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a59">00282</a> <font class="keywordtype">bool</font> CFormElm::getValue (sint32 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00283 <font class="keyword"></font>{
+00284 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00285 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00286 }
+00287
+00288 <font class="comment">// ***************************************************************************</font>
+00289
+<a name="l00290"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a60">00290</a> <font class="keywordtype">bool</font> CFormElm::getValue (uint32 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00291 <font class="keyword"></font>{
+00292 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00293 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00294 }
+00295
+00296 <font class="comment">// ***************************************************************************</font>
+00297
+<a name="l00298"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a61">00298</a> <font class="keywordtype">bool</font> CFormElm::getValue (<font class="keywordtype">float</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00299 <font class="keyword"></font>{
+00300 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00301 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00302 }
+00303
+00304 <font class="comment">// ***************************************************************************</font>
+00305
+<a name="l00306"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a62">00306</a> <font class="keywordtype">bool</font> CFormElm::getValue (<font class="keywordtype">double</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00307 <font class="keyword"></font>{
+00308 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00309 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00310 }
+00311
+00312 <font class="comment">// ***************************************************************************</font>
+00313
+<a name="l00314"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a63">00314</a> <font class="keywordtype">bool</font> CFormElm::getValue (<font class="keywordtype">bool</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00315 <font class="keyword"></font>{
+00316 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00317 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00318 }
+00319
+00320 <font class="comment">// ***************************************************************************</font>
+00321
+<a name="l00322"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a64">00322</a> <font class="keywordtype">bool</font> CFormElm::getValue (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+00323 <font class="keyword"></font>{
+00324 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValue"</font>, <font class="stringliteral">"This node is not an atom."</font>);
+00325 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00326 }
+00327
+00328 <font class="comment">// ***************************************************************************</font>
+00329
+<a name="l00330"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">00330</a> CFormElm::CFormElm (CForm *form, CFormElm *parentNode, <font class="keyword">const</font> CFormDfn *parentDfn, uint parentIndex)
+00331 {
+00332 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a> = form;
+00333 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n1">ParentNode</a> = parentNode;
+00334 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a> = parentDfn;
+00335 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a> = parentIndex;
+00336 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n4">Round</a> = 0xffffffff;
+00337 }
+00338
+00339 <font class="comment">// ***************************************************************************</font>
+00340
+<a name="l00341"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a1">00341</a> CFormElm::~CFormElm ()
+00342 {
+00343 }
+00344
+00345 <font class="comment">// ***************************************************************************</font>
+00346
+<a name="l00347"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a3">00347</a> <font class="keywordtype">bool</font> CFormElm::isUsed (<font class="keyword">const</font> CForm *form)<font class="keyword"> const</font>
+00348 <font class="keyword"></font>{
+00349 <font class="keywordflow">return</font> form == <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>;
+00350 }
+00351
+00352 <font class="comment">// ***************************************************************************</font>
+00353
+<a name="l00354"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a2">00354</a> CForm *CFormElm::getForm ()<font class="keyword"> const</font>
+00355 <font class="keyword"></font>{
+00356 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>;
+00357 }
+00358
+00359 <font class="comment">// ***************************************************************************</font>
+00360
+<a name="l00361"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a6">00361</a> <font class="keywordtype">bool</font> CFormElm::getNodeByName (UFormElm **result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TWhereIsNode *where, <font class="keywordtype">bool</font> verbose, uint32 round)
+00362 {
+00363 <font class="keywordflow">if</font> (round == 0xffffffff)
+00364 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00365
+00366 <font class="keyword">const</font> UFormElm *resultConst = NULL;
+00367 <font class="keywordflow">if</font> (((<font class="keyword">const</font> UFormElm*)<font class="keyword">this</font>)-&gt;getNodeByName (&amp;resultConst, name, where, verbose, round))
+00368 {
+00369 *result = const_cast&lt;UFormElm*&gt; (resultConst);
+00370 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00371 }
+00372 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00373 }
+00374
+00375 <font class="comment">// ***************************************************************************</font>
+00376
+<a name="l00377"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a5">00377</a> <font class="keywordtype">bool</font> CFormElm::getNodeByName (<font class="keyword">const</font> UFormElm **result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TWhereIsNode *where, <font class="keywordtype">bool</font> verbose, uint32 round)<font class="keyword"> const</font>
+00378 <font class="keyword"></font>{
+00379 <font class="keywordflow">if</font> (round == 0xffffffff)
+00380 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00381
+00382 <font class="comment">// The parent Dfn</font>
+00383 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *parentDfn;
+00384 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *nodeDfn;
+00385 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l1">CType</a> *nodeType;
+00386 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *node;
+00387 uint indexDfn;
+00388 <font class="keywordtype">bool</font> array;
+00389 <font class="keywordtype">bool</font> parentVDfnArray;
+00390 UFormDfn::TEntryType <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>;
+00391
+00392 <font class="comment">// Search for the node</font>
+00393 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a5">getNodeByName</a> (name, &amp;parentDfn, indexDfn, &amp;nodeDfn, &amp;nodeType, &amp;node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, parentVDfnArray, verbose, round))
+00394 {
+00395 <font class="comment">// Set the result</font>
+00396 *result = node;
+00397
+00398 <font class="comment">// Where ?</font>
+00399 <font class="keywordflow">if</font> (where &amp;&amp; node)
+00400 {
+00401 *where = (node-&gt;getForm () == <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>) ? <a class="code" href="classNLGEORGES_1_1UFormElm.html#s13s3">NodeForm</a> : <a class="code" href="classNLGEORGES_1_1UFormElm.html#s13s4">NodeParentForm</a>;
+00402 }
+00403
+00404 <font class="comment">// Ok </font>
+00405 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00406 }
+00407
+00408 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00409 }
+00410
+00411 <font class="comment">// ***************************************************************************</font>
+00412
+<a name="l00413"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">00413</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (string&amp; result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00414 <font class="keyword"></font>{
+00415 <font class="keywordflow">if</font> (round == 0xffffffff)
+00416 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00417
+00418 <font class="comment">// The parent Dfn</font>
+00419 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *parentDfn;
+00420 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *nodeDfn;
+00421 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l1">CType</a> *nodeType;
+00422 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *node;
+00423 uint parentIndex;
+00424 <font class="keywordtype">bool</font> array;
+00425 <font class="keywordtype">bool</font> parentVDfnArray;
+00426 UFormDfn::TEntryType <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>;
+00427
+00428 <font class="comment">// Search for the node</font>
+00429 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a5">getNodeByName</a> (name, &amp;parentDfn, parentIndex, &amp;nodeDfn, &amp;nodeType, &amp;node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, parentVDfnArray, <font class="keyword">true</font>, round))
+00430 {
+00431 <font class="comment">// End, return the current index</font>
+00432 <font class="keywordflow">if</font> (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryType)
+00433 {
+00434 <font class="comment">// The atom</font>
+00435 <font class="keyword">const</font> CFormElmAtom *atom = node ? safe_cast&lt;const CFormElmAtom*&gt; (node) : NULL;
+00436
+00437 <font class="comment">// Evale</font>
+00438 <a class="code" href="debug_8h.html#a6">nlassert</a> (nodeType);
+00439 <font class="keywordflow">return</font> (nodeType-&gt;getValue (result, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, atom, *parentDfn, parentIndex, evaluate, (uint32*)where, round, name));
+00440 }
+00441 <font class="keywordflow">else</font>
+00442 {
+00443 <font class="comment">// Error message</font>
+00444 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValueByName"</font>, <font class="stringliteral">"The node (%s) is not an atom element. Can't return a value."</font>, name);
+00445 }
+00446 }
+00447 <font class="keywordflow">else</font>
+00448 {
+00449 <font class="comment">// Error message</font>
+00450 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getValueByName"</font>, <font class="stringliteral">"Can't find the node (%s)."</font>, name);
+00451 }
+00452
+00453 <font class="comment">// Error</font>
+00454 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00455 }
+00456
+00457 <font class="comment">// ***************************************************************************</font>
+00458
+<a name="l00459"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a8">00459</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (sint8 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00460 <font class="keyword"></font>{
+00461 <font class="keywordflow">if</font> (round == 0xffffffff)
+00462 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00463
+00464 <font class="comment">// Get the string value</font>
+00465 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00466 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00467 {
+00468 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00469 }
+00470
+00471 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00472 }
+00473
+00474 <font class="comment">// ***************************************************************************</font>
+00475
+<a name="l00476"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a9">00476</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (uint8 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00477 <font class="keyword"></font>{
+00478 <font class="keywordflow">if</font> (round == 0xffffffff)
+00479 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00480
+00481 <font class="comment">// Get the string value</font>
+00482 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00483 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00484 {
+00485 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00486 }
+00487
+00488 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00489 }
+00490
+00491 <font class="comment">// ***************************************************************************</font>
+00492
+<a name="l00493"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a10">00493</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (sint16 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00494 <font class="keyword"></font>{
+00495 <font class="keywordflow">if</font> (round == 0xffffffff)
+00496 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00497
+00498 <font class="comment">// Get the string value</font>
+00499 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00500 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00501 {
+00502 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00503 }
+00504
+00505 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00506 }
+00507
+00508 <font class="comment">// ***************************************************************************</font>
+00509
+<a name="l00510"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a11">00510</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (uint16 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00511 <font class="keyword"></font>{
+00512 <font class="keywordflow">if</font> (round == 0xffffffff)
+00513 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00514
+00515 <font class="comment">// Get the string value</font>
+00516 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00517 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00518 {
+00519 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00520 }
+00521
+00522 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00523 }
+00524
+00525 <font class="comment">// ***************************************************************************</font>
+00526
+<a name="l00527"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a12">00527</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (sint32 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00528 <font class="keyword"></font>{
+00529 <font class="keywordflow">if</font> (round == 0xffffffff)
+00530 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00531
+00532 <font class="comment">// Get the string value</font>
+00533 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00534 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00535 {
+00536 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00537 }
+00538
+00539 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00540 }
+00541
+00542 <font class="comment">// ***************************************************************************</font>
+00543
+<a name="l00544"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a13">00544</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (uint32 &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00545 <font class="keyword"></font>{
+00546 <font class="keywordflow">if</font> (round == 0xffffffff)
+00547 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00548
+00549 <font class="comment">// Get the string value</font>
+00550 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00551 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00552 {
+00553 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00554 }
+00555
+00556 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00557 }
+00558
+00559 <font class="comment">// ***************************************************************************</font>
+00560
+<a name="l00561"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a14">00561</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (<font class="keywordtype">float</font> &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00562 <font class="keyword"></font>{
+00563 <font class="keywordflow">if</font> (round == 0xffffffff)
+00564 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00565
+00566 <font class="comment">// Get the string value</font>
+00567 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00568 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00569 {
+00570 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00571 }
+00572
+00573 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00574 }
+00575
+00576 <font class="comment">// ***************************************************************************</font>
+00577
+<a name="l00578"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a15">00578</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (<font class="keywordtype">double</font> &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00579 <font class="keyword"></font>{
+00580 <font class="keywordflow">if</font> (round == 0xffffffff)
+00581 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00582
+00583 <font class="comment">// Get the string value</font>
+00584 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00585 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00586 {
+00587 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00588 }
+00589
+00590 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00591 }
+00592
+00593 <font class="comment">// ***************************************************************************</font>
+00594
+<a name="l00595"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a16">00595</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (<font class="keywordtype">bool</font> &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00596 <font class="keyword"></font>{
+00597 <font class="keywordflow">if</font> (round == 0xffffffff)
+00598 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00599
+00600 <font class="comment">// Get the string value</font>
+00601 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00602 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00603 {
+00604 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00605 }
+00606
+00607 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00608 }
+00609
+00610 <font class="comment">// ***************************************************************************</font>
+00611
+<a name="l00612"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a17">00612</a> <font class="keywordtype">bool</font> CFormElm::getValueByName (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> &amp;result, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, TEval evaluate, TWhereIsValue *where, uint32 round)<font class="keyword"> const</font>
+00613 <font class="keyword"></font>{
+00614 <font class="keywordflow">if</font> (round == 0xffffffff)
+00615 round = <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++;
+00616
+00617 <font class="comment">// Get the string value</font>
+00618 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+00619 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a7">getValueByName</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, name, evaluate, where, round))
+00620 {
+00621 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+00622 }
+00623
+00624 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00625 }
+00626
+00627 <font class="comment">// ***************************************************************************</font>
+00628
+<a name="l00629"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a29">00629</a> UFormElm *CFormElm::getParent ()<font class="keyword"> const</font>
+00630 <font class="keyword"></font>{
+00631 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#n1">ParentNode</a>;
+00632 }
+00633
+00634 <font class="comment">// ***************************************************************************</font>
+00635
+<a name="l00636"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a75">00636</a> <font class="keywordtype">bool</font> CFormElm::createNodeByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn,
+00637 <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType,
+00638 CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>,
+00639 <font class="keywordtype">bool</font> &amp;array, <font class="keywordtype">bool</font> &amp;created)
+00640 {
+00641 *parentDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>;
+00642 indexDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>;
+00643 *nodeDfn = NULL;
+00644 *nodeType = NULL;
+00645 *node = <font class="keyword">this</font>;
+00646 <font class="keywordtype">bool</font> parentVDfnArray;
+00647 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, name, parentDfn, indexDfn, nodeDfn, nodeType, node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>, created, parentVDfnArray, <font class="keyword">true</font>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++);
+00648 }
+00649
+00650 <font class="comment">// ***************************************************************************</font>
+00651
+<a name="l00652"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a76">00652</a> <font class="keywordtype">bool</font> CFormElm::deleteNodeByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn,
+00653 <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType,
+00654 CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>,
+00655 <font class="keywordtype">bool</font> &amp;array)
+00656 {
+00657 *parentDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>;
+00658 indexDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>;
+00659 *nodeDfn = NULL;
+00660 *nodeType = NULL;
+00661 *node = <font class="keyword">this</font>;
+00662 <font class="keywordtype">bool</font> created;
+00663 <font class="keywordtype">bool</font> parentVDfnArray;
+00664 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, name, parentDfn, indexDfn, nodeDfn, nodeType, node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t2">Delete</a>, created, parentVDfnArray, <font class="keyword">true</font>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++);
+00665 }
+00666
+00667 <font class="comment">// ***************************************************************************</font>
+00668
+<a name="l00669"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a77">00669</a> <font class="keywordtype">bool</font> CFormElm::getNodeByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn,
+00670 <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType,
+00671 CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>,
+00672 <font class="keywordtype">bool</font> &amp;array, <font class="keywordtype">bool</font> &amp;parentVDfnArray, <font class="keywordtype">bool</font> verbose, uint32 round)<font class="keyword"> const</font>
+00673 <font class="keyword"></font>{
+00674 *parentDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>;
+00675 indexDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>;
+00676 *nodeDfn = NULL;
+00677 *nodeType = NULL;
+00678 *node = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*)<font class="keyword">this</font>;
+00679 <font class="keywordtype">bool</font> created;
+00680 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, name, parentDfn, indexDfn, nodeDfn, nodeType, node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t0">Return</a>, created, parentVDfnArray, verbose, round);
+00681 }
+00682
+00683 <font class="comment">// ***************************************************************************</font>
+00684
+<a name="l00685"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a78">00685</a> <font class="keywordtype">bool</font> CFormElm::arrayInsertNodeByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn,
+00686 <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType,
+00687 CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>,
+00688 <font class="keywordtype">bool</font> &amp;array, <font class="keywordtype">bool</font> verbose, uint arrayIndex)<font class="keyword"> const</font>
+00689 <font class="keyword"></font>{
+00690 <font class="comment">// Get the node by name</font>
+00691 *parentDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>;
+00692 indexDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>;
+00693 *nodeDfn = NULL;
+00694 *nodeType = NULL;
+00695 *node = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*)<font class="keyword">this</font>;
+00696 <font class="keywordtype">bool</font> created;
+00697 <font class="keywordtype">bool</font> parentVDfnArray;
+00698 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, name, parentDfn, indexDfn, nodeDfn, nodeType, node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>, created, parentVDfnArray, verbose, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++))
+00699 {
+00700 <font class="comment">// Must be in the same form</font>
+00701 <a class="code" href="debug_8h.html#a6">nlassert</a> ((*node) &amp;&amp; ((*node)-&gt;Form == <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>));
+00702
+00703 <font class="comment">// Get its parent</font>
+00704 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *parentNode = (*node)-&gt;ParentNode;
+00705 <font class="keywordflow">if</font> (parentNode-&gt;isArray ())
+00706 {
+00707 <font class="comment">// Cast pointer</font>
+00708 CFormElmArray *array = safe_cast&lt;CFormElmArray*&gt;(parentNode);
+00709
+00710 <font class="comment">// Valid index ?</font>
+00711 <font class="keywordflow">if</font> (arrayIndex&lt;array-&gt;Elements.size ())
+00712 {
+00713 <font class="comment">// Insert the element</font>
+00714 array-&gt;Elements.insert (array-&gt;Elements.begin() + arrayIndex);
+00715
+00716 <font class="comment">// Create a new element</font>
+00717
+00718 <font class="comment">// The new element</font>
+00719 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *newelm = NULL;
+00720 <font class="keywordflow">switch</font> (type)
+00721 {
+00722 <font class="keywordflow">case</font> UFormDfn::EntryType:
+00723 {
+00724 <font class="comment">// Create an atom</font>
+00725 CFormElmAtom *atom = <font class="keyword">new</font> CFormElmAtom (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, array, *parentDfn, indexDfn);
+00726 newelm = atom;
+00727 }
+00728 <font class="keywordflow">break</font>;
+00729 <font class="keywordflow">case</font> UFormDfn::EntryDfn:
+00730 {
+00731 CFormElmStruct *_struct = <font class="keyword">new</font> CFormElmStruct (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, array, *parentDfn, indexDfn);
+00732 _struct-&gt;build (*nodeDfn);
+00733 newelm = _struct;
+00734 }
+00735 <font class="keywordflow">break</font>;
+00736 <font class="keywordflow">case</font> UFormDfn::EntryVirtualDfn:
+00737 <font class="comment">// todo array of virtual struct</font>
+00738 <font class="comment">//newelm = new CFormElmVirtualStruct (Form, array, *parentDfn, indexDfn);</font>
+00739 <font class="keywordflow">break</font>;
+00740 <font class="keywordflow">default</font>:
+00741 <a class="code" href="debug_8h.html#a12">nlstop</a>
+00742 }
+00743
+00744 <a class="code" href="debug_8h.html#a6">nlassert</a> (newelm);
+00745
+00746 <font class="comment">// Set the element pointer</font>
+00747 array-&gt;Elements[arrayIndex].Element = newelm;
+00748
+00749 <font class="comment">// Ok </font>
+00750 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00751 }
+00752 }
+00753 }
+00754 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00755 }
+00756
+00757 <font class="comment">// ***************************************************************************</font>
+00758
+<a name="l00759"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a79">00759</a> <font class="keywordtype">bool</font> CFormElm::arrayDeleteNodeByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn,
+00760 <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType,
+00761 CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>,
+00762 <font class="keywordtype">bool</font> &amp;array, <font class="keywordtype">bool</font> verbose, uint arrayIndex)<font class="keyword"> const</font>
+00763 <font class="keyword"></font>{
+00764 <font class="comment">// Get the node by name</font>
+00765 *parentDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>;
+00766 indexDfn = <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>;
+00767 *nodeDfn = NULL;
+00768 *nodeType = NULL;
+00769 *node = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*)<font class="keyword">this</font>;
+00770 <font class="keywordtype">bool</font> created;
+00771 <font class="keywordtype">bool</font> parentVDfnArray;
+00772 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, name, parentDfn, indexDfn, nodeDfn, nodeType, node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>, created, parentVDfnArray, verbose, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++))
+00773 {
+00774 <font class="comment">// Must be in the same form</font>
+00775 <a class="code" href="debug_8h.html#a6">nlassert</a> ((*node) &amp;&amp; ((*node)-&gt;Form == <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>));
+00776
+00777 <font class="comment">// Get its parent</font>
+00778 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *parentNode = (*node)-&gt;ParentNode;
+00779 <font class="keywordflow">if</font> (parentNode-&gt;isArray ())
+00780 {
+00781 <font class="comment">// Cast pointer</font>
+00782 CFormElmArray *array = safe_cast&lt;CFormElmArray*&gt;(parentNode);
+00783
+00784 <font class="comment">// Valid index ?</font>
+00785 <font class="keywordflow">if</font> (arrayIndex&lt;array-&gt;Elements.size ())
+00786 {
+00787 <font class="comment">// Insert the element</font>
+00788 <font class="keywordflow">if</font> (array-&gt;Elements[arrayIndex].Element)
+00789 <font class="keyword">delete</font> array-&gt;Elements[arrayIndex].Element;
+00790
+00791 <font class="comment">// Erase the entry</font>
+00792 array-&gt;Elements.erase (array-&gt;Elements.begin () + arrayIndex);
+00793
+00794 <font class="comment">// Ok </font>
+00795 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+00796 }
+00797 }
+00798 }
+00799 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+00800 }
+00801
+00802 <font class="comment">// ***************************************************************************</font>
+00803
+<a name="l00804"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">00804</a> <font class="keywordtype">bool</font> CFormElm::getIternalNodeByName (CForm *form, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> CFormDfn **parentDfn, uint &amp;indexDfn, <font class="keyword">const</font> CFormDfn **nodeDfn, <font class="keyword">const</font> CType **nodeType, CFormElm **node, UFormDfn::TEntryType &amp;<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, <font class="keywordtype">bool</font> &amp;array, TNodeAction action, <font class="keywordtype">bool</font> &amp;created, <font class="keywordtype">bool</font> &amp;parentVDfnArray, <font class="keywordtype">bool</font> verbose, uint32 round)
+00805 {
+00806 <font class="comment">// *** Init output variables</font>
+00807 created = <font class="keyword">false</font>;
+00808 parentVDfnArray = <font class="keyword">false</font>;
+00809
+00810 <font class="comment">// ParentDfn or Node..</font>
+00811 <a class="code" href="debug_8h.html#a6">nlassert</a> ( (*parentDfn) || (*node) );
+00812
+00813 <font class="comment">// Error message</font>
+00814 <font class="keywordtype">char</font> error[512];
+00815
+00816 <font class="comment">// Parent exist ?</font>
+00817 <font class="keywordflow">if</font> (*parentDfn)
+00818 {
+00819 <font class="comment">// Get the entry</font>
+00820 <font class="keyword">const</font> CFormDfn::CEntry &amp;theEntry = (*parentDfn)-&gt;getEntry (indexDfn);
+00821
+00822 <font class="comment">// Get the type</font>
+00823 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = theEntry.getType ();
+00824 *nodeType = theEntry.getTypePtr ();
+00825 <font class="keywordflow">if</font> (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryVirtualDfn)
+00826 {
+00827 <font class="keywordflow">if</font> (*node)
+00828 *nodeDfn = safe_cast &lt;CFormElmVirtualStruct*&gt; (*node)-&gt;FormDfn;
+00829 <font class="keywordflow">else</font>
+00830 *nodeDfn = NULL;
+00831 }
+00832 <font class="keywordflow">else</font>
+00833 *nodeDfn = theEntry.getDfnPtr ();
+00834 array = theEntry.getArrayFlag ();
+00835 }
+00836 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (*node)
+00837 {
+00838 <a class="code" href="debug_8h.html#a6">nlassert</a> (!(*node)-&gt;isArray ());
+00839 indexDfn = 0xffffffff;
+00840 *nodeType = (*node)-&gt;isAtom () ? safe_cast&lt;CFormElmAtom*&gt;(*node)-&gt;Type : NULL;
+00841 *nodeDfn = (*node)-&gt;isStruct () ? (<font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *)(safe_cast&lt;CFormElmStruct*&gt;(*node)-&gt;FormDfn) : NULL;
+00842 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = (*node)-&gt;isAtom () ? UFormDfn::EntryType : (*node)-&gt;isVirtualStruct () ? UFormDfn::EntryVirtualDfn : UFormDfn::EntryDfn;
+00843 array = <font class="keyword">false</font>;
+00844 }
+00845
+00846 <font class="comment">// Check node pointer</font>
+00847 <font class="keywordflow">if</font> (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>)
+00848 {
+00849 <a class="code" href="debug_8h.html#a6">nlassert</a> (*node);
+00850 <a class="code" href="debug_8h.html#a6">nlassert</a> ((*node)-&gt;getForm () == form);
+00851 }
+00852
+00853 <font class="comment">// Backup current node</font>
+00854 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *backupFirstElm = *node;
+00855
+00856 <font class="comment">// *** Parsing variables</font>
+00857
+00858 <font class="comment">// Current token start and end</font>
+00859 <font class="keyword">const</font> <font class="keywordtype">char</font> *startToken = name;
+00860 <font class="keyword">const</font> <font class="keywordtype">char</font> *endToken;
+00861
+00862 <font class="comment">// Current token start</font>
+00863 string token;
+00864
+00865 <font class="comment">// Current form name</font>
+00866 string currentName;
+00867 <font class="keywordflow">if</font> (*node)
+00868 (*node)-&gt;getFormName (currentName);
+00869
+00870 <font class="comment">// Error</font>
+00871 uint errorIndex;
+00872
+00873 <font class="comment">// Token code</font>
+00874 uint code;
+00875
+00876 <font class="comment">// Are we parsing an array ?</font>
+00877 <font class="keywordtype">bool</font> inArrayIndex = <font class="keyword">false</font>;
+00878
+00879 <font class="comment">// Index in the array</font>
+00880 uint arrayIndex;
+00881
+00882 <font class="comment">// Bool next token must be an array index</font>
+00883 <font class="keywordtype">bool</font> wantArrayIndex = <font class="keyword">false</font>;
+00884
+00885 <font class="comment">// Last struct elm</font>
+00886 CFormElmStruct *lastStructElm = ((*node)-&gt;ParentNode &amp;&amp; (*node)-&gt;ParentNode-&gt;isStruct ()) ? safe_cast&lt;CFormElmStruct*&gt; ((*node)-&gt;ParentNode) : NULL;
+00887 uint lastStructIndex = 0;
+00888 <font class="keywordflow">if</font> (lastStructElm)
+00889 {
+00890 <font class="comment">// Look for node in the parent</font>
+00891 <font class="keywordflow">for</font> (; lastStructIndex&lt;lastStructElm-&gt;Elements.size (); lastStructIndex++)
+00892 {
+00893 <font class="comment">// The same node ?</font>
+00894 <font class="keywordflow">if</font> (lastStructElm-&gt;Elements[lastStructIndex].Element == (*node))
+00895 <font class="keywordflow">break</font>;
+00896 }
+00897
+00898 <font class="comment">// Must have been found</font>
+00899 <a class="code" href="debug_8h.html#a6">nlassert</a> (lastStructIndex&lt;lastStructElm-&gt;Elements.size ());
+00900 }
+00901
+00902 <font class="comment">// While there is tokens</font>
+00903 <font class="keywordflow">while</font> (endToken = <a class="code" href="classNLGEORGES_1_1CFormElm.html#d0">tokenize</a> (startToken, token, errorIndex, code))
+00904 {
+00905 <font class="comment">// Ready an array index ?</font>
+00906 <font class="keywordflow">if</font> (!inArrayIndex)
+00907 {
+00908 <font class="comment">// For each code</font>
+00909 <font class="keywordflow">switch</font> (code)
+00910 {
+00911 <font class="keywordflow">case</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u0">TokenString</a>:
+00912 {
+00913 <font class="comment">// Need an array index array ?</font>
+00914 <font class="keywordflow">if</font> (wantArrayIndex)
+00915 {
+00916 <font class="comment">// Error message</font>
+00917 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Token (%s) should be an array index."</font>, token.c_str());
+00918 <font class="keywordflow">goto</font> exit;
+00919 }
+00920
+00921 <font class="comment">// Are we a struct ?</font>
+00922 <font class="keywordflow">if</font> ( ((<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryDfn) || (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryVirtualDfn)) <font class="comment">/*&amp;&amp; (!array)*/</font> )
+00923 {
+00924 <font class="comment">// Check the virtual DFN is not empty..</font>
+00925 <font class="keywordflow">if</font> ( (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryVirtualDfn) &amp;&amp; (*nodeDfn == NULL) )
+00926 {
+00927 <font class="comment">// Is it a parent virtual DFN ?</font>
+00928 <font class="keywordflow">if</font> ( (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryVirtualDfn) &amp;&amp; (*node == NULL) )
+00929 parentVDfnArray = <font class="keyword">true</font>;
+00930
+00931 <font class="comment">// Create mode ?</font>
+00932 <font class="keywordflow">if</font> (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>)
+00933 {
+00934 <font class="comment">// Should have a valid node</font>
+00935 <a class="code" href="debug_8h.html#a6">nlassert</a> (*node &amp;&amp; lastStructElm);
+00936
+00937 <font class="comment">// Get the current virtual dfn</font>
+00938 CFormElmVirtualStruct *vStruct = safe_cast&lt;CFormElmVirtualStruct*&gt; (*node);
+00939
+00940 <font class="comment">// Get the form name of the current node</font>
+00941 string formName;
+00942 vStruct-&gt;getFormName (formName, NULL);
+00943
+00944 <font class="comment">// Get the parent node if available</font>
+00945 <font class="keywordflow">for</font> (uint parent=0; parent&lt;form-&gt;getParentCount (); parent++)
+00946 {
+00947 <font class="comment">// Get the parent</font>
+00948 <a class="code" href="classNLGEORGES_1_1CFormElm.html#l0">CForm</a> *parentPtr = form-&gt;getParent (parent);
+00949 <a class="code" href="debug_8h.html#a6">nlassert</a> (parentPtr);
+00950
+00951 <font class="comment">// Get the virtual node by name</font>
+00952 UFormElm *uelm;
+00953 <font class="keywordflow">if</font> (parentPtr-&gt;getRootNode ().getNodeByName (&amp;uelm, formName.c_str (), NULL, verbose, round) &amp;&amp; uelm)
+00954 {
+00955 <font class="comment">// Value node ?</font>
+00956 <font class="keywordflow">if</font> (uelm-&gt;isVirtualStruct ())
+00957 {
+00958 <font class="comment">// Get a virtual struct pointer</font>
+00959 CFormElmVirtualStruct *vStructParent = safe_cast&lt;CFormElmVirtualStruct*&gt; (uelm);
+00960
+00961 <font class="comment">// Copy the DFN filename</font>
+00962 vStruct-&gt;DfnFilename = vStructParent-&gt;DfnFilename;
+00963
+00964 <font class="comment">// Build it</font>
+00965 vStruct-&gt;build (vStructParent-&gt;FormDfn);
+00966
+00967 <font class="comment">// Set the current DFN</font>
+00968 *nodeDfn = vStruct-&gt;FormDfn;
+00969
+00970 <font class="comment">// Stop looking for parent</font>
+00971 <font class="keywordflow">break</font>;
+00972 }
+00973 <font class="keywordflow">else</font>
+00974 {
+00975 <font class="comment">// Error message</font>
+00976 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Internal node parsing error."</font>);
+00977 <font class="keywordflow">goto</font> exit;
+00978 }
+00979 }
+00980 }
+00981 }
+00982
+00983 <font class="comment">// Still no DFN ?</font>
+00984 <font class="keywordflow">if</font> (*nodeDfn == NULL)
+00985 {
+00986 <font class="comment">// Error message</font>
+00987 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Empty virtual struct element. Can't look into it while it is not defined."</font>);
+00988 <font class="keywordflow">goto</font> exit;
+00989 }
+00990 }
+00991
+00992 <font class="comment">// Must hjave a nodeDfn here</font>
+00993 <a class="code" href="debug_8h.html#a6">nlassert</a> (*nodeDfn);
+00994
+00995 <font class="comment">// Look for the element</font>
+00996 uint elementCount = (*nodeDfn)-&gt;getNumEntry ();
+00997
+00998 <font class="comment">// Get the parents</font>
+00999 vector&lt;const CFormDfn*&gt; arrayDfn;
+01000 arrayDfn.reserve ((*nodeDfn)-&gt;countParentDfn ());
+01001 (*nodeDfn)-&gt;getParentDfn (arrayDfn);
+01002
+01003 <font class="comment">// For each parent</font>
+01004 uint i;
+01005 uint formElm = 0;
+01006 <font class="keywordflow">for</font> (i=0; i&lt;arrayDfn.size(); i++)
+01007 {
+01008 <font class="comment">// The dfn</font>
+01009 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> &amp;dfn = *(arrayDfn[i]);
+01010
+01011 <font class="comment">// For each elements</font>
+01012 uint element;
+01013 <font class="keywordflow">for</font> (element=0; element&lt;dfn.Entries.size(); element++)
+01014 {
+01015 <font class="comment">// Good name ?</font>
+01016 <font class="keywordflow">if</font> (dfn.Entries[element].Name == token)
+01017 {
+01018 <font class="comment">// Good one.</font>
+01019 *parentDfn = &amp;dfn;
+01020 indexDfn = element;
+01021 *nodeDfn = dfn.Entries[element].Dfn;
+01022 *nodeType = dfn.Entries[element].Type;
+01023 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = dfn.Entries[element].TypeElement;
+01024 array = dfn.Entries[element].Array;
+01025 wantArrayIndex = array;
+01026
+01027 <font class="comment">// Next node</font>
+01028 <font class="keywordflow">if</font> (*node)
+01029 {
+01030 <font class="comment">// Get next node</font>
+01031 CFormElmStruct *nodeStruct = safe_cast&lt;CFormElmStruct*&gt; (*node);
+01032 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *nextElt = nodeStruct-&gt;Elements[formElm].Element;
+01033
+01034 <font class="comment">// If no next node, watch for parent node</font>
+01035 *node = nextElt;
+01036
+01037 <font class="comment">// Create node</font>
+01038 <font class="keywordflow">if</font> ( (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>) &amp;&amp; (*node == NULL) )
+01039 {
+01040 <font class="comment">// Is an array ?</font>
+01041 <font class="keywordflow">if</font> (array)
+01042 {
+01043 <font class="comment">// Create an atom</font>
+01044 CFormElmArray *atom = <font class="keyword">new</font> CFormElmArray (form, *nodeDfn, *nodeType, nodeStruct, *parentDfn, indexDfn);
+01045 *node = atom;
+01046 }
+01047 <font class="keywordflow">else</font>
+01048 {
+01049 <font class="comment">// What kind of node ?</font>
+01050 <font class="keywordflow">switch</font> (type)
+01051 {
+01052 <font class="keywordflow">case</font> UFormDfn::EntryType:
+01053 {
+01054 <font class="comment">// Create an atom</font>
+01055 CFormElmAtom *atom = <font class="keyword">new</font> CFormElmAtom (form, nodeStruct, *parentDfn, indexDfn);
+01056 *node = atom;
+01057 }
+01058 <font class="keywordflow">break</font>;
+01059 <font class="keywordflow">case</font> UFormDfn::EntryDfn:
+01060 {
+01061 CFormElmStruct *_struct = <font class="keyword">new</font> CFormElmStruct (form, nodeStruct, *parentDfn, indexDfn);
+01062 _struct-&gt;build (*nodeDfn);
+01063 *node = _struct;
+01064 }
+01065 <font class="keywordflow">break</font>;
+01066 <font class="keywordflow">case</font> UFormDfn::EntryVirtualDfn:
+01067 *node = <font class="keyword">new</font> CFormElmVirtualStruct (form, nodeStruct, *parentDfn, indexDfn);
+01068 <font class="keywordflow">break</font>;
+01069 <font class="keywordflow">default</font>:
+01070 <a class="code" href="debug_8h.html#a12">nlstop</a>;
+01071 }
+01072 }
+01073
+01074 <font class="comment">// Node created</font>
+01075 created = <font class="keyword">true</font>;
+01076
+01077 <font class="comment">// Set the node in parent</font>
+01078 nodeStruct-&gt;Elements[formElm].Element = *node;
+01079 }
+01080
+01081 <font class="comment">// Is a virtual DFN ?</font>
+01082 <font class="keywordflow">if</font> ((*node) &amp;&amp; (*node)-&gt;isVirtualStruct ())
+01083 {
+01084 <font class="comment">// Should be NULL</font>
+01085 <a class="code" href="debug_8h.html#a6">nlassert</a> (*nodeDfn == NULL);
+01086
+01087 <font class="comment">// Set the current dfn</font>
+01088 *nodeDfn = safe_cast&lt;const CFormElmVirtualStruct*&gt; (*node)-&gt;FormDfn;
+01089 }
+01090
+01091 <font class="comment">// Save last struct</font>
+01092 lastStructElm = nodeStruct;
+01093 lastStructIndex = formElm;
+01094 }
+01095 <font class="keywordflow">else</font>
+01096 {
+01097 <font class="comment">// Save last struct</font>
+01098 CFormElmStruct *lastStructElm = NULL;
+01099 uint lastStructIndex = 0xffffffff;
+01100
+01101 *node = NULL;
+01102 }
+01103
+01104 <font class="keywordflow">break</font>;
+01105 }
+01106 formElm++;
+01107 }
+01108
+01109 <font class="comment">// Breaked ?</font>
+01110 <font class="keywordflow">if</font> (element!=dfn.Entries.size())
+01111 <font class="keywordflow">break</font>;
+01112 }
+01113
+01114 <font class="comment">// Breaked ?</font>
+01115 <font class="keywordflow">if</font> (i==arrayDfn.size())
+01116 {
+01117 <font class="comment">// Not found</font>
+01118 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Struct does not contain element named (%s)."</font>, token.c_str());
+01119 <font class="keywordflow">goto</font> exit;
+01120 }
+01121 }
+01122 <font class="keywordflow">else</font>
+01123 {
+01124 <font class="comment">// Error message</font>
+01125 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Not a struct element. Can't open the node (%s)."</font>, token.c_str());
+01126 <font class="keywordflow">goto</font> exit;
+01127 }
+01128 }
+01129 <font class="keywordflow">break</font>;
+01130 <font class="keywordflow">case</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u1">TokenPoint</a>:
+01131 {
+01132 <font class="comment">// Need an array index array ?</font>
+01133 <font class="keywordflow">if</font> (wantArrayIndex)
+01134 {
+01135 <font class="comment">// Error message</font>
+01136 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Token (%s) should be an array index."</font>, token.c_str());
+01137 <font class="keywordflow">goto</font> exit;
+01138 }
+01139
+01140 <font class="comment">// Are we a struct ?</font>
+01141 <font class="keywordflow">if</font> ((<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> != UFormDfn::EntryDfn) &amp;&amp; (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> != UFormDfn::EntryVirtualDfn))
+01142 {
+01143 <font class="comment">// Error message</font>
+01144 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Not a struct element. Can't open the node (%s)."</font>, token.c_str());
+01145 <font class="keywordflow">goto</font> exit;
+01146 }
+01147 }
+01148 <font class="keywordflow">break</font>;
+01149 <font class="keywordflow">case</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u2">TokenArrayBegin</a>:
+01150 {
+01151 <font class="comment">// Are we an array ?</font>
+01152 <font class="keywordflow">if</font> (!array)
+01153 {
+01154 <font class="comment">// Error message</font>
+01155 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Not an array element. Can't open the node (%s)."</font>, token.c_str());
+01156 <font class="keywordflow">goto</font> exit;
+01157 }
+01158 inArrayIndex = <font class="keyword">true</font>;
+01159 arrayIndex = 0xffffffff;
+01160 }
+01161 <font class="keywordflow">break</font>;
+01162 <font class="keywordflow">default</font>:
+01163 {
+01164 <font class="comment">// Error message</font>
+01165 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Syntax error at keyword (%s)."</font>, token.c_str ());
+01166 <font class="keywordflow">goto</font> exit;
+01167 }
+01168 <font class="keywordflow">break</font>;
+01169 }
+01170 }
+01171 <font class="keywordflow">else</font>
+01172 {
+01173 <font class="keywordflow">switch</font> (code)
+01174 {
+01175 <font class="keywordflow">case</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u0">TokenString</a>:
+01176 {
+01177 <font class="comment">// To int</font>
+01178 <font class="keywordflow">if</font> (sscanf (token.c_str(), <font class="stringliteral">"%d"</font>, &amp;arrayIndex)!=1)
+01179 {
+01180 <font class="comment">// Error message</font>
+01181 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Keyword (%s) is not an array index."</font>, token.c_str());
+01182 <font class="keywordflow">goto</font> exit;
+01183 }
+01184
+01185 <font class="comment">// Is it a parent virtual DFN ?</font>
+01186 <font class="keywordflow">if</font> (*node == NULL)
+01187 parentVDfnArray = <font class="keyword">true</font>;
+01188
+01189 <font class="comment">// Should have an array defined</font>
+01190 <font class="keywordflow">if</font> (*node)
+01191 {
+01192 <font class="comment">// Check index</font>
+01193 uint arraySize;
+01194 <a class="code" href="debug_8h.html#a9">nlverify</a> ((*node)-&gt;getArraySize (arraySize));
+01195 <font class="keywordflow">if</font> (arrayIndex&gt;=arraySize)
+01196 {
+01197 <font class="comment">// Create mode ?</font>
+01198 <font class="keywordflow">if</font> (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>)
+01199 {
+01200 <font class="comment">// Must be in the same form</font>
+01201 <a class="code" href="debug_8h.html#a6">nlassert</a> ((*node)-&gt;Form == form);
+01202
+01203 <font class="comment">// The array pointer</font>
+01204 CFormElmArray *array = safe_cast&lt;CFormElmArray*&gt;(*node);
+01205 uint oldSize = array-&gt;Elements.size ();
+01206 array-&gt;Elements.resize (arrayIndex+1);
+01207
+01208 <font class="comment">// Insert empty element</font>
+01209 uint i;
+01210 <font class="keywordflow">for</font> (i=oldSize; i&lt;array-&gt;Elements.size (); i++)
+01211 {
+01212 <font class="comment">// The new element</font>
+01213 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *newelm = NULL;
+01214 <font class="keywordflow">switch</font> (type)
+01215 {
+01216 <font class="keywordflow">case</font> UFormDfn::EntryType:
+01217 {
+01218 <font class="comment">// Create an atom</font>
+01219 CFormElmAtom *atom = <font class="keyword">new</font> CFormElmAtom (form, array, *parentDfn, indexDfn);
+01220 newelm = atom;
+01221 }
+01222 <font class="keywordflow">break</font>;
+01223 <font class="keywordflow">case</font> UFormDfn::EntryDfn:
+01224 {
+01225 CFormElmStruct *_struct = <font class="keyword">new</font> CFormElmStruct (form, array, *parentDfn, indexDfn);
+01226 _struct-&gt;build (*nodeDfn);
+01227 newelm = _struct;
+01228 }
+01229 <font class="keywordflow">break</font>;
+01230 <font class="keywordflow">case</font> UFormDfn::EntryVirtualDfn:
+01231 <font class="comment">// todo array of virtual struct</font>
+01232 <font class="comment">//newelm = new CFormElmVirtualStruct (form, array, *parentDfn, indexDfn);</font>
+01233 <font class="keywordflow">break</font>;
+01234 <font class="keywordflow">default</font>:
+01235 <a class="code" href="debug_8h.html#a12">nlstop</a>
+01236 }
+01237
+01238 <a class="code" href="debug_8h.html#a6">nlassert</a> (newelm);
+01239
+01240 <font class="comment">// Node created</font>
+01241 created = <font class="keyword">true</font>;
+01242
+01243 <font class="comment">// Set the element pointer</font>
+01244 array-&gt;Elements[i].Element = newelm;
+01245 }
+01246 }
+01247 <font class="keywordflow">else</font>
+01248 {
+01249 <font class="comment">// Error message</font>
+01250 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Out of array bounds (%d &gt;= %d)."</font>, arrayIndex, arraySize);
+01251 <font class="keywordflow">goto</font> exit;
+01252 }
+01253 }
+01254 }
+01255 <font class="keywordflow">else</font>
+01256 {
+01257 <font class="comment">// Error message</font>
+01258 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Array is not defined."</font>);
+01259 <font class="keywordflow">goto</font> exit;
+01260 }
+01261 }
+01262 <font class="keywordflow">break</font>;
+01263 <font class="keywordflow">case</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u3">TokenArrayEnd</a>:
+01264 {
+01265 <font class="comment">// No need of an array index any more</font>
+01266 wantArrayIndex = <font class="keyword">false</font>;
+01267
+01268 <font class="comment">// Index found ?</font>
+01269 <font class="keywordflow">if</font> (arrayIndex == 0xffffffff)
+01270 {
+01271 <font class="comment">// Error message</font>
+01272 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Missing array index."</font>);
+01273 }
+01274 <font class="keywordflow">else</font>
+01275 {
+01276 <font class="comment">// Let the parent DFN</font>
+01277 <a class="code" href="debug_8h.html#a6">nlassert</a> (*parentDfn)
+01278
+01279 <font class="comment">// New current node</font>
+01280 CFormElmArray *parentNode = safe_cast&lt;CFormElmArray*&gt; (*node);
+01281
+01282 <font class="comment">// Get the element</font>
+01283 *node = parentNode-&gt;Elements[arrayIndex].Element;
+01284
+01285 <font class="comment">// Is a dfn ?</font>
+01286 *nodeDfn = (*parentDfn)-&gt;getEntry (indexDfn).getDfnPtr ();
+01287
+01288 <font class="comment">// Is a type ?</font>
+01289 *nodeType = (*parentDfn)-&gt;getEntry (indexDfn).getTypePtr ();
+01290
+01291 <font class="comment">// Type ?</font>
+01292 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = (*parentDfn)-&gt;getEntry (indexDfn).getType ();
+01293
+01294 <font class="comment">// Can't be an array of array</font>
+01295 array = <font class="keyword">false</font>;
+01296
+01297 <font class="comment">// Not any more in index</font>
+01298 inArrayIndex = <font class="keyword">false</font>;
+01299
+01300 <font class="comment">// What kind of node ?</font>
+01301 <font class="keywordflow">if</font> ( (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t1">Create</a>) &amp;&amp; ( *node == NULL) )
+01302 {
+01303 <font class="keywordflow">switch</font> (type)
+01304 {
+01305 <font class="keywordflow">case</font> UFormDfn::EntryType:
+01306 {
+01307 <font class="comment">// Create an atom</font>
+01308 CFormElmAtom *atom = <font class="keyword">new</font> CFormElmAtom (form, parentNode, *parentDfn, indexDfn);
+01309 *node = atom;
+01310 }
+01311 <font class="keywordflow">break</font>;
+01312 <font class="keywordflow">case</font> UFormDfn::EntryDfn:
+01313 {
+01314 CFormElmStruct *_struct = <font class="keyword">new</font> CFormElmStruct (form, parentNode, *parentDfn, indexDfn);
+01315 _struct-&gt;build (*nodeDfn);
+01316 *node = _struct;
+01317 }
+01318 <font class="keywordflow">break</font>;
+01319 <font class="keywordflow">case</font> UFormDfn::EntryVirtualDfn:
+01320 <font class="comment">// todo array of virtual struct</font>
+01321 <font class="comment">// *node = new CFormElmVirtualStruct (form, parentNode, *parentDfn, indexDfn);</font>
+01322 <font class="keywordflow">break</font>;
+01323 <font class="keywordflow">default</font>:
+01324 <a class="code" href="debug_8h.html#a12">nlstop</a>
+01325 }
+01326
+01327 <a class="code" href="debug_8h.html#a6">nlassert</a> (*node);
+01328
+01329 <font class="comment">// Node created</font>
+01330 created = <font class="keyword">true</font>;
+01331
+01332 <font class="comment">// Set the element pointer</font>
+01333 parentNode-&gt;Elements[arrayIndex].Element = *node;
+01334 }
+01335
+01336 <font class="comment">// Is a virtual DFN ?</font>
+01337 <font class="keywordflow">if</font> ((*node) &amp;&amp; (*node)-&gt;isVirtualStruct ())
+01338 {
+01339 <font class="comment">// Should be NULL</font>
+01340 <a class="code" href="debug_8h.html#a6">nlassert</a> (*nodeDfn == NULL);
+01341
+01342 <font class="comment">// Set the current dfn</font>
+01343 *nodeDfn = safe_cast&lt;const CFormElmVirtualStruct*&gt; (*node)-&gt;FormDfn;
+01344 }
+01345 }
+01346 }
+01347 <font class="keywordflow">break</font>;
+01348 <font class="keywordflow">default</font>:
+01349 {
+01350 <font class="comment">// Error message</font>
+01351 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (error, 512, <font class="stringliteral">"Keyword (%s) is not an array index."</font>, token.c_str());
+01352 <font class="keywordflow">goto</font> exit;
+01353 }
+01354 }
+01355 }
+01356
+01357 <font class="comment">// Concat current adress</font>
+01358 currentName += token;
+01359 startToken = endToken;
+01360 }
+01361 exit:;
+01362
+01363 <font class="comment">// Error ?</font>
+01364 <font class="keywordtype">bool</font> errorAppend = endToken != NULL;
+01365
+01366 <font class="comment">// Continue ?</font>
+01367 <font class="keywordflow">if</font> (!errorAppend)
+01368 {
+01369 <font class="comment">// Delete the node ?</font>
+01370 <font class="keywordflow">if</font> ( (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t2">Delete</a>) &amp;&amp; (*node) )
+01371 {
+01372 <font class="comment">// Get its parent</font>
+01373 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *parent = safe_cast&lt;CFormElm*&gt; ((*node)-&gt;getParent ());
+01374
+01375 <font class="comment">// Don't erase the root structure</font>
+01376 <font class="keywordflow">if</font> (parent &amp;&amp; !parent-&gt;isArray ())
+01377 {
+01378 <font class="comment">// Unlink the primitive from its parent</font>
+01379 parent-&gt;unlink (*node);
+01380
+01381 <font class="comment">// Erase the node</font>
+01382 <font class="keyword">delete</font> (*node);
+01383 *node = parent;
+01384 parent = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*) (parent-&gt;getParent ());
+01385
+01386 <font class="comment">// For each parent</font>
+01387 <font class="keywordflow">while</font> (parent &amp;&amp; !(*node)-&gt;isUsed (form) &amp;&amp; !parent-&gt;isArray ())
+01388 {
+01389 <font class="comment">// Unlink the primitive from its parent</font>
+01390 parent-&gt;unlink (*node);
+01391
+01392 <font class="comment">// Erase it and get next parent</font>
+01393 <font class="keyword">delete</font> (*node);
+01394 *node = parent;
+01395 parent = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*) (parent-&gt;getParent ());
+01396 }
+01397
+01398 <font class="comment">// No more node</font>
+01399 *node = NULL;
+01400 }
+01401 }
+01402 }
+01403
+01404 <font class="comment">// Node not found in get node ? Look in parents !</font>
+01405 <font class="keywordflow">if</font> ( ((*node) == NULL) &amp;&amp; (action == <a class="code" href="classNLGEORGES_1_1CFormElm.html#t3t0">Return</a>) &amp;&amp; backupFirstElm )
+01406 {
+01407 <font class="comment">// Get the path name</font>
+01408 string formName;
+01409 backupFirstElm-&gt;getFormName (formName);
+01410 uint formNameSize = formName.size ();
+01411 <font class="keywordflow">if</font> ((formNameSize &gt; 0) &amp;&amp; (formName[formNameSize-1] != <font class="charliteral">'.'</font>) &amp;&amp; (formName[formNameSize-1] != <font class="charliteral">'['</font>))
+01412 formName += <font class="stringliteral">"."</font>;
+01413 formName += name;
+01414
+01415 <font class="comment">// Backup first parent default value</font>
+01416 <font class="keywordtype">bool</font> defaultValue = <font class="keyword">false</font>;
+01417 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *defaultParentDfnParent;
+01418 uint defaultIndexDfnParent;
+01419 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *defaultNodeDfnParent;
+01420 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l1">CType</a> *defaultNodeTypeParent;
+01421 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *defaultNodeParent;
+01422 UFormDfn::TEntryType defaultTypeParent;
+01423 <font class="keywordtype">bool</font> defaultArrayParent;
+01424 <font class="keywordtype">bool</font> defaultCreatedParent;
+01425 <font class="keywordtype">bool</font> defaultParentVDfnArray;
+01426
+01427 <font class="comment">// Look in parent form</font>
+01428 <font class="keywordflow">for</font> (uint parent=0; parent&lt;form-&gt;getParentCount (); parent++)
+01429 {
+01430 <font class="comment">// Get the parent</font>
+01431 <a class="code" href="classNLGEORGES_1_1CFormElm.html#l0">CForm</a> *parentPtr = form-&gt;getParent (parent);
+01432 <a class="code" href="debug_8h.html#a6">nlassert</a> (parentPtr);
+01433
+01434 <font class="comment">// Get the node by name in the parent</font>
+01435 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *parentDfnParent = NULL;
+01436 uint indexDfnParent = 0xffffffff;
+01437 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *nodeDfnParent = NULL;
+01438 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l1">CType</a> *nodeTypeParent = NULL;
+01439 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *nodeParent = (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a>*)&amp;parentPtr-&gt;getRootNode ();
+01440 UFormDfn::TEntryType typeParent;
+01441 <font class="keywordtype">bool</font> arrayParent;
+01442 <font class="keywordtype">bool</font> createdParent;
+01443 <font class="keywordtype">bool</font> parentVDfnArray;
+01444 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#e0">getIternalNodeByName</a> (parentPtr, formName.c_str (), &amp;parentDfnParent, indexDfnParent, &amp;nodeDfnParent, &amp;nodeTypeParent, &amp;nodeParent, typeParent, arrayParent, action, createdParent, parentVDfnArray, <font class="keyword">false</font>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>))
+01445 {
+01446 <font class="comment">// Node found ?</font>
+01447 <font class="keywordflow">if</font> (nodeParent)
+01448 {
+01449 <font class="comment">// Found copy return values</font>
+01450 *parentDfn = parentDfnParent;
+01451 indexDfn = indexDfnParent;
+01452 *nodeDfn = nodeDfnParent;
+01453 *nodeType = nodeTypeParent;
+01454 *node = nodeParent;
+01455 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = typeParent;
+01456 array = arrayParent;
+01457 created = createdParent;
+01458
+01459 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01460 }
+01461 <font class="keywordflow">else</font>
+01462 {
+01463 <font class="comment">// Backup the first parent default value found</font>
+01464 <font class="keywordflow">if</font> (!defaultValue)
+01465 {
+01466 defaultParentDfnParent = parentDfnParent;
+01467 defaultIndexDfnParent = indexDfnParent;
+01468 defaultNodeDfnParent = nodeDfnParent;
+01469 defaultNodeTypeParent = nodeTypeParent;
+01470 defaultNodeParent = nodeParent;
+01471 defaultTypeParent = typeParent;
+01472 defaultArrayParent = arrayParent;
+01473 defaultCreatedParent = createdParent;
+01474 defaultParentVDfnArray = parentVDfnArray;
+01475 defaultValue = <font class="keyword">true</font>;
+01476 }
+01477 }
+01478 }
+01479 }
+01480
+01481 <font class="comment">// Default value available ?</font>
+01482 <font class="keywordflow">if</font> (defaultValue)
+01483 {
+01484 *parentDfn = defaultParentDfnParent;
+01485 indexDfn = defaultIndexDfnParent;
+01486 *nodeDfn = defaultNodeDfnParent;
+01487 *nodeType = defaultNodeTypeParent;
+01488 *node = defaultNodeParent;
+01489 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = defaultTypeParent;
+01490 array = defaultArrayParent;
+01491 created = defaultCreatedParent;
+01492 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01493 }
+01494 }
+01495
+01496 <font class="comment">// Recurce warning !</font>
+01497 <font class="keywordflow">if</font> (*node)
+01498 {
+01499 <font class="keywordflow">if</font> ((*node)-&gt;Round == round)
+01500 {
+01501 <font class="comment">// Turn around..</font>
+01502 string formName;
+01503 (*node)-&gt;getFormName (formName);
+01504 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, formName.c_str (), form-&gt;getFilename ().c_str(), <font class="stringliteral">"getIternalNodeByName"</font>, <font class="stringliteral">"Recurcive call on the same node (%s), look for loop references or inheritances."</font>, name);
+01505 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+01506 }
+01507 <font class="keywordflow">else</font>
+01508 (*node)-&gt;Round = round;
+01509 }
+01510
+01511 <font class="keywordflow">if</font> (verbose &amp;&amp; errorAppend)
+01512 {
+01513 <a class="code" href="debug_8h.html#a6">nlassert</a> (*error);
+01514
+01515 <font class="comment">// Get the best form name</font>
+01516 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, currentName.c_str (), form-&gt;getFilename ().c_str(), <font class="stringliteral">"getIternalNodeByName"</font>, <font class="stringliteral">"Getting the node (%s) : %s"</font>, name, error);
+01517 }
+01518
+01519 <font class="keywordflow">return</font> !errorAppend;
+01520 }
+01521
+01522 <font class="comment">// ***************************************************************************</font>
+01523
+<a name="l01524"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#d0">01524</a> <font class="keyword">const</font> <font class="keywordtype">char</font>* CFormElm::tokenize (<font class="keyword">const</font> <font class="keywordtype">char</font> *name, string &amp;str, uint &amp;errorIndex, uint &amp;code)
+01525 {
+01526 <font class="keywordflow">if</font> (*name == 0)
+01527 {
+01528 <font class="keywordflow">return</font> NULL;
+01529 }
+01530
+01531 <font class="keywordflow">if</font> (*name == <font class="charliteral">'['</font>)
+01532 {
+01533 code = <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u2">TokenArrayBegin</a>;
+01534 str = <font class="stringliteral">"["</font>;
+01535 <font class="keywordflow">return</font> name+1;
+01536 }
+01537
+01538 <font class="keywordflow">if</font> (*name == <font class="charliteral">']'</font>)
+01539 {
+01540 code = <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u3">TokenArrayEnd</a>;
+01541 str = <font class="stringliteral">"]"</font>;
+01542 <font class="keywordflow">return</font> name+1;
+01543 }
+01544
+01545 <font class="keywordflow">if</font> (*name == <font class="charliteral">'.'</font>)
+01546 {
+01547 code = <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u1">TokenPoint</a>;
+01548 str = <font class="stringliteral">"."</font>;
+01549 <font class="keywordflow">return</font> name+1;
+01550 }
+01551
+01552 str = <font class="stringliteral">""</font>;
+01553 <font class="keywordflow">while</font> ( (*name != <font class="charliteral">'.'</font>) &amp;&amp; (*name != <font class="charliteral">'['</font>) &amp;&amp; (*name != <font class="charliteral">']'</font>) &amp;&amp; (*name != 0) )
+01554 {
+01555 <font class="comment">// Add a char</font>
+01556 str += *name;
+01557 name++;
+01558 }
+01559
+01560 code = <a class="code" href="classNLGEORGES_1_1CFormElm.html#u4u0">TokenString</a>;
+01561 <font class="keywordflow">return</font> name;
+01562 }
+01563
+01564 <font class="comment">// ***************************************************************************</font>
+01565
+<a name="l01566"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#b0">01566</a> <font class="keywordtype">void</font> CFormElm::unlink (CFormElm *child)
+01567 {
+01568 <font class="comment">// No children</font>
+01569 <a class="code" href="debug_8h.html#a12">nlstop</a>;
+01570 }
+01571
+01572 <font class="comment">// ***************************************************************************</font>
+01573
+<a name="l01574"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">01574</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (<font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01575 {
+01576 <font class="comment">// The parent Dfn</font>
+01577 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *parentDfn;
+01578 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l2">CFormDfn</a> *nodeDfn;
+01579 <font class="keyword">const</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#l1">CType</a> *nodeType;
+01580 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a0">CFormElm</a> *node;
+01581 uint indexDfn;
+01582 <font class="keywordtype">bool</font> array;
+01583 <font class="keywordtype">bool</font> _created;
+01584 UFormDfn::TEntryType <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>;
+01585
+01586 <font class="comment">// Search for the node</font>
+01587 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a75">createNodeByName</a> (name, &amp;parentDfn, indexDfn, &amp;nodeDfn, &amp;nodeType, &amp;node, <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, array, _created))
+01588 {
+01589 <font class="comment">// Is this a type ?</font>
+01590 <font class="keywordflow">if</font> (<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> == UFormDfn::EntryType)
+01591 {
+01592 <font class="comment">// The atom</font>
+01593 CFormElmAtom *atom = node ? safe_cast&lt;CFormElmAtom*&gt; (node) : NULL;
+01594
+01595 <font class="comment">// Evale</font>
+01596 <a class="code" href="debug_8h.html#a6">nlassert</a> (nodeType);
+01597 atom-&gt;setValue (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>);
+01598
+01599 <font class="comment">// Created flag</font>
+01600 <font class="keywordflow">if</font> (created)
+01601 *created = _created;
+01602 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01603 }
+01604 <font class="keywordflow">else</font>
+01605 {
+01606 <font class="comment">// Error message</font>
+01607 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"setValueByName"</font>, <font class="stringliteral">"The node (%s) is not an atom element. Can't set the value."</font>, name);
+01608 }
+01609 }
+01610 <font class="keywordflow">else</font>
+01611 {
+01612 <font class="comment">// Error message</font>
+01613 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"setValueByName"</font>, <font class="stringliteral">"Can't created / set the node (%s)."</font>, name);
+01614
+01615 <font class="comment">// Created flag</font>
+01616 <font class="keywordflow">if</font> (created)
+01617 *created = <font class="keyword">false</font>;
+01618 }
+01619
+01620 <font class="comment">// Error</font>
+01621 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+01622 }
+01623
+01624 <font class="comment">// ***************************************************************************</font>
+01625
+<a name="l01626"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a19">01626</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (sint8 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01627 {
+01628 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01629 }
+01630
+01631 <font class="comment">// ***************************************************************************</font>
+01632
+<a name="l01633"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a20">01633</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (uint8 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01634 {
+01635 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01636 }
+01637
+01638 <font class="comment">// ***************************************************************************</font>
+01639
+<a name="l01640"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a21">01640</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (sint16 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01641 {
+01642 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01643 }
+01644
+01645 <font class="comment">// ***************************************************************************</font>
+01646
+<a name="l01647"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a22">01647</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (uint16 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01648 {
+01649 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01650 }
+01651
+01652 <font class="comment">// ***************************************************************************</font>
+01653
+<a name="l01654"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a23">01654</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (sint32 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01655 {
+01656 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01657 }
+01658
+01659 <font class="comment">// ***************************************************************************</font>
+01660
+<a name="l01661"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a24">01661</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (uint32 <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01662 {
+01663 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01664 }
+01665
+01666 <font class="comment">// ***************************************************************************</font>
+01667
+<a name="l01668"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a25">01668</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (<font class="keywordtype">float</font> <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01669 {
+01670 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01671 }
+01672
+01673 <font class="comment">// ***************************************************************************</font>
+01674
+<a name="l01675"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a26">01675</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (<font class="keywordtype">double</font> <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01676 {
+01677 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01678 }
+01679
+01680 <font class="comment">// ***************************************************************************</font>
+01681
+<a name="l01682"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a27">01682</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (<font class="keywordtype">bool</font> <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01683 {
+01684 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (toString (value).c_str (), name, created);
+01685 }
+01686
+01687 <font class="comment">// ***************************************************************************</font>
+01688
+<a name="l01689"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#a28">01689</a> <font class="keywordtype">bool</font> CFormElm::setValueByName (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, <font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keywordtype">bool</font> *created)
+01690 {
+01691 <font class="keywordtype">char</font> tmp[512];
+01692 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (tmp, 512, <font class="stringliteral">"%d,%d,%d"</font>, value.<a class="code" href="classNLMISC_1_1CRGBA.html#m0">R</a>, value.<a class="code" href="classNLMISC_1_1CRGBA.html#m1">G</a>, value.<a class="code" href="classNLMISC_1_1CRGBA.html#m2">B</a>);
+01693 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a18">setValueByName</a> (tmp, name, created);
+01694 }
+01695
+01696 <font class="comment">// ***************************************************************************</font>
+01697
+<a name="l01698"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">01698</a> <font class="keywordtype">void</font> CFormElm::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *formName, <font class="keyword">const</font> <font class="keywordtype">char</font> *formFileName, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )
+01699 {
+01700 <font class="comment">// Make a buffer string</font>
+01701 va_list args;
+01702 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+01703 <font class="keywordtype">char</font> buffer[1024];
+01704 sint ret = vsnprintf( buffer, 1024, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args );
+01705 va_end( args );
+01706
+01707 <font class="comment">// Set the warning</font>
+01708 <a class="code" href="namespaceNLGEORGES.html#a0">NLGEORGES::warning</a> (exception, <font class="stringliteral">"(CFormElm::%s) on node (%s) in form (%s) : %s"</font>, function, formName, formFileName, buffer);
+01709 }
+01710
+01711 <font class="comment">// ***************************************************************************</font>
+01712
+<a name="l01713"></a><a class="code" href="classNLGEORGES_1_1CFormElm.html#b1">01713</a> <font class="keywordtype">void</font> CFormElm::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )<font class="keyword"> const</font>
+01714 <font class="keyword"></font>{
+01715 va_list args;
+01716 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+01717
+01718 string formName;
+01719 <a class="code" href="classNLGEORGES_1_1CFormElm.html#a4">getFormName</a> (formName);
+01720 <a class="code" href="classNLGEORGES_1_1CFormElm.html#e1">warning</a> (exception, formName.c_str (), <a class="code" href="classNLGEORGES_1_1CFormElm.html#a2">getForm</a> ()-&gt;getFilename ().c_str (), function, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args);
+01721
+01722 va_end( args );
+01723 }
+01724
+01725 <font class="comment">// ***************************************************************************</font>
+01726 <font class="comment">// class CFormElmStruct</font>
+01727 <font class="comment">// ***************************************************************************</font>
+01728
+<a name="l01729"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a0">01729</a> CFormElmStruct::CFormElmStruct (CForm *form, CFormElm *parentNode, <font class="keyword">const</font> CFormDfn *parentDfn, uint parentIndex) : CFormElm (form, parentNode, parentDfn, parentIndex)
+01730 {
+01731 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a> = NULL;
+01732 }
+01733
+01734 <font class="comment">// ***************************************************************************</font>
+01735
+<a name="l01736"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a1">01736</a> CFormElmStruct::~CFormElmStruct ()
+01737 {
+01738 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a2">clean</a> ();
+01739 }
+01740
+01741 <font class="comment">// ***************************************************************************</font>
+01742
+<a name="l01743"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a2">01743</a> <font class="keywordtype">void</font> CFormElmStruct::clean ()
+01744 {
+01745 <font class="comment">// For each element of the array</font>
+01746 uint elm;
+01747 <font class="keywordflow">for</font> (elm =0; elm&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size(); elm++)
+01748 {
+01749 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element)
+01750 <font class="keyword">delete</font> <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element;
+01751 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element = NULL;
+01752 }
+01753 }
+01754
+01755 <font class="comment">// ***************************************************************************</font>
+01756
+<a name="l01757"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a4">01757</a> <font class="keywordtype">bool</font> CFormElmStruct::isStruct ()<font class="keyword"> const</font>
+01758 <font class="keyword"></font>{
+01759 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01760 };
+01761
+01762 <font class="comment">// ***************************************************************************</font>
+01763
+<a name="l01764"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a5">01764</a> <font class="keywordtype">bool</font> CFormElmStruct::getStructSize (uint &amp;size)<font class="keyword"> const </font>
+01765 <font class="keyword"></font>{
+01766 size = <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size();
+01767 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01768 };
+01769
+01770 <font class="comment">// ***************************************************************************</font>
+01771
+<a name="l01772"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a6">01772</a> <font class="keywordtype">bool</font> CFormElmStruct::getStructNodeName (uint element, string &amp;result)<font class="keyword"> const </font>
+01773 <font class="keyword"></font>{
+01774 <font class="keywordflow">if</font> (element&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size())
+01775 {
+01776 result = <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[element].Name;
+01777 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01778 }
+01779 <font class="keywordflow">else</font>
+01780 {
+01781 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNodeName"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, element, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size() );
+01782 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+01783 }
+01784 };
+01785
+01786 <font class="comment">// ***************************************************************************</font>
+01787
+<a name="l01788"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a7">01788</a> <font class="keywordtype">bool</font> CFormElmStruct::getStructNode (uint element, <font class="keyword">const</font> UFormElm **result)<font class="keyword"> const </font>
+01789 <font class="keyword"></font>{
+01790 <font class="keywordflow">if</font> (element&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size())
+01791 {
+01792 *result = <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[element].Element;
+01793 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01794 }
+01795 <font class="keywordflow">else</font>
+01796 {
+01797 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNode"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, element, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size() );
+01798 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+01799 }
+01800 };
+01801
+01802 <font class="comment">// ***************************************************************************</font>
+01803
+<a name="l01804"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a8">01804</a> <font class="keywordtype">bool</font> CFormElmStruct::getStructNode (uint element, UFormElm **result)
+01805 {
+01806 <font class="keywordflow">if</font> (element&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size())
+01807 {
+01808 *result = <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[element].Element;
+01809 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+01810 }
+01811 <font class="keywordflow">else</font>
+01812 {
+01813 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getStructNode"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, element, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size() );
+01814 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+01815 }
+01816 };
+01817
+01818 <font class="comment">// ***************************************************************************</font>
+01819
+<a name="l01820"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a10">01820</a> xmlNodePtr CFormElmStruct::write (xmlNodePtr root, <font class="keyword">const</font> CForm *form, <font class="keyword">const</font> <font class="keywordtype">char</font> *structName, <font class="keywordtype">bool</font> forceWrite)<font class="keyword"> const</font>
+01821 <font class="keyword"></font>{
+01822 <font class="comment">// Is used ?</font>
+01823 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a9">isUsed</a> (form) || forceWrite)
+01824 {
+01825 <font class="comment">// *** Header</font>
+01826 xmlNodePtr node = xmlNewChild ( root, NULL, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"STRUCT"</font>, NULL);
+01827
+01828 <font class="comment">// Element name</font>
+01829 <font class="keywordflow">if</font> (structName != NULL)
+01830 {
+01831 <font class="comment">// Struct name</font>
+01832 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"Name"</font>, (<font class="keyword">const</font> xmlChar*)structName);
+01833 }
+01834
+01835 <font class="comment">// For each elements of the structure</font>
+01836 uint elm;
+01837 <font class="keywordflow">for</font> (elm=0; elm&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size(); elm++)
+01838 {
+01839 <font class="comment">// Create a node if it exist</font>
+01840 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element)
+01841 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element-&gt;write (node, form, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Name.c_str());
+01842 }
+01843
+01844 <font class="comment">// Return the new node</font>
+01845 <font class="keywordflow">return</font> node;
+01846 }
+01847 <font class="keywordflow">return</font> NULL;
+01848 }
+01849
+01850 <font class="comment">// ***************************************************************************</font>
+01851
+<a name="l01852"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a13">01852</a> <font class="keywordtype">void</font> CFormElmStruct::read (xmlNodePtr node, CFormLoader &amp;loader, <font class="keyword">const</font> CFormDfn *dfn, CForm *form)
+01853 {
+01854 <font class="comment">// Get the smart pointer on the dfn</font>
+01855 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a> = (CFormDfn*)dfn;
+01856
+01857 <font class="comment">// Build the Form</font>
+01858 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a3">build</a> (dfn);
+01859
+01860 <font class="comment">// Count parent</font>
+01861 uint dfnCount = dfn-&gt;countParentDfn ();
+01862
+01863 <font class="comment">// Array of Dfn</font>
+01864 std::vector&lt;const CFormDfn*&gt; dfnArray;
+01865 dfnArray.reserve (dfnCount);
+01866 dfn-&gt;getParentDfn (dfnArray);
+01867
+01868 <font class="comment">// For each Dfn</font>
+01869 uint dfnId;
+01870 uint elmIndex=0;
+01871 <font class="keywordflow">for</font> (dfnId=0; dfnId&lt;dfnCount; dfnId++)
+01872 {
+01873 <font class="comment">// Lookup for the name in the DFN</font>
+01874 uint elm;
+01875 <font class="keywordflow">for</font> (elm=0; elm&lt;dfnArray[dfnId]-&gt;Entries.size(); elm++)
+01876 {
+01877 <font class="comment">// Found ?</font>
+01878 <font class="keywordtype">bool</font> found = <font class="keyword">false</font>;
+01879
+01880 <font class="comment">// Read the struct</font>
+01881 xmlNodePtr child = NULL;
+01882
+01883 <font class="comment">// Node can be NULL</font>
+01884 <font class="keywordflow">if</font> (node)
+01885 child = node-&gt;children;
+01886
+01887 <font class="keywordflow">while</font> (child)
+01888 {
+01889 <font class="comment">// Good node ?</font>
+01890 <font class="keyword">const</font> <font class="keywordtype">char</font> *name = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlGetProp (child, (xmlChar*)<font class="stringliteral">"Name"</font>);
+01891 <font class="keywordflow">if</font> (name &amp;&amp; (dfnArray[dfnId]-&gt;Entries[elm].getName () == name) )
+01892 {
+01893 <font class="comment">// Type</font>
+01894 <font class="keywordtype">bool</font> atom=<font class="keyword">false</font>;
+01895 <font class="keywordtype">bool</font> array=<font class="keyword">false</font>;
+01896 <font class="keywordtype">bool</font> _struct=<font class="keyword">false</font>;
+01897 <font class="keywordtype">bool</font> vStruct=<font class="keyword">false</font>;
+01898
+01899 <font class="comment">// Is an atom ?</font>
+01900 <font class="keywordflow">if</font> (strcmp ((<font class="keyword">const</font> <font class="keywordtype">char</font>*)child-&gt;name, <font class="stringliteral">"ATOM"</font>) == 0)
+01901 {
+01902 atom = <font class="keyword">true</font>;
+01903 }
+01904 <font class="comment">// Is a struct ?</font>
+01905 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (strcmp ((<font class="keyword">const</font> <font class="keywordtype">char</font>*)child-&gt;name, <font class="stringliteral">"STRUCT"</font>) == 0)
+01906 {
+01907 _struct = <font class="keyword">true</font>;
+01908 }
+01909 <font class="comment">// Is a struct ?</font>
+01910 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (strcmp ((<font class="keyword">const</font> <font class="keywordtype">char</font>*)child-&gt;name, <font class="stringliteral">"VSTRUCT"</font>) == 0)
+01911 {
+01912 vStruct = <font class="keyword">true</font>;
+01913 }
+01914 <font class="comment">// Is an array ?</font>
+01915 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (strcmp ((<font class="keyword">const</font> <font class="keywordtype">char</font>*)child-&gt;name, <font class="stringliteral">"ARRAY"</font>) == 0)
+01916 {
+01917 array = <font class="keyword">true</font>;
+01918 }
+01919
+01920 <font class="comment">// Continue ?</font>
+01921 <font class="keywordflow">if</font> (atom || _struct || vStruct || array)
+01922 {
+01923 <font class="comment">// Same type ?</font>
+01924 <font class="keywordflow">if</font> (
+01925 (atom &amp;&amp; (dfnArray[dfnId]-&gt;Entries[elm].getType ()==UFormDfn::EntryType) &amp;&amp; (!dfnArray[dfnId]-&gt;Entries[elm].getArrayFlag ()) ) ||
+01926 (array &amp;&amp; dfnArray[dfnId]-&gt;Entries[elm].getArrayFlag () &amp;&amp; ( (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryType) || (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryDfn) ) ) ||
+01927 (_struct &amp;&amp; (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryDfn) &amp;&amp; (!dfnArray[dfnId]-&gt;Entries[elm].getArrayFlag ()) ) ||
+01928 (vStruct &amp;&amp; (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryVirtualDfn) &amp;&amp; (!dfnArray[dfnId]-&gt;Entries[elm].getArrayFlag ()) )
+01929 )
+01930 {
+01931 <font class="comment">// Ok keep it</font>
+01932 <font class="keywordflow">break</font>;
+01933 }
+01934 <font class="keywordflow">else</font>
+01935 {
+01936 <font class="comment">// Make a warning message</font>
+01937 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"read"</font>, <font class="stringliteral">"In block line %d, node (%s) type in DFN have changed."</font>,
+01938 (<font class="keywordtype">int</font>)child-&gt;content, child-&gt;name);
+01939 }
+01940 }
+01941 <font class="keywordflow">else</font>
+01942 {
+01943 <font class="keywordflow">if</font> (name)
+01944 {
+01945 <font class="comment">// Delete the value</font>
+01946 xmlFree ((<font class="keywordtype">void</font>*)name);
+01947 }
+01948
+01949 <font class="comment">// Throw exception</font>
+01950 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">true</font>, <font class="stringliteral">"read"</font>, <font class="stringliteral">"XML Syntax error in block line %d, node (%s) name should be STRUCT, ATOM or ARRAY."</font>,
+01951 (<font class="keywordtype">int</font>)child-&gt;content, child-&gt;name);
+01952 }
+01953 }
+01954
+01955 <font class="keywordflow">if</font> (name)
+01956 {
+01957 <font class="comment">// Delete the value</font>
+01958 xmlFree ((<font class="keywordtype">void</font>*)name);
+01959 }
+01960
+01961 <font class="comment">// Next child</font>
+01962 child = child-&gt;next;
+01963 }
+01964
+01965 <font class="comment">// Found ?</font>
+01966 <font class="keywordflow">if</font> (child)
+01967 {
+01968 <font class="comment">// Create a new element</font>
+01969 <font class="keywordflow">if</font> (dfnArray[dfnId]-&gt;Entries[elm].getArrayFlag ())
+01970 {
+01971 <font class="comment">// Array of type</font>
+01972 CFormElmArray *newElm = NULL;
+01973 <font class="keywordflow">if</font> (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryType)
+01974 {
+01975 <font class="comment">// Load the new element</font>
+01976 newElm = <font class="keyword">new</font> CFormElmArray (form, NULL, dfnArray[dfnId]-&gt;Entries[elm].getTypePtr (), <font class="keyword">this</font>, dfnArray[dfnId], elm);
+01977 }
+01978 <font class="comment">// Array of struct</font>
+01979 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryDfn)
+01980 {
+01981 newElm = <font class="keyword">new</font> CFormElmArray (form, dfnArray[dfnId]-&gt;Entries[elm].getDfnPtr (), NULL, <font class="keyword">this</font>, dfnArray[dfnId], elm);
+01982 }
+01983
+01984 <font class="comment">// Should be created</font>
+01985 <a class="code" href="debug_8h.html#a6">nlassert</a> (newElm);
+01986 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elmIndex].Element = newElm;
+01987 newElm-&gt;read (child, loader, form);
+01988 }
+01989 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryType)
+01990 {
+01991 <font class="comment">// Load the new element</font>
+01992 CFormElmAtom *newElm = <font class="keyword">new</font> CFormElmAtom (form, <font class="keyword">this</font>, dfnArray[dfnId], elm);
+01993 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elmIndex].Element = newElm;
+01994 newElm-&gt;read (child, loader, dfnArray[dfnId]-&gt;Entries[elm].getTypePtr (), form);
+01995 }
+01996 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryDfn)
+01997 {
+01998 <font class="comment">// Load the new element</font>
+01999 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a0">CFormElmStruct</a> *newElm = <font class="keyword">new</font> <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a0">CFormElmStruct</a> (form, <font class="keyword">this</font>, dfnArray[dfnId], elm);
+02000 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elmIndex].Element = newElm;
+02001 newElm-&gt;read (child, loader, dfnArray[dfnId]-&gt;Entries[elm].getDfnPtr (), form);
+02002 }
+02003 <font class="keywordflow">else</font> <font class="comment">// if dfnArray[dfnId]-&gt;Entries[elm].getType () == CFormDfn::CEntry::EntryVirtualDfn)</font>
+02004 {
+02005 <font class="comment">// Should be a struct</font>
+02006 <a class="code" href="debug_8h.html#a6">nlassert</a> (dfnArray[dfnId]-&gt;Entries[elm].getType () == UFormDfn::EntryVirtualDfn);
+02007
+02008 <font class="comment">// Load the new element</font>
+02009 CFormElmVirtualStruct *newElm = <font class="keyword">new</font> CFormElmVirtualStruct (form, <font class="keyword">this</font>, dfnArray[dfnId], elm);
+02010 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elmIndex].Element = newElm;
+02011 newElm-&gt;read (child, loader, form);
+02012 }
+02013 }
+02014 <font class="keywordflow">else</font>
+02015 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elmIndex].Element = NULL;
+02016
+02017 elmIndex++;
+02018 }
+02019 }
+02020 }
+02021
+02022 <font class="comment">// ***************************************************************************</font>
+02023
+<a name="l02024"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a9">02024</a> <font class="keywordtype">bool</font> CFormElmStruct::isUsed (<font class="keyword">const</font> CForm *form)<font class="keyword"> const</font>
+02025 <font class="keyword"></font>{
+02026 <font class="keywordflow">for</font> (uint i=0; i&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size(); i++)
+02027 {
+02028 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Element &amp;&amp; <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Element-&gt;isUsed (form))
+02029 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02030 }
+02031 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02032 }
+02033
+02034 <font class="comment">// ***************************************************************************</font>
+02035
+<a name="l02036"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a3">02036</a> <font class="keywordtype">void</font> CFormElmStruct::build (<font class="keyword">const</font> CFormDfn *dfn)
+02037 {
+02038 <font class="comment">// Clean the form</font>
+02039 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a2">clean</a> ();
+02040
+02041 <font class="comment">// Set the DFN</font>
+02042 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a> = (CFormDfn*)dfn;
+02043
+02044 <font class="comment">// Get the parents</font>
+02045 vector&lt;const CFormDfn*&gt; arrayDfn;
+02046 arrayDfn.reserve (dfn-&gt;countParentDfn ());
+02047 dfn-&gt;getParentDfn (arrayDfn);
+02048
+02049 <font class="comment">// Count element</font>
+02050 uint elementCount = 0;
+02051 uint dfnIndex;
+02052 <font class="keywordflow">for</font> (dfnIndex=0; dfnIndex&lt;arrayDfn.size(); dfnIndex++)
+02053 {
+02054 elementCount += arrayDfn[dfnIndex]-&gt;getNumEntry();
+02055 }
+02056
+02057 <font class="comment">// Resize the element array</font>
+02058 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.resize (elementCount);
+02059
+02060 elementCount = 0;
+02061 <font class="keywordflow">for</font> (dfnIndex=0; dfnIndex&lt;arrayDfn.size(); dfnIndex++)
+02062 {
+02063 <font class="comment">// For each element</font>
+02064 <font class="keywordflow">for</font> (uint elm=0; elm&lt;arrayDfn[dfnIndex]-&gt;Entries.size(); elm++)
+02065 {
+02066 <font class="comment">// Copy the name</font>
+02067 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elementCount].Name = arrayDfn[dfnIndex]-&gt;Entries[elm].Name;
+02068 elementCount++;
+02069 }
+02070 }
+02071 }
+02072
+02073 <font class="comment">// ***************************************************************************</font>
+02074
+<a name="l02075"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a11">02075</a> <font class="keywordtype">void</font> CFormElmStruct::unlink (CFormElm *child)
+02076 {
+02077 uint i;
+02078 <font class="keywordflow">for</font> (i=0; i&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size (); i++)
+02079 {
+02080 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Element == child)
+02081 {
+02082 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Element = NULL;
+02083 <font class="keywordflow">break</font>;
+02084 }
+02085 }
+02086
+02087 <font class="comment">// Element not found!</font>
+02088 <a class="code" href="debug_8h.html#a6">nlassert</a> (i != <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size ());
+02089 }
+02090
+02091 <font class="comment">// ***************************************************************************</font>
+02092
+<a name="l02093"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a12">02093</a> <font class="keywordtype">void</font> CFormElmStruct::getFormName (std::string &amp;result, <font class="keyword">const</font> CFormElm *child)<font class="keyword"> const</font>
+02094 <font class="keyword"></font>{
+02095 <font class="comment">// Reset the result</font>
+02096 <font class="keywordflow">if</font> (child == NULL)
+02097 {
+02098 result = <font class="stringliteral">""</font>;
+02099 result.reserve (50);
+02100 }
+02101
+02102 <font class="comment">// Get parent form name</font>
+02103 <font class="keywordflow">if</font> (ParentNode)
+02104 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n1">ParentNode</a>-&gt;getFormName (result, <font class="keyword">this</font>);
+02105
+02106 <font class="comment">// Get node name</font>
+02107 <font class="keywordflow">if</font> (child)
+02108 {
+02109 <font class="comment">// Look for the child</font>
+02110 uint i;
+02111 <font class="keywordflow">for</font> (i=0; i&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size (); i++)
+02112 {
+02113 <font class="comment">// This one ?</font>
+02114 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Element == child)
+02115 {
+02116 <font class="comment">// Add the field name</font>
+02117 result += <font class="stringliteral">"."</font>;
+02118 result += <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[i].Name;
+02119 <font class="keywordflow">break</font>;
+02120 }
+02121 }
+02122
+02123 <font class="comment">// Draw some warning</font>
+02124 <font class="keywordflow">if</font> (i==<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size ())
+02125 {
+02126 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getFormName"</font>, <font class="stringliteral">"Child node not found."</font>);
+02127 }
+02128 }
+02129 }
+02130
+02131 <font class="comment">// ***************************************************************************</font>
+02132
+<a name="l02133"></a><a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a14">02133</a> <font class="keywordtype">void</font> CFormElmStruct::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )<font class="keyword"> const</font>
+02134 <font class="keyword"></font>{
+02135 <font class="comment">// Make a buffer string</font>
+02136 va_list args;
+02137 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+02138 <font class="keywordtype">char</font> buffer[1024];
+02139 sint ret = vsnprintf( buffer, 1024, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args );
+02140 va_end( args );
+02141
+02142 <font class="comment">// Set the warning</font>
+02143 string formName;
+02144 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a12">getFormName</a> (formName, NULL);
+02145 <a class="code" href="namespaceNLGEORGES.html#a0">NLGEORGES::warning</a> (exception, <font class="stringliteral">"(CFormElmStruct::%s) on node (%s) in form (%s) : %s"</font>, function, formName.c_str (), <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>-&gt;getFilename ().c_str (), buffer);
+02146 }
+02147
+02148 <font class="comment">// ***************************************************************************</font>
+02149 <font class="comment">// class CFormElmVirtualStruct</font>
+02150 <font class="comment">// ***************************************************************************</font>
+02151
+<a name="l02152"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a0">02152</a> CFormElmVirtualStruct::CFormElmVirtualStruct (CForm *form, CFormElm *parentNode, <font class="keyword">const</font> CFormDfn *parentDfn, uint parentIndex) : CFormElmStruct (form, parentNode, parentDfn, parentIndex)
+02153 {
+02154 }
+02155
+02156 <font class="comment">// ***************************************************************************</font>
+02157
+<a name="l02158"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a4">02158</a> xmlNodePtr CFormElmVirtualStruct::write (xmlNodePtr root, <font class="keyword">const</font> CForm *form, <font class="keyword">const</font> <font class="keywordtype">char</font> *structName, <font class="keywordtype">bool</font> forceWrite)<font class="keyword"> const</font>
+02159 <font class="keyword"></font>{
+02160 <font class="comment">// Is used ?</font>
+02161 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a3">isUsed</a> (form) || forceWrite)
+02162 {
+02163 <font class="comment">// *** Header</font>
+02164 xmlNodePtr node = xmlNewChild ( root, NULL, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"VSTRUCT"</font>, NULL);
+02165
+02166 <font class="comment">// Write the DFN filename in the node</font>
+02167 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"DfnName"</font>, (<font class="keyword">const</font> xmlChar*)<a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#m0">DfnFilename</a>.c_str());
+02168
+02169 <font class="comment">// Element name</font>
+02170 <font class="keywordflow">if</font> (structName != NULL)
+02171 {
+02172 <font class="comment">// Struct name</font>
+02173 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"Name"</font>, (<font class="keyword">const</font> xmlChar*)structName);
+02174 }
+02175
+02176 <font class="comment">// For each elements of the structure</font>
+02177 uint elm;
+02178 <font class="keywordflow">for</font> (elm=0; elm&lt;<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>.size(); elm++)
+02179 {
+02180 <font class="comment">// Create a node if it exist</font>
+02181 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element)
+02182 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Element-&gt;write (node, form, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m1">Elements</a>[elm].Name.c_str());
+02183 }
+02184
+02185 <font class="comment">// Return the new node</font>
+02186 <font class="keywordflow">return</font> node;
+02187 }
+02188 <font class="keywordflow">return</font> NULL;
+02189 }
+02190
+02191 <font class="comment">// ***************************************************************************</font>
+02192
+<a name="l02193"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a5">02193</a> <font class="keywordtype">void</font> CFormElmVirtualStruct::read (xmlNodePtr node, CFormLoader &amp;loader, CForm *form)
+02194 {
+02195 <font class="comment">// Get the DFN filename</font>
+02196 <font class="keyword">const</font> <font class="keywordtype">char</font> *filename = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlGetProp (node, (xmlChar*)<font class="stringliteral">"DfnName"</font>);
+02197 <font class="keywordflow">if</font> (filename)
+02198 {
+02199 <font class="comment">// Set the name</font>
+02200 <a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#m0">DfnFilename</a> = filename;
+02201
+02202 <font class="comment">// Delete the value</font>
+02203 xmlFree ((<font class="keywordtype">void</font>*)filename);
+02204
+02205 <font class="comment">// Load the dfn</font>
+02206 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a> = loader.loadFormDfn (<a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#m0">DfnFilename</a>.c_str (), <font class="keyword">false</font>);
+02207 <font class="keywordflow">if</font> (!<a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a>)
+02208 {
+02209 <font class="comment">// Throw exception</font>
+02210 <a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a6">warning</a> (<font class="keyword">true</font>, <font class="stringliteral">"read"</font>, <font class="stringliteral">"Can't find DFN filename (%s)."</font>, <a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#m0">DfnFilename</a>.c_str ());
+02211 }
+02212 }
+02213 <font class="keywordflow">else</font>
+02214 {
+02215 <font class="comment">// Throw exception</font>
+02216 <a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a6">warning</a> (<font class="keyword">true</font>, <font class="stringliteral">"read"</font>, <font class="stringliteral">"XML Syntax error in virtual struct in block line %d, should have a DfnName property."</font>,
+02217 (<font class="keywordtype">int</font>)node-&gt;content, node-&gt;name);
+02218 }
+02219
+02220 <font class="comment">// Read the parent</font>
+02221 CFormElmStruct::read (node, loader, <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#m0">FormDfn</a>, form);
+02222 }
+02223
+02224 <font class="comment">// ***************************************************************************</font>
+02225
+<a name="l02226"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a1">02226</a> <font class="keywordtype">bool</font> CFormElmVirtualStruct::isVirtualStruct ()<font class="keyword"> const</font>
+02227 <font class="keyword"></font>{
+02228 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02229 }
+02230
+02231 <font class="comment">// ***************************************************************************</font>
+02232
+<a name="l02233"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a2">02233</a> <font class="keywordtype">bool</font> CFormElmVirtualStruct::getDfnName (std::string &amp;dfnName )<font class="keyword"> const</font>
+02234 <font class="keyword"></font>{
+02235 dfnName = <a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#m0">DfnFilename</a>;
+02236 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02237 }
+02238
+02239 <font class="comment">// ***************************************************************************</font>
+02240
+<a name="l02241"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a3">02241</a> <font class="keywordtype">bool</font> CFormElmVirtualStruct::isUsed (<font class="keyword">const</font> CForm *form)<font class="keyword"> const</font>
+02242 <font class="keyword"></font>{
+02243 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02244 }
+02245
+02246 <font class="comment">// ***************************************************************************</font>
+02247
+<a name="l02248"></a><a class="code" href="classNLGEORGES_1_1CFormElmVirtualStruct.html#a6">02248</a> <font class="keywordtype">void</font> CFormElmVirtualStruct::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )<font class="keyword"> const</font>
+02249 <font class="keyword"></font>{
+02250 <font class="comment">// Make a buffer string</font>
+02251 va_list args;
+02252 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+02253 <font class="keywordtype">char</font> buffer[1024];
+02254 sint ret = vsnprintf( buffer, 1024, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args );
+02255 va_end( args );
+02256
+02257 <font class="comment">// Set the warning</font>
+02258 string formName;
+02259 <a class="code" href="classNLGEORGES_1_1CFormElmStruct.html#a12">getFormName</a> (formName, NULL);
+02260 <a class="code" href="namespaceNLGEORGES.html#a0">NLGEORGES::warning</a> (exception, <font class="stringliteral">"(CFormElmVirtualStruct::%s) on node (%s) in form (%s) : %s"</font>, function, formName.c_str (), <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>-&gt;getFilename ().c_str (), buffer);
+02261 }
+02262
+02263 <font class="comment">// ***************************************************************************</font>
+02264 <font class="comment">// class CFormElmArray</font>
+02265 <font class="comment">// ***************************************************************************</font>
+02266
+<a name="l02267"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a0">02267</a> CFormElmArray::CFormElmArray (CForm *form, <font class="keyword">const</font> CFormDfn *formDfn, <font class="keyword">const</font> CType *<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, CFormElm *parentNode, <font class="keyword">const</font> CFormDfn *parentDfn, uint parentIndex) : CFormElm (form, parentNode, parentDfn, parentIndex)
+02268 {
+02269 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m0">FormDfn</a> = (CFormDfn*)formDfn;
+02270 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a> = <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>;
+02271 }
+02272
+02273 <font class="comment">// ***************************************************************************</font>
+02274
+<a name="l02275"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a1">02275</a> CFormElmArray::~CFormElmArray ()
+02276 {
+02277 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a2">clean</a> ();
+02278 }
+02279
+02280 <font class="comment">// ***************************************************************************</font>
+02281
+<a name="l02282"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a2">02282</a> <font class="keywordtype">void</font> CFormElmArray::clean ()
+02283 {
+02284 <font class="comment">// For each element of the array</font>
+02285 uint elm;
+02286 <font class="keywordflow">for</font> (elm =0; elm&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size(); elm++)
+02287 {
+02288 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Element)
+02289 <font class="keyword">delete</font> <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Element;
+02290 }
+02291 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.clear ();
+02292 }
+02293
+02294 <font class="comment">// ***************************************************************************</font>
+02295
+<a name="l02296"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a3">02296</a> <font class="keywordtype">bool</font> CFormElmArray::isArray ()<font class="keyword"> const </font>
+02297 <font class="keyword"></font>{
+02298 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02299 };
+02300
+02301 <font class="comment">// ***************************************************************************</font>
+02302
+<a name="l02303"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a4">02303</a> <font class="keywordtype">bool</font> CFormElmArray::getArraySize (uint &amp;size)<font class="keyword"> const </font>
+02304 <font class="keyword"></font>{
+02305 size = <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size ();
+02306 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02307 };
+02308
+02309 <font class="comment">// ***************************************************************************</font>
+02310
+<a name="l02311"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a5">02311</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayNode (<font class="keyword">const</font> UFormElm **result, uint arrayIndex)<font class="keyword"> const </font>
+02312 <font class="keyword"></font>{
+02313 <font class="keywordflow">if</font> (arrayIndex&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size())
+02314 {
+02315 *result = <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element;
+02316 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02317 }
+02318 <font class="keywordflow">else</font>
+02319 {
+02320 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNode"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, arrayIndex, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size() );
+02321 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02322 }
+02323 };
+02324
+02325 <font class="comment">// ***************************************************************************</font>
+02326
+<a name="l02327"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a7">02327</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayNodeName (std::string &amp;result, uint arrayIndex)<font class="keyword"> const</font>
+02328 <font class="keyword"></font>{
+02329 <font class="keywordflow">if</font> (arrayIndex&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size())
+02330 {
+02331 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Name.empty ())
+02332 result = <font class="stringliteral">"#"</font> + toString (arrayIndex);
+02333 <font class="keywordflow">else</font>
+02334 result = <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Name;
+02335 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02336 }
+02337 <font class="keywordflow">else</font>
+02338 {
+02339 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNodeName"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, arrayIndex, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size() );
+02340 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02341 }
+02342 }
+02343
+02344 <font class="comment">// ***************************************************************************</font>
+02345
+<a name="l02346"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a6">02346</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayNode (UFormElm **result, uint arrayIndex)
+02347 {
+02348 <font class="keywordflow">if</font> (arrayIndex&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size())
+02349 {
+02350 *result = <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element;
+02351 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02352 }
+02353 <font class="keywordflow">else</font>
+02354 {
+02355 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayNode"</font>, <font class="stringliteral">"Index (%d) out of bound (%d)."</font>, arrayIndex, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size() );
+02356 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02357 }
+02358 };
+02359
+02360
+02361 <font class="comment">// ***************************************************************************</font>
+02362
+<a name="l02363"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a8">02363</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (std::string &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02364 <font class="keyword"></font>{
+02365 <font class="keywordflow">if</font> (Type)
+02366 {
+02367 <font class="keywordflow">return</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (result, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL));
+02368 }
+02369 <font class="keywordflow">else</font>
+02370 {
+02371 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02372 }
+02373
+02374 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02375 }
+02376
+02377 <font class="comment">// ***************************************************************************</font>
+02378
+<a name="l02379"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a9">02379</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (sint8 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02380 <font class="keyword"></font>{
+02381 <font class="keywordflow">if</font> (Type)
+02382 {
+02383 string str;
+02384 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02385 {
+02386 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02387 }
+02388 }
+02389 <font class="keywordflow">else</font>
+02390 {
+02391 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02392 }
+02393
+02394 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02395 }
+02396
+02397 <font class="comment">// ***************************************************************************</font>
+02398
+<a name="l02399"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a10">02399</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (uint8 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02400 <font class="keyword"></font>{
+02401 <font class="keywordflow">if</font> (Type)
+02402 {
+02403 string str;
+02404 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02405 {
+02406 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02407 }
+02408 }
+02409 <font class="keywordflow">else</font>
+02410 {
+02411 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02412 }
+02413
+02414 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02415 }
+02416
+02417 <font class="comment">// ***************************************************************************</font>
+02418
+<a name="l02419"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a11">02419</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (sint16 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02420 <font class="keyword"></font>{
+02421 <font class="keywordflow">if</font> (Type)
+02422 {
+02423 string str;
+02424 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02425 {
+02426 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02427 }
+02428 }
+02429 <font class="keywordflow">else</font>
+02430 {
+02431 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02432 }
+02433
+02434 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02435 }
+02436
+02437 <font class="comment">// ***************************************************************************</font>
+02438
+<a name="l02439"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a12">02439</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (uint16 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02440 <font class="keyword"></font>{
+02441 <font class="keywordflow">if</font> (Type)
+02442 {
+02443 string str;
+02444 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02445 {
+02446 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02447 }
+02448 }
+02449 <font class="keywordflow">else</font>
+02450 {
+02451 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02452 }
+02453
+02454 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02455 }
+02456
+02457 <font class="comment">// ***************************************************************************</font>
+02458
+<a name="l02459"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a13">02459</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (sint32 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02460 <font class="keyword"></font>{
+02461 <font class="keywordflow">if</font> (Type)
+02462 {
+02463 string str;
+02464 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02465 {
+02466 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02467 }
+02468 }
+02469 <font class="keywordflow">else</font>
+02470 {
+02471 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02472 }
+02473
+02474 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02475 }
+02476
+02477 <font class="comment">// ***************************************************************************</font>
+02478
+<a name="l02479"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a14">02479</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (uint32 &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02480 <font class="keyword"></font>{
+02481 <font class="keywordflow">if</font> (Type)
+02482 {
+02483 string str;
+02484 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02485 {
+02486 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02487 }
+02488 }
+02489 <font class="keywordflow">else</font>
+02490 {
+02491 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02492 }
+02493
+02494 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02495 }
+02496
+02497 <font class="comment">// ***************************************************************************</font>
+02498
+<a name="l02499"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a15">02499</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (<font class="keywordtype">float</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02500 <font class="keyword"></font>{
+02501 <font class="keywordflow">if</font> (Type)
+02502 {
+02503 string str;
+02504 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02505 {
+02506 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02507 }
+02508 }
+02509 <font class="keywordflow">else</font>
+02510 {
+02511 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02512 }
+02513
+02514 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02515 }
+02516
+02517 <font class="comment">// ***************************************************************************</font>
+02518
+<a name="l02519"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a16">02519</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (<font class="keywordtype">double</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02520 <font class="keyword"></font>{
+02521 <font class="keywordflow">if</font> (Type)
+02522 {
+02523 string str;
+02524 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02525 {
+02526 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02527 }
+02528 }
+02529 <font class="keywordflow">else</font>
+02530 {
+02531 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02532 }
+02533
+02534 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02535 }
+02536
+02537 <font class="comment">// ***************************************************************************</font>
+02538
+<a name="l02539"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a17">02539</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (<font class="keywordtype">bool</font> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02540 <font class="keyword"></font>{
+02541 <font class="keywordflow">if</font> (Type)
+02542 {
+02543 string str;
+02544 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02545 {
+02546 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02547 }
+02548 }
+02549 <font class="keywordflow">else</font>
+02550 {
+02551 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02552 }
+02553
+02554 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02555 }
+02556
+02557 <font class="comment">// ***************************************************************************</font>
+02558
+<a name="l02559"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a18">02559</a> <font class="keywordtype">bool</font> CFormElmArray::getArrayValue (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> &amp;result, uint arrayIndex, TEval evaluate, TWhereIsValue *where)<font class="keyword"> const</font>
+02560 <font class="keyword"></font>{
+02561 <font class="keywordflow">if</font> (Type)
+02562 {
+02563 string str;
+02564 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>-&gt;getValue (str, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, safe_cast&lt;const CFormElmAtom*&gt; (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[arrayIndex].Element), *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, (uint32*)where, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, NULL))
+02565 {
+02566 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, str.c_str ());
+02567 }
+02568 }
+02569 <font class="keywordflow">else</font>
+02570 {
+02571 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getArrayValue"</font>, <font class="stringliteral">"This array is not an array of atom. This is an array of structure."</font>);
+02572 }
+02573
+02574 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02575 }
+02576
+02577 <font class="comment">// ***************************************************************************</font>
+02578
+<a name="l02579"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a19">02579</a> xmlNodePtr CFormElmArray::write (xmlNodePtr root, <font class="keyword">const</font> CForm *form, <font class="keyword">const</font> <font class="keywordtype">char</font> *structName, <font class="keywordtype">bool</font> forceWrite)<font class="keyword"> const</font>
+02580 <font class="keyword"></font>{
+02581 <font class="comment">// Arrau is used ?</font>
+02582 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a22">isUsed</a> (form) || forceWrite)
+02583 {
+02584 <font class="comment">// *** Header</font>
+02585 xmlNodePtr node = xmlNewChild ( root, NULL, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"ARRAY"</font>, NULL);
+02586
+02587 <font class="comment">// Element name</font>
+02588 <font class="keywordflow">if</font> (structName != NULL)
+02589 {
+02590 <font class="comment">// Struct name</font>
+02591 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"Name"</font>, (<font class="keyword">const</font> xmlChar*)structName);
+02592 }
+02593
+02594 <font class="comment">// For each elements of the structure</font>
+02595 uint elm;
+02596 <font class="keywordflow">for</font> (elm=0; elm&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size(); elm++)
+02597 {
+02598 <font class="comment">// Create a node</font>
+02599 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Element)
+02600 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Element-&gt;write (node, form, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Name.empty ()?NULL:<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[elm].Name.c_str (), <font class="keyword">true</font>);
+02601 }
+02602
+02603 <font class="comment">// Return the new node</font>
+02604 <font class="keywordflow">return</font> node;
+02605 }
+02606
+02607 <font class="keywordflow">return</font> NULL;
+02608 }
+02609
+02610 <font class="comment">// ***************************************************************************</font>
+02611
+<a name="l02612"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a24">02612</a> <font class="keywordtype">void</font> CFormElmArray::read (xmlNodePtr node, CFormLoader &amp;loader, CForm *form)
+02613 {
+02614 <font class="comment">// Clean the form</font>
+02615 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a2">clean</a> ();
+02616
+02617 <font class="comment">// Count child</font>
+02618 <font class="keywordflow">if</font> (node)
+02619 {
+02620 <font class="comment">// Type of DFN array</font>
+02621 <font class="keywordflow">if</font> (Type)
+02622 {
+02623 <a class="code" href="debug_8h.html#a6">nlassert</a> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m0">FormDfn</a> == NULL);
+02624
+02625 <font class="comment">// Count children</font>
+02626 uint childCount = CIXml::countChildren (node, <font class="stringliteral">"ATOM"</font>);
+02627
+02628 <font class="comment">// Resize the table</font>
+02629 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.resize (childCount);
+02630
+02631 <font class="comment">// For each children</font>
+02632 uint childNum=0;
+02633 xmlNodePtr child = CIXml::getFirstChildNode (node, <font class="stringliteral">"ATOM"</font>);
+02634 <font class="keywordflow">while</font> (child)
+02635 {
+02636 <font class="comment">// Get node name</font>
+02637 <font class="keyword">const</font> <font class="keywordtype">char</font> *name = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlGetProp (child, (xmlChar*)<font class="stringliteral">"Name"</font>);
+02638
+02639 <font class="comment">// Create a new node</font>
+02640 CFormElmAtom *newElt = <font class="keyword">new</font> CFormElmAtom (form, <font class="keyword">this</font>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>);
+02641 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[childNum].Element = newElt;
+02642 <font class="keywordflow">if</font> (name)
+02643 {
+02644 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[childNum].Name = name;
+02645 xmlFree ((<font class="keywordtype">void</font>*)name);
+02646 }
+02647 newElt-&gt;read (child, loader, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a>, form);
+02648
+02649 <font class="comment">// Next child</font>
+02650 child = CIXml::getNextChildNode (child, <font class="stringliteral">"ATOM"</font>);
+02651 childNum++;
+02652 }
+02653 }
+02654 <font class="keywordflow">else</font>
+02655 {
+02656 <a class="code" href="debug_8h.html#a6">nlassert</a> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m0">FormDfn</a>);
+02657 <a class="code" href="debug_8h.html#a6">nlassert</a> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m1">Type</a> == NULL);
+02658
+02659 <font class="comment">// Count children</font>
+02660 uint childCount = CIXml::countChildren (node, <font class="stringliteral">"STRUCT"</font>);
+02661
+02662 <font class="comment">// Resize the table</font>
+02663 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.resize (childCount);
+02664
+02665 <font class="comment">// For each children</font>
+02666 uint childNum=0;
+02667 xmlNodePtr child = CIXml::getFirstChildNode (node, <font class="stringliteral">"STRUCT"</font>);
+02668 <font class="keywordflow">while</font> (child)
+02669 {
+02670 <font class="comment">// Get node name</font>
+02671 <font class="keyword">const</font> <font class="keywordtype">char</font> *name = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlGetProp (child, (xmlChar*)<font class="stringliteral">"Name"</font>);
+02672
+02673 <font class="comment">// Create a new node</font>
+02674 CFormElmStruct *newElt = <font class="keyword">new</font> CFormElmStruct (form, <font class="keyword">this</font>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>);
+02675 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[childNum].Element = newElt;
+02676 <font class="keywordflow">if</font> (name)
+02677 {
+02678 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[childNum].Name = name;
+02679 xmlFree ((<font class="keywordtype">void</font>*)name);
+02680 }
+02681 newElt-&gt;read (child, loader, <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m0">FormDfn</a>, form);
+02682
+02683 <font class="comment">// Next child</font>
+02684 child = CIXml::getNextChildNode (child, <font class="stringliteral">"STRUCT"</font>);
+02685 childNum++;
+02686 }
+02687 }
+02688 }
+02689 }
+02690
+02691 <font class="comment">// ***************************************************************************</font>
+02692
+<a name="l02693"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a20">02693</a> <font class="keywordtype">bool</font> CFormElmArray::setParent (CFormElm *parent)
+02694 {
+02695 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02696 }
+02697
+02698 <font class="comment">// ***************************************************************************</font>
+02699
+<a name="l02700"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a21">02700</a> <font class="keywordtype">void</font> CFormElmArray::unlink (CFormElm *child)
+02701 {
+02702 uint i;
+02703 <font class="keywordflow">for</font> (i=0; i&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size (); i++)
+02704 {
+02705 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[i].Element == child)
+02706 {
+02707 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[i].Element = NULL;
+02708 <font class="keywordflow">break</font>;
+02709 }
+02710 }
+02711
+02712 <font class="comment">// Element not found!</font>
+02713 <a class="code" href="debug_8h.html#a6">nlassert</a> (i != <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size ());
+02714 }
+02715
+02716 <font class="comment">// ***************************************************************************</font>
+02717
+<a name="l02718"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a22">02718</a> <font class="keywordtype">bool</font> CFormElmArray::isUsed (<font class="keyword">const</font> CForm *form)<font class="keyword"> const</font>
+02719 <font class="keyword"></font>{
+02720 <font class="comment">/*for (uint i=0; i&lt;Elements.size(); i++)</font>
+02721 <font class="comment"> {</font>
+02722 <font class="comment"> if (Elements[i] &amp;&amp; Elements[i]-&gt;isUsed (form))</font>
+02723 <font class="comment"> return true;</font>
+02724 <font class="comment"> }*/</font>
+02725 <font class="keywordflow">return</font> form == <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>;
+02726 }
+02727
+02728 <font class="comment">// ***************************************************************************</font>
+02729
+<a name="l02730"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a23">02730</a> <font class="keywordtype">void</font> CFormElmArray::getFormName (std::string &amp;result, <font class="keyword">const</font> CFormElm *child)<font class="keyword"> const</font>
+02731 <font class="keyword"></font>{
+02732 <font class="comment">// Reset the result</font>
+02733 <font class="keywordflow">if</font> (child == NULL)
+02734 {
+02735 result = <font class="stringliteral">""</font>;
+02736 result.reserve (50);
+02737 }
+02738
+02739 <font class="comment">// Get parent form name</font>
+02740 <font class="keywordflow">if</font> (ParentNode)
+02741 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n1">ParentNode</a>-&gt;getFormName (result, <font class="keyword">this</font>);
+02742
+02743 <font class="comment">// Get node name</font>
+02744 <font class="keywordflow">if</font> (child)
+02745 {
+02746 <font class="comment">// Look for the child</font>
+02747 uint i;
+02748 <font class="keywordflow">for</font> (i=0; i&lt;<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size (); i++)
+02749 {
+02750 <font class="comment">// This one ?</font>
+02751 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>[i].Element == child)
+02752 {
+02753 <font class="keywordtype">char</font> name[512];
+02754 <a class="code" href="namespaceNLMISC.html#a211">smprintf</a> (name, 512, <font class="stringliteral">"[%d]"</font>, i);
+02755
+02756 <font class="comment">// Add the field name</font>
+02757 result += name;
+02758 <font class="keywordflow">break</font>;
+02759 }
+02760 }
+02761
+02762 <font class="comment">// Draw some warning</font>
+02763 <font class="keywordflow">if</font> (i==<a class="code" href="classNLGEORGES_1_1CFormElmArray.html#m2">Elements</a>.size ())
+02764 {
+02765 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">warning</a> (<font class="keyword">false</font>, <font class="stringliteral">"getFormName"</font>, <font class="stringliteral">"Child node not found."</font>);
+02766 }
+02767 }
+02768 }
+02769
+02770 <font class="comment">// ***************************************************************************</font>
+02771
+<a name="l02772"></a><a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a25">02772</a> <font class="keywordtype">void</font> CFormElmArray::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )<font class="keyword"> const</font>
+02773 <font class="keyword"></font>{
+02774 <font class="comment">// Make a buffer string</font>
+02775 va_list args;
+02776 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+02777 <font class="keywordtype">char</font> buffer[1024];
+02778 sint ret = vsnprintf( buffer, 1024, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args );
+02779 va_end( args );
+02780
+02781 <font class="comment">// Set the warning</font>
+02782 string formName;
+02783 <a class="code" href="classNLGEORGES_1_1CFormElmArray.html#a23">getFormName</a> (formName, NULL);
+02784 <a class="code" href="namespaceNLGEORGES.html#a0">NLGEORGES::warning</a> (exception, <font class="stringliteral">"(CFormElmArray::%s) on node (%s) in form (%s) : %s"</font>, function, formName.c_str (), <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>-&gt;getFilename ().c_str (), buffer);
+02785 }
+02786
+02787 <font class="comment">// ***************************************************************************</font>
+02788 <font class="comment">// CFormElmAtom</font>
+02789 <font class="comment">// ***************************************************************************</font>
+02790
+<a name="l02791"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a0">02791</a> CFormElmAtom::CFormElmAtom (CForm *form, CFormElm *parentNode, <font class="keyword">const</font> CFormDfn *parentDfn, uint parentIndex) : CFormElm (form, parentNode, parentDfn, parentIndex)
+02792 {
+02793 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#m0">Type</a> = NULL;
+02794 }
+02795
+02796 <font class="comment">// ***************************************************************************</font>
+02797
+<a name="l02798"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a5">02798</a> <font class="keywordtype">bool</font> CFormElmAtom::isAtom ()<font class="keyword"> const</font>
+02799 <font class="keyword"></font>{
+02800 <font class="keywordflow">return</font> <font class="keyword">true</font>;
+02801 }
+02802
+02803 <font class="comment">// ***************************************************************************</font>
+02804
+<a name="l02805"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">02805</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (string &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02806 <font class="keyword"></font>{
+02807 <a class="code" href="debug_8h.html#a6">nlassert</a> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#m0">Type</a>);
+02808
+02809 <font class="comment">// Evale</font>
+02810 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#m0">Type</a>-&gt;getValue (result, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>, <font class="keyword">this</font>, *<a class="code" href="classNLGEORGES_1_1CFormElm.html#n2">ParentDfn</a>, <a class="code" href="classNLGEORGES_1_1CFormElm.html#n3">ParentIndex</a>, evaluate, NULL, <a class="code" href="classNLGEORGES_1_1CFormElm.html#p0">LastRound</a>++, <font class="stringliteral">""</font>);
+02811 }
+02812
+02813 <font class="comment">// ***************************************************************************</font>
+02814
+<a name="l02815"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a7">02815</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (sint8 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02816 <font class="keyword"></font>{
+02817 <font class="comment">// Get the string value</font>
+02818 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02819 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02820 {
+02821 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02822 }
+02823
+02824 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02825 }
+02826
+02827 <font class="comment">// ***************************************************************************</font>
+02828
+<a name="l02829"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a8">02829</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (uint8 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02830 <font class="keyword"></font>{
+02831 <font class="comment">// Get the string value</font>
+02832 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02833 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02834 {
+02835 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02836 }
+02837
+02838 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02839 }
+02840
+02841 <font class="comment">// ***************************************************************************</font>
+02842
+<a name="l02843"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a9">02843</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (sint16 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02844 <font class="keyword"></font>{
+02845 <font class="comment">// Get the string value</font>
+02846 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02847 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02848 {
+02849 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02850 }
+02851
+02852 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02853 }
+02854
+02855 <font class="comment">// ***************************************************************************</font>
+02856
+<a name="l02857"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a10">02857</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (uint16 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02858 <font class="keyword"></font>{
+02859 <font class="comment">// Get the string value</font>
+02860 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02861 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02862 {
+02863 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02864 }
+02865
+02866 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02867 }
+02868
+02869 <font class="comment">// ***************************************************************************</font>
+02870
+<a name="l02871"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a11">02871</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (sint32 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02872 <font class="keyword"></font>{
+02873 <font class="comment">// Get the string value</font>
+02874 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02875 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02876 {
+02877 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02878 }
+02879
+02880 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02881 }
+02882
+02883 <font class="comment">// ***************************************************************************</font>
+02884
+<a name="l02885"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a12">02885</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (uint32 &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02886 <font class="keyword"></font>{
+02887 <font class="comment">// Get the string value</font>
+02888 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02889 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02890 {
+02891 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02892 }
+02893
+02894 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02895 }
+02896
+02897 <font class="comment">// ***************************************************************************</font>
+02898
+<a name="l02899"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a13">02899</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (<font class="keywordtype">float</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02900 <font class="keyword"></font>{
+02901 <font class="comment">// Get the string value</font>
+02902 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02903 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02904 {
+02905 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02906 }
+02907
+02908 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02909 }
+02910
+02911 <font class="comment">// ***************************************************************************</font>
+02912
+<a name="l02913"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a14">02913</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (<font class="keywordtype">double</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02914 <font class="keyword"></font>{
+02915 <font class="comment">// Get the string value</font>
+02916 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02917 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02918 {
+02919 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02920 }
+02921
+02922 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02923 }
+02924
+02925 <font class="comment">// ***************************************************************************</font>
+02926
+<a name="l02927"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a15">02927</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (<font class="keywordtype">bool</font> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02928 <font class="keyword"></font>{
+02929 <font class="comment">// Get the string value</font>
+02930 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02931 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02932 {
+02933 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02934 }
+02935
+02936 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02937 }
+02938
+02939 <font class="comment">// ***************************************************************************</font>
+02940
+<a name="l02941"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a16">02941</a> <font class="keywordtype">bool</font> CFormElmAtom::getValue (<a class="code" href="classNLMISC_1_1CRGBA.html">NLMISC::CRGBA</a> &amp;result, TEval evaluate)<font class="keyword"> const</font>
+02942 <font class="keyword"></font>{
+02943 <font class="comment">// Get the string value</font>
+02944 string <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+02945 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a6">getValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>, evaluate))
+02946 {
+02947 <font class="keywordflow">return</font> <a class="code" href="classNLGEORGES_1_1CFormElm.html#a65">convertValue</a> (result, <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>.c_str ());
+02948 }
+02949
+02950 <font class="keywordflow">return</font> <font class="keyword">false</font>;
+02951 }
+02952
+02953 <font class="comment">// ***************************************************************************</font>
+02954
+<a name="l02955"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a1">02955</a> xmlNodePtr CFormElmAtom::write (xmlNodePtr root, <font class="keyword">const</font> CForm *form, <font class="keyword">const</font> <font class="keywordtype">char</font> *structName, <font class="keywordtype">bool</font> forceWrite)<font class="keyword"> const</font>
+02956 <font class="keyword"></font>{
+02957 <font class="comment">// Atom is used ?</font>
+02958 <font class="keywordflow">if</font> (<a class="code" href="classNLGEORGES_1_1CFormElm.html#a3">isUsed</a> (form) || forceWrite)
+02959 {
+02960 <font class="comment">// *** Header</font>
+02961 xmlNodePtr node = xmlNewChild ( root, NULL, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"ATOM"</font>, NULL);
+02962
+02963 <font class="comment">// Element name</font>
+02964 <font class="keywordflow">if</font> (structName != NULL)
+02965 {
+02966 <font class="comment">// Struct name</font>
+02967 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"Name"</font>, (<font class="keyword">const</font> xmlChar*)structName);
+02968 }
+02969
+02970 <font class="comment">// The value</font>
+02971 <font class="keywordflow">if</font> (!<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#o0">Value</a>.empty ())
+02972 {
+02973 <font class="keywordflow">if</font> (COXml::isStringValidForProperties (<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#o0">Value</a>.c_str ()))
+02974 xmlSetProp (node, (<font class="keyword">const</font> xmlChar*)<font class="stringliteral">"Value"</font>, (<font class="keyword">const</font> xmlChar*)<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#o0">Value</a>.c_str());
+02975 <font class="keywordflow">else</font>
+02976 {
+02977 xmlNodePtr textNode = xmlNewText ((<font class="keyword">const</font> xmlChar *)<a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#o0">Value</a>.c_str ());
+02978 xmlAddChild (node, textNode);
+02979 }
+02980 }
+02981
+02982 <font class="comment">// Return the new node</font>
+02983 <font class="keywordflow">return</font> node;
+02984 }
+02985 <font class="keywordflow">return</font> NULL;
+02986 }
+02987
+02988 <font class="comment">// ***************************************************************************</font>
+02989
+<a name="l02990"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a4">02990</a> <font class="keywordtype">void</font> CFormElmAtom::read (xmlNodePtr node, CFormLoader &amp;loader, <font class="keyword">const</font> CType *<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>, CForm *form)
+02991 {
+02992 <font class="comment">// Set the type</font>
+02993 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#m0">Type</a> = <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>;
+02994
+02995 <font class="comment">// Set the value ?</font>
+02996 <font class="keywordflow">if</font> (node)
+02997 {
+02998 <font class="comment">// Get the value</font>
+02999 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a> = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlGetProp (node, (xmlChar*)<font class="stringliteral">"Value"</font>);
+03000 <font class="keywordflow">if</font> (value)
+03001 {
+03002 <font class="comment">// Active value</font>
+03003 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a17">setValue</a> (<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>);
+03004
+03005 <font class="comment">// Delete the value</font>
+03006 xmlFree ((<font class="keywordtype">void</font>*)<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>);
+03007 }
+03008 <font class="keywordflow">else</font>
+03009 {
+03010 <font class="comment">// Get content</font>
+03011 <font class="keyword">const</font> <font class="keywordtype">char</font> *valueText = (<font class="keyword">const</font> <font class="keywordtype">char</font>*)xmlNodeGetContent (node);
+03012 <font class="keywordflow">if</font> (valueText)
+03013 {
+03014 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a17">setValue</a> (valueText);
+03015
+03016 <font class="comment">// Delete the value</font>
+03017 xmlFree ((<font class="keywordtype">void</font>*)valueText);
+03018 }
+03019 }
+03020 }
+03021 }
+03022
+03023 <font class="comment">// ***************************************************************************</font>
+03024
+<a name="l03025"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a17">03025</a> <font class="keywordtype">void</font> CFormElmAtom::setValue (<font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>)
+03026 {
+03027 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#o0">Value</a> = <a class="code" href="driver__opengl__extension__def_8h.html#a415">value</a>;
+03028 }
+03029
+03030 <font class="comment">// ***************************************************************************</font>
+03031
+<a name="l03032"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a3">03032</a> <font class="keywordtype">void</font> CFormElmAtom::getFormName (std::string &amp;result, <font class="keyword">const</font> CFormElm *child)<font class="keyword"> const</font>
+03033 <font class="keyword"></font>{
+03034 <font class="comment">// Must be NULL</font>
+03035 <a class="code" href="debug_8h.html#a6">nlassert</a> (child == NULL);
+03036 result = <font class="stringliteral">""</font>;
+03037 result.reserve (50);
+03038
+03039 <font class="comment">// Get parent form name</font>
+03040 <font class="keywordflow">if</font> (ParentNode)
+03041 <a class="code" href="classNLGEORGES_1_1CFormElm.html#n1">ParentNode</a>-&gt;getFormName (result, <font class="keyword">this</font>);
+03042 }
+03043
+03044 <font class="comment">// ***************************************************************************</font>
+03045
+<a name="l03046"></a><a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#c0">03046</a> <font class="keywordtype">void</font> CFormElmAtom::warning (<font class="keywordtype">bool</font> exception, <font class="keyword">const</font> <font class="keywordtype">char</font> *function, <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, ... )<font class="keyword"> const</font>
+03047 <font class="keyword"></font>{
+03048 <font class="comment">// Make a buffer string</font>
+03049 va_list args;
+03050 va_start( args, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a> );
+03051 <font class="keywordtype">char</font> buffer[1024];
+03052 sint ret = vsnprintf( buffer, 1024, <a class="code" href="driver__opengl__extension__def_8h.html#a398">format</a>, args );
+03053 va_end( args );
+03054
+03055 <font class="comment">// Set the warning</font>
+03056 string formName;
+03057 <a class="code" href="classNLGEORGES_1_1CFormElmAtom.html#a3">getFormName</a> (formName, NULL);
+03058 <a class="code" href="namespaceNLGEORGES.html#a0">NLGEORGES::warning</a> (exception, <font class="stringliteral">"(CFormElmAtom::%s) on node (%s) in form (%s) : %s"</font>, function, formName.c_str (), <a class="code" href="classNLGEORGES_1_1CFormElm.html#n0">Form</a>-&gt;getFilename ().c_str (), buffer);
+03059 }
+03060
+03061 <font class="comment">// ***************************************************************************</font>
+03062
+03063 } <font class="comment">// NLGEORGES</font>
+</pre></div>
+
+<!-- footer -->
+<BR><FONT Size=+5>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; </FONT>
+</TD>
+<TD WIDTH=15><IMG SRC=http://www.nevrax.org/inc/img/pixel.gif WIDTH=15 HEIGHT=15 BORDER=0 ALT=""></TD>
+</TR>
+</TABLE>
+</BODY>
+</HTML>