source: trunk/source/interfaces/XVT/include/G4UIxvt.hh@ 1285

Last change on this file since 1285 was 1274, checked in by garnier, 16 years ago

update...

File size: 8.5 KB
RevLine 
[1274]1//
2// ********************************************************************
3// * DISCLAIMER *
4// * *
5// * The following disclaimer summarizes all the specific disclaimers *
6// * of contributors to this software. The specific disclaimers,which *
7// * govern, are listed with their locations in: *
8// * http://cern.ch/geant4/license *
9// * *
10// * Neither the authors of this software system, nor their employing *
11// * institutes,nor the agencies providing financial support for this *
12// * work make any representation or warranty, express or implied, *
13// * regarding this software system or assume any liability for its *
14// * use. *
15// * *
16// * This code implementation is the intellectual property of the *
17// * GEANT4 collaboration. *
18// * By copying, distributing or modifying the Program (or any work *
19// * based on the Program) you indicate your acceptance of this *
20// * statement, and all its terms. *
21// ********************************************************************
22//
23//
24// $Id: G4UIxvt.hh,v 1.5 2003/06/16 16:55:53 gunter Exp $
25// GEANT4 tag $Name: $
26//
27////////////////////////////////////////////////////////////////////////
28// XVT driver class header //
29// ~~~~~~~~~~~~~~~~~~~~~~~ //
30// Written by: Simon Prior //
31// Date: 22/04/97 //
32// //
33// Updated for state machine: 12/08/97 //
34// //
35////////////////////////////////////////////////////////////////////////
36#ifndef G4UIxvt_h
37#define G4UIxvt_h
38
39#if defined(G4UI_BUILD_XVT_SESSION) || defined(G4UI_USE_XVT)
40
41////////////////////////////////////////////////////////////////////////
42// define the named pipe names //
43////////////////////////////////////////////////////////////////////////
44
45#define XvtToGeant "XvtToGeant.tmp"
46#define GeantToXvt "GeantToXvt.tmp"
47
48
49////////////////////////////////////////////////////////////////////////
50// mode for opening a named pipe //
51////////////////////////////////////////////////////////////////////////
52
53#define FILE_MODE (0664 | S_IFIFO)
54
55
56////////////////////////////////////////////////////////////////////////
57// If compiling using AFS different libraries required //
58////////////////////////////////////////////////////////////////////////
59
60#ifdef _AIX
61#include <sys/mode.h> // mkfifo utils
62#endif
63
64#include <unistd.h> // POSIX standards for stdin, out, err.
65//#include <values.h>
66#include <sys/stat.h> // mkfifo utils for HP
67#include <fcntl.h> // Open, Close, Unlink etc
68#include <sys/ioctl.h>
69#include <stdio.h> // sscanf, sprinf
70
71#ifndef FIONREAD
72#include <sys/filio.h> // FIONREAD defines
73#endif
74
75////////////////////////////////////////////////////////////////////////
76// Geant4 specific includes //
77////////////////////////////////////////////////////////////////////////
78
79#include "G4UIsession.hh"
80#include "G4UImanager.hh"
81#include "G4UIcommandTree.hh"
82
83
84////////////////////////////////////////////////////////////////////////
85// State machine Geant4 includes //
86////////////////////////////////////////////////////////////////////////
87
88#include "G4VStateDependent.hh"
89#include <fstream>
90
91
92////////////////////////////////////////////////////////////////////////
93// New data structures, one to hold the parameter information of a //
94// command and one to hold information on the command itself. //
95////////////////////////////////////////////////////////////////////////
96
97typedef struct G4parameterData
98{
99 G4String name;
100 G4String guidance;
101 G4String defaultValue;
102 G4String range;
103 G4String candidate;
104 char type;
105 G4String omittable;
106} G4parameterData;
107
108typedef struct G4commandData
109{
110 int flag;
111 G4String name;
112 G4String guidance;
113 int numOfParameters;
114 G4parameterData parameters[10];
115
116// G4String bitmapName;
117
118 int commandNumber;
119} G4commandData;
120
121
122class G4UIxvt : public G4UIsession//, public G4VStateDependent
123{
124 public:
125 G4UIxvt();
126 ~G4UIxvt();
127
128 ////////////////////////////////////////////////////////////////////
129 // Inherited virtual functions //
130 ////////////////////////////////////////////////////////////////////
131
132// void SessionStart(void);
133G4UIsession* SessionStart(void);
134 G4String GetCommand(void);
135 void SessionTerminate(void);
136
137
138 ////////////////////////////////////////////////////////////////////
139 // New state machine methods //
140 ////////////////////////////////////////////////////////////////////
141
142 G4bool Notify(G4ApplicationState requestedState);
143
144 inline void set_breakPointAt(int id,G4bool flg)
145 {
146 brktbl[id] = flg;
147 noBreakFlag = !(brktbl[0]||brktbl[1]||brktbl[2]||brktbl[3]);
148 };
149
150 void set_verbose(void);
151
152 private:
153
154 ////////////////////////////////////////////////////////////////////
155 // Terminal and interface data members (might be taken out as //
156 // they are not needed for the XVT GUI) //
157 ////////////////////////////////////////////////////////////////////
158
159 G4UImanager * UI;
160
161
162 ////////////////////////////////////////////////////////////////////
163 // New state machine data members //
164 ////////////////////////////////////////////////////////////////////
165
166 G4bool iExit;
167 G4bool iCont;
168 G4bool brktbl[4];
169 G4bool noBreakFlag;
170 G4bool verboseFlag;
171
172
173 ////////////////////////////////////////////////////////////////////
174 // New state machine methods //
175 ////////////////////////////////////////////////////////////////////
176
177 void additionalSession(void);
178 G4bool breakRequested(G4ApplicationState,G4ApplicationState);
179
180
181 ////////////////////////////////////////////////////////////////////
182 // IPC Data Members //
183 ////////////////////////////////////////////////////////////////////
184
185 int fd_XvtToGeant, fd_GeantToXvt;
186 char textDump[100];
187 int number;
188
189
190 ////////////////////////////////////////////////////////////////////
191 // IPC methods //
192 ////////////////////////////////////////////////////////////////////
193
194 void openConnections(void);
195 int checkXvtToGeantPipe(void);
196 G4String readXvtToGeant(void);
197 void writeGeantToXvt(const G4String& theString);
198
199
200 ////////////////////////////////////////////////////////////////////
201 // Terminal and TCL methods updated for use with XVT //
202 ////////////////////////////////////////////////////////////////////
203
204 void codeGen(G4UIcommandTree *,int recursive_level);
205 void listCurrentDirectory(void);
206
207
208 ////////////////////////////////////////////////////////////////////
209 // Command handling data members //
210 ////////////////////////////////////////////////////////////////////
211
212 G4commandData commandArray[200];
213 int currentPosition, lastPosition;
214
215
216 ////////////////////////////////////////////////////////////////////
217 // Command handling methods //
218 ////////////////////////////////////////////////////////////////////
219
220 void fillArrayEntries(G4UIcommandTree * tree, int level);
221 void sendArrayEntriesToXvt(void);
222 void briefListCommands(void);
223
224
225 ////////////////////////////////////////////////////////////////////
226 // Debugging methods //
227 ////////////////////////////////////////////////////////////////////
228 void listCommandArray(void);
229 void errorHandler(const G4String& theError);
230
231
232};
233
234#endif
235
236#endif
Note: See TracBrowser for help on using the repository browser.