source: trunk/geant4/interfaces/html/G4UIGainServer_8cc-source.html@ 571

Last change on this file since 571 was 571, checked in by garnier, 18 years ago

r581@mac-90108: laurentgarnier | 2007-08-17 17:30:26 +0200
deplacement de frame

  • Property svn:mime-type set to text/html
File size: 62.9 KB
RevLine 
[571]1<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
2<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
3<title>G4UIGainServer.cc Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5</head><body>
6<!-- Generated by Doxygen 1.3.4 -->
7<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8<h1>G4UIGainServer.cc</h1><a href="G4UIGainServer_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">//</span>
900002 <span class="comment">// ********************************************************************</span>
1000003 <span class="comment">// * License and Disclaimer *</span>
1100004 <span class="comment">// * *</span>
1200005 <span class="comment">// * The Geant4 software is copyright of the Copyright Holders of *</span>
1300006 <span class="comment">// * the Geant4 Collaboration. It is provided under the terms and *</span>
1400007 <span class="comment">// * conditions of the Geant4 Software License, included in the file *</span>
1500008 <span class="comment">// * LICENSE and available at http://cern.ch/geant4/license . These *</span>
1600009 <span class="comment">// * include a list of copyright holders. *</span>
1700010 <span class="comment">// * *</span>
1800011 <span class="comment">// * Neither the authors of this software system, nor their employing *</span>
1900012 <span class="comment">// * institutes,nor the agencies providing financial support for this *</span>
2000013 <span class="comment">// * work make any representation or warranty, express or implied, *</span>
2100014 <span class="comment">// * regarding this software system or assume any liability for its *</span>
2200015 <span class="comment">// * use. Please see the license in the file LICENSE and URL above *</span>
2300016 <span class="comment">// * for the full disclaimer and the limitation of liability. *</span>
2400017 <span class="comment">// * *</span>
2500018 <span class="comment">// * This code implementation is the result of the scientific and *</span>
2600019 <span class="comment">// * technical work of the GEANT4 collaboration. *</span>
2700020 <span class="comment">// * By using, copying, modifying or distributing the software (or *</span>
2800021 <span class="comment">// * any work based on the software) you agree to acknowledge its *</span>
2900022 <span class="comment">// * use in resulting scientific publications, and indicate your *</span>
3000023 <span class="comment">// * acceptance of all terms of the Geant4 Software license. *</span>
3100024 <span class="comment">// ********************************************************************</span>
3200025 <span class="comment">//</span>
3300026 <span class="comment">//</span>
3400027 <span class="comment">// 12/06/2002 G4UIGainServer H. MInamimoto and H. Yoshida created</span>
3500028 <span class="comment">// $Id: G4UIGainServer.cc,v 1.10 2006/06/29 19:09:25 gunter Exp $</span>
3600029 <span class="comment">// $Name: geant4-08-01-patch-01 $</span>
3700030 <span class="comment">//</span>
3800031 <span class="preprocessor">#ifndef WIN32</span>
3900032 <span class="preprocessor"></span>
4000033 <span class="preprocessor">#include "<a class="code" href="G4UIGainServer_8hh.html">G4UIGainServer.hh</a>"</span>
4100034 <span class="preprocessor">#include &lt;netdb.h&gt;</span>
4200035
4300036 <span class="preprocessor">#include &lt;sstream&gt;</span>
4400037 <span class="preprocessor">#include "G4StateManager.hh"</span>
4500038 <span class="preprocessor">#include "G4UIcommandTree.hh"</span>
4600039 <span class="preprocessor">#include "G4UIcommand.hh"</span>
4700040 <span class="preprocessor">#include "G4UIcommandStatus.hh"</span>
4800041
4900042
50<a name="l00044"></a><a class="code" href="classG4UIGainServer.html#a4">00044</a> <a class="code" href="classG4UIGainServer.html#a4">G4UIGainServer::G4UIGainServer</a>()
5100046 {
5200047 <a class="code" href="classG4UIGainServer.html#r5">TVersion</a> =<span class="stringliteral">"T1.0a"</span>; <a class="code" href="classG4UIGainServer.html#r4">JVersion</a>=<span class="stringliteral">"J1.0a"</span>;
5300048 <a class="code" href="classG4UIGainServer.html#r0">prefix</a> = <span class="stringliteral">"/"</span>;
5400049
5500050 <a class="code" href="classG4UIGainServer.html#r9">port</a> = DEFAULT_PORT;
5600051 <span class="keywordflow">while</span>(<a class="code" href="classG4UIGainServer.html#d5">SetUPServer</a>() == <span class="keyword">false</span>){
5700052 G4cout&lt;&lt;<span class="stringliteral">"can't get the port no. "</span>&lt;&lt;<a class="code" href="classG4UIGainServer.html#r9">port</a>&lt;&lt;<span class="stringliteral">" Now, try to get the next port "</span>&lt;&lt;<a class="code" href="classG4UIGainServer.html#r9">port</a>+1&lt;&lt;G4endl;
5800053 <a class="code" href="classG4UIGainServer.html#r9">port</a>++;
5900054 }
6000055
6100056
6200057 <a class="code" href="classG4UIGainServer.html#r2">UI</a>= G4UImanager::GetUIpointer();
6300058 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt; SetSession(<span class="keyword">this</span>);
6400059 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt; SetCoutDestination(<span class="keyword">this</span>);
6500060
6600061 G4StateManager* statM = G4StateManager::GetStateManager();
6700062 <a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a> = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
6800063 <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> = <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a>;
6900064
7000065 <a class="code" href="classG4UIGainServer.html#r6">iExit</a>= FALSE;
7100066 <a class="code" href="classG4UIGainServer.html#r7">iCont</a>= FALSE;
7200067
7300068 G4UIcommandTree* tree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
7400069 <a class="code" href="classG4UIGainServer.html#d0">GetNewTreeStructure</a>(tree,0);
7500070 <a class="code" href="classG4UIGainServer.html#d1">GetNewTreeValues</a>(tree,0);
7600071 <a class="code" href="classG4UIGainServer.html#r15">previousTreeCommands</a> = <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>;
7700072 <a class="code" href="classG4UIGainServer.html#r17">previousTreeParams</a> = <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>;
7800073 <a class="code" href="classG4UIGainServer.html#r19">previousTreePCP</a> = <a class="code" href="classG4UIGainServer.html#r20">newTreePCP</a>;
7900074
8000075 }
8100076
82<a name="l00078"></a><a class="code" href="classG4UIGainServer.html#a5">00078</a> <a class="code" href="classG4UIGainServer.html#a5">G4UIGainServer::~G4UIGainServer</a>()
8300079
8400080 {
8500081
8600082 <span class="keywordflow">if</span>(G4UImanager::GetUIpointer()) {
8700083 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt; SetSession(NULL);
8800084 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt; SetCoutDestination(NULL);
8900085 }
9000086
9100087 <span class="keywordflow">if</span>(G4UImanager::GetUIpointer()!=0){
9200088 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;SetSession(NULL);
9300089 <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;SetCoutDestination(NULL);
9400090 }
9500091 }
9600092
9700093
98<a name="l00095"></a><a class="code" href="classG4UIGainServer.html#a0">00095</a> G4UIsession* <a class="code" href="classG4UIGainServer.html#a0">G4UIGainServer::SessionStart</a>()
9900097 {
10000098 G4String newCommand;
10100099
10200100 G4StateManager* statM = G4StateManager::GetStateManager();
10300101 <a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a> = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
10400102
10500103 <a class="code" href="classG4UIGainServer.html#r6">iExit</a>= TRUE;
10600104
10700105 <a class="code" href="classG4UIGainServer.html#d6">WaitingConnection</a>();
10800106 <span class="keywordflow">while</span>(<a class="code" href="classG4UIGainServer.html#r6">iExit</a>){
10900107 newCommand= <a class="code" href="classG4UIGainServer.html#a8">GetCommand</a>();
11000108 <a class="code" href="classG4UIGainServer.html#d2">ExecuteCommand</a>(newCommand);
11100109 }
11200110 <span class="keywordflow">return</span> NULL;
11300111 }
11400112
115<a name="l00114"></a><a class="code" href="classG4UIGainServer.html#a1">00114</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#a1">G4UIGainServer::PauseSessionStart</a>(G4String msg)
11600116 {
11700117 <a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a> = msg;
11800118 G4cout&lt;&lt;<span class="stringliteral">"@@PROMPT \""</span>&lt;&lt;<a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a>&lt;&lt;<span class="stringliteral">"\""</span>&lt;&lt;G4endl;
11900119
12000120 <a class="code" href="classG4UIGainServer.html#r7">iCont</a>= TRUE;
12100121
12200122 G4String newCommand= <a class="code" href="classG4UIGainServer.html#a8">GetCommand</a>();
12300123 <span class="keywordflow">while</span>(<a class="code" href="classG4UIGainServer.html#r7">iCont</a>){
12400124 <a class="code" href="classG4UIGainServer.html#d2">ExecuteCommand</a>(newCommand);
12500125 newCommand= <a class="code" href="classG4UIGainServer.html#a8">GetCommand</a>();
12600126 strcpy(<a class="code" href="classG4UIGainServer.html#r14">buf</a>,<span class="stringliteral">"nowIdle"</span>);
12700127 write(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[1],<a class="code" href="classG4UIGainServer.html#r14">buf</a>,strlen(<a class="code" href="classG4UIGainServer.html#r14">buf</a>));
12800128 }
12900129 }
13000130
131<a name="l00132"></a><a class="code" href="classG4UIGainServer.html#d2">00132</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d2">G4UIGainServer::ExecuteCommand</a>(G4String aCommand)
13200134 {
13300135 <span class="keywordflow">if</span>(aCommand.length()&lt;2) <span class="keywordflow">return</span>;
13400136
13500137 G4UIcommandTree* tree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
13600138 <span class="keywordflow">if</span>(aCommand.length()&lt;2) <span class="keywordflow">return</span>;
13700139 G4int returnVal = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;ApplyCommand(aCommand);
13800140 G4int paramIndex = returnVal % 100;
13900141 <span class="comment">// 0 - 98 : paramIndex-th parameter is invalid</span>
14000142 <span class="comment">// 99 : convination of parameters is invalid</span>
14100143 G4int commandStatus = returnVal - paramIndex;
14200144
14300145 <a class="code" href="classG4UIGainServer.html#d28">UpdateState</a>();
14400146
14500147 <span class="keywordflow">if</span>(<a class="code" href="classG4UIGainServer.html#r3">uiMode</a> != <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a>){
14600148 <span class="keywordflow">switch</span>(commandStatus) {
14700149 <span class="keywordflow">case</span> fCommandSucceeded:
14800150 <a class="code" href="classG4UIGainServer.html#d0">GetNewTreeStructure</a>(tree,0);
14900151 <a class="code" href="classG4UIGainServer.html#d1">GetNewTreeValues</a>(tree,0);
15000152 <span class="keywordflow">if</span>(<a class="code" href="classG4UIGainServer.html#d27">CommandUpdated</a>()){
15100153 <a class="code" href="classG4UIGainServer.html#d25">NotifyCommandUpdate</a>();
15200154 } <span class="keywordflow">else</span>{
15300155 <a class="code" href="classG4UIGainServer.html#d29">UpdateParamVal</a>();
15400156 }
15500157 <a class="code" href="classG4UIGainServer.html#r15">previousTreeCommands</a> = <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>;
15600158 <a class="code" href="classG4UIGainServer.html#r17">previousTreeParams</a> = <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>;
15700159 <a class="code" href="classG4UIGainServer.html#r19">previousTreePCP</a> = <a class="code" href="classG4UIGainServer.html#r20">newTreePCP</a>;
15800160 <span class="keywordflow">break</span>;
15900161 <span class="keywordflow">case</span> fCommandNotFound:
16000162 G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \" &lt;"</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;SolveAlias(aCommand) &lt;&lt; <span class="stringliteral">"&gt; not found.\""</span> &lt;&lt; G4endl;
16100163 <span class="keywordflow">break</span>;
16200164 <span class="keywordflow">case</span> fIllegalApplicationState:
16300165 G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \"illegal application state -- command refused.\""</span> &lt;&lt; G4endl;
16400166 <span class="keywordflow">break</span>;
16500167 <span class="keywordflow">case</span> fParameterOutOfRange:
16600168 G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter Out of Range.\""</span> &lt;&lt; G4endl;
16700169 <span class="keywordflow">break</span>;
16800170 <span class="keywordflow">case</span> fParameterUnreadable:
16900171 G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter is wrong type and/or is not omittable.\""</span>&lt;&lt;G4endl;
17000172 <span class="keywordflow">break</span>;
17100173 <span class="keywordflow">case</span> fParameterOutOfCandidates:
17200174 G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter is out of candidate.\""</span> &lt;&lt; G4endl;
17300175 <span class="keywordflow">break</span>;
17400176 <span class="keywordflow">case</span> fAliasNotFound:
17500177 <span class="keywordflow">default</span>:
17600178 G4cerr &lt;&lt; <span class="stringliteral">"command refused ("</span> &lt;&lt; commandStatus &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; G4endl;
17700179 }
17800180 }
17900181 }
18000182
181<a name="l00184"></a><a class="code" href="classG4UIGainServer.html#a8">00184</a> G4String <a class="code" href="classG4UIGainServer.html#a8">G4UIGainServer::GetCommand</a>()
18200186 {
18300187 G4String newCommand;
18400188 G4String nullString;
18500189
18600190 <span class="keywordflow">while</span>( 1 )
18700191 {
18800192 G4UIcommandTree* tree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
18900193 <span class="keywordflow">if</span> ( <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> != <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a> ){
19000194 G4cout &lt;&lt; <span class="stringliteral">"@@PROMPT \""</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a> &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; G4endl;
19100195 }
19200196 <span class="keywordflow">if</span> ( <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> != <a class="code" href="G4UIGAG_8hh.html#a7a1">java_mode</a> ){
19300197 G4cout &lt;&lt; <a class="code" href="classG4UIGainServer.html#r1">promptCharacter</a> &lt;&lt; <span class="stringliteral">"&gt; "</span> &lt;&lt; G4endl;
19400198 }<span class="keywordflow">else</span>{
19500199 G4cout &lt;&lt; <span class="stringliteral">"@@Ready"</span> &lt;&lt; G4endl;
19600200 }
19700201
19800202
19900205 read(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[1],<a class="code" href="classG4UIGainServer.html#r14">buf</a>,1024);
20000206 newCommand=<a class="code" href="classG4UIGainServer.html#r14">buf</a>;
20100207 <span class="comment">//DEBUG cout&lt;&lt;"-&gt;"&lt;&lt;newCommand&lt;&lt;"&lt;-"&lt;&lt;newCommand.length()&lt;&lt;G4endl;</span>
20200208 <span class="comment">//newCommand.readLine( G4cin, FALSE );</span>
20300211 <span class="comment"></span>
20400212
20500213
20600214 <span class="keywordflow">if</span> (!G4cin.good()) { G4cin.clear(); newCommand = nullString; <a class="code" href="classG4UIGainServer.html#r6">iExit</a>=<span class="keyword">false</span>;<span class="keywordflow">break</span>;}
20700215
20800216 newCommand = newCommand.strip(G4String::leading);
20900217 <span class="keywordflow">if</span>( newCommand.length() &lt; 1) { <span class="keywordflow">break</span>; }
21000218
21100219 <span class="keywordflow">while</span>( newCommand(newCommand.length()-1) == <span class="charliteral">'_'</span> )
21200220 {
21300221 G4String newLine;
21400222 newCommand.remove(newCommand.length()-1);
21500223 newLine.readLine( G4cin );
21600224 <span class="keywordflow">if</span> (!G4cin.good()) { G4cin.clear(); newCommand = nullString; <a class="code" href="classG4UIGainServer.html#r6">iExit</a>=<span class="keyword">false</span>;<span class="keywordflow">break</span>;}
21700225 newCommand.append(newLine);
21800226 }
21900227
22000228 G4String nC = newCommand.strip(G4String::leading);
22100229 <span class="keywordflow">if</span>( nC.length() &lt; 1) { <span class="keywordflow">break</span>; }
22200230
22300231 <span class="comment">// -------------------- nC.toUpper();</span>
22400232 <span class="keywordflow">if</span>( nC == <span class="stringliteral">"@@GainmodeJAVA"</span> ) {
22500233 <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> = <a class="code" href="G4UIGAG_8hh.html#a7a1">java_mode</a>;
22600234 G4cout &lt;&lt; G4endl &lt;&lt; <span class="stringliteral">"@@Version "</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r4">JVersion</a> &lt;&lt; G4endl;
22700235 <a class="code" href="classG4UIGainServer.html#d15">SendCommandProperties</a>(tree);
22800236 <a class="code" href="classG4UIGainServer.html#d24">NotifyStateChange</a>();
22900237 }
23000238 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"@@GainmodeTcl"</span> ) {
23100239 <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> = <a class="code" href="G4UIGAG_8hh.html#a7a2">tcl_mode</a>;
23200240 G4cout &lt;&lt; G4endl &lt;&lt; <span class="stringliteral">"@@Version "</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r5">TVersion</a> &lt;&lt; G4endl;
23300241 <a class="code" href="classG4UIGainServer.html#d15">SendCommandProperties</a>(tree);
23400242 <a class="code" href="classG4UIGainServer.html#d24">NotifyStateChange</a>();
23500243 }
23600244 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'#'</span> )
23700245 { G4cout &lt;&lt; nC &lt;&lt; G4endl; }
23800246
23900247 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"ls"</span> || nC(0,3) == <span class="stringliteral">"ls "</span> )
24000248 { <a class="code" href="classG4UIGainServer.html#d9">ListDirectory</a>( nC ); }
24100249 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"pwd"</span> )
24200250 { G4cout &lt;&lt; <span class="stringliteral">"Current Working Directory : "</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r0">prefix</a> &lt;&lt; G4endl; }
24300251 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0,2) == <span class="stringliteral">"cd"</span> || nC(0,3) == <span class="stringliteral">"cd "</span> )
24400252 { <a class="code" href="classG4UIGainServer.html#d8">ChangeDirectory</a>( nC ); }
24500253 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"help"</span> || nC(0,5) == <span class="stringliteral">"help "</span>)
24600254 { <a class="code" href="classG4UIGainServer.html#d10">TerminalHelp</a>( nC ); }
24700255 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'?'</span> )
24800256 { <a class="code" href="classG4UIGainServer.html#d13">ShowCurrent</a>( nC ); }
24900257 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0,4) == <span class="stringliteral">"hist"</span> || nC == <span class="stringliteral">"history"</span>)
25000258 {
25100259 G4int nh = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetNumberOfHistory();
25200260 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;nh;i++)
25300261 { G4cout &lt;&lt; i &lt;&lt; <span class="stringliteral">": "</span> &lt;&lt; <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetPreviousCommand(i) &lt;&lt; G4endl; }
25400262 }
25500263 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'!'</span> )
25600264 {
25700265 G4String ss = nC(1,nC.length()-1);
25800266 G4int vl;
25900267 <span class="keyword">const</span> <span class="keywordtype">char</span>* tt = ss;
26000268 std::istringstream is((<span class="keywordtype">char</span>*)tt);
26100269 is &gt;&gt; vl;
26200270 G4int nh = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetNumberOfHistory();
26300271 <span class="keywordflow">if</span>(vl&gt;=0 &amp;&amp; vl&lt;nh)
26400272 {
26500273 newCommand = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetPreviousCommand(vl);
26600274 G4cout &lt;&lt; newCommand &lt;&lt; G4endl;
26700275 <span class="keywordflow">break</span>;
26800276 }
26900277 <span class="keywordflow">else</span>
27000278 { G4cerr &lt;&lt; <span class="stringliteral">"history "</span> &lt;&lt; vl &lt;&lt; <span class="stringliteral">" is not found."</span> &lt;&lt; G4endl; }
27100279 }
27200280 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0,4) == <span class="stringliteral">"exit"</span> )
27300281 {
27400282 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#r7">iCont</a> )
27500283 {
27600284 <span class="keywordflow">if</span> ( <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> == <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a>){
27700285 G4cerr &lt;&lt; <span class="stringliteral">"You are now processing RUN."</span> &lt;&lt; G4endl;
27800286 G4cerr &lt;&lt; <span class="stringliteral">"Please abrot it using \"/run/abort\" command first"</span> &lt;&lt; G4endl;
27900287 G4cerr &lt;&lt; <span class="stringliteral">" and use \"continue\" command until the application"</span> &lt;&lt; G4endl;
28000288 G4cerr &lt;&lt; <span class="stringliteral">" becomes to Idle."</span> &lt;&lt; G4endl;
28100289 }<span class="keywordflow">else</span>{
28200290 G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"You are now processing RUN.\""</span> &lt;&lt; G4endl;
28300291 }
28400292 }
28500293 <span class="keywordflow">else</span>
28600294 {
28700295 close(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[1]);
28800296 close(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[2]);
28900297 <a class="code" href="classG4UIGainServer.html#r6">iExit</a> = <span class="keyword">false</span>;
29000298 newCommand = nullString;
29100299 <span class="keywordflow">break</span>;
29200300 }
29300301 }
29400302 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"cont"</span> || nC == <span class="stringliteral">"continue"</span> )
29500303 {
29600304 <a class="code" href="classG4UIGainServer.html#r7">iCont</a> = <span class="keyword">false</span>;
29700305 newCommand = nullString;
29800306 <span class="keywordflow">break</span>;
29900307 }
30000308 <span class="keywordflow">else</span>
30100309 { <span class="keywordflow">break</span>; }
30200310 }
30300311 <span class="keywordflow">return</span> <a class="code" href="classG4UIGainServer.html#d14">GetFullPath</a>(newCommand);
30400312 }
30500313
306<a name="l00315"></a><a class="code" href="classG4UIGainServer.html#a2">00315</a> G4int <a class="code" href="classG4UIGainServer.html#a2">G4UIGainServer::ReceiveG4cout</a>(G4String coutString)
30700317 {
30800318 <span class="keywordflow">if</span>(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[1]&gt;0){
30900319 write(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[1],coutString,coutString.length());
31000320 }
31100321 <span class="keywordflow">return</span> 0;
31200322
31300323
31400324
31500325
31600326
31700327
31800328
31900329 <span class="comment">//std::cout &lt;&lt; coutString &lt;&lt; std::flush;</span>
32000330 <span class="comment">//return 0;</span>
32100331 }
32200332
323<a name="l00334"></a><a class="code" href="classG4UIGainServer.html#a3">00334</a> G4int <a class="code" href="classG4UIGainServer.html#a3">G4UIGainServer::ReceiveG4cerr</a>(G4String cerrString)
32400336 {
32500337 <span class="keywordflow">if</span>(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[2]&gt;0){
32600338 write(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[2],cerrString,cerrString.length());
32700339 }
32800340 <span class="keywordflow">return</span> 0;
32900341
33000342
33100343
33200344 <span class="comment">//std::cerr &lt;&lt; cerrString &lt;&lt; std::flush;</span>
33300345 <span class="comment">//return 0;</span>
33400346 }
33500347
336<a name="l00349"></a><a class="code" href="classG4UIGainServer.html#d3">00349</a> G4bool <a class="code" href="classG4UIGainServer.html#d3">G4UIGainServer::GetHelpChoice</a>(G4int&amp; aInt)
33700351 {
33800352 G4cin &gt;&gt; aInt;
33900353 <span class="keywordflow">if</span>(!G4cin.good()){
34000354 G4cin.clear();
34100355 G4cin.ignore(30,<span class="charliteral">'\n'</span>);
34200356 <span class="keywordflow">return</span> FALSE;
34300357 }
34400358 <span class="keywordflow">return</span> TRUE;
34500359 }
34600360
347<a name="l00362"></a><a class="code" href="classG4UIGainServer.html#d4">00362</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d4">G4UIGainServer::ExitHelp</a>()
34800364 {
34900365 <span class="keywordtype">char</span> temp[100];
35000366 G4cin.getline(temp, 100);
35100367 }
35200368
353<a name="l00370"></a><a class="code" href="classG4UIGainServer.html#d5">00370</a> <span class="keywordtype">bool</span> <a class="code" href="classG4UIGainServer.html#d5">G4UIGainServer::SetUPServer</a>(){
35400372
35500373 <a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0] = socket(AF_INET,SOCK_STREAM,0);
35600374
35700375 <span class="keywordflow">if</span>(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0]&lt;0){
35800376 perror(<span class="stringliteral">"server:socket"</span>);
35900377 <span class="keywordflow">return</span> (<span class="keyword">false</span>);
36000378 <span class="comment">//exit(1);</span>
36100379 }
36200380
36300381 memset( (<span class="keywordtype">char</span> *)&amp;<a class="code" href="classG4UIGainServer.html#r10">saddr</a>,<span class="charliteral">'\0'</span>,<span class="keyword">sizeof</span>(saddr)) ;
36400382
36500383 saddr.sin_family = AF_INET;
36600384 saddr.sin_addr.s_addr = INADDR_ANY;
36700385 saddr.sin_port = htons(<a class="code" href="classG4UIGainServer.html#r9">port</a>);
36800386 unlink(SOCK_NAME);
36900387
37000388 <span class="keywordflow">if</span>(bind(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0] , (<span class="keyword">struct</span> sockaddr *)&amp;saddr , <span class="keyword">sizeof</span>(saddr))&lt;0){
37100389 perror(<span class="stringliteral">"bind"</span>);
37200390 <span class="keywordflow">return</span> (<span class="keyword">false</span>);
37300391 <span class="comment">//exit(1);</span>
37400392 }
37500393 <span class="keywordflow">else</span>{ G4cout&lt;&lt;<span class="stringliteral">"G4GainServer waiting at "</span>&lt;&lt;<a class="code" href="classG4UIGainServer.html#r9">port</a>&lt;&lt;G4endl; }
37600394
37700395 <span class="keywordflow">if</span>(listen(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0],1)&lt;0){
37800396 perror(<span class="stringliteral">"listen"</span>);
37900397 <span class="keywordflow">return</span> (<span class="keyword">false</span>);
38000398 <span class="comment">//exit(1);</span>
38100399 }
38200400
38300401 <span class="keywordflow">return</span> (<span class="keyword">true</span>);
38400402 }
38500403
386<a name="l00405"></a><a class="code" href="classG4UIGainServer.html#d6">00405</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d6">G4UIGainServer::WaitingConnection</a>(){
38700407 <a class="code" href="classG4UIGainServer.html#r12">len</a> = <span class="keyword">sizeof</span>(<a class="code" href="classG4UIGainServer.html#r11">caddr</a>);
38800408
38900409 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=1;i&lt;=2;i++){
39000410 <span class="preprocessor">#if defined __APPLE__ &amp;&amp; (__GNUC__&lt;4)</span>
39100411 <span class="preprocessor"></span> <span class="keywordflow">if</span>((<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[i] = accept(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0], (<span class="keyword">struct</span> sockaddr *)&amp;<a class="code" href="classG4UIGainServer.html#r11">caddr</a>,(<span class="keywordtype">int</span> *)&amp;<a class="code" href="classG4UIGainServer.html#r12">len</a>))&lt;0){
39200412 <span class="preprocessor">#else</span>
39300413 <span class="preprocessor"></span> <span class="keywordflow">if</span>((<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[i] = accept(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0], (<span class="keyword">struct</span> sockaddr *)&amp;caddr,(socklen_t *)&amp;<a class="code" href="classG4UIGainServer.html#r12">len</a>))&lt;0){
39400414 <span class="preprocessor">#endif</span>
39500415 <span class="preprocessor"></span> G4cerr&lt;&lt;<span class="stringliteral">"accept:"</span>&lt;&lt;i&lt;&lt;G4endl;
39600416 exit(1);
39700417 }
39800418 }
39900419 close(<a class="code" href="classG4UIGainServer.html#r8">socketD</a>[0]);
40000420 }
40100421
40200423 G4String <a class="code" href="classG4UIGainServer.html#d14">G4UIGainServer::GetFullPath</a>(G4String aNewCommand){
40300425 G4String newCommand = aNewCommand.strip(G4String::both);
40400426 G4String tmpString;
40500427 <span class="keywordflow">if</span>( newCommand(0) == <span class="charliteral">'/'</span> )
40600428 { tmpString = newCommand; }
40700429 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newCommand(0,3) == <span class="stringliteral">"../"</span> )
40800430 {
40900431 G4String tmpPrefix = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>;
41000432 <span class="comment">/*G4int*/</span> <span class="keywordtype">unsigned</span> i_direc = 0;
41100433 <span class="keywordflow">while</span>( i_direc &lt; newCommand.length() )
41200434 {
41300435 <span class="keywordflow">if</span>( newCommand(i_direc,3) == <span class="stringliteral">"../"</span> )
41400436 {
41500437 i_direc += 3;
41600438 prefix = <a class="code" href="classG4UIGainServer.html#d11">ModifyPrefix</a>( G4String(<span class="stringliteral">"../"</span>) );
41700439 }
41800440 <span class="keywordflow">else</span>
41900441 { <span class="keywordflow">break</span>; }
42000442 }
42100443 tmpString = prefix;
42200444 tmpString.append( newCommand( i_direc, newCommand.length()-i_direc ) );
42300445 prefix = tmpPrefix;
42400446 }
42500447 <span class="keywordflow">else</span>
42600448 {
42700449 tmpString = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>;
42800450 tmpString.append( newCommand );
42900451 }
43000452 <span class="keywordflow">return</span> tmpString;
43100453 }
43200454
43300456 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#a6">G4UIGainServer::SessionTerminate</a>(){
43400458 G4cout&lt;&lt;<span class="stringliteral">"***** Terminal session end *****"</span>&lt;&lt;G4endl;
43500459 }
43600460
43700461
43800463 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d13">G4UIGainServer::ShowCurrent</a>(G4String newCommand){
43900465 G4String theCommand = <a class="code" href="classG4UIGainServer.html#d14">GetFullPath</a>(newCommand(1,newCommand.length()-1));
44000466 G4String curV = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetCurrentValues(theCommand);
44100467 <span class="keywordflow">if</span>( ! (curV.isNull()||curV(0)==<span class="charliteral">'\0'</span> ) ) {
44200468 <span class="keywordflow">if</span> (<a class="code" href="classG4UIGainServer.html#r3">uiMode</a> == <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a>){
44300469 G4cout &lt;&lt; <span class="stringliteral">"Current value(s) of the parameter(s) : "</span> &lt;&lt; curV &lt;&lt; G4endl;
44400470 }<span class="keywordflow">else</span>{
44500471 G4cout &lt;&lt; <span class="stringliteral">"@@CurrentValue "</span> &lt;&lt; curV &lt;&lt; G4endl;
44600472 }
44700473 } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="classG4UIGainServer.html#r3">uiMode</a> == <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a>){
44800474 G4cout &lt;&lt; <span class="stringliteral">"Current value is not available."</span> &lt;&lt; G4endl;
44900475 } <span class="keywordflow">else</span> {
45000476 G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Current value is not available.\""</span> &lt;&lt; G4endl;
45100477 }
45200478 }
45300479
45400481 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d8">G4UIGainServer::ChangeDirectory</a>(G4String newCommand){
45500483 G4String savedPrefix = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>;
45600484 <span class="keywordflow">if</span>( newCommand.length() &lt;= 3 )
45700485 { prefix = <span class="stringliteral">"/"</span>; }
45800486 <span class="keywordflow">else</span>
45900487 {
46000488 G4String aNewPrefix = newCommand(3,newCommand.length()-3);
46100489 G4String newPrefix = aNewPrefix.strip(G4String::both);
46200490 <span class="keywordflow">if</span>( newPrefix(0) == <span class="charliteral">'/'</span> )
46300491 { prefix = newPrefix; }
46400492 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newPrefix(0) != <span class="charliteral">'.'</span> )
46500493 {
46600494 prefix += newPrefix;
46700495 }
46800496 <span class="keywordflow">else</span>
46900497 { prefix = <a class="code" href="classG4UIGainServer.html#d11">ModifyPrefix</a>( newPrefix ); }
47000498 }
47100499 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#r0">prefix</a>( prefix.length() - 1 ) != <span class="charliteral">'/'</span> )
47200500 { prefix += <span class="stringliteral">"/"</span>; }
47300501 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#d12">FindDirPath</a>( prefix ) == NULL )
47400502 {
47500503 G4cout &lt;&lt; <span class="stringliteral">"Directory &lt;"</span> &lt;&lt; prefix &lt;&lt; <span class="stringliteral">"&gt; is not found."</span> &lt;&lt; G4endl;
47600504 prefix = savedPrefix;
47700505 }
47800506 }
47900508 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d9">G4UIGainServer::ListDirectory</a>(G4String newCommand){
48000510 G4String targetDir(<span class="charliteral">'\0'</span>);
48100511 <span class="keywordflow">if</span>( newCommand.length() &lt;= 3 )
48200512 { targetDir = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>; }
48300513 <span class="keywordflow">else</span>
48400514 {
48500515 G4String newPrefix = newCommand(3,newCommand.length()-3);
48600516 newPrefix.strip(G4String::both);
48700517 <span class="keywordflow">if</span>( newPrefix(0) == <span class="charliteral">'/'</span> )
48800518 { targetDir = newPrefix; }
48900519 <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newPrefix(0) != <span class="charliteral">'.'</span> )
49000520 {
49100521 targetDir = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>;
49200522 targetDir += newPrefix;
49300523 }
49400524 <span class="keywordflow">else</span>
49500525 { targetDir = <a class="code" href="classG4UIGainServer.html#d11">ModifyPrefix</a>( newPrefix ); }
49600526 }
49700527 <span class="keywordflow">if</span>( targetDir( targetDir.length() - 1 ) != <span class="charliteral">'/'</span> )
49800528 { targetDir += <span class="stringliteral">"/"</span>; }
49900529 G4UIcommandTree * commandTree = <a class="code" href="classG4UIGainServer.html#d12">FindDirPath</a>( targetDir );
50000530 <span class="keywordflow">if</span>( commandTree == NULL )
50100531 { G4cout &lt;&lt; <span class="stringliteral">"Directory &lt;"</span> &lt;&lt; targetDir &lt;&lt; <span class="stringliteral">"&gt; is not found."</span> &lt;&lt; G4endl; }
50200532 <span class="keywordflow">else</span>
50300533 { commandTree-&gt;ListCurrent(); }
50400534 }
50500535
50600537 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d10">G4UIGainServer::TerminalHelp</a>(G4String newCommand){
50700539 G4UIcommandTree* treeTop = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
50800540 <span class="keywordtype">unsigned</span> i = newCommand.index(<span class="stringliteral">" "</span>);
50900541
51000542 <span class="keywordflow">if</span>(i!=std::string::npos){
51100543 G4String newValue = newCommand(i+1,newCommand.length()-(i+1));
51200544 newValue.strip(G4String::both);
51300545 <span class="keywordflow">if</span>(newValue(0)!=<span class="charliteral">'/'</span>){
51400546 newValue.prepend(<a class="code" href="classG4UIGainServer.html#r0">prefix</a>);
51500547 }
51600548 G4UIcommand* theCommand = treeTop-&gt;FindPath(newValue);
51700549 <span class="keywordflow">if</span>(theCommand !=NULL){
51800550 theCommand-&gt;List();
51900551 <span class="keywordflow">return</span>;
52000552 }
52100553 <span class="keywordflow">else</span>{
52200554 G4cout&lt;&lt;<span class="stringliteral">"Command&lt;"</span> &lt;&lt; newValue &lt;&lt; <span class="stringliteral">"is not found."</span>&lt;&lt;G4endl;
52300555 <span class="keywordflow">return</span>;
52400556 }
52500557 }
52600558
52700559 G4UIcommandTree* floor[10];
52800560 floor[0] = treeTop;
52900561 <span class="keywordtype">int</span> iFloor = 0;
53000562 <span class="keywordtype">unsigned</span> prefixIndex = 1;
53100563 <span class="keywordflow">while</span>(prefixIndex&lt;<a class="code" href="classG4UIGainServer.html#r0">prefix</a>.length()-1){
53200564 <span class="keywordtype">int</span> ii = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>.index(<span class="stringliteral">"/"</span>,prefixIndex);
53300565 floor[iFloor+1]=
53400566 floor[iFloor]-&gt;GetTree(G4String(<a class="code" href="classG4UIGainServer.html#r0">prefix</a>(0,ii+1)));
53500567 prefixIndex = ii+1;
53600568 iFloor++;
53700569 }
53800570 floor[iFloor]-&gt;ListCurrentWithNum();
53900571 <span class="keywordflow">while</span>(1){
54000572 <span class="keywordtype">int</span> i;
54100573 G4cout&lt;&lt;G4endl &lt;&lt;<span class="stringliteral">"Type the number (0:end, -n:n level back) :"</span>&lt;&lt;std::flush;
54200574 G4cin &gt;&gt; i;
54300575 <span class="keywordflow">if</span>(!G4cin.good()){
54400576 G4cin.clear();
54500577 G4cin.ignore(30,<span class="charliteral">'\n'</span>);
54600578 G4cout&lt;&lt;G4endl &lt;&lt;<span class="stringliteral">"Not a number,once more"</span>&lt;&lt;G4endl; <span class="keywordflow">continue</span>;
54700579 }
54800580 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i&lt;0){
54900581 iFloor += i;
55000582 <span class="keywordflow">if</span>(iFloor &lt;0) iFloor =0;
55100583 floor[iFloor]-&gt;ListCurrentWithNum(); <span class="keywordflow">continue</span>;
55200584 }
55300585 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i==0){<span class="keywordflow">break</span>;}
55400586 <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i&gt;0){
55500587 <span class="keywordtype">int</span> n_tree = floor[iFloor]-&gt;GetTreeEntry();
55600588 <span class="keywordflow">if</span>(i&gt;n_tree){
55700589 <span class="keywordflow">if</span>(i&lt;=n_tree+floor[iFloor]-&gt;GetCommandEntry()){
55800590 floor[iFloor]-&gt;GetCommand(i-n_tree)-&gt;List();
55900591 }
56000592 }
56100593 <span class="keywordflow">else</span>{
56200594 floor[iFloor+1] = floor[iFloor]-&gt;GetTree(i);
56300595 iFloor++;
56400596 floor[iFloor]-&gt;ListCurrentWithNum();
56500597 }
56600598 }
56700599 }
56800600 G4cout&lt;&lt;<span class="stringliteral">"Exit from Help."</span>&lt;&lt;G4endl &lt;&lt;G4endl;
56900601 G4cout&lt;&lt;G4endl;
57000602 <span class="keywordtype">char</span> temp[100];
57100603 G4cin.getline(temp,100);
57200604 }
57300605
57400606
57500608 G4String <a class="code" href="classG4UIGainServer.html#d11">G4UIGainServer::ModifyPrefix</a>(G4String newCommand){
57600610 G4String newPrefix = <a class="code" href="classG4UIGainServer.html#r0">prefix</a>;
57700611 <span class="keywordflow">while</span>(1){
57800612 <span class="keywordflow">if</span>(newCommand(0,2) ==<span class="stringliteral">".."</span>){
57900613 <span class="keywordflow">if</span>(newPrefix !=<span class="stringliteral">"/"</span>){
58000614 G4String tmpString = newPrefix(0,newPrefix.length()-1);
58100615 newPrefix = newPrefix(0,tmpString.last(<span class="charliteral">'/'</span>)+1);
58200616 }
58300617 }
58400618 <span class="keywordflow">else</span>{
58500619 newPrefix += newCommand;
58600620 <span class="keywordflow">break</span>;
58700621 }
58800622 <span class="keywordflow">if</span>(newCommand == <span class="stringliteral">".."</span> || newCommand == <span class="stringliteral">"../"</span>){
58900623 <span class="keywordflow">break</span>;
59000624 }
59100625 newCommand=newCommand(3,newCommand.length()-3);
59200626 }
59300627 <span class="keywordflow">return</span> newPrefix;
59400628 }
59500629
59600631 G4UIcommandTree* <a class="code" href="classG4UIGainServer.html#d12">G4UIGainServer::FindDirPath</a>(G4String newCommand){
59700633 G4UIcommandTree * comTree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
59800634 <span class="comment">/*int*/</span> <span class="keywordtype">unsigned</span> idx = 1;
59900635 <span class="keywordflow">while</span>( idx &lt; newCommand.length()-1 )
60000636 {
60100637 <span class="keywordtype">int</span> i = newCommand.index(<span class="stringliteral">"/"</span>,idx);
60200638 comTree = comTree-&gt;GetTree(G4String(newCommand(0,i+1)));
60300639 <span class="keywordflow">if</span>( comTree == NULL )
60400640 { <span class="keywordflow">return</span> NULL; }
60500641 idx = i+1;
60600642 }
60700643 <span class="keywordflow">return</span> comTree;
60800644 }
60900645
61000647
61100649 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d15">G4UIGainServer::SendCommandProperties</a>(G4UIcommandTree* tree){
61200651 <span class="keywordflow">if</span>( tree == NULL ) {
61300652 G4cerr &lt;&lt; <span class="stringliteral">"GetTree() returnes null."</span> &lt;&lt; G4endl;
61400653 <span class="keywordflow">return</span>;
61500654 }
61600655 <span class="keywordflow">if</span> (<a class="code" href="classG4UIGainServer.html#r3">uiMode</a> == <a class="code" href="G4UIGAG_8hh.html#a7a1">java_mode</a>){
61700656 G4cout &lt;&lt; <span class="stringliteral">"@@JTreeBegin"</span> &lt;&lt; G4endl;
61800657 <a class="code" href="classG4UIGainServer.html#d19">CodeGenJavaTree</a>(tree, 0);
61900658 G4cout &lt;&lt; <span class="stringliteral">"@@JTreeEnd"</span> &lt;&lt; G4endl;
62000659 <a class="code" href="classG4UIGainServer.html#d20">CodeGenJavaParams</a>(tree, 0);
62100660 }<span class="keywordflow">else</span>{}
62200661 }
62300662
62400664 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d16">G4UIGainServer::SendParameterProperties</a>(G4UIcommandTree* tree){
62500666 <span class="keywordflow">if</span>( tree == NULL ) {
62600667 G4cerr &lt;&lt; <span class="stringliteral">"GetTree() returnes null."</span> &lt;&lt; G4endl;
62700668 <span class="keywordflow">return</span>;
62800669 }
62900670 <span class="keywordflow">if</span> (<a class="code" href="classG4UIGainServer.html#r3">uiMode</a> == <a class="code" href="G4UIGAG_8hh.html#a7a1">java_mode</a>){
63000671 <a class="code" href="classG4UIGainServer.html#d20">CodeGenJavaParams</a>(tree, 0);
63100672 }<span class="keywordflow">else</span>{ }
63200673 }
63300674
63400676 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d19">G4UIGainServer::CodeGenJavaTree</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
63500678 <span class="keywordtype">int</span> treeEntry, commandEntry;
63600679 treeEntry = tree-&gt;GetTreeEntry();
63700680 commandEntry = tree-&gt;GetCommandEntry();
63800681
63900682 <span class="keywordflow">if</span>(level!=0) {
64000683 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt;commandEntry; i++){
64100684 G4cout &lt;&lt; tree-&gt;GetCommand(i+1)-&gt;GetCommandPath() &lt;&lt; G4endl;
64200685 }
64300686 }
64400687 <span class="keywordflow">if</span>(treeEntry == 0) <span class="keywordflow">return</span>; <span class="comment">//end recursion</span>
64500688
64600689 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0; j&lt;treeEntry; j++){
64700690 <a class="code" href="classG4UIGainServer.html#d19">CodeGenJavaTree</a>(tree-&gt;GetTree(j+1), level+1);
64800691 }
64900692 }
65000693
65100695 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d20">G4UIGainServer::CodeGenJavaParams</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
65200697 <span class="keywordtype">int</span> treeEntry,commandEntry,i;
65300698 G4UIcommandTree* treeLink;
65400699
65500700 treeEntry = tree-&gt;GetTreeEntry();
65600701 commandEntry = tree-&gt;GetCommandEntry();
65700702
65800703 <span class="keywordflow">for</span>(i=0;i&lt;commandEntry; i++){
65900704 <a class="code" href="classG4UIGainServer.html#d17">SendAParamProperty</a>(tree-&gt;GetCommand(i+1));
66000705 }
66100706 <span class="keywordflow">if</span>(treeEntry ==0) <span class="keywordflow">return</span>;
66200707
66300708 <span class="keywordflow">for</span>(i=0;i&lt;treeEntry; i++){
66400709 treeLink = tree-&gt;GetTree(i+1);
66500710 G4cout&lt;&lt;<span class="stringliteral">"@@JDirGuieBegin"</span>&lt;&lt;G4endl;
66600711 G4cout&lt;&lt;treeLink-&gt;GetPathName()&lt;&lt;G4endl &lt;&lt;treeLink-&gt;GetTitle()&lt;&lt;G4endl;
66700712 G4cout&lt;&lt;<span class="stringliteral">"@@JDirGuideEnd"</span>&lt;&lt;G4endl;
66800713 <a class="code" href="classG4UIGainServer.html#d20">CodeGenJavaParams</a>(treeLink,level+1);
66900714 }
67000715 }
67100716
67200718 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d17">G4UIGainServer::SendAParamProperty</a>(G4UIcommand* Comp){
67300720 <span class="keywordtype">int</span> guidanceEntry, parameterEntry;
67400721 G4String title, title2;
67500722 G4UIparameter * prp;
67600723 <span class="keywordtype">char</span> c[2];
67700724 guidanceEntry = Comp-&gt;GetGuidanceEntries();
67800725 parameterEntry = Comp-&gt;GetParameterEntries();
67900726 G4cout &lt;&lt; <span class="stringliteral">"@@JParamBegin"</span> &lt;&lt; G4endl;
68000727 G4cout &lt;&lt; Comp-&gt;GetCommandPath() &lt;&lt; G4endl;
68100728 G4cout &lt;&lt; guidanceEntry &lt;&lt; G4endl;
68200729 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;guidanceEntry; j++){
68300730 title = Comp-&gt;GetGuidanceLine(j);
68400731 title2 = <span class="stringliteral">""</span>;
68500732 <span class="keywordflow">if</span> (title != <span class="stringliteral">""</span>){
68600733 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt; (<span class="keywordtype">int</span>)title.length(); i++){
68700734 c[0]=title(i);
68800735 c[1]= <span class="charliteral">'\0'</span>;
68900736 <span class="keywordflow">if</span> ( c[0] == <span class="charliteral">'\n'</span> || c[0] == <span class="charliteral">'\r'</span>) {
69000737 c[0]= <span class="charliteral">' '</span>;
69100738 }
69200739 title2.append(c);
69300740 }
69400741 }
69500742 G4cout &lt;&lt; title2 &lt;&lt; G4endl;
69600743 }
69700744 G4cout &lt;&lt; Comp-&gt;GetRange() &lt;&lt; G4endl;
69800745 G4cout &lt;&lt; parameterEntry &lt;&lt; G4endl;
69900746 <span class="keywordflow">for</span>( <span class="keywordtype">int</span> par=0; par&lt;parameterEntry; par++) {
70000747 prp = (G4UIparameter *)Comp-&gt;GetParameter(par);
70100748 G4cout &lt;&lt; prp-&gt;GetParameterName() &lt;&lt; G4endl;
70200749 G4cout &lt;&lt; prp-&gt;GetParameterGuidance() &lt;&lt; G4endl;
70300750 G4cout &lt;&lt; prp-&gt;GetParameterType() &lt;&lt; G4endl;
70400751 G4cout &lt;&lt; prp-&gt;IsOmittable() &lt;&lt; G4endl;
70500752 G4cout &lt;&lt; prp-&gt;GetDefaultValue() &lt;&lt; G4endl;
70600753 G4cout &lt;&lt; prp-&gt;GetParameterRange() &lt;&lt; G4endl;
70700754 G4cout &lt;&lt; prp-&gt;GetParameterCandidates() &lt;&lt; G4endl;
70800755 }
70900756 G4cout &lt;&lt; <span class="stringliteral">"@@JParamEnd"</span> &lt;&lt; G4endl;
71000757 }
71100758
71200760 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d23">G4UIGainServer::SendDisableList</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
71300762 <span class="keywordtype">int</span> treeEntry, commandEntry;
71400763 G4UIcommand * Comp;
71500764 treeEntry = tree-&gt;GetTreeEntry();
71600765 commandEntry = tree-&gt;GetCommandEntry();
71700766
71800767 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++) {
71900768 Comp = tree-&gt;GetCommand(com+1);
72000769 <span class="keywordflow">if</span>( Comp-&gt;IsAvailable()==<span class="keyword">false</span> ) {
72100770 G4cout &lt;&lt; Comp-&gt;GetCommandPath()&lt;&lt;G4endl;
72200771 }
72300772 }
72400773 <span class="keywordflow">if</span>( treeEntry == 0 ) <span class="keywordflow">return</span>; <span class="comment">// end recursion</span>
72500774
72600775 <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i=0; i&lt;treeEntry; i++) {
72700776 <a class="code" href="classG4UIGainServer.html#d23">SendDisableList</a>(tree-&gt;GetTree(i+1), level+1);
72800777 <span class="comment">// be sure the function name is the same</span>
72900778 }
73000779 }
73100780
73200781
73300782
73400783 <span class="comment">//####### update check routines ####################################</span>
73500784
73600786 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d28">G4UIGainServer::UpdateState</a>(<span class="keywordtype">void</span>){
73700788 <span class="keyword">static</span> G4ApplicationState previousState= G4State_PreInit;
73800789 G4ApplicationState newState;
73900790 G4StateManager *statM = G4StateManager::GetStateManager();
74000791 newState = statM-&gt;GetCurrentState();
74100792 <span class="keywordflow">if</span>( newState != previousState )
74200793 {
74300794 <a class="code" href="classG4UIGainServer.html#d24">NotifyStateChange</a>();
74400795 previousState = newState;
74500796 }
74600797 }
74700798
74800800 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d24">G4UIGainServer::NotifyStateChange</a>(<span class="keywordtype">void</span>)
74900802 {
75000803 G4String stateString;
75100804 G4StateManager * statM = G4StateManager::GetStateManager();
75200805 G4UIcommandTree * tree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
75300806 stateString = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
75400807 <span class="keywordflow">if</span> ( <a class="code" href="classG4UIGainServer.html#r3">uiMode</a> != <a class="code" href="G4UIGAG_8hh.html#a7a0">terminal_mode</a> ){
75500808 G4cout &lt;&lt; <span class="stringliteral">"@@State \""</span> &lt;&lt; stateString &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; G4endl;
75600809 G4cout &lt;&lt; <span class="stringliteral">"@@DisableListBegin"</span>&lt;&lt;G4endl;
75700810 <a class="code" href="classG4UIGainServer.html#d23">SendDisableList</a>(tree, 0);
75800811 G4cout &lt;&lt; <span class="stringliteral">"@@DisableListEnd"</span> &lt;&lt;G4endl;
75900812 }
76000813 }
76100814
76200816 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d25">G4UIGainServer::NotifyCommandUpdate</a>(<span class="keywordtype">void</span>)
76300818 {
76400819 G4UIcommandTree * tree = <a class="code" href="classG4UIGainServer.html#r2">UI</a>-&gt;GetTree();
76500820 <a class="code" href="classG4UIGainServer.html#d15">SendCommandProperties</a>(tree);
76600821 }
76700822
76800824 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d26">G4UIGainServer::NotifyParameterUpdate</a>(G4UIcommand* com)
76900826 {
77000827 <a class="code" href="classG4UIGainServer.html#d17">SendAParamProperty</a>(com);
77100828 }
77200829
77300831 <span class="keywordtype">int</span> <a class="code" href="classG4UIGainServer.html#d27">G4UIGainServer::CommandUpdated</a>(<span class="keywordtype">void</span>){
77400833 <span class="keywordtype">int</span> <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a>=0, <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a>=0;
77500834 <span class="keywordtype">int</span> pEntry= <a class="code" href="classG4UIGainServer.html#r15">previousTreeCommands</a>.size();
77600835 <span class="keywordtype">int</span> nEntry= <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>.size();
77700836 <span class="keywordtype">int</span> i,j;
77800837 <span class="keywordflow">for</span>( i=0; i&lt;pEntry; i++) { <span class="comment">// check deleted command(s)</span>
77900838 <span class="keywordflow">for</span>( j=0; j&lt;nEntry; j++) {
78000839 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#r15">previousTreeCommands</a>[i] == <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>[j]) <span class="keywordflow">break</span>;
78100840 }
78200841 <span class="keywordflow">if</span>( j==nEntry ) {
78300842 <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a> = 1;
78400843 <span class="comment">//G4cout &lt;&lt;"deleted: "&lt;&lt; previousTreeCommands(i) &lt;&lt; G4endl;</span>
78500844 }
78600845 }
78700846 <span class="keywordflow">for</span>( i=0; i&lt;nEntry; i++) { <span class="comment">// check added command(s)</span>
78800847 <span class="keywordflow">for</span>( j=0; j&lt;pEntry; j++) {
78900848 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>[i] == <a class="code" href="classG4UIGainServer.html#r15">previousTreeCommands</a>[j]) <span class="keywordflow">break</span>;
79000849 }
79100850 <span class="keywordflow">if</span>( j==pEntry ) {
79200851 <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a> = 1;
79300852 <span class="comment">// G4cout &lt;&lt;"added: "&lt;&lt; newTreeCommands(i) &lt;&lt; G4endl;</span>
79400853 }
79500854 }
79600855 <span class="keywordflow">if</span>( <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a> &amp;&amp; <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a>==0 ) {G4cout&lt;&lt;<span class="stringliteral">"c added"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a>;}
79700856 <span class="keywordflow">if</span>( <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a>==0 &amp;&amp; <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a> ) {G4cout&lt;&lt;<span class="stringliteral">"c deleted"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a>;}
79800857 <span class="keywordflow">if</span>( <a class="code" href="G4UIGAG_8hh.html#a8a4">added</a> &amp;&amp; <a class="code" href="G4UIGAG_8hh.html#a8a5">deleted</a> ) {G4cout&lt;&lt;<span class="stringliteral">"c add/deleted"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> <a class="code" href="G4UIGAG_8hh.html#a8a6">addedAndDeleted</a>;}
79900858 <span class="keywordflow">return</span> <a class="code" href="G4UIGAG_8hh.html#a8a3">notChanged</a>;
80000859 }
80100860
80200862 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d0">G4UIGainServer::GetNewTreeStructure</a>(G4UIcommandTree * tree, <span class="keywordtype">int</span> level) {
80300864 G4String commandPath;
80400865 G4String title;
80500866 G4String pathName; <span class="comment">//tree name</span>
80600867 G4UIcommandTree * t;
80700868 <span class="keywordtype">int</span> treeEntry = tree-&gt;GetTreeEntry();
80800869 <span class="keywordtype">int</span> commandEntry = tree-&gt;GetCommandEntry();
80900870
81000871 <span class="keywordflow">if</span>( level==0 ) { <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>.clear();}
81100872 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++){
81200873 commandPath = tree-&gt;GetCommand(com+1)-&gt;GetCommandPath();
81300874 title = tree-&gt;GetCommand(com+1)-&gt;GetTitle();
81400875 <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>.push_back( commandPath + <span class="stringliteral">" "</span> + title );
81500876 }
81600877
81700878 <span class="keywordflow">if</span>(treeEntry == 0) <span class="keywordflow">return</span>; <span class="comment">//end recursion</span>
81800879
81900880 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt; treeEntry; i++){
82000881 t = tree-&gt;GetTree(i+1);
82100882 pathName = t-&gt;GetPathName();
82200883 title = t-&gt;GetTitle();
82300884 <a class="code" href="classG4UIGainServer.html#r16">newTreeCommands</a>.push_back( pathName + <span class="stringliteral">" "</span> + title );
82400885 <a class="code" href="classG4UIGainServer.html#d0">GetNewTreeStructure</a>(t, level+1);
82500886 }
82600887 }
82700888
82800890 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d29">G4UIGainServer::UpdateParamVal</a>(<span class="keywordtype">void</span>) {
82900892 <span class="comment">// call NotifyParameterUpdate() if the value of each</span>
83000893 <span class="comment">// command/parameter is updated.</span>
83100894 <span class="comment">// assuming the command structure is not changed.</span>
83200895 <span class="keywordtype">int</span> pEntry= <a class="code" href="classG4UIGainServer.html#r17">previousTreeParams</a>.size();
83300896 <span class="keywordtype">int</span> nEntry= <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>.size();
83400897 <span class="keywordtype">int</span> i;
83500898 G4UIcommand* Comp;
83600899 <span class="keywordflow">if</span> (pEntry != nEntry) <span class="keywordflow">return</span>;
83700900 <span class="keywordflow">for</span>( i=0; i&lt;nEntry; i++) {
83800901 <span class="keywordflow">if</span>( <a class="code" href="classG4UIGainServer.html#r17">previousTreeParams</a>[i] != <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>[i]){
83900902 Comp = <a class="code" href="classG4UIGainServer.html#r20">newTreePCP</a>[i];
84000903 G4cout &lt;&lt; Comp-&gt;GetCommandPath()
84100904 &lt;&lt; <span class="stringliteral">" command is updated."</span> &lt;&lt;G4endl;
84200905 <a class="code" href="classG4UIGainServer.html#d26">NotifyParameterUpdate</a>(Comp);
84300906 }
84400907 }
84500908 }
84600909
84700911 <span class="keywordtype">void</span> <a class="code" href="classG4UIGainServer.html#d1">G4UIGainServer::GetNewTreeValues</a>( G4UIcommandTree * tree, <span class="keywordtype">int</span> level){ <span class="comment">// recursive</span>
84800913 <span class="comment"></span> G4String commandPath;
84900914 G4String pathName; <span class="comment">//tree name</span>
85000915 G4UIcommandTree * t;
85100916 <span class="keywordtype">int</span> parameterEntry;
85200917 <span class="keywordtype">int</span> treeEntry = tree-&gt;GetTreeEntry();
85300918 <span class="keywordtype">int</span> commandEntry = tree-&gt;GetCommandEntry();
85400919 G4UIcommand * Comp;
85500920 G4UIparameter * prp;
85600921 G4String param, str(<span class="stringliteral">" "</span>);
85700922
85800923 <span class="keywordflow">if</span>( level==0 ) { <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>.clear(); }
85900924 <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++) {
86000925 Comp = tree-&gt;GetCommand(com+1);
86100926 commandPath = Comp-&gt;GetCommandPath();
86200927 parameterEntry = Comp-&gt;GetParameterEntries();
86300928 param = commandPath +<span class="stringliteral">" "</span>;
86400929 <span class="keywordflow">for</span>( <span class="keywordtype">int</span> par=0; par&lt; parameterEntry; par++) {
86500930 prp = (G4UIparameter *)Comp-&gt;GetParameter(par);
86600931 param += prp-&gt;GetParameterName() +<span class="stringliteral">" "</span>;
86700932 str(0) = prp-&gt;GetParameterType();
86800933 param += str + <span class="stringliteral">" "</span>;
86900934 param += prp-&gt;GetDefaultValue() +<span class="stringliteral">" "</span>;
87000935 param += prp-&gt;GetParameterRange() +<span class="stringliteral">" "</span>;
87100936 param += prp-&gt;GetParameterCandidates();
87200937 }
87300938 <a class="code" href="classG4UIGainServer.html#r18">newTreeParams</a>.push_back( param + <span class="stringliteral">"\n"</span>);
87400939 <a class="code" href="classG4UIGainServer.html#r20">newTreePCP</a>.push_back( Comp );
87500940 }
87600941 <span class="keywordflow">if</span>( treeEntry == 0 ) <span class="keywordflow">return</span>; <span class="comment">// end recursion</span>
87700942 <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i=0; i&lt; treeEntry; i++) {
87800943 t = tree-&gt;GetTree(i+1);
87900944 <a class="code" href="classG4UIGainServer.html#d1">GetNewTreeValues</a>(t, level+1);
88000945 }
88100946 }
88200947
88300948
88400949 <span class="preprocessor">#endif</span>
88500950 <span class="preprocessor"></span>
88600951
88700952
88800953
88900954
89000955
89100956
89200957
89300958
89400959
89500960
89600961
897</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 22 11:07:02 2007 by
898<a href="http://www.doxygen.org/index.html">
899<img src="doxygen.png" alt="doxygen" align="middle" border=0 >
900</a>1.3.4 </small></address>
901</body>
902</html>
Note: See TracBrowser for help on using the repository browser.