source: trunk/geant4/interfaces/html/d1/db4/G4UIGainServer_8cc-source.html @ 688

Last change on this file since 688 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: 92.4 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=UTF-8">
3<title>G4UIGainServer.cc Source File</title>
4<link href="../../doxygen.css" rel="stylesheet" type="text/css">
5<link href="../../tabs.css" rel="stylesheet" type="text/css">
6</head><body>
7<!-- Generated by Doxygen 1.5.2 -->
8<div class="tabs">
9  <ul>
10    <li><a href="../../index.html"><span>Main&nbsp;Page</span></a></li>
11    <li><a href="../../annotated.html"><span>Classes</span></a></li>
12    <li class="current"><a href="../../files.html"><span>Files</span></a></li>
13  </ul>
14</div>
15<div class="tabs">
16  <ul>
17    <li><a href="../../files.html"><span>File&nbsp;List</span></a></li>
18    <li><a href="../../globals.html"><span>File&nbsp;Members</span></a></li>
19  </ul>
20</div>
21<h1>G4UIGainServer.cc</h1><a href="../../d8/d46/G4UIGainServer_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">//</span>
22<a name="l00002"></a>00002 <span class="comment">// ********************************************************************</span>
23<a name="l00003"></a>00003 <span class="comment">// * License and Disclaimer                                           *</span>
24<a name="l00004"></a>00004 <span class="comment">// *                                                                  *</span>
25<a name="l00005"></a>00005 <span class="comment">// * The  Geant4 software  is  copyright of the Copyright Holders  of *</span>
26<a name="l00006"></a>00006 <span class="comment">// * the Geant4 Collaboration.  It is provided  under  the terms  and *</span>
27<a name="l00007"></a>00007 <span class="comment">// * conditions of the Geant4 Software License,  included in the file *</span>
28<a name="l00008"></a>00008 <span class="comment">// * LICENSE and available at  http://cern.ch/geant4/license .  These *</span>
29<a name="l00009"></a>00009 <span class="comment">// * include a list of copyright holders.                             *</span>
30<a name="l00010"></a>00010 <span class="comment">// *                                                                  *</span>
31<a name="l00011"></a>00011 <span class="comment">// * Neither the authors of this software system, nor their employing *</span>
32<a name="l00012"></a>00012 <span class="comment">// * institutes,nor the agencies providing financial support for this *</span>
33<a name="l00013"></a>00013 <span class="comment">// * work  make  any representation or  warranty, express or implied, *</span>
34<a name="l00014"></a>00014 <span class="comment">// * regarding  this  software system or assume any liability for its *</span>
35<a name="l00015"></a>00015 <span class="comment">// * use.  Please see the license in the file  LICENSE  and URL above *</span>
36<a name="l00016"></a>00016 <span class="comment">// * for the full disclaimer and the limitation of liability.         *</span>
37<a name="l00017"></a>00017 <span class="comment">// *                                                                  *</span>
38<a name="l00018"></a>00018 <span class="comment">// * This  code  implementation is the result of  the  scientific and *</span>
39<a name="l00019"></a>00019 <span class="comment">// * technical work of the GEANT4 collaboration.                      *</span>
40<a name="l00020"></a>00020 <span class="comment">// * By using,  copying,  modifying or  distributing the software (or *</span>
41<a name="l00021"></a>00021 <span class="comment">// * any work based  on the software)  you  agree  to acknowledge its *</span>
42<a name="l00022"></a>00022 <span class="comment">// * use  in  resulting  scientific  publications,  and indicate your *</span>
43<a name="l00023"></a>00023 <span class="comment">// * acceptance of all terms of the Geant4 Software license.          *</span>
44<a name="l00024"></a>00024 <span class="comment">// ********************************************************************</span>
45<a name="l00025"></a>00025 <span class="comment">//</span>
46<a name="l00026"></a>00026 <span class="comment">//</span>
47<a name="l00027"></a>00027 <span class="comment">// 12/06/2002 G4UIGainServer H. MInamimoto and H. Yoshida created</span>
48<a name="l00028"></a>00028 <span class="comment">// $Id: G4UIGainServer.cc,v 1.10 2006/06/29 19:09:25 gunter Exp $</span>
49<a name="l00029"></a>00029 <span class="comment">// $Name: geant4-08-01-patch-01 $</span>
50<a name="l00030"></a>00030 <span class="comment">//</span>
51<a name="l00031"></a>00031 <span class="preprocessor">#ifndef WIN32</span>
52<a name="l00032"></a>00032 <span class="preprocessor"></span>
53<a name="l00033"></a>00033 <span class="preprocessor">#include "<a class="code" href="../../d8/d55/G4UIGainServer_8hh.html">G4UIGainServer.hh</a>"</span>
54<a name="l00034"></a>00034 <span class="preprocessor">#include &lt;netdb.h&gt;</span>
55<a name="l00035"></a>00035
56<a name="l00036"></a>00036 <span class="preprocessor">#include &lt;sstream&gt;</span>
57<a name="l00037"></a>00037 <span class="preprocessor">#include "G4StateManager.hh"</span>
58<a name="l00038"></a>00038 <span class="preprocessor">#include "G4UIcommandTree.hh"</span>
59<a name="l00039"></a>00039 <span class="preprocessor">#include "G4UIcommand.hh"</span>
60<a name="l00040"></a>00040 <span class="preprocessor">#include "G4UIcommandStatus.hh"</span>
61<a name="l00041"></a>00041
62<a name="l00042"></a>00042
63<a name="l00044"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#12c1fd1f9a1f05023d7710824742bcc2">00044</a> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#12c1fd1f9a1f05023d7710824742bcc2">G4UIGainServer::G4UIGainServer</a>()
64<a name="l00046"></a>00046 {
65<a name="l00047"></a>00047     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#420710e737f77442f2f5f259db8f5f21">TVersion</a> =<span class="stringliteral">"T1.0a"</span>; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7fcdb632196c2778c40a0a4c907f0469">JVersion</a>=<span class="stringliteral">"J1.0a"</span>;
66<a name="l00048"></a>00048     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = <span class="stringliteral">"/"</span>;
67<a name="l00049"></a>00049
68<a name="l00050"></a>00050     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a> = DEFAULT_PORT;
69<a name="l00051"></a>00051     <span class="keywordflow">while</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#56a91233925aa22b636990c69bc62107">SetUPServer</a>() == <span class="keyword">false</span>){
70<a name="l00052"></a>00052         G4cout&lt;&lt;<span class="stringliteral">"can't get the port no. "</span>&lt;&lt;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a>&lt;&lt;<span class="stringliteral">" Now, try to get the next port "</span>&lt;&lt;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a>+1&lt;&lt;G4endl;
71<a name="l00053"></a>00053         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a>++;
72<a name="l00054"></a>00054     }
73<a name="l00055"></a>00055
74<a name="l00056"></a>00056
75<a name="l00057"></a>00057     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>= G4UImanager::GetUIpointer();
76<a name="l00058"></a>00058     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt; SetSession(<span class="keyword">this</span>);
77<a name="l00059"></a>00059     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt; SetCoutDestination(<span class="keyword">this</span>);
78<a name="l00060"></a>00060
79<a name="l00061"></a>00061     G4StateManager* statM = G4StateManager::GetStateManager();
80<a name="l00062"></a>00062     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a> = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
81<a name="l00063"></a>00063     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> = <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a>;
82<a name="l00064"></a>00064
83<a name="l00065"></a>00065     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a>= FALSE;
84<a name="l00066"></a>00066     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6688c3f815746ecb8b569bf622d97b16">iCont</a>= FALSE;
85<a name="l00067"></a>00067
86<a name="l00068"></a>00068     G4UIcommandTree* tree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
87<a name="l00069"></a>00069     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e05e36283896fb298ff4e5bafb9d5e1c">GetNewTreeStructure</a>(tree,0);
88<a name="l00070"></a>00070     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#3a0ec5976cbe1a9dfde6d81a70a3b5fe">GetNewTreeValues</a>(tree,0);
89<a name="l00071"></a>00071     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#66cdefaa0be019a28603fb5ba73595aa">previousTreeCommands</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>;
90<a name="l00072"></a>00072     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e22bf1b27a83e40bf364a93be9c2fa4f">previousTreeParams</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>;
91<a name="l00073"></a>00073     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d2fe541b74929bf21010e9ebd4745890">previousTreePCP</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#c120c7d130421d30393182e1db21c513">newTreePCP</a>;
92<a name="l00074"></a>00074
93<a name="l00075"></a>00075 }
94<a name="l00076"></a>00076
95<a name="l00078"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#d805dd64e6f738a61f3fc95ab99ddcb8">00078</a> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d805dd64e6f738a61f3fc95ab99ddcb8">G4UIGainServer::~G4UIGainServer</a>()
96<a name="l00079"></a>00079
97<a name="l00080"></a>00080 {
98<a name="l00081"></a>00081
99<a name="l00082"></a>00082     <span class="keywordflow">if</span>(G4UImanager::GetUIpointer()) {
100<a name="l00083"></a>00083       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt; SetSession(NULL);
101<a name="l00084"></a>00084       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt; SetCoutDestination(NULL);
102<a name="l00085"></a>00085     }
103<a name="l00086"></a>00086
104<a name="l00087"></a>00087     <span class="keywordflow">if</span>(G4UImanager::GetUIpointer()!=0){
105<a name="l00088"></a>00088         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;SetSession(NULL);
106<a name="l00089"></a>00089         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;SetCoutDestination(NULL);
107<a name="l00090"></a>00090     }
108<a name="l00091"></a>00091 }
109<a name="l00092"></a>00092
110<a name="l00093"></a>00093
111<a name="l00095"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#9761c47f54d7f1fec6c8fcb8040809e0">00095</a> G4UIsession* <a class="code" href="../../d3/d6e/classG4UIGainServer.html#9761c47f54d7f1fec6c8fcb8040809e0">G4UIGainServer::SessionStart</a>()
112<a name="l00097"></a>00097 {
113<a name="l00098"></a>00098     G4String newCommand;
114<a name="l00099"></a>00099
115<a name="l00100"></a>00100     G4StateManager* statM = G4StateManager::GetStateManager();
116<a name="l00101"></a>00101     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a> = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
117<a name="l00102"></a>00102     
118<a name="l00103"></a>00103     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a>= TRUE;
119<a name="l00104"></a>00104
120<a name="l00105"></a>00105     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ebc603172625875e885d6733153185ce">WaitingConnection</a>();
121<a name="l00106"></a>00106     <span class="keywordflow">while</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a>){
122<a name="l00107"></a>00107         newCommand= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#bebfb8096705f5f30234270ad27da92f">GetCommand</a>();
123<a name="l00108"></a>00108         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f23f1310cd108647345b75b9080874e4">ExecuteCommand</a>(newCommand);
124<a name="l00109"></a>00109     }
125<a name="l00110"></a>00110     <span class="keywordflow">return</span> NULL;
126<a name="l00111"></a>00111 }
127<a name="l00112"></a>00112
128<a name="l00114"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#2b77a79a3ec92ec196e4eeaa5b92514c">00114</a> <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2b77a79a3ec92ec196e4eeaa5b92514c">G4UIGainServer::PauseSessionStart</a>(G4String msg)
129<a name="l00116"></a>00116 {
130<a name="l00117"></a>00117     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a> = msg;
131<a name="l00118"></a>00118     G4cout&lt;&lt;<span class="stringliteral">"@@PROMPT \""</span>&lt;&lt;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a>&lt;&lt;<span class="stringliteral">"\""</span>&lt;&lt;G4endl;
132<a name="l00119"></a>00119
133<a name="l00120"></a>00120     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6688c3f815746ecb8b569bf622d97b16">iCont</a>= TRUE;
134<a name="l00121"></a>00121
135<a name="l00122"></a>00122     G4String newCommand= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#bebfb8096705f5f30234270ad27da92f">GetCommand</a>();
136<a name="l00123"></a>00123     <span class="keywordflow">while</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#6688c3f815746ecb8b569bf622d97b16">iCont</a>){
137<a name="l00124"></a>00124       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f23f1310cd108647345b75b9080874e4">ExecuteCommand</a>(newCommand);
138<a name="l00125"></a>00125       newCommand= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#bebfb8096705f5f30234270ad27da92f">GetCommand</a>();
139<a name="l00126"></a>00126       strcpy(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#c81d9144aea28187f968ec25d956321e">buf</a>,<span class="stringliteral">"nowIdle"</span>);
140<a name="l00127"></a>00127       write(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[1],<a class="code" href="../../d3/d6e/classG4UIGainServer.html#c81d9144aea28187f968ec25d956321e">buf</a>,strlen(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#c81d9144aea28187f968ec25d956321e">buf</a>));
141<a name="l00128"></a>00128     }
142<a name="l00129"></a>00129 }
143<a name="l00130"></a>00130
144<a name="l00132"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#f23f1310cd108647345b75b9080874e4">00132</a> <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f23f1310cd108647345b75b9080874e4">G4UIGainServer::ExecuteCommand</a>(G4String aCommand)
145<a name="l00134"></a>00134 {
146<a name="l00135"></a>00135     <span class="keywordflow">if</span>(aCommand.length()&lt;2) <span class="keywordflow">return</span>;
147<a name="l00136"></a>00136
148<a name="l00137"></a>00137     G4UIcommandTree* tree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
149<a name="l00138"></a>00138     <span class="keywordflow">if</span>(aCommand.length()&lt;2) <span class="keywordflow">return</span>;
150<a name="l00139"></a>00139     G4int returnVal = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;ApplyCommand(aCommand);
151<a name="l00140"></a>00140     G4int paramIndex = returnVal % 100;
152<a name="l00141"></a>00141     <span class="comment">// 0 - 98 : paramIndex-th parameter is invalid</span>
153<a name="l00142"></a>00142     <span class="comment">// 99     : convination of parameters is invalid</span>
154<a name="l00143"></a>00143     G4int commandStatus = returnVal - paramIndex;
155<a name="l00144"></a>00144
156<a name="l00145"></a>00145     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#17935cd5fdf5df7053e5dbc4b097e299">UpdateState</a>();
157<a name="l00146"></a>00146
158<a name="l00147"></a>00147     <span class="keywordflow">if</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> != <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a>){
159<a name="l00148"></a>00148         <span class="keywordflow">switch</span>(commandStatus) {
160<a name="l00149"></a>00149         <span class="keywordflow">case</span> fCommandSucceeded:
161<a name="l00150"></a>00150             <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e05e36283896fb298ff4e5bafb9d5e1c">GetNewTreeStructure</a>(tree,0);
162<a name="l00151"></a>00151             <a class="code" href="../../d3/d6e/classG4UIGainServer.html#3a0ec5976cbe1a9dfde6d81a70a3b5fe">GetNewTreeValues</a>(tree,0);
163<a name="l00152"></a>00152             <span class="keywordflow">if</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#00763a50592d185dc67fe20cd0bbc870">CommandUpdated</a>()){
164<a name="l00153"></a>00153                 <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ed3a4e66301278c247d5c02f2b07161a">NotifyCommandUpdate</a>();
165<a name="l00154"></a>00154             } <span class="keywordflow">else</span>{
166<a name="l00155"></a>00155                 <a class="code" href="../../d3/d6e/classG4UIGainServer.html#cff12649cddb9c585ef268f1f2f57d66">UpdateParamVal</a>();
167<a name="l00156"></a>00156             }
168<a name="l00157"></a>00157             <a class="code" href="../../d3/d6e/classG4UIGainServer.html#66cdefaa0be019a28603fb5ba73595aa">previousTreeCommands</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>;
169<a name="l00158"></a>00158             <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e22bf1b27a83e40bf364a93be9c2fa4f">previousTreeParams</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>;
170<a name="l00159"></a>00159             <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d2fe541b74929bf21010e9ebd4745890">previousTreePCP</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#c120c7d130421d30393182e1db21c513">newTreePCP</a>;
171<a name="l00160"></a>00160             <span class="keywordflow">break</span>;
172<a name="l00161"></a>00161         <span class="keywordflow">case</span> fCommandNotFound:
173<a name="l00162"></a>00162             G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \" &lt;"</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;SolveAlias(aCommand) &lt;&lt; <span class="stringliteral">"&gt; not found.\""</span> &lt;&lt; G4endl;
174<a name="l00163"></a>00163             <span class="keywordflow">break</span>;
175<a name="l00164"></a>00164         <span class="keywordflow">case</span> fIllegalApplicationState:
176<a name="l00165"></a>00165             G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \"illegal application state -- command refused.\""</span> &lt;&lt; G4endl;
177<a name="l00166"></a>00166             <span class="keywordflow">break</span>;
178<a name="l00167"></a>00167         <span class="keywordflow">case</span> fParameterOutOfRange:
179<a name="l00168"></a>00168             G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter Out of Range.\""</span> &lt;&lt; G4endl;
180<a name="l00169"></a>00169             <span class="keywordflow">break</span>;
181<a name="l00170"></a>00170         <span class="keywordflow">case</span> fParameterUnreadable:
182<a name="l00171"></a>00171             G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter is wrong type and/or is not omittable.\""</span>&lt;&lt;G4endl;
183<a name="l00172"></a>00172             <span class="keywordflow">break</span>;
184<a name="l00173"></a>00173         <span class="keywordflow">case</span> fParameterOutOfCandidates:
185<a name="l00174"></a>00174             G4cerr &lt;&lt; <span class="stringliteral">"@@ErrResult \"Parameter is out of candidate.\""</span> &lt;&lt; G4endl;
186<a name="l00175"></a>00175             <span class="keywordflow">break</span>;
187<a name="l00176"></a>00176         <span class="keywordflow">case</span> fAliasNotFound:
188<a name="l00177"></a>00177         <span class="keywordflow">default</span>:
189<a name="l00178"></a>00178             G4cerr &lt;&lt; <span class="stringliteral">"command refused ("</span> &lt;&lt; commandStatus &lt;&lt; <span class="stringliteral">")"</span> &lt;&lt; G4endl;
190<a name="l00179"></a>00179         }
191<a name="l00180"></a>00180     }
192<a name="l00181"></a>00181 }
193<a name="l00182"></a>00182
194<a name="l00184"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#bebfb8096705f5f30234270ad27da92f">00184</a> G4String <a class="code" href="../../d3/d6e/classG4UIGainServer.html#bebfb8096705f5f30234270ad27da92f">G4UIGainServer::GetCommand</a>()
195<a name="l00186"></a>00186 {
196<a name="l00187"></a>00187     G4String newCommand;
197<a name="l00188"></a>00188     G4String nullString;
198<a name="l00189"></a>00189
199<a name="l00190"></a>00190   <span class="keywordflow">while</span>( 1 )
200<a name="l00191"></a>00191   {
201<a name="l00192"></a>00192     G4UIcommandTree* tree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
202<a name="l00193"></a>00193     <span class="keywordflow">if</span> ( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> != <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a> ){
203<a name="l00194"></a>00194       G4cout &lt;&lt; <span class="stringliteral">"@@PROMPT \""</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a> &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; G4endl;
204<a name="l00195"></a>00195     }
205<a name="l00196"></a>00196     <span class="keywordflow">if</span> ( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> != <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcfa6db91e84554a4ecfa4967e53f7c9341">java_mode</a> ){
206<a name="l00197"></a>00197       G4cout &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6235dc948565592fc430778289967a0f">promptCharacter</a> &lt;&lt; <span class="stringliteral">"&gt; "</span> &lt;&lt; G4endl;
207<a name="l00198"></a>00198     }<span class="keywordflow">else</span>{
208<a name="l00199"></a>00199       G4cout &lt;&lt; <span class="stringliteral">"@@Ready"</span> &lt;&lt; G4endl;
209<a name="l00200"></a>00200     }
210<a name="l00201"></a>00201
211<a name="l00202"></a>00202
212<a name="l00205"></a>00205     read(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[1],<a class="code" href="../../d3/d6e/classG4UIGainServer.html#c81d9144aea28187f968ec25d956321e">buf</a>,1024);
213<a name="l00206"></a>00206     newCommand=<a class="code" href="../../d3/d6e/classG4UIGainServer.html#c81d9144aea28187f968ec25d956321e">buf</a>;
214<a name="l00207"></a>00207     <span class="comment">//DEBUG cout&lt;&lt;"-&gt;"&lt;&lt;newCommand&lt;&lt;"&lt;-"&lt;&lt;newCommand.length()&lt;&lt;G4endl;</span>
215<a name="l00208"></a>00208     <span class="comment">//newCommand.readLine( G4cin, FALSE );</span>
216<a name="l00211"></a>00211 <span class="comment"></span>
217<a name="l00212"></a>00212
218<a name="l00213"></a>00213
219<a name="l00214"></a>00214     <span class="keywordflow">if</span> (!G4cin.good()) { G4cin.clear(); newCommand = nullString; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a>=<span class="keyword">false</span>;<span class="keywordflow">break</span>;}
220<a name="l00215"></a>00215
221<a name="l00216"></a>00216     newCommand = newCommand.strip(G4String::leading);
222<a name="l00217"></a>00217     <span class="keywordflow">if</span>( newCommand.length() &lt; 1) { <span class="keywordflow">break</span>; }
223<a name="l00218"></a>00218
224<a name="l00219"></a>00219     <span class="keywordflow">while</span>( newCommand(newCommand.length()-1) == <span class="charliteral">'_'</span> )
225<a name="l00220"></a>00220     {
226<a name="l00221"></a>00221       G4String newLine;
227<a name="l00222"></a>00222       newCommand.remove(newCommand.length()-1);
228<a name="l00223"></a>00223       newLine.readLine( G4cin );
229<a name="l00224"></a>00224       <span class="keywordflow">if</span> (!G4cin.good()) { G4cin.clear(); newCommand = nullString; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a>=<span class="keyword">false</span>;<span class="keywordflow">break</span>;}
230<a name="l00225"></a>00225       newCommand.append(newLine);
231<a name="l00226"></a>00226     }
232<a name="l00227"></a>00227
233<a name="l00228"></a>00228     G4String nC = newCommand.strip(G4String::leading);
234<a name="l00229"></a>00229     <span class="keywordflow">if</span>( nC.length() &lt; 1) { <span class="keywordflow">break</span>; }
235<a name="l00230"></a>00230
236<a name="l00231"></a>00231     <span class="comment">// -------------------- nC.toUpper();</span>
237<a name="l00232"></a>00232     <span class="keywordflow">if</span>( nC == <span class="stringliteral">"@@GainmodeJAVA"</span> ) {
238<a name="l00233"></a>00233       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> = <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcfa6db91e84554a4ecfa4967e53f7c9341">java_mode</a>;
239<a name="l00234"></a>00234       G4cout &lt;&lt; G4endl &lt;&lt; <span class="stringliteral">"@@Version "</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7fcdb632196c2778c40a0a4c907f0469">JVersion</a> &lt;&lt; G4endl;
240<a name="l00235"></a>00235       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a14abcf20fc882f1368b79a299e98d10">SendCommandProperties</a>(tree);
241<a name="l00236"></a>00236       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f44cb34fb033a715c5e5912a41871892">NotifyStateChange</a>();
242<a name="l00237"></a>00237     }
243<a name="l00238"></a>00238     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"@@GainmodeTcl"</span> ) {
244<a name="l00239"></a>00239       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> = <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcf30d7fcf48c6c4fec20b5e20a171115c3">tcl_mode</a>;
245<a name="l00240"></a>00240       G4cout &lt;&lt; G4endl &lt;&lt; <span class="stringliteral">"@@Version "</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#420710e737f77442f2f5f259db8f5f21">TVersion</a> &lt;&lt; G4endl;
246<a name="l00241"></a>00241       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a14abcf20fc882f1368b79a299e98d10">SendCommandProperties</a>(tree);
247<a name="l00242"></a>00242       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f44cb34fb033a715c5e5912a41871892">NotifyStateChange</a>();
248<a name="l00243"></a>00243     }
249<a name="l00244"></a>00244     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'#'</span> )
250<a name="l00245"></a>00245       { G4cout &lt;&lt; nC &lt;&lt; G4endl; }
251<a name="l00246"></a>00246
252<a name="l00247"></a>00247     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"ls"</span>  || nC(0,3) == <span class="stringliteral">"ls "</span> )
253<a name="l00248"></a>00248     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#07b2edb019e6d111390920ca9bf655c8">ListDirectory</a>( nC ); }
254<a name="l00249"></a>00249     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC == <span class="stringliteral">"pwd"</span> )
255<a name="l00250"></a>00250     { G4cout &lt;&lt; <span class="stringliteral">"Current Working Directory : "</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> &lt;&lt; G4endl; }
256<a name="l00251"></a>00251     <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> )
257<a name="l00252"></a>00252     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#fa1e11e5912cfb0559f9a9ce7e3a1914">ChangeDirectory</a>( nC ); }
258<a name="l00253"></a>00253     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(  nC == <span class="stringliteral">"help"</span> || nC(0,5) == <span class="stringliteral">"help "</span>)
259<a name="l00254"></a>00254     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#71e63a9a357a80d3ac73cd137be17b62">TerminalHelp</a>( nC ); }
260<a name="l00255"></a>00255     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'?'</span> )
261<a name="l00256"></a>00256     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#06bd33a8f7796eb826e20682d7046e76">ShowCurrent</a>( nC ); }
262<a name="l00257"></a>00257     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0,4) == <span class="stringliteral">"hist"</span>   || nC == <span class="stringliteral">"history"</span>)
263<a name="l00258"></a>00258     {
264<a name="l00259"></a>00259       G4int nh = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetNumberOfHistory();
265<a name="l00260"></a>00260       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0;i&lt;nh;i++)
266<a name="l00261"></a>00261       { G4cout &lt;&lt; i &lt;&lt; <span class="stringliteral">": "</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetPreviousCommand(i) &lt;&lt; G4endl; }
267<a name="l00262"></a>00262     }
268<a name="l00263"></a>00263     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0) == <span class="charliteral">'!'</span> )
269<a name="l00264"></a>00264     {
270<a name="l00265"></a>00265       G4String ss = nC(1,nC.length()-1);
271<a name="l00266"></a>00266       G4int vl;
272<a name="l00267"></a>00267       <span class="keyword">const</span> <span class="keywordtype">char</span>* tt = ss;
273<a name="l00268"></a>00268       std::istringstream is((<span class="keywordtype">char</span>*)tt);
274<a name="l00269"></a>00269       is &gt;&gt; vl;
275<a name="l00270"></a>00270       G4int nh = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetNumberOfHistory();
276<a name="l00271"></a>00271       <span class="keywordflow">if</span>(vl&gt;=0 &amp;&amp; vl&lt;nh)
277<a name="l00272"></a>00272       {
278<a name="l00273"></a>00273         newCommand = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetPreviousCommand(vl);
279<a name="l00274"></a>00274         G4cout &lt;&lt; newCommand &lt;&lt; G4endl;
280<a name="l00275"></a>00275         <span class="keywordflow">break</span>;
281<a name="l00276"></a>00276       }
282<a name="l00277"></a>00277       <span class="keywordflow">else</span>
283<a name="l00278"></a>00278       { G4cerr &lt;&lt; <span class="stringliteral">"history "</span> &lt;&lt; vl &lt;&lt; <span class="stringliteral">" is not found."</span> &lt;&lt; G4endl; }
284<a name="l00279"></a>00279     }
285<a name="l00280"></a>00280     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( nC(0,4) == <span class="stringliteral">"exit"</span> )
286<a name="l00281"></a>00281     {
287<a name="l00282"></a>00282       <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6688c3f815746ecb8b569bf622d97b16">iCont</a> )
288<a name="l00283"></a>00283       {
289<a name="l00284"></a>00284         <span class="keywordflow">if</span> ( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> == <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a>){
290<a name="l00285"></a>00285           G4cerr &lt;&lt; <span class="stringliteral">"You are now processing RUN."</span> &lt;&lt; G4endl;
291<a name="l00286"></a>00286           G4cerr &lt;&lt; <span class="stringliteral">"Please abrot it using \"/run/abort\" command first"</span> &lt;&lt; G4endl;
292<a name="l00287"></a>00287           G4cerr &lt;&lt; <span class="stringliteral">" and use \"continue\" command until the application"</span> &lt;&lt; G4endl;
293<a name="l00288"></a>00288           G4cerr &lt;&lt; <span class="stringliteral">" becomes to Idle."</span> &lt;&lt; G4endl;
294<a name="l00289"></a>00289         }<span class="keywordflow">else</span>{
295<a name="l00290"></a>00290           G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"You are now processing RUN.\""</span> &lt;&lt; G4endl;
296<a name="l00291"></a>00291         }
297<a name="l00292"></a>00292       }
298<a name="l00293"></a>00293       <span class="keywordflow">else</span>
299<a name="l00294"></a>00294       {
300<a name="l00295"></a>00295         close(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[1]);
301<a name="l00296"></a>00296         close(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[2]);
302<a name="l00297"></a>00297         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c17e42d52b8525543b24591f4b2ebf0">iExit</a> = <span class="keyword">false</span>;
303<a name="l00298"></a>00298         newCommand = nullString;
304<a name="l00299"></a>00299         <span class="keywordflow">break</span>;
305<a name="l00300"></a>00300       }
306<a name="l00301"></a>00301     }
307<a name="l00302"></a>00302     <span class="keywordflow">else</span> <span class="keywordflow">if</span>(  nC == <span class="stringliteral">"cont"</span> || nC == <span class="stringliteral">"continue"</span> )
308<a name="l00303"></a>00303     {
309<a name="l00304"></a>00304       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#6688c3f815746ecb8b569bf622d97b16">iCont</a> = <span class="keyword">false</span>;
310<a name="l00305"></a>00305       newCommand = nullString;
311<a name="l00306"></a>00306       <span class="keywordflow">break</span>;
312<a name="l00307"></a>00307     }
313<a name="l00308"></a>00308     <span class="keywordflow">else</span>
314<a name="l00309"></a>00309     { <span class="keywordflow">break</span>; }
315<a name="l00310"></a>00310   }
316<a name="l00311"></a>00311   <span class="keywordflow">return</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a7e37541b5def98f4de7a1d76f5b822e">GetFullPath</a>(newCommand);
317<a name="l00312"></a>00312 }
318<a name="l00313"></a>00313
319<a name="l00315"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#8d609ca3013c1d94654c1ab5883efec1">00315</a> G4int <a class="code" href="../../d3/d6e/classG4UIGainServer.html#8d609ca3013c1d94654c1ab5883efec1">G4UIGainServer::ReceiveG4cout</a>(G4String coutString)
320<a name="l00317"></a>00317 {
321<a name="l00318"></a>00318     <span class="keywordflow">if</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[1]&gt;0){
322<a name="l00319"></a>00319         write(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[1],coutString,coutString.length());
323<a name="l00320"></a>00320     }
324<a name="l00321"></a>00321     <span class="keywordflow">return</span> 0;
325<a name="l00322"></a>00322
326<a name="l00323"></a>00323
327<a name="l00324"></a>00324
328<a name="l00325"></a>00325
329<a name="l00326"></a>00326
330<a name="l00327"></a>00327
331<a name="l00328"></a>00328
332<a name="l00329"></a>00329   <span class="comment">//std::cout &lt;&lt; coutString &lt;&lt; std::flush;</span>
333<a name="l00330"></a>00330   <span class="comment">//return 0;</span>
334<a name="l00331"></a>00331 }
335<a name="l00332"></a>00332
336<a name="l00334"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#357de1a07358afa2e3b3733325d32dc1">00334</a> G4int <a class="code" href="../../d3/d6e/classG4UIGainServer.html#357de1a07358afa2e3b3733325d32dc1">G4UIGainServer::ReceiveG4cerr</a>(G4String cerrString)
337<a name="l00336"></a>00336 {
338<a name="l00337"></a>00337     <span class="keywordflow">if</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[2]&gt;0){
339<a name="l00338"></a>00338         write(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[2],cerrString,cerrString.length());
340<a name="l00339"></a>00339     }
341<a name="l00340"></a>00340     <span class="keywordflow">return</span> 0;
342<a name="l00341"></a>00341
343<a name="l00342"></a>00342
344<a name="l00343"></a>00343
345<a name="l00344"></a>00344   <span class="comment">//std::cerr &lt;&lt; cerrString &lt;&lt; std::flush;</span>
346<a name="l00345"></a>00345   <span class="comment">//return 0;</span>
347<a name="l00346"></a>00346 }
348<a name="l00347"></a>00347
349<a name="l00349"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#20fe5f4fbd133ba8c0f5d2db3f3c5182">00349</a> G4bool <a class="code" href="../../d3/d6e/classG4UIGainServer.html#20fe5f4fbd133ba8c0f5d2db3f3c5182">G4UIGainServer::GetHelpChoice</a>(G4int&amp; aInt)
350<a name="l00351"></a>00351 {
351<a name="l00352"></a>00352     G4cin &gt;&gt; aInt;
352<a name="l00353"></a>00353     <span class="keywordflow">if</span>(!G4cin.good()){
353<a name="l00354"></a>00354         G4cin.clear();
354<a name="l00355"></a>00355         G4cin.ignore(30,<span class="charliteral">'\n'</span>);
355<a name="l00356"></a>00356         <span class="keywordflow">return</span> FALSE;
356<a name="l00357"></a>00357     }
357<a name="l00358"></a>00358     <span class="keywordflow">return</span> TRUE;
358<a name="l00359"></a>00359 }
359<a name="l00360"></a>00360
360<a name="l00362"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#450620bd0d3b52363ecf5d5d824bc037">00362</a> <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#450620bd0d3b52363ecf5d5d824bc037">G4UIGainServer::ExitHelp</a>()
361<a name="l00364"></a>00364 {
362<a name="l00365"></a>00365     <span class="keywordtype">char</span> temp[100];
363<a name="l00366"></a>00366     G4cin.getline(temp, 100);
364<a name="l00367"></a>00367 }
365<a name="l00368"></a>00368
366<a name="l00370"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#56a91233925aa22b636990c69bc62107">00370</a> <span class="keywordtype">bool</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#56a91233925aa22b636990c69bc62107">G4UIGainServer::SetUPServer</a>(){
367<a name="l00372"></a>00372
368<a name="l00373"></a>00373     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0] = socket(AF_INET,SOCK_STREAM,0);
369<a name="l00374"></a>00374
370<a name="l00375"></a>00375     <span class="keywordflow">if</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0]&lt;0){
371<a name="l00376"></a>00376         perror(<span class="stringliteral">"server:socket"</span>);
372<a name="l00377"></a>00377         <span class="keywordflow">return</span> (<span class="keyword">false</span>);
373<a name="l00378"></a>00378         <span class="comment">//exit(1);</span>
374<a name="l00379"></a>00379     }
375<a name="l00380"></a>00380
376<a name="l00381"></a>00381     memset( (<span class="keywordtype">char</span> *)&amp;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#b8bda65136a10ab5ed1d52e2d6e91fb9">saddr</a>,<span class="charliteral">'\0'</span>,<span class="keyword">sizeof</span>(saddr)) ;
377<a name="l00382"></a>00382
378<a name="l00383"></a>00383     saddr.sin_family = AF_INET;
379<a name="l00384"></a>00384     saddr.sin_addr.s_addr = INADDR_ANY;
380<a name="l00385"></a>00385     saddr.sin_port = htons(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a>);
381<a name="l00386"></a>00386     unlink(SOCK_NAME);   
382<a name="l00387"></a>00387
383<a name="l00388"></a>00388     <span class="keywordflow">if</span>(bind(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0] , (<span class="keyword">struct</span> sockaddr *)&amp;saddr , <span class="keyword">sizeof</span>(saddr))&lt;0){
384<a name="l00389"></a>00389         perror(<span class="stringliteral">"bind"</span>);
385<a name="l00390"></a>00390         <span class="keywordflow">return</span> (<span class="keyword">false</span>);
386<a name="l00391"></a>00391         <span class="comment">//exit(1);</span>
387<a name="l00392"></a>00392     }
388<a name="l00393"></a>00393     <span class="keywordflow">else</span>{ G4cout&lt;&lt;<span class="stringliteral">"G4GainServer waiting at "</span>&lt;&lt;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2a2c62615ff1fed3625475db9ed377ab">port</a>&lt;&lt;G4endl; }
389<a name="l00394"></a>00394
390<a name="l00395"></a>00395     <span class="keywordflow">if</span>(listen(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0],1)&lt;0){
391<a name="l00396"></a>00396         perror(<span class="stringliteral">"listen"</span>);
392<a name="l00397"></a>00397         <span class="keywordflow">return</span> (<span class="keyword">false</span>);
393<a name="l00398"></a>00398         <span class="comment">//exit(1);</span>
394<a name="l00399"></a>00399     }
395<a name="l00400"></a>00400
396<a name="l00401"></a>00401     <span class="keywordflow">return</span> (<span class="keyword">true</span>);
397<a name="l00402"></a>00402 }
398<a name="l00403"></a>00403
399<a name="l00405"></a><a class="code" href="../../d3/d6e/classG4UIGainServer.html#ebc603172625875e885d6733153185ce">00405</a> <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ebc603172625875e885d6733153185ce">G4UIGainServer::WaitingConnection</a>(){
400<a name="l00407"></a>00407     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c575fd9e1b54a7f67d1db708b701782">len</a> = <span class="keyword">sizeof</span>(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#652e5975401e4bfee04416fd6ad43f3b">caddr</a>);
401<a name="l00408"></a>00408
402<a name="l00409"></a>00409     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=1;i&lt;=2;i++){
403<a name="l00410"></a>00410 #<span class="keywordflow">if</span> defined __APPLE__ &amp;&amp; (__GNUC__&lt;4)
404<a name="l00411"></a>00411         <span class="keywordflow">if</span>((<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[i] = accept(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0], (<span class="keyword">struct</span> sockaddr *)&amp;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#652e5975401e4bfee04416fd6ad43f3b">caddr</a>,(<span class="keywordtype">int</span> *)&amp;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#2c575fd9e1b54a7f67d1db708b701782">len</a>))&lt;0){
405<a name="l00412"></a>00412 #<span class="keywordflow">else</span>
406<a name="l00413"></a>00413         <span class="keywordflow">if</span>((<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[i] = accept(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0], (<span class="keyword">struct</span> sockaddr *)&amp;caddr,(socklen_t *)&amp;len))&lt;0){
407<a name="l00414"></a>00414 #endif
408<a name="l00415"></a>00415             G4cerr&lt;&lt;<span class="stringliteral">"accept:"</span>&lt;&lt;i&lt;&lt;G4endl;
409<a name="l00416"></a>00416             exit(1);
410<a name="l00417"></a>00417         }
411<a name="l00418"></a>00418     }
412<a name="l00419"></a>00419     close(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#434da20d98f9a1bd605458355f72b917">socketD</a>[0]);
413<a name="l00420"></a>00420 }
414<a name="l00421"></a>00421
415<a name="l00423"></a>00423 G4String <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a7e37541b5def98f4de7a1d76f5b822e">G4UIGainServer::GetFullPath</a>(G4String aNewCommand){
416<a name="l00425"></a>00425   G4String newCommand = aNewCommand.strip(G4String::both);
417<a name="l00426"></a>00426   G4String tmpString;
418<a name="l00427"></a>00427   <span class="keywordflow">if</span>( newCommand(0) == <span class="charliteral">'/'</span> )
419<a name="l00428"></a>00428   { tmpString = newCommand; }
420<a name="l00429"></a>00429   <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newCommand(0,3) == <span class="stringliteral">"../"</span> )
421<a name="l00430"></a>00430   {
422<a name="l00431"></a>00431     G4String tmpPrefix = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
423<a name="l00432"></a>00432     <span class="comment">/*G4int*/</span> <span class="keywordtype">unsigned</span> i_direc = 0;
424<a name="l00433"></a>00433     <span class="keywordflow">while</span>( i_direc &lt; newCommand.length() )
425<a name="l00434"></a>00434     {
426<a name="l00435"></a>00435       <span class="keywordflow">if</span>( newCommand(i_direc,3) == <span class="stringliteral">"../"</span> )
427<a name="l00436"></a>00436       {
428<a name="l00437"></a>00437         i_direc += 3;
429<a name="l00438"></a>00438         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#9fc976000de3479ee4ef3d6a4ebd10f0">ModifyPrefix</a>( G4String(<span class="stringliteral">"../"</span>) );
430<a name="l00439"></a>00439       }
431<a name="l00440"></a>00440       <span class="keywordflow">else</span>
432<a name="l00441"></a>00441       { <span class="keywordflow">break</span>; }
433<a name="l00442"></a>00442     }
434<a name="l00443"></a>00443     tmpString = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
435<a name="l00444"></a>00444     tmpString.append( newCommand( i_direc, newCommand.length()-i_direc ) );
436<a name="l00445"></a>00445     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = tmpPrefix;
437<a name="l00446"></a>00446   }
438<a name="l00447"></a>00447   <span class="keywordflow">else</span>
439<a name="l00448"></a>00448   {
440<a name="l00449"></a>00449     tmpString = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
441<a name="l00450"></a>00450     tmpString.append( newCommand );
442<a name="l00451"></a>00451   }
443<a name="l00452"></a>00452   <span class="keywordflow">return</span> tmpString;
444<a name="l00453"></a>00453 }
445<a name="l00454"></a>00454
446<a name="l00456"></a>00456 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#1cc21244b2fc88a3e9caa2254d9af621">G4UIGainServer::SessionTerminate</a>(){
447<a name="l00458"></a>00458     G4cout&lt;&lt;<span class="stringliteral">"***** Terminal session end *****"</span>&lt;&lt;G4endl;
448<a name="l00459"></a>00459 }
449<a name="l00460"></a>00460
450<a name="l00461"></a>00461
451<a name="l00463"></a>00463 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#06bd33a8f7796eb826e20682d7046e76">G4UIGainServer::ShowCurrent</a>(G4String newCommand){
452<a name="l00465"></a>00465   G4String theCommand = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a7e37541b5def98f4de7a1d76f5b822e">GetFullPath</a>(newCommand(1,newCommand.length()-1));
453<a name="l00466"></a>00466   G4String curV = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetCurrentValues(theCommand);
454<a name="l00467"></a>00467   <span class="keywordflow">if</span>( ! (curV.isNull()||curV(0)==<span class="charliteral">'\0'</span> ) ) {
455<a name="l00468"></a>00468     <span class="keywordflow">if</span> (<a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> == <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a>){
456<a name="l00469"></a>00469       G4cout &lt;&lt; <span class="stringliteral">"Current value(s) of the parameter(s) : "</span> &lt;&lt; curV &lt;&lt; G4endl;
457<a name="l00470"></a>00470     }<span class="keywordflow">else</span>{
458<a name="l00471"></a>00471       G4cout &lt;&lt; <span class="stringliteral">"@@CurrentValue "</span> &lt;&lt; curV &lt;&lt; G4endl;
459<a name="l00472"></a>00472     }
460<a name="l00473"></a>00473   } <span class="keywordflow">else</span> <span class="keywordflow">if</span> (<a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> == <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a>){
461<a name="l00474"></a>00474       G4cout &lt;&lt; <span class="stringliteral">"Current value is not available."</span> &lt;&lt; G4endl;
462<a name="l00475"></a>00475     } <span class="keywordflow">else</span> {
463<a name="l00476"></a>00476       G4cout &lt;&lt; <span class="stringliteral">"@@ErrResult \"Current value is not available.\""</span> &lt;&lt; G4endl;
464<a name="l00477"></a>00477     }
465<a name="l00478"></a>00478 }
466<a name="l00479"></a>00479
467<a name="l00481"></a>00481 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#fa1e11e5912cfb0559f9a9ce7e3a1914">G4UIGainServer::ChangeDirectory</a>(G4String newCommand){
468<a name="l00483"></a>00483   G4String savedPrefix = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
469<a name="l00484"></a>00484   <span class="keywordflow">if</span>( newCommand.length() &lt;= 3 )
470<a name="l00485"></a>00485   { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = <span class="stringliteral">"/"</span>; }
471<a name="l00486"></a>00486   <span class="keywordflow">else</span>
472<a name="l00487"></a>00487   {
473<a name="l00488"></a>00488     G4String aNewPrefix = newCommand(3,newCommand.length()-3);
474<a name="l00489"></a>00489     G4String newPrefix = aNewPrefix.strip(G4String::both);
475<a name="l00490"></a>00490     <span class="keywordflow">if</span>( newPrefix(0) == <span class="charliteral">'/'</span> )
476<a name="l00491"></a>00491     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = newPrefix; }
477<a name="l00492"></a>00492     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newPrefix(0) != <span class="charliteral">'.'</span> )
478<a name="l00493"></a>00493     {
479<a name="l00494"></a>00494       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> += newPrefix;
480<a name="l00495"></a>00495     }
481<a name="l00496"></a>00496     <span class="keywordflow">else</span>
482<a name="l00497"></a>00497     { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#9fc976000de3479ee4ef3d6a4ebd10f0">ModifyPrefix</a>( newPrefix ); }
483<a name="l00498"></a>00498   }
484<a name="l00499"></a>00499   <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>.length() - 1 ) != <span class="charliteral">'/'</span> )
485<a name="l00500"></a>00500   { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> += <span class="stringliteral">"/"</span>; }
486<a name="l00501"></a>00501   <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ae2b3082fbd31ccb31d659a7828169f4">FindDirPath</a>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> ) == NULL )
487<a name="l00502"></a>00502   {
488<a name="l00503"></a>00503     G4cout &lt;&lt; <span class="stringliteral">"Directory &lt;"</span> &lt;&lt; <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> &lt;&lt; <span class="stringliteral">"&gt; is not found."</span> &lt;&lt; G4endl;
489<a name="l00504"></a>00504     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a> = savedPrefix;
490<a name="l00505"></a>00505   }
491<a name="l00506"></a>00506 }
492<a name="l00508"></a>00508 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#07b2edb019e6d111390920ca9bf655c8">G4UIGainServer::ListDirectory</a>(G4String newCommand){
493<a name="l00510"></a>00510   G4String targetDir(<span class="charliteral">'\0'</span>);
494<a name="l00511"></a>00511   <span class="keywordflow">if</span>( newCommand.length() &lt;= 3 )
495<a name="l00512"></a>00512   { targetDir = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>; }
496<a name="l00513"></a>00513   <span class="keywordflow">else</span>
497<a name="l00514"></a>00514   {
498<a name="l00515"></a>00515     G4String newPrefix = newCommand(3,newCommand.length()-3);
499<a name="l00516"></a>00516     newPrefix.strip(G4String::both);
500<a name="l00517"></a>00517     <span class="keywordflow">if</span>( newPrefix(0) == <span class="charliteral">'/'</span> )
501<a name="l00518"></a>00518     { targetDir = newPrefix; }
502<a name="l00519"></a>00519     <span class="keywordflow">else</span> <span class="keywordflow">if</span>( newPrefix(0) != <span class="charliteral">'.'</span> )
503<a name="l00520"></a>00520     {
504<a name="l00521"></a>00521       targetDir = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
505<a name="l00522"></a>00522       targetDir += newPrefix;
506<a name="l00523"></a>00523     }
507<a name="l00524"></a>00524     <span class="keywordflow">else</span>
508<a name="l00525"></a>00525     { targetDir = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#9fc976000de3479ee4ef3d6a4ebd10f0">ModifyPrefix</a>( newPrefix ); }
509<a name="l00526"></a>00526   }
510<a name="l00527"></a>00527   <span class="keywordflow">if</span>( targetDir( targetDir.length() - 1 ) != <span class="charliteral">'/'</span> )
511<a name="l00528"></a>00528   { targetDir += <span class="stringliteral">"/"</span>; }
512<a name="l00529"></a>00529   G4UIcommandTree * commandTree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ae2b3082fbd31ccb31d659a7828169f4">FindDirPath</a>( targetDir );
513<a name="l00530"></a>00530   <span class="keywordflow">if</span>( commandTree == NULL )
514<a name="l00531"></a>00531   { 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; }
515<a name="l00532"></a>00532   <span class="keywordflow">else</span>
516<a name="l00533"></a>00533   { commandTree-&gt;ListCurrent(); }
517<a name="l00534"></a>00534 }
518<a name="l00535"></a>00535
519<a name="l00537"></a>00537 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#71e63a9a357a80d3ac73cd137be17b62">G4UIGainServer::TerminalHelp</a>(G4String newCommand){
520<a name="l00539"></a>00539     G4UIcommandTree* treeTop = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
521<a name="l00540"></a>00540     <span class="keywordtype">unsigned</span> i = newCommand.index(<span class="stringliteral">" "</span>);
522<a name="l00541"></a>00541     
523<a name="l00542"></a>00542     <span class="keywordflow">if</span>(i!=std::string::npos){
524<a name="l00543"></a>00543         G4String newValue = newCommand(i+1,newCommand.length()-(i+1));
525<a name="l00544"></a>00544         newValue.strip(G4String::both);
526<a name="l00545"></a>00545         <span class="keywordflow">if</span>(newValue(0)!=<span class="charliteral">'/'</span>){
527<a name="l00546"></a>00546             newValue.prepend(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>);
528<a name="l00547"></a>00547         }
529<a name="l00548"></a>00548         G4UIcommand* theCommand = treeTop-&gt;FindPath(newValue);
530<a name="l00549"></a>00549         <span class="keywordflow">if</span>(theCommand !=NULL){
531<a name="l00550"></a>00550             theCommand-&gt;List();
532<a name="l00551"></a>00551             <span class="keywordflow">return</span>;
533<a name="l00552"></a>00552         }
534<a name="l00553"></a>00553         <span class="keywordflow">else</span>{
535<a name="l00554"></a>00554             G4cout&lt;&lt;<span class="stringliteral">"Command&lt;"</span> &lt;&lt; newValue &lt;&lt; <span class="stringliteral">"is not found."</span>&lt;&lt;G4endl;
536<a name="l00555"></a>00555             <span class="keywordflow">return</span>;
537<a name="l00556"></a>00556         }
538<a name="l00557"></a>00557     }
539<a name="l00558"></a>00558
540<a name="l00559"></a>00559     G4UIcommandTree* floor[10];
541<a name="l00560"></a>00560     floor[0] = treeTop;
542<a name="l00561"></a>00561     <span class="keywordtype">int</span> iFloor = 0;
543<a name="l00562"></a>00562     <span class="keywordtype">unsigned</span> prefixIndex = 1;
544<a name="l00563"></a>00563     <span class="keywordflow">while</span>(prefixIndex&lt;<a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>.length()-1){
545<a name="l00564"></a>00564         <span class="keywordtype">int</span> ii = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>.index(<span class="stringliteral">"/"</span>,prefixIndex);
546<a name="l00565"></a>00565         floor[iFloor+1]=
547<a name="l00566"></a>00566           floor[iFloor]-&gt;GetTree(G4String(<a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>(0,ii+1)));
548<a name="l00567"></a>00567         prefixIndex = ii+1;
549<a name="l00568"></a>00568         iFloor++;
550<a name="l00569"></a>00569     }
551<a name="l00570"></a>00570     floor[iFloor]-&gt;ListCurrentWithNum();
552<a name="l00571"></a>00571     <span class="keywordflow">while</span>(1){
553<a name="l00572"></a>00572         <span class="keywordtype">int</span> i;
554<a name="l00573"></a>00573         G4cout&lt;&lt;G4endl &lt;&lt;<span class="stringliteral">"Type the number (0:end, -n:n level back) :"</span>&lt;&lt;std::flush;
555<a name="l00574"></a>00574         G4cin &gt;&gt; i;
556<a name="l00575"></a>00575         <span class="keywordflow">if</span>(!G4cin.good()){
557<a name="l00576"></a>00576             G4cin.clear();
558<a name="l00577"></a>00577             G4cin.ignore(30,<span class="charliteral">'\n'</span>);
559<a name="l00578"></a>00578             G4cout&lt;&lt;G4endl &lt;&lt;<span class="stringliteral">"Not a number,once more"</span>&lt;&lt;G4endl; <span class="keywordflow">continue</span>;
560<a name="l00579"></a>00579         }
561<a name="l00580"></a>00580         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i&lt;0){
562<a name="l00581"></a>00581             iFloor += i;
563<a name="l00582"></a>00582             <span class="keywordflow">if</span>(iFloor &lt;0) iFloor =0;
564<a name="l00583"></a>00583             floor[iFloor]-&gt;ListCurrentWithNum(); <span class="keywordflow">continue</span>;
565<a name="l00584"></a>00584         }
566<a name="l00585"></a>00585         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i==0){<span class="keywordflow">break</span>;}
567<a name="l00586"></a>00586         <span class="keywordflow">else</span> <span class="keywordflow">if</span>(i&gt;0){
568<a name="l00587"></a>00587             <span class="keywordtype">int</span> n_tree = floor[iFloor]-&gt;GetTreeEntry();
569<a name="l00588"></a>00588             <span class="keywordflow">if</span>(i&gt;n_tree){
570<a name="l00589"></a>00589                 <span class="keywordflow">if</span>(i&lt;=n_tree+floor[iFloor]-&gt;GetCommandEntry()){
571<a name="l00590"></a>00590                     floor[iFloor]-&gt;GetCommand(i-n_tree)-&gt;List();
572<a name="l00591"></a>00591                 }
573<a name="l00592"></a>00592             }
574<a name="l00593"></a>00593             <span class="keywordflow">else</span>{
575<a name="l00594"></a>00594                 floor[iFloor+1] = floor[iFloor]-&gt;GetTree(i);
576<a name="l00595"></a>00595                 iFloor++;
577<a name="l00596"></a>00596                 floor[iFloor]-&gt;ListCurrentWithNum();
578<a name="l00597"></a>00597             }
579<a name="l00598"></a>00598         }
580<a name="l00599"></a>00599     }
581<a name="l00600"></a>00600     G4cout&lt;&lt;<span class="stringliteral">"Exit from Help."</span>&lt;&lt;G4endl &lt;&lt;G4endl;
582<a name="l00601"></a>00601     G4cout&lt;&lt;G4endl;
583<a name="l00602"></a>00602     <span class="keywordtype">char</span> temp[100];
584<a name="l00603"></a>00603     G4cin.getline(temp,100);
585<a name="l00604"></a>00604 }
586<a name="l00605"></a>00605
587<a name="l00606"></a>00606
588<a name="l00608"></a>00608 G4String <a class="code" href="../../d3/d6e/classG4UIGainServer.html#9fc976000de3479ee4ef3d6a4ebd10f0">G4UIGainServer::ModifyPrefix</a>(G4String newCommand){
589<a name="l00610"></a>00610     G4String newPrefix = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#374f51e43b7db557211a934b7ba896e8">prefix</a>;
590<a name="l00611"></a>00611     <span class="keywordflow">while</span>(1){
591<a name="l00612"></a>00612         <span class="keywordflow">if</span>(newCommand(0,2) ==<span class="stringliteral">".."</span>){
592<a name="l00613"></a>00613             <span class="keywordflow">if</span>(newPrefix !=<span class="stringliteral">"/"</span>){
593<a name="l00614"></a>00614                 G4String tmpString = newPrefix(0,newPrefix.length()-1);
594<a name="l00615"></a>00615                 newPrefix = newPrefix(0,tmpString.last(<span class="charliteral">'/'</span>)+1);
595<a name="l00616"></a>00616             }
596<a name="l00617"></a>00617         }
597<a name="l00618"></a>00618         <span class="keywordflow">else</span>{
598<a name="l00619"></a>00619             newPrefix += newCommand;
599<a name="l00620"></a>00620             <span class="keywordflow">break</span>;
600<a name="l00621"></a>00621         }
601<a name="l00622"></a>00622         <span class="keywordflow">if</span>(newCommand == <span class="stringliteral">".."</span> || newCommand == <span class="stringliteral">"../"</span>){
602<a name="l00623"></a>00623             <span class="keywordflow">break</span>;
603<a name="l00624"></a>00624         }
604<a name="l00625"></a>00625         newCommand=newCommand(3,newCommand.length()-3);
605<a name="l00626"></a>00626     }
606<a name="l00627"></a>00627     <span class="keywordflow">return</span> newPrefix;
607<a name="l00628"></a>00628 }
608<a name="l00629"></a>00629
609<a name="l00631"></a>00631 G4UIcommandTree* <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ae2b3082fbd31ccb31d659a7828169f4">G4UIGainServer::FindDirPath</a>(G4String newCommand){
610<a name="l00633"></a>00633   G4UIcommandTree * comTree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
611<a name="l00634"></a>00634   <span class="comment">/*int*/</span> <span class="keywordtype">unsigned</span> idx = 1;
612<a name="l00635"></a>00635   <span class="keywordflow">while</span>( idx &lt; newCommand.length()-1 )
613<a name="l00636"></a>00636   {
614<a name="l00637"></a>00637     <span class="keywordtype">int</span> i = newCommand.index(<span class="stringliteral">"/"</span>,idx);
615<a name="l00638"></a>00638     comTree = comTree-&gt;GetTree(G4String(newCommand(0,i+1)));
616<a name="l00639"></a>00639     <span class="keywordflow">if</span>( comTree == NULL )
617<a name="l00640"></a>00640     { <span class="keywordflow">return</span> NULL; }
618<a name="l00641"></a>00641     idx = i+1;
619<a name="l00642"></a>00642   }
620<a name="l00643"></a>00643   <span class="keywordflow">return</span> comTree;
621<a name="l00644"></a>00644 }
622<a name="l00645"></a>00645
623<a name="l00647"></a>00647
624<a name="l00649"></a>00649 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a14abcf20fc882f1368b79a299e98d10">G4UIGainServer::SendCommandProperties</a>(G4UIcommandTree* tree){
625<a name="l00651"></a>00651   <span class="keywordflow">if</span>( tree == NULL ) {
626<a name="l00652"></a>00652     G4cerr &lt;&lt; <span class="stringliteral">"GetTree() returnes null."</span> &lt;&lt; G4endl;
627<a name="l00653"></a>00653     <span class="keywordflow">return</span>;
628<a name="l00654"></a>00654   }
629<a name="l00655"></a>00655   <span class="keywordflow">if</span> (<a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> == <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcfa6db91e84554a4ecfa4967e53f7c9341">java_mode</a>){
630<a name="l00656"></a>00656     G4cout &lt;&lt; <span class="stringliteral">"@@JTreeBegin"</span> &lt;&lt; G4endl;
631<a name="l00657"></a>00657     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#06946aa7af072a20d1ce9eb10a72a7b2">CodeGenJavaTree</a>(tree, 0);
632<a name="l00658"></a>00658     G4cout &lt;&lt; <span class="stringliteral">"@@JTreeEnd"</span> &lt;&lt; G4endl;
633<a name="l00659"></a>00659     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a48489411c147f421d78494892edb071">CodeGenJavaParams</a>(tree, 0);
634<a name="l00660"></a>00660   }<span class="keywordflow">else</span>{}
635<a name="l00661"></a>00661 }
636<a name="l00662"></a>00662
637<a name="l00664"></a>00664 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#97998f32d49b50831458a93fefa1caca">G4UIGainServer::SendParameterProperties</a>(G4UIcommandTree* tree){
638<a name="l00666"></a>00666   <span class="keywordflow">if</span>( tree == NULL ) {
639<a name="l00667"></a>00667     G4cerr &lt;&lt; <span class="stringliteral">"GetTree() returnes null."</span> &lt;&lt; G4endl;
640<a name="l00668"></a>00668     <span class="keywordflow">return</span>;
641<a name="l00669"></a>00669   }
642<a name="l00670"></a>00670   <span class="keywordflow">if</span> (<a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> == <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcfa6db91e84554a4ecfa4967e53f7c9341">java_mode</a>){
643<a name="l00671"></a>00671     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a48489411c147f421d78494892edb071">CodeGenJavaParams</a>(tree, 0);
644<a name="l00672"></a>00672   }<span class="keywordflow">else</span>{ }
645<a name="l00673"></a>00673 }
646<a name="l00674"></a>00674
647<a name="l00676"></a>00676 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#06946aa7af072a20d1ce9eb10a72a7b2">G4UIGainServer::CodeGenJavaTree</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
648<a name="l00678"></a>00678   <span class="keywordtype">int</span> treeEntry, commandEntry;
649<a name="l00679"></a>00679   treeEntry = tree-&gt;GetTreeEntry();
650<a name="l00680"></a>00680   commandEntry = tree-&gt;GetCommandEntry();
651<a name="l00681"></a>00681
652<a name="l00682"></a>00682   <span class="keywordflow">if</span>(level!=0) {
653<a name="l00683"></a>00683     <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt;commandEntry; i++){
654<a name="l00684"></a>00684       G4cout &lt;&lt; tree-&gt;GetCommand(i+1)-&gt;GetCommandPath() &lt;&lt; G4endl;
655<a name="l00685"></a>00685     }
656<a name="l00686"></a>00686   }
657<a name="l00687"></a>00687   <span class="keywordflow">if</span>(treeEntry == 0) <span class="keywordflow">return</span>; <span class="comment">//end recursion</span>
658<a name="l00688"></a>00688
659<a name="l00689"></a>00689   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> j=0; j&lt;treeEntry; j++){
660<a name="l00690"></a>00690     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#06946aa7af072a20d1ce9eb10a72a7b2">CodeGenJavaTree</a>(tree-&gt;GetTree(j+1), level+1);
661<a name="l00691"></a>00691   }
662<a name="l00692"></a>00692 }
663<a name="l00693"></a>00693
664<a name="l00695"></a>00695 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a48489411c147f421d78494892edb071">G4UIGainServer::CodeGenJavaParams</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
665<a name="l00697"></a>00697     <span class="keywordtype">int</span> treeEntry,commandEntry,i;
666<a name="l00698"></a>00698     G4UIcommandTree* treeLink;
667<a name="l00699"></a>00699
668<a name="l00700"></a>00700     treeEntry = tree-&gt;GetTreeEntry();
669<a name="l00701"></a>00701     commandEntry = tree-&gt;GetCommandEntry();
670<a name="l00702"></a>00702
671<a name="l00703"></a>00703     <span class="keywordflow">for</span>(i=0;i&lt;commandEntry; i++){
672<a name="l00704"></a>00704         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d8b11e875eac59c36e7049c79e6a8111">SendAParamProperty</a>(tree-&gt;GetCommand(i+1));
673<a name="l00705"></a>00705     }
674<a name="l00706"></a>00706     <span class="keywordflow">if</span>(treeEntry ==0) <span class="keywordflow">return</span>;
675<a name="l00707"></a>00707
676<a name="l00708"></a>00708     <span class="keywordflow">for</span>(i=0;i&lt;treeEntry; i++){
677<a name="l00709"></a>00709         treeLink = tree-&gt;GetTree(i+1);
678<a name="l00710"></a>00710         G4cout&lt;&lt;<span class="stringliteral">"@@JDirGuieBegin"</span>&lt;&lt;G4endl;
679<a name="l00711"></a>00711         G4cout&lt;&lt;treeLink-&gt;GetPathName()&lt;&lt;G4endl &lt;&lt;treeLink-&gt;GetTitle()&lt;&lt;G4endl;
680<a name="l00712"></a>00712         G4cout&lt;&lt;<span class="stringliteral">"@@JDirGuideEnd"</span>&lt;&lt;G4endl;
681<a name="l00713"></a>00713         <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a48489411c147f421d78494892edb071">CodeGenJavaParams</a>(treeLink,level+1);
682<a name="l00714"></a>00714     }
683<a name="l00715"></a>00715 }
684<a name="l00716"></a>00716
685<a name="l00718"></a>00718 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d8b11e875eac59c36e7049c79e6a8111">G4UIGainServer::SendAParamProperty</a>(G4UIcommand* Comp){
686<a name="l00720"></a>00720   <span class="keywordtype">int</span> guidanceEntry, parameterEntry;
687<a name="l00721"></a>00721   G4String title, title2;
688<a name="l00722"></a>00722   G4UIparameter * prp;
689<a name="l00723"></a>00723   <span class="keywordtype">char</span> c[2];
690<a name="l00724"></a>00724   guidanceEntry = Comp-&gt;GetGuidanceEntries();
691<a name="l00725"></a>00725   parameterEntry = Comp-&gt;GetParameterEntries();
692<a name="l00726"></a>00726   G4cout &lt;&lt; <span class="stringliteral">"@@JParamBegin"</span> &lt;&lt; G4endl;
693<a name="l00727"></a>00727   G4cout &lt;&lt; Comp-&gt;GetCommandPath() &lt;&lt; G4endl;
694<a name="l00728"></a>00728   G4cout &lt;&lt; guidanceEntry &lt;&lt; G4endl;
695<a name="l00729"></a>00729   <span class="keywordflow">for</span> (<span class="keywordtype">int</span> j=0; j&lt;guidanceEntry; j++){
696<a name="l00730"></a>00730     title = Comp-&gt;GetGuidanceLine(j);
697<a name="l00731"></a>00731     title2 = <span class="stringliteral">""</span>;
698<a name="l00732"></a>00732     <span class="keywordflow">if</span> (title != <span class="stringliteral">""</span>){
699<a name="l00733"></a>00733       <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt; (int)title.length(); i++){
700<a name="l00734"></a>00734         c[0]=title(i);
701<a name="l00735"></a>00735         c[1]= <span class="charliteral">'\0'</span>;
702<a name="l00736"></a>00736         <span class="keywordflow">if</span> ( c[0] == <span class="charliteral">'\n'</span> || c[0] == <span class="charliteral">'\r'</span>) {
703<a name="l00737"></a>00737           c[0]= <span class="charliteral">' '</span>;
704<a name="l00738"></a>00738         }
705<a name="l00739"></a>00739         title2.append(c);
706<a name="l00740"></a>00740       }
707<a name="l00741"></a>00741     }
708<a name="l00742"></a>00742     G4cout &lt;&lt; title2 &lt;&lt; G4endl;
709<a name="l00743"></a>00743   }
710<a name="l00744"></a>00744   G4cout &lt;&lt; Comp-&gt;GetRange() &lt;&lt; G4endl;
711<a name="l00745"></a>00745   G4cout &lt;&lt; parameterEntry &lt;&lt; G4endl;
712<a name="l00746"></a>00746   <span class="keywordflow">for</span>( <span class="keywordtype">int</span> par=0; par&lt;parameterEntry; par++) {
713<a name="l00747"></a>00747     prp = (G4UIparameter *)Comp-&gt;GetParameter(par);
714<a name="l00748"></a>00748     G4cout &lt;&lt; prp-&gt;GetParameterName() &lt;&lt; G4endl;
715<a name="l00749"></a>00749     G4cout &lt;&lt; prp-&gt;GetParameterGuidance() &lt;&lt; G4endl;
716<a name="l00750"></a>00750     G4cout &lt;&lt; prp-&gt;GetParameterType() &lt;&lt; G4endl;
717<a name="l00751"></a>00751     G4cout &lt;&lt; prp-&gt;IsOmittable() &lt;&lt; G4endl;
718<a name="l00752"></a>00752     G4cout &lt;&lt; prp-&gt;GetDefaultValue() &lt;&lt; G4endl;
719<a name="l00753"></a>00753     G4cout &lt;&lt; prp-&gt;GetParameterRange() &lt;&lt; G4endl;
720<a name="l00754"></a>00754     G4cout &lt;&lt; prp-&gt;GetParameterCandidates() &lt;&lt; G4endl;
721<a name="l00755"></a>00755   }
722<a name="l00756"></a>00756   G4cout &lt;&lt; <span class="stringliteral">"@@JParamEnd"</span> &lt;&lt; G4endl;
723<a name="l00757"></a>00757 }
724<a name="l00758"></a>00758
725<a name="l00760"></a>00760 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#92b82eaeeff17968d08f390b80b51570">G4UIGainServer::SendDisableList</a>(G4UIcommandTree* tree,<span class="keywordtype">int</span> level){
726<a name="l00762"></a>00762   <span class="keywordtype">int</span> treeEntry, commandEntry;
727<a name="l00763"></a>00763   G4UIcommand * Comp;
728<a name="l00764"></a>00764   treeEntry = tree-&gt;GetTreeEntry();
729<a name="l00765"></a>00765   commandEntry = tree-&gt;GetCommandEntry();
730<a name="l00766"></a>00766
731<a name="l00767"></a>00767   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++) {
732<a name="l00768"></a>00768     Comp = tree-&gt;GetCommand(com+1);
733<a name="l00769"></a>00769     <span class="keywordflow">if</span>( Comp-&gt;IsAvailable()==false ) {
734<a name="l00770"></a>00770        G4cout &lt;&lt; Comp-&gt;GetCommandPath()&lt;&lt;G4endl;
735<a name="l00771"></a>00771     }
736<a name="l00772"></a>00772   }
737<a name="l00773"></a>00773   <span class="keywordflow">if</span>( treeEntry == 0 ) <span class="keywordflow">return</span>;     <span class="comment">// end recursion</span>
738<a name="l00774"></a>00774
739<a name="l00775"></a>00775   <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i=0; i&lt;treeEntry; i++) {
740<a name="l00776"></a>00776     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#92b82eaeeff17968d08f390b80b51570">SendDisableList</a>(tree-&gt;GetTree(i+1), level+1);
741<a name="l00777"></a>00777     <span class="comment">// be sure the function name is the same</span>
742<a name="l00778"></a>00778   }
743<a name="l00779"></a>00779 }
744<a name="l00780"></a>00780
745<a name="l00781"></a>00781
746<a name="l00782"></a>00782
747<a name="l00783"></a>00783 <span class="comment">//####### update check routines ####################################</span>
748<a name="l00784"></a>00784
749<a name="l00786"></a>00786 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#17935cd5fdf5df7053e5dbc4b097e299">G4UIGainServer::UpdateState</a>(<span class="keywordtype">void</span>){
750<a name="l00788"></a>00788    <span class="keyword">static</span> G4ApplicationState previousState= G4State_PreInit;
751<a name="l00789"></a>00789    G4ApplicationState  newState;
752<a name="l00790"></a>00790    G4StateManager *statM = G4StateManager::GetStateManager();
753<a name="l00791"></a>00791    newState = statM-&gt;GetCurrentState();
754<a name="l00792"></a>00792    <span class="keywordflow">if</span>( newState != previousState )
755<a name="l00793"></a>00793    {
756<a name="l00794"></a>00794       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f44cb34fb033a715c5e5912a41871892">NotifyStateChange</a>();
757<a name="l00795"></a>00795       previousState = newState;
758<a name="l00796"></a>00796    }
759<a name="l00797"></a>00797 }
760<a name="l00798"></a>00798
761<a name="l00800"></a>00800 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#f44cb34fb033a715c5e5912a41871892">G4UIGainServer::NotifyStateChange</a>(<span class="keywordtype">void</span>)
762<a name="l00802"></a>00802 {
763<a name="l00803"></a>00803    G4String stateString;
764<a name="l00804"></a>00804    G4StateManager * statM = G4StateManager::GetStateManager();
765<a name="l00805"></a>00805    G4UIcommandTree * tree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
766<a name="l00806"></a>00806    stateString = statM-&gt;GetStateString(statM-&gt;GetCurrentState());
767<a name="l00807"></a>00807    <span class="keywordflow">if</span> ( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#72edfe4c1003f1cf0c029fdcb5067086">uiMode</a> != <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#e654a7bc2c9e143259b171b59021ddcff650bbc825bf80900b2a6d6e79d1dc3c">terminal_mode</a> ){
768<a name="l00808"></a>00808      G4cout &lt;&lt; <span class="stringliteral">"@@State \""</span> &lt;&lt; stateString &lt;&lt; <span class="stringliteral">"\""</span> &lt;&lt; G4endl;
769<a name="l00809"></a>00809      G4cout &lt;&lt; <span class="stringliteral">"@@DisableListBegin"</span>&lt;&lt;G4endl;
770<a name="l00810"></a>00810      <a class="code" href="../../d3/d6e/classG4UIGainServer.html#92b82eaeeff17968d08f390b80b51570">SendDisableList</a>(tree, 0);
771<a name="l00811"></a>00811      G4cout &lt;&lt; <span class="stringliteral">"@@DisableListEnd"</span> &lt;&lt;G4endl;
772<a name="l00812"></a>00812    }
773<a name="l00813"></a>00813 }
774<a name="l00814"></a>00814
775<a name="l00816"></a>00816 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#ed3a4e66301278c247d5c02f2b07161a">G4UIGainServer::NotifyCommandUpdate</a>(<span class="keywordtype">void</span>)
776<a name="l00818"></a>00818 {
777<a name="l00819"></a>00819   G4UIcommandTree * tree = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#210a29326b0f34785a87d97d111a457d">UI</a>-&gt;GetTree();
778<a name="l00820"></a>00820   <a class="code" href="../../d3/d6e/classG4UIGainServer.html#a14abcf20fc882f1368b79a299e98d10">SendCommandProperties</a>(tree);
779<a name="l00821"></a>00821 }
780<a name="l00822"></a>00822
781<a name="l00824"></a>00824 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#5a10c69e4807cb489b822dd0682ed8ae">G4UIGainServer::NotifyParameterUpdate</a>(G4UIcommand* com)
782<a name="l00826"></a>00826 {
783<a name="l00827"></a>00827     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d8b11e875eac59c36e7049c79e6a8111">SendAParamProperty</a>(com);
784<a name="l00828"></a>00828 }
785<a name="l00829"></a>00829
786<a name="l00831"></a>00831 <span class="keywordtype">int</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#00763a50592d185dc67fe20cd0bbc870">G4UIGainServer::CommandUpdated</a>(<span class="keywordtype">void</span>){
787<a name="l00833"></a>00833   <span class="keywordtype">int</span> <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b24253671e7452fd61421a4915f7c3fbdcb9b9">added</a>=0, <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a>=0;
788<a name="l00834"></a>00834   <span class="keywordtype">int</span> pEntry= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#66cdefaa0be019a28603fb5ba73595aa">previousTreeCommands</a>.size();
789<a name="l00835"></a>00835   <span class="keywordtype">int</span> nEntry= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>.size();
790<a name="l00836"></a>00836   <span class="keywordtype">int</span> i,j;
791<a name="l00837"></a>00837   <span class="keywordflow">for</span>( i=0; i&lt;pEntry; i++) {      <span class="comment">// check deleted command(s)</span>
792<a name="l00838"></a>00838       <span class="keywordflow">for</span>( j=0; j&lt;nEntry; j++) {
793<a name="l00839"></a>00839          <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#66cdefaa0be019a28603fb5ba73595aa">previousTreeCommands</a>[i] == <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>[j]) <span class="keywordflow">break</span>;
794<a name="l00840"></a>00840       }
795<a name="l00841"></a>00841       <span class="keywordflow">if</span>( j==nEntry ) {
796<a name="l00842"></a>00842          <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a> = 1;
797<a name="l00843"></a>00843          <span class="comment">//G4cout &lt;&lt;"deleted: "&lt;&lt; previousTreeCommands(i) &lt;&lt; G4endl;</span>
798<a name="l00844"></a>00844       }
799<a name="l00845"></a>00845   }
800<a name="l00846"></a>00846   <span class="keywordflow">for</span>( i=0; i&lt;nEntry; i++) {      <span class="comment">// check added command(s)</span>
801<a name="l00847"></a>00847       <span class="keywordflow">for</span>( j=0; j&lt;pEntry; j++) {
802<a name="l00848"></a>00848          <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>[i] == <a class="code" href="../../d3/d6e/classG4UIGainServer.html#66cdefaa0be019a28603fb5ba73595aa">previousTreeCommands</a>[j]) <span class="keywordflow">break</span>;
803<a name="l00849"></a>00849       }
804<a name="l00850"></a>00850       <span class="keywordflow">if</span>( j==pEntry ) {
805<a name="l00851"></a>00851          added = 1;
806<a name="l00852"></a>00852       <span class="comment">//   G4cout &lt;&lt;"added: "&lt;&lt; newTreeCommands(i) &lt;&lt; G4endl;</span>
807<a name="l00853"></a>00853       }
808<a name="l00854"></a>00854   }
809<a name="l00855"></a>00855   <span class="keywordflow">if</span>( added    &amp;&amp; <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a>==0 ) {G4cout&lt;&lt;<span class="stringliteral">"c added"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> added;}
810<a name="l00856"></a>00856   <span class="keywordflow">if</span>( added==0 &amp;&amp; <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a> ) {G4cout&lt;&lt;<span class="stringliteral">"c deleted"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a>;}
811<a name="l00857"></a>00857   <span class="keywordflow">if</span>( added    &amp;&amp; <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242538a1db5cdebe662fffcbe4d03a723e504">deleted</a> ) {G4cout&lt;&lt;<span class="stringliteral">"c add/deleted"</span>&lt;&lt;G4endl;<span class="keywordflow">return</span> <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b242531b1a8d2ab4154c1788a6b7df79275c23">addedAndDeleted</a>;}
812<a name="l00858"></a>00858   <span class="keywordflow">return</span> <a class="code" href="../../d6/d31/G4UIGAG_8hh.html#0058ba7e4c0f3e07da84787d04b24253e27d4ec605ccf12c945a0a22d29f6e7e">notChanged</a>;
813<a name="l00859"></a>00859 }
814<a name="l00860"></a>00860
815<a name="l00862"></a>00862 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e05e36283896fb298ff4e5bafb9d5e1c">G4UIGainServer::GetNewTreeStructure</a>(G4UIcommandTree * tree, <span class="keywordtype">int</span> level) {
816<a name="l00864"></a>00864   G4String commandPath;
817<a name="l00865"></a>00865   G4String title;
818<a name="l00866"></a>00866   G4String pathName; <span class="comment">//tree name</span>
819<a name="l00867"></a>00867   G4UIcommandTree * t;
820<a name="l00868"></a>00868   <span class="keywordtype">int</span> treeEntry    = tree-&gt;GetTreeEntry();
821<a name="l00869"></a>00869   <span class="keywordtype">int</span> commandEntry = tree-&gt;GetCommandEntry();
822<a name="l00870"></a>00870
823<a name="l00871"></a>00871   <span class="keywordflow">if</span>( level==0 ) { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>.clear();}
824<a name="l00872"></a>00872   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++){
825<a name="l00873"></a>00873       commandPath = tree-&gt;GetCommand(com+1)-&gt;GetCommandPath();
826<a name="l00874"></a>00874       title = tree-&gt;GetCommand(com+1)-&gt;GetTitle();
827<a name="l00875"></a>00875       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>.push_back( commandPath + <span class="stringliteral">" "</span> + title );
828<a name="l00876"></a>00876   }
829<a name="l00877"></a>00877
830<a name="l00878"></a>00878   <span class="keywordflow">if</span>(treeEntry == 0) <span class="keywordflow">return</span>; <span class="comment">//end recursion</span>
831<a name="l00879"></a>00879
832<a name="l00880"></a>00880   <span class="keywordflow">for</span>(<span class="keywordtype">int</span> i=0; i&lt; treeEntry; i++){
833<a name="l00881"></a>00881     t = tree-&gt;GetTree(i+1);
834<a name="l00882"></a>00882     pathName =  t-&gt;GetPathName();   
835<a name="l00883"></a>00883     title = t-&gt;GetTitle();
836<a name="l00884"></a>00884     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#d20e21cfcf1664eec8491e5c37a09ede">newTreeCommands</a>.push_back( pathName + <span class="stringliteral">" "</span> + title );
837<a name="l00885"></a>00885     <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e05e36283896fb298ff4e5bafb9d5e1c">GetNewTreeStructure</a>(t, level+1);
838<a name="l00886"></a>00886   }
839<a name="l00887"></a>00887 }
840<a name="l00888"></a>00888
841<a name="l00890"></a>00890 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#cff12649cddb9c585ef268f1f2f57d66">G4UIGainServer::UpdateParamVal</a>(<span class="keywordtype">void</span>) {
842<a name="l00892"></a>00892   <span class="comment">// call NotifyParameterUpdate() if the value of each</span>
843<a name="l00893"></a>00893   <span class="comment">//  command/parameter is updated.</span>
844<a name="l00894"></a>00894   <span class="comment">//  assuming the command structure is not changed.</span>
845<a name="l00895"></a>00895   <span class="keywordtype">int</span> pEntry= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e22bf1b27a83e40bf364a93be9c2fa4f">previousTreeParams</a>.size();
846<a name="l00896"></a>00896   <span class="keywordtype">int</span> nEntry= <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>.size();
847<a name="l00897"></a>00897   <span class="keywordtype">int</span> i;
848<a name="l00898"></a>00898   G4UIcommand* Comp;
849<a name="l00899"></a>00899   <span class="keywordflow">if</span> (pEntry != nEntry) <span class="keywordflow">return</span>;
850<a name="l00900"></a>00900   <span class="keywordflow">for</span>( i=0; i&lt;nEntry; i++) {
851<a name="l00901"></a>00901     <span class="keywordflow">if</span>( <a class="code" href="../../d3/d6e/classG4UIGainServer.html#e22bf1b27a83e40bf364a93be9c2fa4f">previousTreeParams</a>[i] != <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>[i]){
852<a name="l00902"></a>00902        Comp = <a class="code" href="../../d3/d6e/classG4UIGainServer.html#c120c7d130421d30393182e1db21c513">newTreePCP</a>[i];
853<a name="l00903"></a>00903        G4cout &lt;&lt; Comp-&gt;GetCommandPath()
854<a name="l00904"></a>00904             &lt;&lt; <span class="stringliteral">" command is updated."</span> &lt;&lt;G4endl;
855<a name="l00905"></a>00905        <a class="code" href="../../d3/d6e/classG4UIGainServer.html#5a10c69e4807cb489b822dd0682ed8ae">NotifyParameterUpdate</a>(Comp);
856<a name="l00906"></a>00906     }
857<a name="l00907"></a>00907   }
858<a name="l00908"></a>00908 }
859<a name="l00909"></a>00909
860<a name="l00911"></a>00911 <span class="keywordtype">void</span> <a class="code" href="../../d3/d6e/classG4UIGainServer.html#3a0ec5976cbe1a9dfde6d81a70a3b5fe">G4UIGainServer::GetNewTreeValues</a>( G4UIcommandTree * tree, <span class="keywordtype">int</span> level){ <span class="comment">// recursive</span>
861<a name="l00913"></a>00913 <span class="comment"></span>   G4String commandPath;
862<a name="l00914"></a>00914    G4String pathName; <span class="comment">//tree name</span>
863<a name="l00915"></a>00915    G4UIcommandTree * t;
864<a name="l00916"></a>00916    <span class="keywordtype">int</span> parameterEntry;
865<a name="l00917"></a>00917    <span class="keywordtype">int</span> treeEntry    = tree-&gt;GetTreeEntry();
866<a name="l00918"></a>00918    <span class="keywordtype">int</span> commandEntry = tree-&gt;GetCommandEntry();
867<a name="l00919"></a>00919    G4UIcommand * Comp;
868<a name="l00920"></a>00920    G4UIparameter * prp;
869<a name="l00921"></a>00921    G4String param, str(<span class="stringliteral">" "</span>);
870<a name="l00922"></a>00922
871<a name="l00923"></a>00923    <span class="keywordflow">if</span>( level==0 ) { <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>.clear(); }
872<a name="l00924"></a>00924    <span class="keywordflow">for</span>(<span class="keywordtype">int</span> com=0; com&lt;commandEntry; com++) {
873<a name="l00925"></a>00925       Comp = tree-&gt;GetCommand(com+1);
874<a name="l00926"></a>00926       commandPath    = Comp-&gt;GetCommandPath();
875<a name="l00927"></a>00927       parameterEntry = Comp-&gt;GetParameterEntries();
876<a name="l00928"></a>00928       param = commandPath +<span class="stringliteral">" "</span>;
877<a name="l00929"></a>00929       <span class="keywordflow">for</span>( <span class="keywordtype">int</span> par=0; par&lt; parameterEntry; par++) {
878<a name="l00930"></a>00930          prp = (G4UIparameter *)Comp-&gt;GetParameter(par);
879<a name="l00931"></a>00931          param += prp-&gt;GetParameterName() +<span class="stringliteral">" "</span>;
880<a name="l00932"></a>00932          str(0) = prp-&gt;GetParameterType();
881<a name="l00933"></a>00933          param += str + <span class="stringliteral">" "</span>;
882<a name="l00934"></a>00934          param += prp-&gt;GetDefaultValue()  +<span class="stringliteral">" "</span>;
883<a name="l00935"></a>00935          param += prp-&gt;GetParameterRange() +<span class="stringliteral">" "</span>;
884<a name="l00936"></a>00936          param += prp-&gt;GetParameterCandidates();
885<a name="l00937"></a>00937       }
886<a name="l00938"></a>00938      <a class="code" href="../../d3/d6e/classG4UIGainServer.html#7792eba4e0e4d24e4c5f9a6eefbb2888">newTreeParams</a>.push_back( param + <span class="stringliteral">"\n"</span>);
887<a name="l00939"></a>00939      <a class="code" href="../../d3/d6e/classG4UIGainServer.html#c120c7d130421d30393182e1db21c513">newTreePCP</a>.push_back( Comp );
888<a name="l00940"></a>00940    }
889<a name="l00941"></a>00941    <span class="keywordflow">if</span>( treeEntry == 0 )  <span class="keywordflow">return</span>;     <span class="comment">// end recursion</span>
890<a name="l00942"></a>00942    <span class="keywordflow">for</span>( <span class="keywordtype">int</span> i=0; i&lt; treeEntry; i++) {
891<a name="l00943"></a>00943       t = tree-&gt;GetTree(i+1);
892<a name="l00944"></a>00944       <a class="code" href="../../d3/d6e/classG4UIGainServer.html#3a0ec5976cbe1a9dfde6d81a70a3b5fe">GetNewTreeValues</a>(t, level+1);
893<a name="l00945"></a>00945    }
894<a name="l00946"></a>00946 }
895<a name="l00947"></a>00947
896<a name="l00948"></a>00948
897<a name="l00949"></a>00949 <span class="preprocessor">#endif</span>
898<a name="l00950"></a>00950 <span class="preprocessor"></span>
899<a name="l00951"></a>00951         
900<a name="l00952"></a>00952
901<a name="l00953"></a>00953
902<a name="l00954"></a>00954
903<a name="l00955"></a>00955
904<a name="l00956"></a>00956
905<a name="l00957"></a>00957
906<a name="l00958"></a>00958
907<a name="l00959"></a>00959
908<a name="l00960"></a>00960
909<a name="l00961"></a>00961         
910</pre></div><hr size="1"><address style="text-align: right;"><small>Generated on Fri Jun 22 10:26:02 2007 by&nbsp;
911<a href="http://www.doxygen.org/index.html">
912<img src="../../doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.2 </small></address>
913</body>
914</html>
Note: See TracBrowser for help on using the repository browser.