diff options
Diffstat (limited to '')
-rw-r--r-- | docs/doxygen/nel/compilateur_8cpp-source.html | 567 |
1 files changed, 567 insertions, 0 deletions
diff --git a/docs/doxygen/nel/compilateur_8cpp-source.html b/docs/doxygen/nel/compilateur_8cpp-source.html new file mode 100644 index 00000000..912f1e13 --- /dev/null +++ b/docs/doxygen/nel/compilateur_8cpp-source.html @@ -0,0 +1,567 @@ +<!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> <A CLASS=uplinks HREF=http://www.nevrax.org><b>Home</B></FONT></A> </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> <A CLASS=uplinks HREF=http://www.nevrax.com><b>nevrax.com</B></FONT></A> </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> + + +<!-- 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> </td> +</tr></table> +<!-- Generated by Doxygen 1.2.14 --> +<center> +<a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="namespacemembers.html">Namespace Members</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> <a class="qindex" href="pages.html">Related Pages</a> <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> </center> +<hr><h1>compilateur.cpp</h1><a href="compilateur_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 +00006 <font class="comment">/* Copyright, 2000 Nevrax Ltd.</font> +00007 <font class="comment"> *</font> +00008 <font class="comment"> * This file is part of NEVRAX NEL.</font> +00009 <font class="comment"> * NEVRAX NEL is free software; you can redistribute it and/or modify</font> +00010 <font class="comment"> * it under the terms of the GNU General Public License as published by</font> +00011 <font class="comment"> * the Free Software Foundation; either version 2, or (at your option)</font> +00012 <font class="comment"> * any later version.</font> +00013 <font class="comment"></font> +00014 <font class="comment"> * NEVRAX NEL is distributed in the hope that it will be useful, but</font> +00015 <font class="comment"> * WITHOUT ANY WARRANTY; without even the implied warranty of</font> +00016 <font class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</font> +00017 <font class="comment"> * General Public License for more details.</font> +00018 <font class="comment"></font> +00019 <font class="comment"> * You should have received a copy of the GNU General Public License</font> +00020 <font class="comment"> * along with NEVRAX NEL; see the file COPYING. If not, write to the</font> +00021 <font class="comment"> * Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,</font> +00022 <font class="comment"> * MA 02111-1307, USA.</font> +00023 <font class="comment"> */</font> +00024 <font class="preprocessor">#include "<a class="code" href="compilateur_8h.html">nel/ai/script/compilateur.h</a>"</font> +00025 <font class="preprocessor">#include "<a class="code" href="constraint_8h.html">nel/ai/script/constraint.h</a>"</font> +00026 <font class="preprocessor">#include "<a class="code" href="interpret__object__agent_8h.html">nel/ai/script/interpret_object_agent.h</a>"</font> +00027 <font class="preprocessor">#include "<a class="code" href="type__def_8h.html">nel/ai/script/type_def.h</a>"</font> +00028 <font class="preprocessor">#include "<a class="code" href="object__unknown_8h.html">nel/ai/script/object_unknown.h</a>"</font> +00029 <font class="preprocessor">#include <queue></font> +00030 <font class="preprocessor">#include <stdarg.h></font> +00031 +00032 <font class="keyword">namespace </font>NLAISCRIPT +00033 { +00034 <font class="comment">/*struct BestP</font> +00035 <font class="comment"> {</font> +00036 <font class="comment"> sint32 i;</font> +00037 <font class="comment"> double poid;</font> +00038 <font class="comment"></font> +00039 <font class="comment"> BestP(sint32 n, double d)</font> +00040 <font class="comment"> {</font> +00041 <font class="comment"> i = n;</font> +00042 <font class="comment"> poid = d;</font> +00043 <font class="comment"> }</font> +00044 <font class="comment"></font> +00045 <font class="comment"> bool operator < (const BestP &p) const</font> +00046 <font class="comment"> {</font> +00047 <font class="comment"> return poid < p.poid;</font> +00048 <font class="comment"> }</font> +00049 <font class="comment"></font> +00050 <font class="comment"> };*/</font> +00051 +<a name="l00052"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b22">00052</a> <font class="keywordtype">void</font> CCompilateur::onEndClass() +00053 { +00054 <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *o = (<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.pop(); +00055 ((IClassInterpret *)o)->classIsMounted(); +00056 o-><a class="code" href="classNLAIC_1_1IPointerGestion.html#a3">release</a>(); +00057 } +00058 +<a name="l00059"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b0">00059</a> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a> CCompilateur::getTypeOfClass(<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IVarName.html">NLAIAGENT::IVarName</a> &className) +00060 { +00061 <font class="preprocessor">#ifdef NL_DEBUG</font> +00062 <font class="preprocessor"></font> <font class="keyword">const</font> <font class="keywordtype">char</font> *nameDB = className.getString(); +00063 <font class="preprocessor">#endif</font> +00064 <font class="preprocessor"></font> +00065 <a class="code" href="classNLAIC_1_1CRegistry.html">NLAIC::CRegistry</a> *reg = <a class="code" href="namespaceNLAIC.html#a14">NLAIC::getRegistry</a>(); +00066 <font class="keywordflow">if</font> ( reg-><a class="code" href="classNLAIC_1_1CRegistry.html#a14">existsClass</a>( className.getString() ) ) +00067 { +00068 <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a> <a class="code" href="driver__opengl__extension__def_8h.html#a356">id</a>(className.getString()); +00069 <font class="keywordflow">return</font> id; +00070 } +00071 <font class="keywordflow">else</font> +00072 { +00073 IClassInterpret *cl= _SelfClass.find(&className); +00074 <font class="keywordflow">if</font>(cl == NULL) +00075 { +00076 <font class="keywordflow">throw</font> CExceptionHaveNoType(<font class="stringliteral">"Can't find class"</font>); +00077 } +00078 <font class="keywordflow">else</font> +00079 { +00080 <font class="keywordflow">return</font> getTypeOfClass(*cl->getInheritanceName()); +00081 } +00082 } +00083 +00084 <font class="comment">/*</font> +00085 <font class="comment"> try</font> +00086 <font class="comment"> catch (NLAIE::IException &err)</font> +00087 <font class="comment"> { </font> +00088 <font class="comment"> }*/</font> +00089 } +00090 +<a name="l00091"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a13">00091</a> <font class="keywordtype">void</font> CCompilateur::Echo(<font class="keywordtype">char</font> *Er,...) +00092 { +00093 std::string Temp; +00094 va_list marker; +00095 va_start (marker, Er); +00096 <font class="keywordtype">char</font> LaseErrorCodeOrdreInterprete[32*1024]; +00097 vsprintf (LaseErrorCodeOrdreInterprete, Er, marker); +00098 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o1">_Iterface</a>.<a class="code" href="classNLAIC_1_1IIO.html#a1">Echo</a>(<font class="stringliteral">"%s"</font>,LaseErrorCodeOrdreInterprete); +00099 } +00100 +00101 +<a name="l00102"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a11">00102</a> <a class="code" href="structNLAIAGENT_1_1IObjectIA_1_1CProcessResult.html">NLAIAGENT::IObjectIA::CProcessResult</a> CCompilateur::Compile() +00103 { +00104 <a class="code" href="namespaceNLAISCRIPT.html#a26">NLAISCRIPT::InitDico</a>(); +00105 (void)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a6">yywrap</a>(); +00106 <a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n25">yyLine</a> = <a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n26">yyColone</a> = 1; +00107 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o19">_Error</a> = <font class="keyword">false</font>; +00108 +00109 (void)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a12">yyparse</a>(); +00110 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#a6">yylex</a>()); +00111 +00112 <a class="code" href="namespaceNLAISCRIPT.html#a27">NLAISCRIPT::EraseDico</a>(); +00113 +00114 <a class="code" href="structNLAIAGENT_1_1IObjectIA_1_1CProcessResult.html">NLAIAGENT::IObjectIA::CProcessResult</a> <a class="code" href="driver__opengl__extension__def_8h.html#a385">r</a>; +00115 <font class="keywordflow">if</font>(_Error) +00116 { +00117 r.<a class="code" href="structNLAIAGENT_1_1IObjectIA_1_1CProcessResult.html#m0">ResultState</a> = NLAIAGENT::processError; +00118 } +00119 <font class="keywordflow">else</font> r.<a class="code" href="structNLAIAGENT_1_1IObjectIA_1_1CProcessResult.html#m0">ResultState</a> = NLAIAGENT::processIdle; +00120 r.<a class="code" href="structNLAIAGENT_1_1IObjectIA_1_1CProcessResult.html#m1">Result</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o40">_ResultCompile</a>; +00121 <font class="keywordflow">return</font> r; +00122 } +00123 +<a name="l00124"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b7">00124</a> <a class="code" href="structNLAIAGENT_1_1CIdMethod.html">NLAIAGENT::CIdMethod</a> CCompilateur::findMethode(sint32 inheritance,<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *baseName, <font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *classType,<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IVarName.html">NLAIAGENT::IVarName</a> &methodeName,<font class="keyword">const</font> CParam &<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>) +00125 { +00126 +00127 NLAIAGENT::tQueue <a class="code" href="driver__opengl__extension__def_8h.html#a386">q</a>; +00128 <font class="keywordflow">if</font>(baseName != NULL && baseName-><a class="code" href="classNLAIAGENT_1_1CStringType.html#a10">getStr</a>() == <a class="code" href="classNLAIAGENT_1_1CStringVarName.html">NLAIAGENT::CStringVarName</a>((<font class="keyword">const</font> <font class="keywordtype">char</font> *)CAgentClass::IdAgentClass)) +00129 { +00130 <a class="code" href="driver__opengl__extension__def_8h.html#a386">q</a> = classType-><a class="code" href="classNLAIAGENT_1_1IObjectIA.html#a12">isMember</a>(&baseName-><a class="code" href="classNLAIAGENT_1_1CStringType.html#a10">getStr</a>(),&methodeName,<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>); +00131 } +00132 <font class="keywordflow">else</font> +00133 { +00134 <font class="comment">/*std::string s;</font> +00135 <font class="comment"> methodeName.getDebugString(s); </font> +00136 <font class="comment"> param.getDebugString(s); </font> +00137 <font class="comment"></font> +00138 <font class="comment"> s += " ";</font> +00139 <font class="comment"> classType->getDebugString(s);</font> +00140 <font class="comment"></font> +00141 <font class="comment"> NLAIC::Out("%s\n",s.c_str());*/</font> +00142 <a class="code" href="driver__opengl__extension__def_8h.html#a386">q</a> = classType-><a class="code" href="classNLAIAGENT_1_1IObjectIA.html#a12">isMember</a>(NULL,&methodeName,<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>); +00143 } +00144 +00145 <font class="keywordflow">if</font>(<a class="code" href="driver__opengl__extension__def_8h.html#a386">q</a>.size()) +00146 { +00147 <font class="keywordflow">return</font> <a class="code" href="driver__opengl__extension__def_8h.html#a386">q</a>.top(); +00148 } +00149 <font class="keywordflow">else</font> +00150 { +00151 <font class="keywordflow">return</font> <a class="code" href="structNLAIAGENT_1_1CIdMethod.html">NLAIAGENT::CIdMethod</a>(-1,0.0,NULL,NULL); +00152 } +00153 } +00154 +<a name="l00155"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a17">00155</a> CFunctionTag CCompilateur::findMethode(<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html">NLAIAGENT::IBaseGroupType</a> &listName,<font class="keyword">const</font> CParam &<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>) +00156 { +00157 <font class="keywordflow">return</font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a16">findMethode</a>((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get(),listName,<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>); +00158 } +00159 +<a name="l00160"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a16">00160</a> CFunctionTag CCompilateur::findMethode(<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *classType,<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html">NLAIAGENT::IBaseGroupType</a> &listName,<font class="keyword">const</font> CParam &<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>) +00161 { +00162 CFunctionTag method; +00163 <font class="keywordflow">if</font>(!listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_12">size</a>()) +00164 { +00165 method.Inheritance = -1; +00166 method.MethodNum = -1; +00167 method.MethodName = NULL; +00168 <font class="keywordflow">return</font> method; +00169 } +00170 +00171 sint32 h = listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_12">size</a>() - 1; +00172 +00173 <a class="code" href="structNLAIAGENT_1_1CIdMethod.html">NLAIAGENT::CIdMethod</a> <a class="code" href="driver__opengl__extension__def_8h.html#a385">r</a>; +00174 +00175 <font class="keywordflow">if</font>(!h) +00176 { +00177 method.Inheritance = 0;<font class="comment">//classType->sizeVTable() - 1;</font> +00178 method.MethodName = &((<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_10">get</a>())->getStr(); +00179 +00180 r = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a16">findMethode</a>(method.Inheritance,NULL,classType, *method.MethodName,<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>); +00181 <font class="keywordflow">if</font>( r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m0">Index</a> <0) +00182 { +00183 method.MethodName = NULL; +00184 method.Inheritance = -1; +00185 method.MethodNum = -1; +00186 +00187 } +00188 <font class="keywordflow">else</font> +00189 { +00190 method.MethodNum = r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m0">Index</a>; +00191 method.Object = classType; +00192 method.setTypeObject(r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m3">ReturnType</a>); +00193 method.Method = (CMethodeName *)r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m2">Method</a>; +00194 } +00195 +00196 } +00197 <font class="keywordflow">else</font> +00198 { +00199 <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *baseName = (<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_11">getFront</a>()->clone(); +00200 +00201 <font class="keywordflow">if</font>((classType = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a22">validateHierarchyMethode</a>(method.Member,method.Inheritance,classType,listName)) != NULL) +00202 { +00203 <font class="keywordflow">if</font>(method.Inheritance >= 0) +00204 { +00205 method.MethodName = &((<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_10">get</a>())->getStr(); +00206 +00207 r = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a16">findMethode</a>(method.Inheritance,baseName,classType,*method.MethodName,<a class="code" href="driver__opengl__extension__def_8h.html#a382">param</a>); +00208 <font class="keywordflow">if</font>( r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m0">Index</a> < 0) +00209 { +00210 method.MethodName = NULL; +00211 method.Inheritance = -1; +00212 method.MethodNum = -1; +00213 } +00214 <font class="keywordflow">else</font> +00215 { +00216 +00217 method.Object = classType; +00218 method.MethodNum = r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m0">Index</a>; +00219 method.Method = (CMethodeName *)r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m2">Method</a>; +00220 method.setTypeObject(r.<a class="code" href="structNLAIAGENT_1_1CIdMethod.html#m3">ReturnType</a>); +00221 +00222 } +00223 } +00224 <font class="keywordflow">else</font> +00225 { +00226 method.MethodName = NULL; +00227 method.Inheritance = -1; +00228 method.MethodNum = -1; +00229 } +00230 } +00231 <font class="keywordflow">else</font> +00232 { +00233 +00234 method.MethodName = NULL; +00235 method.Inheritance = -1; +00236 method.MethodNum = -1; +00237 +00238 } +00239 baseName-><a class="code" href="classNLAIC_1_1IPointerGestion.html#a3">release</a>(); +00240 } +00241 +00242 <font class="keywordflow">return</font> method; +00243 } +00244 +<a name="l00245"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a22">00245</a> <font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *CCompilateur::validateHierarchyMethode(<a class="code" href="classstd_1_1list.html">std::list<sint32></a> &listH,sint32 &h,<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *classType,<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html">NLAIAGENT::IBaseGroupType</a> &listName) +00246 { +00247 <a class="code" href="classstd_1_1list.html">std::list<NLAISCRIPT::CStringType></a> listClassName; +00248 +00249 <a class="code" href="classNLAIAGENT_1_1CIteratorContener.html">NLAIAGENT::CIteratorContener</a> it = listName.<a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_6">getIterator</a>(); +00250 +00251 <font class="keywordflow">while</font>(!it.<a class="code" href="classNLAIAGENT_1_1CConstIteratorContener.html#a6">isInEnd</a>()) +00252 { +00253 <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> &name = *((<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)it++); +00254 listClassName.push_back(name.<a class="code" href="classNLAIAGENT_1_1CStringType.html#a10">getStr</a>().getString()); +00255 } +00256 listClassName.pop_back(); +00257 <font class="keywordflow">return</font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b27">getValidateHierarchyBase</a>(classType,listH,h,listClassName); +00258 } +00259 +<a name="l00260"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b2">00260</a> sint32 CCompilateur::runTypeConstraint() +00261 { +00262 sint32 n = 1; +00263 sint32 did = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.size(); +00264 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::iterator j,i; +00265 <font class="keywordflow">while</font>(n != 0) +00266 { +00267 i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.begin(); +00268 n = 0; +00269 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.end()) +00270 { +00271 j = i ++; +00272 IConstraint *c = *j; +00273 c->run(*<font class="keyword">this</font>); +00274 <font class="keywordflow">if</font>( c->satisfied() ) +00275 { +00276 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.erase(j); +00277 n++; +00278 c->release(); +00279 } +00280 } +00281 did -= n; +00282 } +00283 <font class="keywordflow">return</font> did; +00284 } +00285 +<a name="l00286"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b3">00286</a> sint32 CCompilateur::runMethodConstraint() +00287 { +00288 +00289 +00290 sint32 n = 1; +00291 <font class="keywordflow">while</font>(n) +00292 { +00293 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::iterator i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.begin(); +00294 n = 0; +00295 +00296 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.end()) +00297 { +00298 IConstraint *c = *i++; +00299 <font class="keywordflow">if</font>(!c->satisfied()) +00300 { +00301 c->run(*<font class="keyword">this</font>); +00302 <font class="keywordflow">if</font>(c->satisfied()) n++; +00303 } +00304 } +00305 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b2">runTypeConstraint</a>()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b5">errorTypeConstraint</a>(); +00306 } +00307 +00308 +00309 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::iterator j,i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.begin(); +00310 n = 0; +00311 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.end()) +00312 { +00313 j = i; +00314 i ++; +00315 IConstraint *c = *j; +00316 <font class="keywordflow">if</font>( c->satisfied() ) +00317 { +00318 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.erase(j); +00319 n++; +00320 c->release(); +00321 } +00322 } +00323 <font class="keywordflow">return</font> n; +00324 } +<a name="l00325"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b5">00325</a> <font class="keywordtype">void</font> CCompilateur::errorTypeConstraint() +00326 { +00327 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::iterator j,i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.begin(); +00328 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.end()) +00329 { +00330 j = i ++; +00331 IConstraint *c = *j; +00332 <font class="keywordflow">if</font>( !c->satisfied() ) +00333 { +00334 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.erase(j); +00335 <font class="comment">//yyerror((char *)c->getInfo());</font> +00336 c->release(); +00337 } +00338 } +00339 } +<a name="l00340"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b4">00340</a> <font class="keywordtype">void</font> CCompilateur::errorMethodConstraint() +00341 { +00342 <font class="keywordtype">char</font> txt[1024*16]; +00343 +00344 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::iterator j,i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.begin(); +00345 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.end()) +00346 { +00347 j = i ++; +00348 IConstraint *c = *j; +00349 c->getError(txt); +00350 <a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n25">yyLine</a> = c->getLine(); +00351 <a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n26">yyColone</a> = c->getColone(); +00352 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>(txt); +00353 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.begin() != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.end()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.erase(j); +00354 c->release(); +00355 } +00356 } +00357 +<a name="l00358"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a7">00358</a> <font class="keywordtype">void</font> CCompilateur::cleanTypeList() +00359 { +00360 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.size()) +00361 { +00362 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.back()->release(); +00363 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.pop_back(); +00364 } +00365 } +<a name="l00366"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a8">00366</a> <font class="keywordtype">void</font> CCompilateur::clean() +00367 { +00368 sint32 i; +00369 i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.size(); +00370 <font class="keywordflow">while</font>(i --) +00371 { +00372 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->release(); +00373 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.pop_back(); +00374 } +00375 i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.size(); +00376 <font class="keywordflow">while</font>(i --) +00377 { +00378 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->release(); +00379 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.pop_back(); +00380 } +00381 +00382 i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o11">_LastBloc3</a>.size(); +00383 <font class="keywordflow">while</font>(i --) +00384 { +00385 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o11">_LastBloc3</a>.back()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o11">_LastBloc3</a>.back()->release(); +00386 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o11">_LastBloc3</a>.pop_back(); +00387 } +00388 +00389 <font class="comment">//sint32 i = _LastSaveBloc.size();</font> +00390 i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.size(); +00391 <font class="keywordflow">while</font>(i --) +00392 { +00393 IBlock *k = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.back(); +00394 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> != k) k->release(); +00395 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.pop_back(); +00396 } +00397 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> !=NULL) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->release(); +00398 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = NULL; +00399 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.size()) +00400 { +00401 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first->release(); +00402 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().second->release(); +00403 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.pop_back(); +00404 } +00405 +00406 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.size()) +00407 { +00408 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->release(); +00409 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.pop_back(); +00410 } +00411 +00412 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.size()) +00413 { +00414 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->release(); +00415 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.pop_back(); +00416 } +00417 +00418 +00419 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> != NULL) +00420 { +00421 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->release(); +00422 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00423 } +00424 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o29">_FlotingExpressionType</a> != NULL) +00425 { +00426 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o29">_FlotingExpressionType</a>->release(); +00427 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o29">_FlotingExpressionType</a> = NULL; +00428 } +00429 +00430 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a7">cleanTypeList</a>(); +00431 } +00432 +<a name="l00433"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a9">00433</a> <font class="keywordtype">void</font> CCompilateur::cleanMethodConstraint() +00434 { +00435 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.size()) +00436 { +00437 <font class="comment">//IConstraint *c = _MethodConstraint.back();</font> +00438 <font class="comment">//c->release();</font> +00439 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.pop_back(); +00440 } +00441 } +00442 +<a name="l00443"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a10">00443</a> <font class="keywordtype">void</font> CCompilateur::cleanTypeConstraint() +00444 { +00445 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.size()) +00446 { +00447 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.back()->release(); +00448 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.pop_back(); +00449 } +00450 } +00451 +<a name="l00452"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b32">00452</a> IConstraint *CCompilateur::getMethodConstraint(<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html">NLAIAGENT::IBaseGroupType</a> &g,<font class="keyword">const</font> CParam &p)<font class="keyword"> const</font> +00453 <font class="keyword"> </font>{ +00454 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::const_iterator i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.begin(); +00455 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.end()) +00456 { +00457 <font class="keywordflow">if</font>((*i)->getTypeOfClass() == CConstraintMethode::constraintMethode) +00458 { +00459 <font class="keyword">const</font> CConstraintMethode *o = (<font class="keyword">const</font> CConstraintMethode *)*i; +00460 <font class="keywordflow">if</font>(o->isEqual(g,p)) <font class="keywordflow">return</font> *i; +00461 } +00462 i++; +00463 } +00464 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00465 } +00466 +<a name="l00467"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b33">00467</a> IConstraint *CCompilateur::getMethodConstraint(<font class="keyword">const</font> IConstraint&c)<font class="keyword"> const</font> +00468 <font class="keyword"> </font>{ +00469 <a class="code" href="classstd_1_1list.html">std::list<IConstraint *></a>::const_iterator i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.begin(); +00470 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.end()) +00471 { +00472 <font class="keyword">const</font> IConstraint *o = *i; +00473 <font class="keywordflow">if</font>(*o == c) <font class="keywordflow">return</font> *i; +00474 i++; +00475 } +00476 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00477 } +00478 +<a name="l00479"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b11">00479</a> <font class="keywordtype">void</font> CCompilateur::setNewLine() +00480 { +00481 <font class="keywordflow">if</font> (_Debug) +00482 { +00483 <font class="keywordflow">if</font> (<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> != NULL) +00484 { +00485 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->setCurrentLine(<a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n25">yyLine</a>); +00486 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->setFirstOpCodeInLine(<font class="keyword">true</font>); +00487 } +00488 } +00489 } +00490 +<a name="l00491"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b61">00491</a> <font class="keywordtype">void</font> CCompilateur::addOpCode(IOpCode *<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>) +00492 { +00493 +00494 <font class="comment">//CLdbOpCode *x = new CLdbOpCode (NLAIAGENT::CGroupType());</font> +00495 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>); +00496 } +00497 } +</pre></div> + +<!-- footer --> +<BR><FONT Size=+5> </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> |