<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> <title>script.h Source File</title> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body bgcolor="#ffffff"> <!-- Generated by Doxygen 1.2.10 --> <center> <a class="qindex" href="index.html">Main Page</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="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> <hr><h1>script.h</h1><a href="script_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">// Copyright (C) 1999-2001 Open Source Telecom Corporation.</font> 00002 <font class="comment">// </font> 00003 <font class="comment">// This program is free software; you can redistribute it and/or modify</font> 00004 <font class="comment">// it under the terms of the GNU General Public License as published by</font> 00005 <font class="comment">// the Free Software Foundation; either version 2 of the License, or</font> 00006 <font class="comment">// (at your option) any later version.</font> 00007 <font class="comment">// </font> 00008 <font class="comment">// This program is distributed in the hope that it will be useful,</font> 00009 <font class="comment">// but WITHOUT ANY WARRANTY; without even the implied warranty of</font> 00010 <font class="comment">// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</font> 00011 <font class="comment">// GNU General Public License for more details.</font> 00012 <font class="comment">// </font> 00013 <font class="comment">// You should have received a copy of the GNU General Public License</font> 00014 <font class="comment">// along with this program; if not, write to the Free Software </font> 00015 <font class="comment">// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.</font> 00016 <font class="comment">// </font> 00017 <font class="comment">// As a special exception to the GNU General Public License, permission is </font> 00018 <font class="comment">// granted for additional uses of the text contained in its release </font> 00019 <font class="comment">// of ccscript.</font> 00020 <font class="comment">// </font> 00021 <font class="comment">// The exception is that, if you link the ccscript library with other</font> 00022 <font class="comment">// files to produce an executable, this does not by itself cause the</font> 00023 <font class="comment">// resulting executable to be covered by the GNU General Public License.</font> 00024 <font class="comment">// Your use of that executable is in no way restricted on account of</font> 00025 <font class="comment">// linking the ccscript library code into it.</font> 00026 <font class="comment">// </font> 00027 <font class="comment">// This exception does not however invalidate any other reasons why</font> 00028 <font class="comment">// the executable file might be covered by the GNU General Public License.</font> 00029 <font class="comment">// </font> 00030 <font class="comment">// This exception applies only to the code released under the </font> 00031 <font class="comment">// name ccscript. If you copy code from other releases into a copy of</font> 00032 <font class="comment">// ccscript, as the General Public License permits, the exception does</font> 00033 <font class="comment">// not apply to the code that you add in this way. To avoid misleading</font> 00034 <font class="comment">// anyone as to the status of such modified files, you must delete</font> 00035 <font class="comment">// this exception notice from them.</font> 00036 <font class="comment">// </font> 00037 <font class="comment">// If you write modifications of your own for ccscript, it is your choice</font> 00038 <font class="comment">// whether to permit this exception to apply to your modifications.</font> 00039 <font class="comment">// If you do not wish that, delete this exception notice. </font> 00040 00041 <font class="preprocessor">#ifndef CCXX_SCRIPT_H_</font> 00042 <font class="preprocessor"></font><font class="preprocessor">#define CCXX_SCRIPT_H_</font> 00043 <font class="preprocessor"></font> 00044 <font class="preprocessor">#ifndef CCXX_MISC_H_</font> 00045 <font class="preprocessor"></font><font class="preprocessor">#include <cc++/misc.h></font> 00046 <font class="preprocessor">#endif</font> 00047 <font class="preprocessor"></font> 00048 <font class="preprocessor">#ifndef CCXX_FILE_H_</font> 00049 <font class="preprocessor"></font><font class="preprocessor">#include <cc++/file.h></font> 00050 <font class="preprocessor">#endif</font> 00051 <font class="preprocessor"></font> 00052 <font class="preprocessor">#include <iostream></font> 00053 <font class="preprocessor">#include <fstream></font> 00054 00055 <font class="preprocessor">#ifdef CCXX_NAMESPACES</font> 00056 <font class="preprocessor"></font><font class="keyword">namespace </font>ost { 00057 <font class="preprocessor">#endif</font> 00058 <font class="preprocessor"></font> <a name="l00059"></a><a class="code" href="script_8h.html#a7">00059</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_command.html">ScriptCommand</a>; <a name="l00060"></a><a class="code" href="script_8h.html#a8">00060</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_image.html">ScriptImage</a>; <a name="l00061"></a><a class="code" href="script_8h.html#a9">00061</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_interp.html">ScriptInterp</a>; 00062 <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a>; 00063 <a name="l00064"></a><a class="code" href="script_8h.html#a0">00064</a> <font class="preprocessor">#define MAX_LOCKS 8</font> <a name="l00065"></a><a class="code" href="script_8h.html#a1">00065</a> <font class="preprocessor"></font><font class="preprocessor">#define TRAP_BITS (sizeof(unsigned long) * 8)</font> <a name="l00066"></a><a class="code" href="script_8h.html#a2">00066</a> <font class="preprocessor"></font><font class="preprocessor">#define SCRIPT_STACK_SIZE 20</font> <a name="l00067"></a><a class="code" href="script_8h.html#a3">00067</a> <font class="preprocessor"></font><font class="preprocessor">#define SCRIPT_TEMP_SPACE 16</font> <a name="l00068"></a><a class="code" href="script_8h.html#a4">00068</a> <font class="preprocessor"></font><font class="preprocessor">#define KEYWORD_INDEX_SIZE 37</font> <a name="l00069"></a><a class="code" href="script_8h.html#a5">00069</a> <font class="preprocessor"></font><font class="preprocessor">#define SYMBOL_INDEX_SIZE 187</font> <a name="l00070"></a><a class="code" href="script_8h.html#a6">00070</a> <font class="preprocessor"></font><font class="preprocessor">#define SCRIPT_INDEX_SIZE KEYWORD_INDEX_SIZE</font> 00071 <font class="preprocessor"></font> <a name="l00072"></a><a class="code" href="script_8h.html#a10">00072</a> <font class="keyword">typedef</font> bool (ScriptInterp::*scriptmethod_t)(<font class="keywordtype">void</font>); <a name="l00073"></a><a class="code" href="script_8h.html#a11">00073</a> <font class="keyword">typedef</font> <font class="keywordtype">char</font> *(<a class="code" href="class_script_command.html">ScriptCommand</a>::*scriptcheck_t)(<font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00074 <a name="l00075"></a><a class="code" href="script_8h.html#a24">00075</a> <font class="keyword">typedef</font> <font class="keyword">enum</font> 00076 { 00077 SYM_TYPE_NORMAL = 0, 00078 SYM_TYPE_ALIAS, 00079 SYM_TYPE_FIFO, 00080 SYM_TYPE_INDEX, 00081 SYM_TYPE_SEQUENCE, 00082 SYM_TYPE_STACK, 00083 SYM_TYPE_COUNTER, 00084 SYM_TYPE_TRIGGER, 00085 SYM_TYPE_POINTER 00086 } scriptsymtype_t; 00087 00088 <font class="preprocessor">#pragma pack(1)</font> <a name="l00089"></a><a class="code" href="struct__symbol.html">00089</a> <font class="preprocessor"></font><font class="keyword">typedef</font> <font class="keyword">struct </font><a class="code" href="struct__symbol.html">_symbol</a> 00090 { <a name="l00091"></a><a class="code" href="struct__symbol.html#m0">00091</a> <font class="keyword">struct </font><a class="code" href="struct__symbol.html">_symbol</a> *next; <a name="l00092"></a><a class="code" href="struct__symbol.html#m1">00092</a> <font class="keywordtype">char</font> *id; 00093 <font class="keyword">struct</font> 00094 <font class="keyword"> </font>{ <a name="l00095"></a><a class="code" href="struct__symbol.html#m2">00095</a> <font class="keywordtype">unsigned</font> size : 16; <a name="l00096"></a><a class="code" href="struct__symbol.html#m3">00096</a> <font class="keywordtype">bool</font> initial : 1; <a name="l00097"></a><a class="code" href="struct__symbol.html#m4">00097</a> <font class="keywordtype">bool</font> system : 1; <a name="l00098"></a><a class="code" href="struct__symbol.html#m5">00098</a> <font class="keywordtype">bool</font> readonly : 1; <a name="l00099"></a><a class="code" href="struct__symbol.html#m6">00099</a> <font class="keywordtype">bool</font> commit : 1; <a name="l00100"></a><a class="code" href="struct__symbol.html#m7">00100</a> scriptsymtype_t type : 6; 00101 } flags; <a name="l00102"></a><a class="code" href="struct__symbol.html#m9">00102</a> <font class="keywordtype">char</font> data[1]; 00103 } scriptsymbol_t; 00104 <a name="l00105"></a><a class="code" href="struct__line.html">00105</a> <font class="keyword">typedef</font> <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> 00106 { <a name="l00107"></a><a class="code" href="struct__line.html#m0">00107</a> <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> *next; <a name="l00108"></a><a class="code" href="struct__line.html#m1">00108</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> cmask; <a name="l00109"></a><a class="code" href="struct__line.html#m2">00109</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> mask; <a name="l00110"></a><a class="code" href="struct__line.html#m3">00110</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> loop; <a name="l00111"></a><a class="code" href="struct__line.html#m4">00111</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">short</font> line; <a name="l00112"></a><a class="code" href="struct__line.html#m5">00112</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> argc; <a name="l00113"></a><a class="code" href="struct__line.html#m6">00113</a> <font class="keywordtype">bool</font> error : 1; <a name="l00114"></a><a class="code" href="struct__line.html#m7">00114</a> scriptmethod_t method; <a name="l00115"></a><a class="code" href="struct__line.html#m8">00115</a> <font class="keywordtype">char</font> *cmd; <a name="l00116"></a><a class="code" href="struct__line.html#m9">00116</a> <font class="keywordtype">char</font> **args; 00117 } scriptline_t; 00118 <a name="l00119"></a><a class="code" href="struct__script.html">00119</a> <font class="keyword">typedef</font> <font class="keyword">struct </font><a class="code" href="struct__script.html">_script</a> 00120 { <a name="l00121"></a><a class="code" href="struct__script.html#m0">00121</a> <font class="keyword">struct </font><a class="code" href="struct__script.html">_script</a> *next; <a name="l00122"></a><a class="code" href="struct__script.html#m1">00122</a> <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> *first; <a name="l00123"></a><a class="code" href="struct__script.html#m2">00123</a> <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> *trap[TRAP_BITS]; <a name="l00124"></a><a class="code" href="struct__script.html#m3">00124</a> <font class="keyword">struct </font><a class="code" href="struct__line.html">_line</a> *skip[10]; <a name="l00125"></a><a class="code" href="struct__script.html#m4">00125</a> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> mask; <a name="l00126"></a><a class="code" href="struct__script.html#m5">00126</a> <font class="keywordtype">char</font> *name; 00127 <font class="keyword">enum</font> 00128 { 00129 SCRIPT_TYPE_ORIGINAL, 00130 SCRIPT_TYPE_COPIED, 00131 SCRIPT_TYPE_COPY 00132 } mode : 2; 00133 } scriptname_t; 00134 <a name="l00135"></a><a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html">00135</a> <font class="keyword">typedef</font> <font class="keyword">struct</font> 00136 <font class="keyword"></font>{ <a name="l00137"></a><a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html#m0">00137</a> <font class="keyword">const</font> <font class="keywordtype">char</font> *keyword; <a name="l00138"></a><a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html#m1">00138</a> scriptmethod_t method; <a name="l00139"></a><a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html#m2">00139</a> scriptcheck_t check; 00140 } <a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html">SCRKEYWORDS</a>; 00141 00142 <font class="preprocessor">#pragma pack()</font> 00143 <font class="preprocessor"></font> <a name="l00151"></a><a class="code" href="class_script_locks.html">00151</a> <font class="keyword">class </font><a class="code" href="class_script_locks.html">ScriptLocks</a> : <font class="keyword">private</font> <a class="code" href="class_mutex.html">Mutex</a> 00152 { 00153 <font class="keyword">private</font>: <a name="l00154"></a><a class="code" href="class_script_locks.html#l0">00154</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; 00155 00156 <a class="code" href="class_script_interp.html">ScriptInterp</a> *locks[MAX_LOCKS]; 00157 00158 <font class="keywordtype">void</font> Release(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp); 00159 <font class="keywordtype">bool</font> Lock(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp, <font class="keywordtype">unsigned</font> id); 00160 <font class="keywordtype">bool</font> Unlock(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp, <font class="keywordtype">unsigned</font> id); 00161 00162 ScriptLocks(); 00163 }; 00164 <a name="l00174"></a><a class="code" href="class_script_session.html">00174</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_session.html">ScriptSession</a> 00175 { 00176 <font class="keyword">private</font>: <a name="l00177"></a><a class="code" href="class_script_session.html#l0">00177</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; 00178 <a class="code" href="class_script_interp.html">ScriptInterp</a> *interp; 00179 00180 <font class="keyword">protected</font>: 00187 <font class="keywordtype">void</font> stepScheduler(<font class="keyword">const</font> <font class="keywordtype">char</font> *sighandler = NULL); 00188 00195 <font class="keywordtype">void</font> sleepScheduler(timeout_t delay); 00196 00200 ScriptSession(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp); 00201 <a name="l00202"></a><a class="code" href="class_script_session.html#b3">00202</a> <font class="keyword">virtual</font> ~ScriptSession()<font class="keyword"></font> 00203 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00204 00205 <font class="keyword">public</font>: 00209 <font class="keyword">virtual</font> <font class="keywordtype">void</font> waitHandler(<font class="keywordtype">void</font>) = 0; 00210 }; 00211 <a name="l00219"></a><a class="code" href="class_script_property.html">00219</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_property.html">ScriptProperty</a> 00220 { 00221 <font class="keyword">private</font>: <a name="l00222"></a><a class="code" href="class_script_property.html#l0">00222</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; 00223 00224 <font class="keyword">static</font> <a class="code" href="class_script_property.html">ScriptProperty</a> *first; 00225 <a class="code" href="class_script_property.html">ScriptProperty</a> *next; 00226 <font class="keyword">const</font> <font class="keywordtype">char</font> *id; 00227 00228 <font class="keyword">protected</font>: 00237 <font class="keyword">virtual</font> <font class="keywordtype">void</font> setProperty(<font class="keywordtype">char</font> *data, <font class="keywordtype">char</font> *temp, size_t size) = 0; 00238 00246 <font class="keyword">virtual</font> <font class="keywordtype">void</font> getProperty(<font class="keywordtype">char</font> *data, <font class="keywordtype">char</font> *temp, size_t size) = 0; 00247 <a name="l00255"></a><a class="code" href="class_script_property.html#b2">00255</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> adjProperty(<font class="keywordtype">char</font> *data, size_t size, <font class="keywordtype">int</font> adjust)<font class="keyword"></font> 00256 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00257 <a name="l00263"></a><a class="code" href="class_script_property.html#b3">00263</a> <font class="keyword">virtual</font> size_t getPropertySize(<font class="keywordtype">void</font>)<font class="keyword"> </font> 00264 <font class="keyword"> </font>{<font class="keywordflow">return</font> 0;}; 00265 00266 ScriptProperty(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00267 00268 <font class="keyword">public</font>: 00269 <font class="keyword">static</font> <a class="code" href="class_script_property.html">ScriptProperty</a>* find(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00270 }; 00271 <a name="l00279"></a><a class="code" href="class_script_module.html">00279</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_module.html">ScriptModule</a> 00280 { 00281 <font class="keyword">private</font>: <a name="l00282"></a><a class="code" href="class_script_module.html#l0">00282</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; <a name="l00283"></a><a class="code" href="class_script_module.html#l1">00283</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_command.html">ScriptCommand</a>; 00284 <font class="keyword">static</font> <a class="code" href="class_script_module.html">ScriptModule</a> *first; 00285 <a class="code" href="class_script_module.html">ScriptModule</a> *next; 00286 <font class="keyword">const</font> <font class="keywordtype">char</font> *cmd; 00287 00288 <font class="keyword">protected</font>: <a name="l00294"></a><a class="code" href="class_script_module.html#b0">00294</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> moduleAttach(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp)<font class="keyword"></font> 00295 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00296 <a name="l00302"></a><a class="code" href="class_script_module.html#b1">00302</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> moduleDetach(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp)<font class="keyword"></font> 00303 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 00304 <a name="l00313"></a><a class="code" href="class_script_module.html#b2">00313</a> <font class="keyword">virtual</font> <font class="keywordtype">char</font> *getSession(<a class="code" href="class_script_interp.html">ScriptInterp</a> *interp, scriptline_t *line, <a class="code" href="class_script_session.html">ScriptSession</a> **session)<font class="keyword"></font> 00314 <font class="keyword"> </font>{<font class="keywordflow">return</font> NULL;}; 00315 <a name="l00323"></a><a class="code" href="class_script_module.html#b3">00323</a> <font class="keyword">virtual</font> <font class="keywordtype">char</font> *checkScript(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img)<font class="keyword"></font> 00324 <font class="keyword"> </font>{<font class="keywordflow">return</font> NULL;}; 00325 00331 ScriptModule(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00332 00339 <font class="keyword">static</font> <a class="code" href="class_script_module.html">ScriptModule</a> *find(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00340 }; 00341 <a name="l00353"></a><a class="code" href="class_script_command.html">00353</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_command.html">ScriptCommand</a> : <font class="keyword">public</font> <a class="code" href="class_keydata.html">Keydata</a>, <font class="keyword">public</font> <a class="code" href="class_mutex.html">Mutex</a> 00354 { 00355 <font class="keyword">private</font>: <a name="l00356"></a><a class="code" href="class_script_command.html#l0">00356</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_image.html">ScriptImage</a>; <a name="l00357"></a><a class="code" href="class_script_command.html#l1">00357</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; <a name="l00358"></a><a class="code" href="class_script_command.html#l2">00358</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_module.html">ScriptModule</a>; 00359 00360 <font class="preprocessor">#pragma pack(1)</font> 00361 <font class="preprocessor"></font> <font class="keyword">typedef</font> <font class="keyword">struct </font>_keyword 00362 { 00363 <font class="keyword">struct </font>_keyword *next; 00364 scriptmethod_t method; 00365 scriptcheck_t check; 00366 <font class="keywordtype">char</font> keyword[1]; 00367 } keyword_t; 00368 <font class="preprocessor">#pragma pack()</font> 00369 <font class="preprocessor"></font> 00370 00371 keyword_t *keywords[KEYWORD_INDEX_SIZE]; 00372 <font class="keywordtype">char</font> *traps[TRAP_BITS]; 00373 <a class="code" href="class_script_image.html">ScriptImage</a> *active; 00374 <font class="keywordtype">int</font> keyword_count; 00375 <font class="keywordtype">int</font> trap_count; 00376 00377 <font class="keyword">protected</font>: 00385 scriptmethod_t getHandler(<font class="keyword">const</font> <font class="keywordtype">char</font> *keyword); 00386 00394 <font class="keywordtype">char</font> *Check(<font class="keywordtype">char</font> *command, scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00395 00402 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> getTrapId(<font class="keyword">const</font> <font class="keywordtype">char</font> *trap); 00403 <a name="l00409"></a><a class="code" href="class_script_command.html#b3">00409</a> <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getTrapDefault(<font class="keywordtype">void</font>)<font class="keyword"></font> 00410 <font class="keyword"> </font>{<font class="keywordflow">return</font> 0x00000003;}; 00411 <a name="l00417"></a><a class="code" href="class_script_command.html#b4">00417</a> <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getTrapHandler(scriptname_t *scr)<font class="keyword"></font> 00418 <font class="keyword"> </font>{<font class="keywordflow">return</font> getTrapDefault();} 00419 00427 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getTrapMask(<font class="keywordtype">unsigned</font> id); 00428 <a name="l00437"></a><a class="code" href="class_script_command.html#b6">00437</a> <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getTrapModifier(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname)<font class="keyword"></font> 00438 <font class="keyword"> </font>{<font class="keywordflow">return</font> getTrapMask(trapname);}; 00439 00448 <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getTrapMask(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname); 00449 00453 <font class="keywordtype">char</font> *chkIgnore(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00454 00458 <font class="keywordtype">char</font> *chkModule(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00459 00463 <font class="keywordtype">char</font> *chkUse(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00464 00471 <font class="keywordtype">char</font> *chkHasModify(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00472 00478 <font class="keywordtype">char</font> *chkHasVars(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00479 00487 <font class="keywordtype">char</font> *chkHasList(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00488 00496 <font class="keywordtype">char</font> *chkNoArgs(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00497 00505 <font class="keywordtype">char</font> *chkHasArgs(scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img); 00506 00514 <font class="keywordtype">void</font> Load(<a class="code" href="struct_s_c_r_k_e_y_w_o_r_d_s.html">SCRKEYWORDS</a> *keywords); 00515 00524 <font class="keywordtype">int</font> Trap(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00525 <a name="l00531"></a><a class="code" href="class_script_command.html#b18">00531</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> getCount(<font class="keywordtype">void</font>)<font class="keyword"></font> 00532 <font class="keyword"> </font>{<font class="keywordflow">return</font> trap_count;}; 00533 <a name="l00540"></a><a class="code" href="class_script_command.html#b19">00540</a> <font class="keyword">virtual</font> <font class="keywordtype">char</font> *Check(scriptcheck_t check, scriptline_t *line, <a class="code" href="class_script_image.html">ScriptImage</a> *img)<font class="keyword"></font> 00541 <font class="keyword"> </font>{<font class="keywordflow">return</font> (this->*(check))(line, img);}; 00542 00551 <a class="code" href="script_8h.html#a7">ScriptCommand</a>(<font class="keyword">const</font> <font class="keywordtype">char</font> *cfgfile); 00552 }; 00553 <a name="l00563"></a><a class="code" href="class_script_symbol.html">00563</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_symbol.html">ScriptSymbol</a> : <font class="keyword">public</font> <a class="code" href="class_shared_mem_pager.html">SharedMemPager</a> 00564 { 00565 <font class="keyword">private</font>: <a name="l00566"></a><a class="code" href="class_script_symbol.html#l0">00566</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; 00567 00568 <font class="keywordtype">int</font> symsize; 00569 scriptsymbol_t *index[SYMBOL_INDEX_SIZE]; 00570 scriptsymbol_t *trigger; 00571 00572 <font class="keywordtype">unsigned</font> getIndex(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol); 00573 00574 <font class="keyword">protected</font>: 00589 <font class="keyword">virtual</font> scriptsymbol_t *getEntry(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keywordtype">int</font> size = 0); 00590 00600 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Commit(scriptsymbol_t *sym); 00601 00602 <font class="keyword">public</font>: 00608 scriptsymbol_t *getTrigger(<font class="keywordtype">void</font>); 00609 <a name="l00615"></a><a class="code" href="class_script_symbol.html#a1">00615</a> <font class="keyword">inline</font> <font class="keywordtype">int</font> getSymbolSize(<font class="keywordtype">void</font>)<font class="keyword"></font> 00616 <font class="keyword"> </font>{<font class="keywordflow">return</font> symsize;}; 00617 00618 ScriptSymbol(<font class="keywordtype">int</font> size, <font class="keywordtype">int</font> pgsize = 1024); 00619 00626 <font class="keywordtype">void</font> *getPointer(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol); 00627 00635 <font class="keywordtype">bool</font> setPointer(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keywordtype">void</font> *data); 00636 00643 <font class="keywordtype">char</font> *getSymbol(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol); 00644 00652 <font class="keywordtype">char</font> *setSymbol(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keyword">const</font> <font class="keywordtype">char</font> *value = <font class="stringliteral">""</font>); 00653 00661 <font class="keywordtype">char</font> *setConst(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keyword">const</font> <font class="keywordtype">char</font> *value = <font class="stringliteral">""</font>); 00662 00671 <font class="keywordtype">bool</font> makeSequence(<font class="keyword">const</font> <font class="keywordtype">char</font> *id, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> count, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> recsize); 00672 00681 <font class="keywordtype">bool</font> makeStack(<font class="keyword">const</font> <font class="keywordtype">char</font> *id, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> count, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> recsize); 00682 00691 <font class="keywordtype">bool</font> makeFifo(<font class="keyword">const</font> <font class="keywordtype">char</font> *id, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> count, <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> recsize); 00692 00699 <font class="keywordtype">bool</font> makeCounter(<font class="keyword">const</font> <font class="keywordtype">char</font> *id); 00700 00708 <font class="keywordtype">bool</font> postSymbol(scriptsymbol_t *sym, <font class="keyword">const</font> <font class="keywordtype">char</font> *value); 00709 00710 00718 <font class="keywordtype">bool</font> removeSymbol(scriptsymbol_t *sym, <font class="keyword">const</font> <font class="keywordtype">char</font> *value); 00719 00726 <font class="keywordtype">char</font> *readSymbol(scriptsymbol_t *sym); 00727 00735 <font class="keywordtype">bool</font> setAlias(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keyword">const</font> <font class="keywordtype">char</font> *source); 00736 00743 scriptsymbol_t *getAlias(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol); 00744 00752 <font class="keywordtype">char</font> *setSymbol(<font class="keyword">const</font> <font class="keywordtype">char</font> *symbol, <font class="keywordtype">int</font> size = 0); 00753 00761 <font class="keywordtype">void</font> clrSymbol(<font class="keyword">const</font> <font class="keywordtype">char</font> *id); 00762 00766 <font class="keywordtype">void</font> Purge(<font class="keywordtype">void</font>); 00767 00771 <font class="keywordtype">unsigned</font> Gather(scriptsymbol_t **index, <font class="keywordtype">unsigned</font> max, <font class="keyword">const</font> <font class="keywordtype">char</font> *prefrix, <font class="keyword">const</font> <font class="keywordtype">char</font> *suffix = NULL); 00772 }; 00773 <a name="l00783"></a><a class="code" href="class_script_image.html">00783</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_image.html">ScriptImage</a> : <font class="keyword">public</font> <a class="code" href="class_mem_pager.html">MemPager</a> 00784 { 00785 <font class="keyword">protected</font>: <a name="l00786"></a><a class="code" href="class_script_image.html#n0">00786</a> std::ifstream scrSource; <a name="l00787"></a><a class="code" href="class_script_image.html#n1">00787</a> std::istream *scrStream; <a name="l00788"></a><a class="code" href="class_script_image.html#n2">00788</a> <a class="code" href="class_script_command.html">ScriptCommand</a> *cmds; <a name="l00789"></a><a class="code" href="class_script_image.html#n3">00789</a> <font class="keywordtype">int</font> refcount; <a name="l00790"></a><a class="code" href="class_script_image.html#n4">00790</a> scriptname_t *index[SCRIPT_INDEX_SIZE]; <a name="l00791"></a><a class="code" href="class_script_image.html#n5">00791</a> <font class="keywordtype">char</font> buffer[512]; <a name="l00792"></a><a class="code" href="class_script_image.html#n6">00792</a> <font class="keywordtype">char</font> *bp; <a name="l00793"></a><a class="code" href="class_script_image.html#n7">00793</a> <font class="keywordtype">bool</font> quote; <a name="l00794"></a><a class="code" href="class_script_image.html#n8">00794</a> <a class="code" href="class_mutex.html">Mutex</a> duplock; 00795 <a name="l00796"></a><a class="code" href="class_script_image.html#l0">00796</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_interp.html">ScriptInterp</a>; <a name="l00797"></a><a class="code" href="class_script_image.html#l1">00797</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_module.html">ScriptModule</a>; 00798 00799 <font class="keywordtype">char</font> *getToken(<font class="keywordtype">void</font>); 00800 <a name="l00807"></a><a class="code" href="class_script_image.html#b1">00807</a> scriptmethod_t getHandler(<font class="keyword">const</font> <font class="keywordtype">char</font> *keyword)<font class="keyword"></font> 00808 <font class="keyword"> </font>{<font class="keywordflow">return</font> cmds-><a class="code" href="class_script_command.html#b0">getHandler</a>(keyword);}; 00809 00817 <a class="code" href="script_8h.html#a8">ScriptImage</a>(<a class="code" href="class_script_command.html">ScriptCommand</a> *cmdset); 00818 00822 <font class="keywordtype">void</font> Purge(<font class="keywordtype">void</font>); 00823 00831 scriptname_t *Include(<font class="keyword">const</font> <font class="keywordtype">char</font> *scrfile); 00832 00841 <font class="keywordtype">int</font> Compile(<font class="keyword">const</font> <font class="keywordtype">char</font> *scrfile); 00842 00852 <font class="keywordtype">int</font> Compile(<font class="keyword">const</font> <font class="keywordtype">char</font> *scrfile, <font class="keywordtype">char</font> *name); 00853 00861 <font class="keywordtype">int</font> Compile(std::istream *str, <font class="keywordtype">char</font> *name, <font class="keyword">const</font> <font class="keywordtype">char</font> *scrname = NULL); 00862 00868 <font class="keywordtype">void</font> Commit(<font class="keywordtype">void</font>); 00869 00870 <font class="keyword">public</font>: 00877 <font class="keyword">virtual</font> scriptname_t *getScript(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 00878 00886 <font class="keyword">virtual</font> scriptname_t *dupScript(<font class="keyword">const</font> <font class="keywordtype">char</font> *name, <font class="keyword">const</font> <font class="keywordtype">char</font> *target); 00887 00896 <font class="keywordtype">unsigned</font> Gather(<font class="keyword">const</font> <font class="keywordtype">char</font> *suffix, scriptname_t **array, <font class="keywordtype">unsigned</font> size); 00897 <a name="l00904"></a><a class="code" href="class_script_image.html#a3">00904</a> <font class="keyword">inline</font> std::istream *getSource(<font class="keywordtype">void</font>)<font class="keyword"></font> 00905 <font class="keyword"> </font>{<font class="keywordflow">return</font> (std::istream *)&scrSource;}; 00906 }; 00907 <a name="l00915"></a><a class="code" href="class_script_interp.html">00915</a> <font class="keyword">class </font>CCXX_CLASS_EXPORT <a class="code" href="class_script_interp.html">ScriptInterp</a> : <font class="keyword">public</font> <a class="code" href="class_script_symbol.html">ScriptSymbol</a> 00916 { 00917 <font class="keyword">private</font>: <a name="l00918"></a><a class="code" href="class_script_interp.html#l0">00918</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_image.html">ScriptImage</a>; <a name="l00919"></a><a class="code" href="class_script_interp.html#l1">00919</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_session.html">ScriptSession</a>; <a name="l00920"></a><a class="code" href="class_script_interp.html#l2">00920</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_module.html">ScriptModule</a>; 00921 00922 <font class="preprocessor">#pragma pack(1)</font> 00923 <font class="preprocessor"></font> <font class="keyword">typedef</font> <font class="keyword">struct</font> 00924 <font class="keyword"> </font>{ 00925 scriptname_t *script; 00926 scriptline_t *line, *read; 00927 <font class="keywordtype">unsigned</font> <font class="keywordtype">char</font> index; 00928 <a class="code" href="class_script_symbol.html">ScriptSymbol</a> *local; 00929 } 00930 scriptcontext_t; 00931 <font class="preprocessor">#pragma pack()</font> 00932 <font class="preprocessor"></font> 00933 <font class="keyword">static</font> <a class="code" href="class_script_locks.html">ScriptLocks</a> locks; 00934 <a class="code" href="class_script_command.html">ScriptCommand</a> *cmd; 00935 <a class="code" href="class_script_image.html">ScriptImage</a> *image; 00936 <a class="code" href="class_script_session.html">ScriptSession</a> *session; 00937 scriptcontext_t script[SCRIPT_STACK_SIZE + 1]; 00938 <font class="keywordtype">char</font> *temps[SCRIPT_TEMP_SPACE]; 00939 <font class="keywordtype">int</font> tempidx; 00940 <font class="keywordtype">int</font> stack; 00941 size_t symsize, pgsize; 00942 <font class="keywordtype">bool</font> once, loop; 00943 <font class="keywordtype">char</font> packtoken; 00944 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> signalmask; 00945 00946 <font class="keywordtype">bool</font> scrTemplate(<font class="keywordtype">void</font>); 00947 <font class="keywordtype">bool</font> scrEnable(<font class="keywordtype">void</font>); 00948 <font class="keywordtype">bool</font> scrDisable(<font class="keywordtype">void</font>); 00949 <font class="keywordtype">bool</font> scrUse(<font class="keywordtype">void</font>); 00950 <font class="keywordtype">bool</font> scrLoadable(<font class="keywordtype">void</font>); 00951 <font class="keywordtype">bool</font> scrPacked(<font class="keywordtype">void</font>); 00952 <font class="keywordtype">bool</font> scrPack(<font class="keywordtype">void</font>); 00953 <font class="keywordtype">bool</font> scrUnpack(<font class="keywordtype">void</font>); 00954 <font class="keywordtype">bool</font> scrOn(<font class="keywordtype">void</font>); 00955 <font class="keywordtype">bool</font> scrSlog(<font class="keywordtype">void</font>); 00956 <font class="keywordtype">bool</font> scrBasename(<font class="keywordtype">void</font>); 00957 <font class="keywordtype">bool</font> scrDirname(<font class="keywordtype">void</font>); 00958 <font class="keywordtype">bool</font> scrFullpath(<font class="keywordtype">void</font>); 00959 <font class="keywordtype">bool</font> scrGather(<font class="keywordtype">void</font>); 00960 <font class="keywordtype">bool</font> scrDump(<font class="keywordtype">void</font>); 00961 <font class="keywordtype">bool</font> scrInc(<font class="keywordtype">void</font>); 00962 <font class="keywordtype">bool</font> scrDec(<font class="keywordtype">void</font>); 00963 <font class="keywordtype">bool</font> scrFifo(<font class="keywordtype">void</font>); 00964 <font class="keywordtype">bool</font> scrCounter(<font class="keywordtype">void</font>); 00965 <font class="keywordtype">bool</font> scrRemove(<font class="keywordtype">void</font>); 00966 <font class="keywordtype">bool</font> scrPost(<font class="keywordtype">void</font>); 00967 <font class="keywordtype">bool</font> scrStack(<font class="keywordtype">void</font>); 00968 <font class="keywordtype">bool</font> scrSequence(<font class="keywordtype">void</font>); 00969 <font class="keywordtype">bool</font> scrDup(<font class="keywordtype">void</font>); 00970 <font class="keywordtype">bool</font> scrArray(<font class="keywordtype">void</font>); 00971 <font class="keywordtype">bool</font> scrList(<font class="keywordtype">void</font>); 00972 <font class="keywordtype">bool</font> scrArm(<font class="keywordtype">void</font>); 00973 <font class="keywordtype">bool</font> scrDisarm(<font class="keywordtype">void</font>); 00974 <font class="keywordtype">bool</font> scrSet(<font class="keywordtype">void</font>); 00975 <font class="keywordtype">bool</font> scrAlias(<font class="keywordtype">void</font>); 00976 <font class="keywordtype">bool</font> scrConst(<font class="keywordtype">void</font>); 00977 <font class="keywordtype">bool</font> scrSize(<font class="keywordtype">void</font>); 00978 <font class="keywordtype">bool</font> scrInit(<font class="keywordtype">void</font>); 00979 <font class="keywordtype">bool</font> scrClear(<font class="keywordtype">void</font>); 00980 <font class="keywordtype">bool</font> scrCall(<font class="keywordtype">void</font>); 00981 <font class="keywordtype">bool</font> scrHas(<font class="keywordtype">void</font>); 00982 <font class="keywordtype">bool</font> scrMissing(<font class="keywordtype">void</font>); 00983 <font class="keywordtype">bool</font> scrIf(<font class="keywordtype">void</font>); 00984 <font class="keywordtype">bool</font> scrIfThen(<font class="keywordtype">void</font>); 00985 <font class="keywordtype">bool</font> scrFor(<font class="keywordtype">void</font>); 00986 <font class="keywordtype">bool</font> scrRead(<font class="keywordtype">void</font>); 00987 <font class="keywordtype">bool</font> scrRepeat(<font class="keywordtype">void</font>); 00988 <font class="keywordtype">bool</font> scrForeach(<font class="keywordtype">void</font>); 00989 <font class="keywordtype">bool</font> scrTryeach(<font class="keywordtype">void</font>); 00990 <font class="keywordtype">bool</font> scrSwap(<font class="keywordtype">void</font>); 00991 <font class="keywordtype">bool</font> scrDo(<font class="keywordtype">void</font>); 00992 <font class="keywordtype">bool</font> scrLoop(<font class="keywordtype">void</font>); 00993 <font class="keywordtype">bool</font> scrBreak(<font class="keywordtype">void</font>); 00994 <font class="keywordtype">bool</font> scrContinue(<font class="keywordtype">void</font>); 00995 <font class="keywordtype">bool</font> scrReturn(<font class="keywordtype">void</font>); 00996 <font class="keywordtype">bool</font> scrPop(<font class="keywordtype">void</font>); 00997 <font class="keywordtype">bool</font> scrSelect(<font class="keywordtype">void</font>); 00998 <font class="keywordtype">bool</font> scrOnce(<font class="keywordtype">void</font>); 00999 <font class="keywordtype">bool</font> scrLock(<font class="keywordtype">void</font>); 01000 <font class="keywordtype">bool</font> scrTry(<font class="keywordtype">void</font>); 01001 <font class="keywordtype">bool</font> scrSkip(<font class="keywordtype">void</font>); 01002 <a name="l01003"></a><a class="code" href="class_script_interp.html#l3">01003</a> <font class="keyword">friend</font> <font class="keyword">class </font><a class="code" href="class_script_command.html">ScriptCommand</a>; 01004 01005 <font class="keyword">protected</font>: 01012 <a class="code" href="script_8h.html#a9">ScriptInterp</a>(<a class="code" href="class_script_command.html">ScriptCommand</a> *cmd, size_t symsize, size_t pgsize = 1024); 01013 01019 <font class="keywordtype">void</font> getTrigger(<font class="keywordtype">bool</font> use); 01020 01026 <font class="keywordtype">bool</font> getOnce(<font class="keywordtype">void</font>); 01027 <a name="l01033"></a><a class="code" href="class_script_interp.html#b3">01033</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> Notify(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> mask)<font class="keyword"></font> 01034 <font class="keyword"> </font>{signalmask |= mask;}; 01035 <a name="l01041"></a><a class="code" href="class_script_interp.html#b4">01041</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> Notify(<font class="keyword">const</font> <font class="keywordtype">char</font> *str)<font class="keyword"></font> 01042 <font class="keyword"> </font>{signalmask |= cmd-><a class="code" href="class_script_command.html#b5">getTrapMask</a>(str);}; 01043 01049 <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getMask(<font class="keywordtype">void</font>); 01050 <a name="l01056"></a><a class="code" href="class_script_interp.html#b6">01056</a> <font class="keyword">inline</font> <font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> getScriptMask(<font class="keyword">const</font> <font class="keywordtype">char</font> *id)<font class="keyword"></font> 01057 <font class="keyword"> </font>{<font class="keywordflow">return</font> cmd-><a class="code" href="class_script_command.html#b5">getTrapMask</a>(id);}; 01058 <a name="l01064"></a><a class="code" href="class_script_interp.html#b7">01064</a> <font class="keyword">inline</font> <a class="code" href="class_script_command.html">ScriptCommand</a> *getCommand(<font class="keywordtype">void</font>)<font class="keyword"></font> 01065 <font class="keyword"> </font>{<font class="keywordflow">return</font> cmd;}; 01066 01074 <font class="keywordtype">bool</font> Conditional(<font class="keywordtype">void</font>); 01075 01081 <font class="keywordtype">bool</font> scrExit(<font class="keywordtype">void</font>); 01082 01086 <font class="keywordtype">bool</font> scrGoto(<font class="keywordtype">void</font>); 01087 01091 <font class="keywordtype">bool</font> scrData(<font class="keywordtype">void</font>); 01092 <a name="l01098"></a><a class="code" href="class_script_interp.html#b12">01098</a> <font class="keyword">virtual</font> <font class="keywordtype">unsigned</font> getId(<font class="keywordtype">void</font>)<font class="keyword"></font> 01099 <font class="keyword"> </font>{<font class="keywordflow">return</font> 0;}; 01100 01101 <a name="l01108"></a><a class="code" href="class_script_interp.html#b13">01108</a> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> getGlobalTrap(<font class="keywordtype">unsigned</font> id)<font class="keyword"></font> 01109 <font class="keyword"> </font>{<font class="keywordflow">return</font> <font class="keyword">false</font>;}; 01110 01118 scriptsymbol_t *getVariable(size_t size = 0); 01119 01120 <a name="l01129"></a><a class="code" href="class_script_interp.html#b15">01129</a> <font class="keyword">virtual</font> scriptsymbol_t *getIndirect(<font class="keywordtype">char</font> *sym)<font class="keyword"></font> 01130 <font class="keyword"> </font>{<font class="keywordflow">return</font> NULL;}; 01131 01135 <font class="keywordtype">void</font> Advance(<font class="keywordtype">void</font>); 01136 01143 <font class="keywordtype">void</font> Error(<font class="keyword">const</font> <font class="keywordtype">char</font> *error); 01144 01152 <font class="keywordtype">void</font> Trap(<font class="keywordtype">unsigned</font> id); 01153 01160 <font class="keywordtype">void</font> Trap(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname); 01161 01167 <font class="keywordtype">bool</font> Push(<font class="keywordtype">void</font>); 01168 01174 <font class="keywordtype">bool</font> Pull(<font class="keywordtype">void</font>); 01175 01185 <font class="keywordtype">bool</font> Signal(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname); 01186 01194 <font class="keywordtype">bool</font> Signal(<font class="keywordtype">unsigned</font> trapid); 01195 <a name="l01203"></a><a class="code" href="class_script_interp.html#b24">01203</a> <font class="keyword">virtual</font> <font class="keywordtype">bool</font> Execute(scriptmethod_t method)<font class="keyword"></font> 01204 <font class="keyword"> </font>{<font class="keywordflow">return</font> (this->*(method))();}; 01205 <a name="l01214"></a><a class="code" href="class_script_interp.html#b25">01214</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> Stop(<font class="keywordtype">unsigned</font> <font class="keywordtype">long</font> mask)<font class="keyword"></font> 01215 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 01216 01221 <font class="keyword">virtual</font> <font class="keywordtype">void</font> Exit(<font class="keywordtype">void</font>) = 0; 01222 01230 <font class="keyword">virtual</font> scriptname_t *getScriptImage(<font class="keyword">const</font> <font class="keywordtype">char</font> *label); 01231 01238 scriptname_t *getScriptCopy(<font class="keyword">const</font> <font class="keywordtype">char</font> *src); 01239 <a name="l01245"></a><a class="code" href="class_script_interp.html#b29">01245</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> sleepScheduler(timeout_t timeout)<font class="keyword"></font> 01246 <font class="keyword"> </font>{<font class="keywordflow">return</font>;}; 01247 <a name="l01253"></a><a class="code" href="class_script_interp.html#b30">01253</a> <font class="keyword">virtual</font> <font class="keywordtype">void</font> stepScheduler(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname)<font class="keyword"></font> 01254 <font class="keyword"> </font>{Trap(trapname);}; 01255 01256 <font class="keyword">public</font>: 01266 scriptsymbol_t *getLocal(<font class="keyword">const</font> <font class="keywordtype">char</font> *name, size_t size = 0); 01267 01275 <font class="keywordtype">bool</font> Attach(<font class="keyword">const</font> <font class="keywordtype">char</font> *scrname); 01276 01281 <font class="keywordtype">void</font> Detach(<font class="keywordtype">void</font>); 01282 01289 <font class="keywordtype">bool</font> Redirect(<font class="keyword">const</font> <font class="keywordtype">char</font> *scrname); 01290 01299 <font class="keywordtype">bool</font> Step(<font class="keyword">const</font> <font class="keywordtype">char</font> *trapname = NULL); 01300 <a name="l01306"></a><a class="code" href="class_script_interp.html#a5">01306</a> <font class="keyword">inline</font> <font class="keywordtype">bool</font> isActive(<font class="keywordtype">void</font>)<font class="keyword"></font> 01307 <font class="keyword"> </font>{<font class="keywordflow">return</font> script[stack].line;}; 01308 01316 <font class="keywordtype">char</font> *getOption(<font class="keyword">const</font> <font class="keywordtype">char</font> *def = NULL); 01317 01325 <font class="keywordtype">char</font> *getKeyword(<font class="keyword">const</font> <font class="keywordtype">char</font> *keyword); 01326 01330 <font class="keywordtype">int</font> initKeywords(<font class="keywordtype">int</font> size); 01331 01339 <font class="keywordtype">char</font> *getValue(<font class="keyword">const</font> <font class="keywordtype">char</font> *def = NULL); 01340 01347 <font class="keywordtype">char</font> *getContent(<font class="keywordtype">char</font> *sym); 01348 <a name="l01354"></a><a class="code" href="class_script_interp.html#a11">01354</a> <font class="keyword">inline</font> scriptline_t *getScript(<font class="keywordtype">void</font>)<font class="keyword"></font> 01355 <font class="keyword"> </font>{<font class="keywordflow">return</font> script[stack].line;}; 01356 01362 <font class="keyword">const</font> <font class="keywordtype">char</font> *getMember(<font class="keywordtype">void</font>); 01363 <a name="l01369"></a><a class="code" href="class_script_interp.html#a13">01369</a> <font class="keyword">inline</font> scriptname_t *getObject(<font class="keywordtype">void</font>)<font class="keyword"></font> 01370 <font class="keyword"> </font>{<font class="keywordflow">return</font> script[stack].script;}; 01371 <a name="l01378"></a><a class="code" href="class_script_interp.html#a14">01378</a> <font class="keyword">inline</font> <a class="code" href="class_script_image.html">ScriptImage</a> *getImage(<font class="keywordtype">void</font>)<font class="keyword"></font> 01379 <font class="keyword"> </font>{<font class="keywordflow">return</font> image;}; 01380 <a name="l01386"></a><a class="code" href="class_script_interp.html#a15">01386</a> <font class="keyword">inline</font> <font class="keywordtype">void</font> autoloop(<font class="keywordtype">bool</font> enable)<font class="keyword"></font> 01387 <font class="keyword"> </font>{loop = enable;}; 01388 }; 01389 <a name="l01399"></a><a class="code" href="class_script_package.html">01399</a> <font class="keyword">class </font><a class="code" href="class_script_package.html">ScriptPackage</a> : <font class="keyword">protected</font> <a class="code" href="class_d_s_o.html">DSO</a> 01400 { 01401 <font class="keyword">private</font>: 01402 <font class="keyword">static</font> <a class="code" href="class_script_package.html">ScriptPackage</a> *first; 01403 <a class="code" href="class_script_package.html">ScriptPackage</a> *next; 01404 <font class="keywordtype">char</font> *filename; 01405 01406 ScriptPackage(<font class="keywordtype">char</font> *name); 01407 01408 <font class="keyword">public</font>: 01409 CCXX_MEMBER_EXPORT(<font class="keyword">static</font> <font class="keywordtype">bool</font>) usePackage(<font class="keyword">const</font> <font class="keywordtype">char</font> *name); 01410 }; 01411 01412 <font class="preprocessor">#ifdef CCXX_NAMESPACES</font> 01413 <font class="preprocessor"></font>}; 01414 <font class="preprocessor">#endif</font> 01415 <font class="preprocessor"></font> 01416 <font class="preprocessor">#endif</font> 01417 <font class="preprocessor"></font> </pre></div><hr><address><small>Generated at Sat Jan 5 09:07:11 2002 for ccScript by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.gif" alt="doxygen" align="middle" border=0 width=110 height=53></a>1.2.10 written by <a href="mailto:dimitri@stack.nl">Dimitri van Heesch</a>, © 1997-2001</small></address> </body> </html>