diff options
Diffstat (limited to 'docs/doxygen/nel/yacc_8cpp-source.html')
-rw-r--r-- | docs/doxygen/nel/yacc_8cpp-source.html | 1105 |
1 files changed, 1105 insertions, 0 deletions
diff --git a/docs/doxygen/nel/yacc_8cpp-source.html b/docs/doxygen/nel/yacc_8cpp-source.html new file mode 100644 index 00000000..e3ca4c69 --- /dev/null +++ b/docs/doxygen/nel/yacc_8cpp-source.html @@ -0,0 +1,1105 @@ +<!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>yacc.cpp</h1><a href="yacc_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="type__def_8h.html">nel/ai/script/type_def.h</a>"</font> +00027 <font class="preprocessor">#include "<a class="code" href="object__unknown_8h.html">nel/ai/script/object_unknown.h</a>"</font> +00028 <font class="preprocessor">#include "<a class="code" href="constraint__stack__component_8h.html">nel/ai/script/constraint_stack_component.h</a>"</font> +00029 <font class="preprocessor">#include "<a class="code" href="constraint__find__run_8h.html">nel/ai/script/constraint_find_run.h</a>"</font> +00030 <font class="preprocessor">#include "<a class="code" href="main__agent__script_8h.html">nel/ai/agent/main_agent_script.h</a>"</font> +00031 <font class="preprocessor">#include "<a class="code" href="interpret__object__manager_8h.html">nel/ai/script/interpret_object_manager.h</a>"</font> +00032 <font class="preprocessor">#include "<a class="code" href="performative_8h.html">nel/ai/agent/performative.h</a>"</font> +00033 +00034 <font class="keyword">namespace </font>NLAISCRIPT +00035 { +<a name="l00036"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b16">00036</a> <font class="keywordtype">void</font> CCompilateur::interrogationEnd() +00037 { +00038 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> - <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.popMark(); +00039 <font class="keywordflow">if</font> (_Debug) +00040 { +00041 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->addCode((<font class="keyword">new</font> CFreeAllocDebug)); +00042 } +00043 <font class="keywordflow">else</font> +00044 { +00045 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->addCode((<font class="keyword">new</font> CFreeAlloc)); +00046 } +00047 sint32 i =<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().size(); +00048 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.back(); +00049 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->release(); +00050 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CJFalseOpCode (i)); +00051 <font class="keywordflow">while</font>(i --) +00052 { +00053 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->pushCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->getFront()); +00054 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().front(); +00055 (<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode())->addConstraint(b); +00056 <font class="keyword">delete</font> b; +00057 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().pop_front(); +00058 } +00059 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->release(); +00060 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.pop_back(); +00061 } +00062 +<a name="l00063"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b13">00063</a> <font class="keywordtype">void</font> CCompilateur::ifInterrogation() +00064 { +00065 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>); +00066 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.back()->incRef(); +00067 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.push_back(<font class="keyword">new</font> IBlock(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o38">_Debug</a>)); +00068 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->incRef(); +00069 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back(); +00070 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.pushMark(); +00071 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode((<font class="keyword">new</font> CMarkAlloc)); +00072 <font class="keywordflow">if</font>(_ExpressionType) +00073 { +00074 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->release(); +00075 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00076 } +00077 } +00078 +<a name="l00079"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b14">00079</a> <font class="keywordtype">void</font> CCompilateur::ifInterrogationPoint() +00080 { +00081 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> - <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.popMark(); +00082 <font class="keywordflow">if</font> (_Debug) +00083 { +00084 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->addCode((<font class="keyword">new</font> CFreeAllocDebug)); +00085 } +00086 <font class="keywordflow">else</font> +00087 { +00088 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->addCode((<font class="keyword">new</font> CFreeAlloc)); +00089 } +00090 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.push_back(<font class="keyword">new</font> IBlock(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o38">_Debug</a>)); +00091 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->incRef(); +00092 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back(); +00093 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.pushMark(); +00094 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode((<font class="keyword">new</font> CMarkAlloc)); +00095 } +00096 +<a name="l00097"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b15">00097</a> <font class="keywordtype">void</font> CCompilateur::ifInterrogationEnd() +00098 { +00099 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> - <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.popMark(); +00100 +00101 <font class="keywordflow">if</font> (_Debug) +00102 { +00103 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->addCode((<font class="keyword">new</font> CFreeAllocDebug)); +00104 } +00105 <font class="keywordflow">else</font> +00106 { +00107 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->addCode((<font class="keyword">new</font> CFreeAlloc)); +00108 } +00109 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.back(); +00110 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->release(); +00111 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o8">_LastSaveBloc</a>.pop_back(); +00112 sint32 i =<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().size(); +00113 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CJFalseOpCode (i + 1)); +00114 <font class="keywordflow">while</font>(i --) +00115 { +00116 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->pushCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->getFront()); +00117 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().front(); +00118 (<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode())->addConstraint(b); +00119 <font class="keyword">delete</font> b; +00120 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->listCode().pop_front(); +00121 } +00122 i =<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->listCode().size(); +00123 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CJmpOpCode (i)); +00124 <font class="keywordflow">while</font>(i --) +00125 { +00126 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->pushCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->getFront()); +00127 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->listCode().front(); +00128 (<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode())->addConstraint(b); +00129 <font class="keyword">delete</font> b; +00130 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->listCode().pop_front(); +00131 } +00132 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.back()->release(); +00133 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o9">_LastBloc1</a>.pop_back(); +00134 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.back()->release(); +00135 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o10">_LastBloc2</a>.pop_back(); +00136 } +00137 +<a name="l00138"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b17">00138</a> sint32 CCompilateur::affectation() +00139 { +00140 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.size() >= 1) +00141 { +00142 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.size() == 1) +00143 { +00144 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a3">getVar</a>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data()); +00145 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> == NULL) +00146 { +00147 sint32 member = ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())-><a class="code" href="classNLAIAGENT_1_1IObjectIA.html#a6">getStaticMemberIndex</a>(<a class="code" href="classNLAIAGENT_1_1CStringVarName.html">NLAIAGENT::CStringVarName</a>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data())); +00148 <font class="keywordflow">if</font>(member < 0) +00149 { +00150 <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *i; +00151 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->satisfied()) +00152 { +00153 <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a> *<a class="code" href="driver__opengl__extension__def_8h.html#a356">id</a> = <font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(*<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->getConstraintTypeOf()); +00154 IOpType * c= <font class="keyword">new</font> COperandSimple(id); +00155 i = <font class="keyword">new</font> CObjectUnknown(c); +00156 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->release(); +00157 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00158 } +00159 <font class="keywordflow">else</font> +00160 { +00161 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->incRef(); +00162 i = <font class="keyword">new</font> CObjectUnknown(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00163 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00164 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00165 } +00166 +00167 <font class="preprocessor"> #ifdef NL_DEBUG</font> +00168 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam((sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data()); +00169 <font class="preprocessor"> #else</font> +00170 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam((sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>); +00171 <font class="preprocessor"> #endif</font> +00172 <font class="preprocessor"></font> +00173 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->allocLocVar(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data(), <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>); +00174 +00175 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>[(int)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>] = i; +00176 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> ++; +00177 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a> ++; +00178 <font class="keywordflow">if</font>(_LastAffectation) +00179 { +00180 <font class="keywordflow">if</font> (_Debug) +00181 { +00182 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLocAllocDebug()); +00183 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffOpCodeDebug( ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex(), <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data())); +00184 } +00185 <font class="keywordflow">else</font> +00186 { +00187 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLocAlloc()); +00188 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffOpCode( ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex())); +00189 } +00190 } +00191 } +00192 <font class="keywordflow">else</font> +00193 { +00194 +00195 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b23">affectationMember</a>(member)) <font class="keywordflow">return</font> <font class="keyword">false</font>; +00196 } +00197 } +00198 <font class="keywordflow">else</font> +00199 { +00200 <font class="keywordflow">if</font> (_Debug) +00201 { +00202 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffOpCodeDebug( ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex(), <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data())); +00203 } +00204 <font class="keywordflow">else</font> +00205 { +00206 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffOpCode( ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex())); +00207 } +00208 sint <a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a> = ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex(); +00209 +00210 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->eraseVar(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data()); +00211 +00212 <font class="preprocessor"> #ifdef NL_DEBUG</font> +00213 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam(<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data()); +00214 <font class="preprocessor"> #else</font> +00215 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam(<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>); +00216 <font class="preprocessor"> #endif</font> +00217 <font class="preprocessor"></font> +00218 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->allocLocVar(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data(), <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>); +00219 +00220 <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *i; +00221 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->satisfied()) +00222 { +00223 IOpType * c= <font class="keyword">new</font> COperandSimple(<font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(*<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->getConstraintTypeOf())); +00224 i = <font class="keyword">new</font> CObjectUnknown(c); +00225 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->release(); +00226 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00227 } +00228 <font class="keywordflow">else</font> +00229 { +00230 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->incRef(); +00231 i = <font class="keyword">new</font> CObjectUnknown(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00232 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->incRef(); +00233 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00234 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00235 } +00236 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>[<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>]->release(); +00237 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>[<a class="code" href="driver__opengl__extension__def_8h.html#a358">index</a>] = i; +00238 +00239 } +00240 } +00241 <font class="keywordflow">else</font> +00242 { +00243 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a3">getVar</a>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.front().data()); +00244 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> == NULL) +00245 { +00246 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b26">PrivateError</a>()) +00247 { +00248 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00249 } +00250 +00251 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->satisfied()) +00252 { +00253 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->release(); +00254 } +00255 <font class="keywordflow">else</font> +00256 { +00257 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00258 } +00259 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00260 } +00261 <font class="keywordflow">else</font> +00262 { +00263 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>.pop_front(); +00264 IOpType *cont = (IOpType *)((<font class="keyword">const</font> CObjectUnknown *)((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getObject())->getBaseType(); +00265 <font class="keywordflow">if</font>(cont->satisfied()) +00266 { +00267 <a class="code" href="classstd_1_1list.html">std::list<sint32></a> ref; +00268 IOpType *constr; +00269 IClassInterpret *cl = (IClassInterpret *)((CClassInterpretFactory *)cont->getConstraintTypeOf()->getFactory())->getClass(); +00270 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a18">isValidateVarName</a>(cl,ref,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>,constr)) +00271 { +00272 <font class="keywordflow">if</font>(constr) constr->release(); +00273 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00274 } +00275 COperationTypeGD *dg = <font class="keyword">new</font> COperationTypeGD(); +00276 dg->setOperationD(constr); +00277 dg->setOperationG(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00278 dg->setOp(<a class="code" href="classNLAIC_1_1CTypeOfOperator.html#s15s13">NLAIC::CTypeOfOperator::opAff</a>); +00279 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(dg); +00280 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00281 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffHeapMemberiOpCode( ref,((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex())); +00282 +00283 +00284 } +00285 <font class="keywordflow">else</font> +00286 { +00287 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CHaltOpCode()); +00288 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode(); +00289 cont->incRef(); +00290 IOpType *c = (IOpType *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b32">getMethodConstraint</a>(CConstraintStackComp(CConstraintStackComp::heapAffectation, +00291 ((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex(), +00292 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a> ,cont,0,0)); +00293 <font class="keywordflow">if</font>(c == NULL) +00294 { +00295 cont->incRef(); +00296 c = <font class="keyword">new</font> CConstraintStackComp(CConstraintStackComp::heapAffectation,((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)->getIndex(), +00297 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a> ,cont,0,0); +00298 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(c); +00299 } +00300 +00301 c->incRef(); +00302 COperationTypeGD *dg = <font class="keyword">new</font> COperationTypeGD(); +00303 dg->setOperationD(c); +00304 dg->setOperationG(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00305 dg->setOp(<a class="code" href="classNLAIC_1_1CTypeOfOperator.html#s15s13">NLAIC::CTypeOfOperator::opAff</a>); +00306 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(dg); +00307 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00308 b->addConstraint(c); +00309 } +00310 } +00311 +00312 } +00313 } +00314 <font class="keywordflow">else</font> +00315 { +00316 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>(<font class="stringliteral">"erreur de definition de variable"</font>); +00317 <font class="keywordflow">return</font> 0; +00318 } +00319 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00320 } +00321 +<a name="l00322"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b23">00322</a> sint32 CCompilateur::affectationMember(sint32 member) +00323 { +00324 <font class="keywordflow">return</font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b23">affectationMember</a>((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get(),member); +00325 } +00326 +<a name="l00327"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b24">00327</a> sint32 CCompilateur::affectationMember(IClassInterpret *base,sint32 member) +00328 { +00329 <font class="keywordflow">try</font> +00330 { +00331 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffMemberOpCode(member)); +00332 COperandSimple *a = <font class="keyword">new</font> COperandSimple(<font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(base->getStaticMember(member)->getType())); +00333 COperationTypeGD *gd = <font class="keyword">new</font> COperationTypeGD(); +00334 gd->setOperationG(a); +00335 gd->setOperationD(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00336 gd->setOp(<a class="code" href="classNLAIC_1_1CTypeOfOperator.html#s15s13">NLAIC::CTypeOfOperator::opAff</a>); +00337 <font class="keywordflow">if</font>(gd->satisfied()) +00338 { +00339 gd->release(); +00340 } +00341 <font class="keywordflow">else</font> +00342 { +00343 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(gd); +00344 } +00345 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00346 +00347 } +00348 <font class="keywordflow">catch</font>(<a class="code" href="classNLAIE_1_1IException.html">NLAIE::IException</a> &) +00349 { +00350 std::string text; +00351 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"Bad reference or class reference undefined"</font>); +00352 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00353 <font class="keywordflow">return</font> 0; +00354 } +00355 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00356 } +00357 +<a name="l00358"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b26">00358</a> sint32 CCompilateur::PrivateError() +00359 { +00360 <a class="code" href="classstd_1_1list.html">std::list<sint32></a> ref; +00361 IOpType *c; +00362 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a18">isValidateVarName</a>(ref,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o17">_LasAffectationVarStr</a>,c)) +00363 { +00364 <font class="keywordflow">if</font>(c) c->release(); +00365 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00366 } +00367 <font class="keywordflow">if</font>(ref.size() == 1) +00368 { +00369 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffMemberOpCode(ref.back())); +00370 } +00371 <font class="keywordflow">else</font> +00372 { +00373 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CAffMemberiOpCode (ref)); +00374 } +00375 +00376 <font class="keywordflow">if</font>(c) c->release(); +00377 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00378 } +00379 +<a name="l00380"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a19">00380</a> sint32 CCompilateur::isValidateVarName(<a class="code" href="classstd_1_1list.html">std::list<sint32></a> &ref,<a class="code" href="classstd_1_1list.html">std::list<NLAISCRIPT::CStringType></a> &listName,IOpType *&<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>) +00381 { +00382 <font class="keywordflow">return</font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a18">isValidateVarName</a>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get(),ref,listName,<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>); +00383 } +00384 +<a name="l00385"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a18">00385</a> sint32 CCompilateur::isValidateVarName(<font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *base,<a class="code" href="classstd_1_1list.html">std::list<sint32></a> &ref,<a class="code" href="classstd_1_1list.html">std::list<NLAISCRIPT::CStringType></a> &listName,IOpType *&<a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a>) +00386 { +00387 <a class="code" href="classNLAIAGENT_1_1CStringVarName.html">NLAIAGENT::CStringVarName</a> varName(listName.back().data()); +00388 sint32 h; +00389 listName.pop_back(); +00390 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = NULL; +00391 <font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *baseClass = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b27">getValidateHierarchyBase</a>(base,ref,h,listName); +00392 +00393 <font class="keywordflow">if</font>(baseClass) +00394 { +00395 sint32 i = baseClass-><a class="code" href="classNLAIAGENT_1_1IObjectIA.html#a6">getStaticMemberIndex</a>(varName); +00396 <font class="keywordflow">if</font>(i>=0) +00397 { +00398 <font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *c = baseClass-><a class="code" href="classNLAIAGENT_1_1IObjectIA.html#a7">getStaticMember</a>(i); +00399 <font class="comment">/*if((const NLAIC::CTypeOfObject &)baseClass->getType() & NLAIC::CTypeOfObject::tAgentInterpret) </font> +00400 <font class="comment"> {</font> +00401 <font class="comment"> i += getCompementShift((IClassInterpret *)baseClass);</font> +00402 <font class="comment"> }*/</font> +00403 <font class="keywordflow">if</font>(c != NULL) +00404 { +00405 ref.push_back(i); +00406 <a class="code" href="driver__opengl__extension__def_8h.html#a373">type</a> = <font class="keyword">new</font> COperandSimple(<font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(c-><a class="code" href="classNLAIC_1_1IBasicType.html#a2">getType</a>())); +00407 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00408 } +00409 <font class="keywordflow">else</font> +00410 { +00411 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00412 } +00413 +00414 } +00415 } +00416 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00417 } +00418 +<a name="l00419"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b25">00419</a> sint32 CCompilateur::affectationiMember(<font class="keyword">const</font> IClassInterpret *baseClass,<a class="code" href="classstd_1_1list.html">std::list<NLAISCRIPT::CStringType></a> &varHName) +00420 { +00421 +00422 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00423 } +00424 +<a name="l00425"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b19">00425</a> <font class="keywordtype">void</font> CCompilateur::allocExpression(IOpCode *op,<font class="keywordtype">bool</font> gd) +00426 { +00427 <font class="preprocessor">#ifdef NL_DEBUG</font> +00428 <font class="preprocessor"></font> <a class="code" href="classstd_1_1list.html">std::list<sint32></a>::iterator i_dbg = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.begin(); +00429 <font class="keywordflow">while</font>(i_dbg != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.end()) +00430 { +00431 <font class="keywordtype">int</font> k = *i_dbg++; +00432 } +00433 +00434 <font class="preprocessor">#endif</font> +00435 <font class="preprocessor"></font> <font class="keywordflow">switch</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.VarType) +00436 { +00437 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a4">varTypeImediate</a>: +00438 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed) +00439 { +00440 CLdbOpCode *<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> CLdbOpCode (*<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Value); +00441 <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>); +00442 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed = <font class="keyword">true</font>; +00443 } +00444 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00445 <font class="keywordflow">break</font>; +00446 +00447 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a8">varTypeLocal</a>: +00448 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed) +00449 { +00450 <font class="keywordflow">if</font>(((<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.ValueVar)->getType() == CVarPStackParam::IdVarPStackParam) +00451 { +00452 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbRefOpCode ( ((CVarPStackParam *)((<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.ValueVar))->getIndex())); +00453 } +00454 <font class="keywordflow">else</font> +00455 { +00456 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbOpCode (*((<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.ValueVar))); +00457 } +00458 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed = <font class="keyword">true</font>; +00459 } +00460 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00461 <font class="keywordflow">break</font>; +00462 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a5">varTypeMember</a>: +00463 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed) +00464 { +00465 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.size() == 1) +00466 { +00467 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbMemberOpCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.back())); +00468 } +00469 <font class="keywordflow">else</font> +00470 { +00471 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbMemberiOpCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member)); +00472 } +00473 +00474 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed = <font class="keyword">true</font>; +00475 } +00476 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00477 <font class="keywordflow">break</font>; +00478 +00479 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a9">varForFunc</a>: +00480 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00481 <font class="keywordflow">break</font>; +00482 +00483 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a7">varTypeHeapMember</a>: +00484 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed) +00485 { +00486 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.size()) +00487 { +00488 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbHeapMemberiOpCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member,((CVarPStackParam *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.ValueVar)->getIndex())); +00489 } +00490 <font class="keywordflow">else</font> +00491 { +00492 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack); +00493 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CHaltOpCode()); +00494 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode(); +00495 b->addConstraint(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack); +00496 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack = NULL; +00497 } +00498 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed = <font class="keyword">true</font>; +00499 } +00500 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00501 <font class="keywordflow">break</font>; +00502 +00503 <font class="keywordflow">case</font> <a class="code" href="namespaceNLAISCRIPT.html#a51a6">varTypeStackMember</a>: +00504 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed) +00505 { +00506 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member.size()) +00507 { +00508 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CLdbStackMemberiOpCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.Member)); +00509 } +00510 <font class="keywordflow">else</font> +00511 { +00512 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack); +00513 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CHaltOpCode()); +00514 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode(); +00515 b->addConstraint(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack); +00516 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.TypeStack = NULL; +00517 } +00518 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o2">_LastFact</a>.IsUsed = <font class="keyword">true</font>; +00519 } +00520 <font class="keywordflow">if</font>(op) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(op); +00521 <font class="keywordflow">break</font>; +00522 <font class="keywordflow">default</font>: <font class="keywordflow">break</font>; +00523 } +00524 } +00525 +<a name="l00526"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b29">00526</a> <font class="keywordtype">void</font> CCompilateur::nameMethodeProcessing() +00527 { +00528 <a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html">NLAIAGENT::IBaseGroupType</a> *g = <font class="keyword">new</font> <a class="code" href="classNLAIAGENT_1_1CGroupType.html">NLAIAGENT::CGroupType</a>; +00529 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.push_back(g); +00530 +00531 <a class="code" href="classstd_1_1list.html">std::list<NLAISCRIPT::CStringType></a>::iterator i = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o16">_LasVarStr</a>.begin(); +00532 <font class="keywordflow">while</font>(i != <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o16">_LasVarStr</a>.end()) +00533 { +00534 <a class="code" href="classNLAISCRIPT_1_1CStringType.html">NLAISCRIPT::CStringType</a> &<a class="code" href="driver__opengl__extension__def_8h.html#a383">s</a> = *i++; +00535 g-><a class="code" href="classNLAIAGENT_1_1IBaseGroupType.html#z136_5">cpy</a>(<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a>(<a class="code" href="classNLAIAGENT_1_1CStringVarName.html">NLAIAGENT::CStringVarName</a>(s.data()))); +00536 } +00537 } +00538 +<a name="l00539"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b21">00539</a> <font class="keywordtype">void</font> CCompilateur::RegisterClass() +00540 { +00541 IClassInterpret *c = (IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get(); +00542 <font class="comment">// c->initStatics();</font> +00543 <font class="keyword">const</font> <a class="code" href="classNLAIAGENT_1_1IVarName.html">NLAIAGENT::IVarName</a> &className = *c->getClassName(); +00544 <font class="preprocessor">#ifdef NL_DEBUG</font> +00545 <font class="preprocessor"></font> className.<a class="code" href="classNLAIAGENT_1_1IVarName.html#a1">getString</a>(); +00546 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.size(); +00547 <font class="preprocessor">#endif</font> +00548 <font class="preprocessor"></font> <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.<a class="code" href="classNLAIAGENT_1_1IVarName.html#a1">getString</a>(),(<font class="keyword">const</font> <a class="code" href="classNLAIC_1_1IClassFactory.html">NLAIC::IClassFactory</a> &)CClassInterpretFactory(c), +00549 <a class="code" href="classNLAIC_1_1CTypeOfObject.html">NLAIC::CTypeOfObject</a>(c->getTypeClass()), <a class="code" href="classNLAIC_1_1CTypeOfOperator.html">NLAIC::CTypeOfOperator</a>(0)); +00550 +00551 +00552 <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a> *<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(id); +00553 +00554 c->setType(x); +00555 } +00556 +<a name="l00557"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b20">00557</a> <font class="keywordtype">bool</font> CCompilateur::computContraint() +00558 { +00559 +00560 sint32 constraint = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b6">getNMethodConstraint</a>(); +00561 <font class="keywordflow">if</font>((constraint - <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b3">runMethodConstraint</a>())) +00562 { +00563 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b4">errorMethodConstraint</a>(); +00564 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a9">cleanMethodConstraint</a>(); +00565 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b5">errorTypeConstraint</a>(); +00566 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a10">cleanTypeConstraint</a>(); +00567 <font class="keywordflow">return</font> 0; +00568 } +00569 +00570 <font class="comment">/*constraint = _ConstraintType.size() - runTypeConstraint();</font> +00571 <font class="comment"> while(_ConstraintType.size())</font> +00572 <font class="comment"> {</font> +00573 <font class="comment"> delete _ConstraintType.back();</font> +00574 <font class="comment"> _ConstraintType.pop_back();</font> +00575 <font class="comment"> }*/</font> +00576 +00577 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a9">cleanMethodConstraint</a>(); +00578 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a10">cleanTypeConstraint</a>(); +00579 IClassInterpret *c = (IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get(); +00580 <font class="keywordflow">try</font> +00581 { +00582 <font class="comment">// ((CAgentClass *)c)->buildChildsMessageMap();</font> +00583 ((CAgentClass *)c)->initStatics(); +00584 } +00585 <font class="keywordflow">catch</font>(<a class="code" href="classNLAIE_1_1IException.html">NLAIE::IException</a> &e) +00586 { +00587 std::string text; +00588 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"can't find '%s'"</font>,e.what()); +00589 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00590 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00591 } +00592 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00593 } +00594 +00595 +<a name="l00596"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b30">00596</a> <font class="keywordtype">void</font> CCompilateur::initParam() +00597 { +00598 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a8">clean</a>(); +00599 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a> = <font class="keyword">new</font> IBlock(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o38">_Debug</a>); +00600 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>; +00601 CVarPStack::_LocalTableRef = &<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>[0]; +00602 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.clear(); +00603 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.pushMark(); +00604 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o55">_InLineParse</a>) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode((<font class="keyword">new</font> CMarkAlloc)); +00605 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.push_back(<font class="keyword">new</font> CParam); +00606 } +00607 +<a name="l00608"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b31">00608</a> <font class="keywordtype">bool</font> CCompilateur::registerMethod() +00609 { +00610 <font class="keywordtype">bool</font> isRun = <font class="keyword">false</font>; +00611 sint i; +00612 <font class="keyword">const</font> <font class="keywordtype">char</font> *<a class="code" href="driver__opengl__extension__def_8h.html#a385">r</a> = (<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="agent__method__def_8h.html#a18">_RUN_</a>; +00613 +00614 <font class="keywordflow">if</font>(<a class="code" href="driver__opengl__extension__def_8h.html#a385">r</a>[0] == <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString()[0] && <a class="code" href="driver__opengl__extension__def_8h.html#a385">r</a>[1] == <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString()[1]) +00615 { +00616 <a class="code" href="classstd_1_1list.html">std::list<const char *></a> listRun; +00617 +00618 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPExec.html#p0">NLAIAGENT::CPExec::IdPExec</a>); +00619 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPAchieve.html#p0">NLAIAGENT::CPAchieve::IdPAchieve</a>); +00620 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPAsk.html#p0">NLAIAGENT::CPAsk::IdPAsk</a>); +00621 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPBreak.html#p0">NLAIAGENT::CPBreak::IdPBreak</a>); +00622 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPTell.html#p0">NLAIAGENT::CPTell::IdPTell</a>); +00623 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPKill.html#p0">NLAIAGENT::CPKill::IdPKill</a>); +00624 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPError.html#p0">NLAIAGENT::CPError::IdPError</a>); +00625 listRun.push_back((<font class="keyword">const</font> <font class="keywordtype">char</font> *)<a class="code" href="classNLAIAGENT_1_1CPExec.html#p0">NLAIAGENT::CPExec::IdPExec</a>); +00626 +00627 <font class="keywordtype">char</font> nameRun[1024]; +00628 <font class="keywordflow">for</font>(i = 0; i < (sint)listRun.size(); i ++) +00629 { +00630 strcpy(nameRun,<a class="code" href="agent__method__def_8h.html#a18">_RUN_</a>); +00631 strcat(nameRun,listRun.back()); +00632 listRun.pop_back(); +00633 <font class="keywordflow">if</font>(!strcmp(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString(),nameRun)) +00634 { +00635 isRun = <font class="keyword">true</font>; +00636 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o58">isRunMsg</a> = <font class="keyword">true</font>; +00637 <font class="keywordflow">break</font>; +00638 } +00639 } +00640 <font class="keywordflow">if</font>(!isRun) +00641 { +00642 strcpy(nameRun,<a class="code" href="agent__method__def_8h.html#a18">_RUN_</a>); +00643 <font class="keywordflow">if</font>(!strcmp(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString(),nameRun)) +00644 { +00645 isRun = <font class="keyword">true</font>; +00646 } +00647 } +00648 } +00649 +00650 <font class="keywordtype">bool</font> isSend = !strcmp(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString(),<a class="code" href="agent__method__def_8h.html#a0">_SEND_</a>); +00651 <font class="keywordtype">bool</font> runProcces = <font class="keyword">false</font>; +00652 <font class="keywordflow">if</font>( isRun || isSend ) +00653 { +00654 CParam p; +00655 COperandSimple *<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> COperandSimple(<font class="keyword">new</font> <a class="code" href="classNLAIC_1_1CIdentType.html">NLAIC::CIdentType</a>(<font class="stringliteral">"Message"</font>)); +00656 p.push(<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>); +00657 +00658 <font class="keywordflow">if</font>( ( isRun && <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->size() > 1 ) || isSend) +00659 { +00660 std::string text; +00661 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"method %s have more than 1 parametre"</font>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString()); +00662 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00663 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00664 } +00665 <font class="keywordflow">else</font> +00666 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->size()) +00667 { +00668 <font class="keywordflow">if</font>(p.eval(*<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()) < 0.0) +00669 { +00670 std::string text; +00671 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"the method %s have a parametre not derived from Message class"</font>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back().getString()); +00672 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00673 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00674 } +00675 } +00676 <font class="keywordflow">else</font> +00677 <font class="keywordflow">if</font>(isRun) +00678 { +00679 runProcces = <font class="keyword">true</font>; +00680 } +00681 } +00682 +00683 sint32 indexMethod; +00684 <font class="keywordflow">try</font> +00685 { +00686 indexMethod = ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->addBrancheCode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o27">_MethodName</a>.back(),*<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()); +00687 } +00688 <font class="keywordflow">catch</font>(<a class="code" href="classNLAIE_1_1IException.html">NLAIE::IException</a> &err) +00689 { +00690 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)err.what()); +00691 +00692 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00693 } +00694 +00695 <font class="keywordflow">if</font>(runProcces) +00696 { +00697 <font class="keywordflow">if</font>( ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getRunMethod() >=0 ) +00698 { +00699 std::string text; +00700 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"the method Run() have all ready defined"</font>); +00701 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00702 <font class="keywordflow">return</font> <font class="keyword">false</font>; +00703 } +00704 ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->setRunMethod(indexMethod); +00705 } +00706 i = 0; +00707 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o22">_DecalageHeap</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.size(); +00708 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.setShift(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o22">_DecalageHeap</a>); +00709 CVarPStackParam::_Shift = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o22">_DecalageHeap</a>; +00710 +00711 <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a>* debugStringAttrib; +00712 <a class="code" href="classNLAIAGENT_1_1CVectorGroupType.html">NLAIAGENT::CVectorGroupType</a>* debugAttrib; +00713 <font class="keywordflow">if</font> (_Debug) +00714 { +00715 debugAttrib = <font class="keyword">new</font> <a class="code" href="classNLAIAGENT_1_1CVectorGroupType.html">NLAIAGENT::CVectorGroupType</a>(); +00716 } +00717 <font class="keywordflow">else</font> debugAttrib = NULL; +00718 +00719 <font class="keywordflow">while</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.size() != 0) +00720 { +00721 i--; +00722 <font class="preprocessor">#ifdef NL_DEBUG</font> +00723 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam(i,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first->getString()); +00724 <font class="preprocessor">#else</font> +00725 <font class="preprocessor"></font> <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a> = <font class="keyword">new</font> CVarPStackParam(i); +00726 <font class="preprocessor">#endif</font> +00727 <font class="preprocessor"></font> <font class="comment">// We put the functions atributs in the _LastBloc dico.</font> +00728 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->allocLocVar(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first->getString(),<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>)) +00729 { +00730 std::string text; +00731 text = <a class="code" href="namespaceNLAIC.html#a5">NLAIC::stringGetBuild</a>(<font class="stringliteral">"variable '%s' already defined"</font>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first->getString()); +00732 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a14">yyerror</a>((<font class="keywordtype">char</font> *)text.c_str()); +00733 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>; +00734 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreStackState()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreStack(); +00735 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreShiftState()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreShift(); +00736 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>; +00737 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o12">_LastAffectation</a>-><a class="code" href="classNLAIC_1_1IPointerGestion.html#a3">release</a>(); +00738 <font class="keywordflow">return</font> 0; +00739 } +00740 <font class="keywordflow">if</font> (_Debug) +00741 { +00742 <font class="comment">// We store the function var name;</font> +00743 debugStringAttrib = <font class="keyword">new</font> <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a>(*(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first)); +00744 debugAttrib-><a class="code" href="classNLAIAGENT_1_1CVectorGroupType.html#a14">pushFront</a>(debugStringAttrib); +00745 } +00746 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().first->release(); +00747 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.back().second->release(); +00748 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o21">_Attrib</a>.pop_back(); +00749 } +00750 +00751 CMethodeName &thisMethod = ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getBrancheCode(); +00752 thisMethod.getParam().setInfo(debugAttrib); +00753 <font class="comment">/*if (_Debug)</font> +00754 <font class="comment"> {</font> +00755 <font class="comment"> _LastBloc->addCode(new CAddParamNameDebug(*debugAttrib));</font> +00756 <font class="comment"> debugAttrib->release();</font> +00757 <font class="comment"> }*/</font> +00758 <font class="comment">//_Param.back()->clear();</font> +00759 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->release(); +00760 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.pop_back(); +00761 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00762 } +00763 +00764 +<a name="l00765"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b34">00765</a> sint32 CCompilateur::typeOfMethod() +00766 { +00767 +00768 <font class="keyword">const</font> IOpType *a; +00769 <font class="keywordflow">if</font>((a = ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getBrancheCode().getTypeOfMethode()) == NULL) +00770 { +00771 ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getBrancheCode().setTypeOfMethode(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00772 <font class="keywordflow">if</font>(!<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->satisfied()) +00773 { +00774 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00775 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>->incRef(); +00776 } +00777 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o59">haveReturn</a> = <font class="keyword">true</font>; +00778 } +00779 <font class="keywordflow">else</font> +00780 { +00781 <font class="keywordflow">if</font>(a->getTypeOfClass() == IConstraint::operandListType) +00782 { +00783 ((COperandListType *)a)->add(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00784 } +00785 <font class="keywordflow">else</font> +00786 { +00787 COperandListType *c = <font class="keyword">new</font> COperandListType(); +00788 ((IOpType *)a)->incRef(); +00789 c->add((IOpType *)a); +00790 c->add(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a>); +00791 ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getBrancheCode().setTypeOfMethode(c); +00792 <font class="keywordflow">if</font>(!c->satisfied()) +00793 { +00794 c->incRef(); +00795 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o24">_ConstraintType</a>.push_back(c); +00796 } +00797 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o59">haveReturn</a> = <font class="keyword">true</font>; +00798 } +00799 } +00800 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o28">_ExpressionType</a> = NULL; +00801 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o34">_IsVoid</a> = <font class="keyword">false</font>; +00802 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00803 } +00804 +<a name="l00805"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b53">00805</a> <font class="keywordtype">void</font> CCompilateur::callSend() +00806 { +00807 +00808 <font class="comment">//IConstraint *c = getMethodConstraint(CConstraintMethode(CConstraintMethode::normalCall, 0 , _LastbaseClass,_LastStringParam.back(),_Param.back(),0,0));</font> +00809 } +00810 +<a name="l00811"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b52">00811</a> <font class="keywordtype">bool</font> CCompilateur::checkReturnMethod() +00812 { +00813 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00814 } +00815 +<a name="l00816"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b51">00816</a> <font class="keywordtype">bool</font> CCompilateur::callFunction() +00817 { +00818 <font class="preprocessor">#ifdef NL_DEBUG</font> +00819 <font class="preprocessor"></font> std::string mName; +00820 std::string pName; +00821 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->getDebugString(mName); +00822 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->getDebugString(pName); +00823 <font class="comment">//sint32 i = _TypeList.size();</font> +00824 <font class="preprocessor">#endif</font> +00825 <font class="preprocessor"></font> <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *<a class="code" href="driver__opengl__extension__def_8h.html#a383">s</a> = (<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->get(); +00826 <font class="keywordflow">if</font>( !strcmp(s-><a class="code" href="classNLAIAGENT_1_1CStringType.html#a10">getStr</a>().getString(),<a class="code" href="agent__method__def_8h.html#a0">_SEND_</a>)<font class="comment">/* && _Param.back()->size() == 1*/</font>) +00827 { +00828 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CMsgSetSender()); +00829 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CNopOpCode()); +00830 <font class="comment">//sendOp = _LastBloc->getBagOfCode();</font> +00831 } +00832 +00833 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->addCode(<font class="keyword">new</font> CNopOpCode()); +00834 CBagOfCode *b = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getBagOfCode(); +00835 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a> = NULL; +00836 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a> = 0; +00837 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a> = CConstraintMethode::normalCall; +00838 +00839 IConstraint *c; +00840 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a> = 0; +00841 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a> = (sint32)CConstraintMethode::normalCall; +00842 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o56">_FromStack</a>.back() && <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.size()) +00843 { +00844 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.back(); +00845 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o18">_TypeList</a>.pop_back(); +00846 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->incRef(); +00847 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->incRef(); +00848 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>->incRef(); +00849 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a> = CConstraintMethode::stackCall; +00850 c = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b32">getMethodConstraint</a>(CConstraintMethode((CConstraintMethode::TCallTypeOpCode)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back(),<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back(),0,0)); +00851 } +00852 <font class="keywordflow">else</font> +00853 { +00854 <a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *name = (<a class="code" href="classNLAIAGENT_1_1CStringType.html">NLAIAGENT::CStringType</a> *)(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->getFront()); +00855 <a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *var = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#a3">getVar</a>(name-><a class="code" href="classNLAIAGENT_1_1CStringType.html#a10">getStr</a>().getString()); +00856 <font class="keywordflow">if</font>(var) +00857 { +00858 ((<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->popFront())-><a class="code" href="classNLAIC_1_1IPointerGestion.html#a3">release</a>(); +00859 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a> = CConstraintMethode::heapCall; +00860 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a> = ((CVarPStackParam *)var)->getIndex(); +00861 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a> = (IOpType *)((<font class="keyword">const</font> CObjectUnknown *)((CVarPStackParam *)var)->getObject())->getBaseType(); +00862 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->incRef(); +00863 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->incRef(); +00864 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>->incRef(); +00865 c = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b32">getMethodConstraint</a>(CConstraintMethode((CConstraintMethode::TCallTypeOpCode)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back(),<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back(),0,0)); +00866 <font class="keywordflow">if</font>(c == NULL) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>->incRef(); +00867 } +00868 <font class="keywordflow">else</font> +00869 { +00870 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->incRef(); +00871 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->incRef(); +00872 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a> = CConstraintMethode::normalCall; +00873 c = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b32">getMethodConstraint</a>(CConstraintMethode((CConstraintMethode::TCallTypeOpCode)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back(),<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back(),0,0)); +00874 } +00875 } +00876 <font class="keywordflow">if</font>(c == NULL) +00877 { +00878 c = <font class="keyword">new</font> CConstraintMethode((CConstraintMethode::TCallTypeOpCode)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o36">_LastTypeCall</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o35">_LastPosHeap</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o37">_LastbaseClass</a>,<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back(),<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back(),<a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n25">yyLine</a>,<a class="code" href="classNLAISCRIPT_1_1yyFlexLexer.html#n26">yyColone</a>); +00879 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o25">_LastStringParam</a>.back()->incRef(); +00880 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o26">_Param</a>.back()->incRef(); +00881 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o23">_MethodConstraint</a>.push_back(c); +00882 } +00883 b->addConstraint(c); +00884 <font class="comment">/*if(sendOp != NULL)</font> +00885 <font class="comment"> {</font> +00886 <font class="comment"> NLAIAGENT::IBaseGroupType *nameRun = (NLAIAGENT::IBaseGroupType *)_LastStringParam.back()->clone();</font> +00887 <font class="comment"> ((NLAIAGENT::IObjectIA *)nameRun->pop())->release(); </font> +00888 <font class="comment"></font> +00889 <font class="comment"> //_Param.back()->incRef();</font> +00890 <font class="comment"> CParam *paramRun = new CParam; </font> +00891 <font class="comment"> IOpType *p = (IOpType *)(*_Param.back())[1];</font> +00892 <font class="comment"> p->incRef();</font> +00893 <font class="comment"> paramRun->push(p);</font> +00894 <font class="comment"></font> +00895 <font class="comment"> const NLAIC::CIdentType *id = NULL;</font> +00896 <font class="comment"> if(_Param.back()->size() == 2)</font> +00897 <font class="comment"> {</font> +00898 <font class="comment"> id = ((IOpType *)(*_Param.back())[0])->getConstraintTypeOf();</font> +00899 <font class="comment"> if(id == NULL || !(((const NLAIC::CTypeOfObject &)*id) & NLAIC::CTypeOfObject::tPerformative) )</font> +00900 <font class="comment"> { </font> +00901 <font class="comment"> yyerror("argument 1 of send is not an performatif"); </font> +00902 <font class="comment"> return false;</font> +00903 <font class="comment"> }</font> +00904 <font class="comment"> }</font> +00905 <font class="comment"> else</font> +00906 <font class="comment"> {</font> +00907 <font class="comment"> if(_Param.back()->size() == 3)</font> +00908 <font class="comment"> {</font> +00909 <font class="comment"> id = ((IOpType *)(*_Param.back())[1])->getConstraintTypeOf();</font> +00910 <font class="comment"> if(id == NULL || !(((const NLAIC::CTypeOfObject &)*id) & NLAIC::CTypeOfObject::tPerformative) )</font> +00911 <font class="comment"> { </font> +00912 <font class="comment"> yyerror("argument 2 of send is not an performatif"); </font> +00913 <font class="comment"> return false;</font> +00914 <font class="comment"> }</font> +00915 <font class="comment"> }</font> +00916 <font class="comment"> }</font> +00917 <font class="comment"> </font> +00918 <font class="comment"> </font> +00919 <font class="comment"> NLAIAGENT::IPerformative *perf = (NLAIAGENT::IPerformative *)id->getFactory()->getClass();</font> +00920 <font class="comment"> char runName[1024*4]; </font> +00921 <font class="comment"> sprintf(runName,"%s%s",_RUN_,perf->getName());</font> +00922 <font class="comment"> nameRun->cpy(NLAIAGENT::CStringType ((NLAIAGENT::CStringVarName(runName))));</font> +00923 <font class="comment"> nameRun->incRef(); </font> +00924 <font class="comment"></font> +00925 <font class="comment">#ifdef NL_DEBUG </font> +00926 <font class="comment"> nameRun->getDebugString(mName);</font> +00927 <font class="comment">#endif </font> +00928 <font class="comment"></font> +00929 <font class="comment"> int baseIsNew = false;</font> +00930 <font class="comment"> if(_LastbaseClass == NULL)</font> +00931 <font class="comment"> {</font> +00932 <font class="comment"> _LastbaseClass = new COperandSimple(new NLAIC::CIdentType (_SelfClass.get()->getType()));</font> +00933 <font class="comment"> baseIsNew = true;</font> +00934 <font class="comment"> }</font> +00935 <font class="comment"> _LastbaseClass->incRef();</font> +00936 <font class="comment"> paramRun->incRef();</font> +00937 <font class="comment"> c = getMethodConstraint(CConstraintFindRun((CConstraintMethode::TCallTypeOpCode)_LastTypeCall,_LastPosHeap,_LastbaseClass,nameRun,paramRun,0,0));</font> +00938 <font class="comment"> if(c == NULL)</font> +00939 <font class="comment"> { </font> +00940 <font class="comment"> if(_LastbaseClass && !baseIsNew) _LastbaseClass->incRef();</font> +00941 <font class="comment"> c = new CConstraintFindRun((CConstraintMethode::TCallTypeOpCode)_LastTypeCall,_LastPosHeap,_LastbaseClass,nameRun,paramRun,yyLine,yyColone); </font> +00942 <font class="comment"> _MethodConstraint.push_back(c);</font> +00943 <font class="comment"> }</font> +00944 <font class="comment"> else</font> +00945 <font class="comment"> {</font> +00946 <font class="comment"> nameRun->release();</font> +00947 <font class="comment"> }</font> +00948 <font class="comment"> sendOp->addConstraint(c);</font> +00949 <font class="comment"> }*/</font> +00950 <font class="keywordflow">return</font> <font class="keyword">true</font>; +00951 } +00952 +<a name="l00953"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b1">00953</a> CCodeBrancheRun *CCompilateur::getCode(<font class="keywordtype">bool</font> isMain) +00954 { +00955 <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>->isCodeMonted()) +00956 { +00957 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o13">_VarState</a>.popMark(); +00958 IOpCode *<a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a>; +00959 <font class="keywordflow">if</font> (_Debug) +00960 { +00961 <a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> CFreeAllocDebug(); +00962 } +00963 <font class="keywordflow">else</font> +00964 { +00965 <a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> CFreeAlloc(); +00966 } +00967 <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>); +00968 <a class="code" href="driver__opengl__extension__def_8h.html#a364">x</a> = <font class="keyword">new</font> CHaltOpCode(); +00969 <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>); +00970 +00971 CCodeBrancheRun* listCode; +00972 <font class="keywordflow">if</font> (_Debug) +00973 { +00974 listCode = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getCodeDebug(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o39">_SourceFileName</a>); +00975 } +00976 <font class="keywordflow">else</font> +00977 { +00978 listCode = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o3">_LastBloc</a>->getCode(); +00979 } +00980 +00981 <font class="keywordflow">if</font>(listCode != NULL) +00982 { +00983 <font class="keywordflow">if</font>(!isMain) ((IClassInterpret *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get())->getBrancheCode().setCode((IOpCode *)listCode); +00984 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>; +00985 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreStackState()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreStack(); +00986 <font class="keywordflow">if</font>(<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreShiftState()) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>.restoreShift(); +00987 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a> -= (sint32)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o15">_Heap</a>; +00988 <font class="comment">//listCode->release();</font> +00989 } +00990 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o22">_DecalageHeap</a> = 0; +00991 CVarPStackParam::_Shift = 0; +00992 +00993 <font class="keywordflow">return</font> listCode; +00994 +00995 } +00996 <font class="keywordflow">return</font> NULL; +00997 } +00998 +<a name="l00999"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b54">00999</a> <font class="keywordtype">void</font> CCompilateur::initMessageManager() +01000 { +01001 IClassInterpret *o = (IClassInterpret *)(CManagerClass::IdManagerClass.getFactory())->getClass(); +01002 o->incRef(); +01003 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.push(o); +01004 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b30">initParam</a>(); +01005 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b11">setNewLine</a>(); +01006 <font class="comment">/*if (_Debug)</font> +01007 <font class="comment"> {</font> +01008 <font class="comment"> _LastBloc->addCode(new CAddParamNameDebug(NLAIAGENT::CGroupType())); </font> +01009 <font class="comment"> }*/</font> +01010 } +01011 +<a name="l01012"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b55">01012</a> <font class="keywordtype">bool</font> CCompilateur::endMessageManager() +01013 { +01014 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o40">_ResultCompile</a> = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b1">getCode</a>(<font class="keyword">true</font>); +01015 <font class="keywordtype">bool</font> state = <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b20">computContraint</a>(); +01016 ((<a class="code" href="classNLAIAGENT_1_1IObjectIA.html">NLAIAGENT::IObjectIA</a> *)<a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.pop())->release(); +01017 <font class="keywordflow">return</font> state; +01018 } +01019 +<a name="l01020"></a><a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b57">01020</a> <font class="keywordtype">bool</font> CCompilateur::definClass(<font class="keyword">const</font> <font class="keywordtype">char</font> *className) +01021 { +01022 <font class="keywordflow">try</font> +01023 { +01024 <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); +01025 <font class="keywordflow">return</font> <font class="keyword">false</font>; +01026 } +01027 <font class="keywordflow">catch</font>(<a class="code" href="classNLAIE_1_1IException.html">NLAIE::IException</a> &) +01028 { +01029 ( (IClassInterpret *) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get() )->setClassName(<a class="code" href="classNLAIAGENT_1_1CStringVarName.html">NLAIAGENT::CStringVarName</a>(className)); +01030 ( (IClassInterpret *) <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#o7">_SelfClass</a>.get() )->buildVTable(); +01031 <a class="code" href="classNLAISCRIPT_1_1CCompilateur.html#b21">RegisterClass</a>(); +01032 <font class="keywordflow">return</font> <font class="keyword">true</font>; +01033 } +01034 } +01035 } +</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> |