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

Last change on this file since 574 was 571, checked in by garnier, 17 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
Line 
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.