Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4UIArrayString Class Reference

#include <G4UIArrayString.hh>

Public Member Functions

 G4UIArrayString (const G4String &stream)
 
 ~G4UIArrayString ()
 
void Show (G4int ncol)
 

Detailed Description

Definition at line 40 of file G4UIArrayString.hh.

Constructor & Destructor Documentation

◆ G4UIArrayString()

G4UIArrayString::G4UIArrayString ( const G4String & stream)

Definition at line 36 of file G4UIArrayString.cc.

38{
39 nElement = 0;
40 nColumn = 5; // temporal assignment
41
42 G4String astream = G4StrUtil::strip_copy(stream);
43
44 // tokenize...
45 std::size_t indx = 0;
46 while (true) {
47 std::size_t jc = astream.find(' ', indx);
48 nElement++;
49 if (jc == G4String::npos) break;
50 jc++; // fix a tiny mistake...
51 for (; jc < astream.length();) { // skip continuing spaces
52 if (astream[(G4int)jc] == ' ')
53 jc++;
54 else
55 break;
56 }
57 indx = jc;
58 }
59
60 // allocate string array
61 stringArray = new G4String[nElement];
62
63 // push...
64 indx = 0;
65 for (std::size_t i = 0; i < nElement; ++i) {
66 std::size_t jc = astream.find(' ', indx);
67 if (jc != G4String::npos)
68 stringArray[i] = astream.substr(indx, jc - indx);
69 else { // last token
70 jc = astream.length() + 1;
71 stringArray[i] = astream.substr(indx, jc - indx);
72 }
73 for (std::size_t j = 1; jc + j < astream.length(); ++j) { // skip continuing spaces
74 if (astream[G4int(jc + j)] == ' ')
75 jc++;
76 else
77 break;
78 }
79 indx = jc + 1;
80 }
81}
int G4int
Definition G4Types.hh:85

◆ ~G4UIArrayString()

G4UIArrayString::~G4UIArrayString ( )

Definition at line 84 of file G4UIArrayString.cc.

86{
87 delete[] stringArray;
88}

Member Function Documentation

◆ Show()

void G4UIArrayString::Show ( G4int ncol)

Definition at line 159 of file G4UIArrayString.cc.

161{
162 // calculate #colums in need...
163 while (CalculateColumnWidth() < ncol) {
164 nColumn++;
165 }
166 while (CalculateColumnWidth() > ncol && nColumn > 1) {
167 nColumn--;
168 }
169
170 for (G4int iy = 1; iy <= GetNRow(1); iy++) {
171 G4int nc = (G4int)nColumn;
172 if (iy == GetNRow(1)) { // last row
173 nc = G4int(nElement % nColumn);
174 if (nc == 0) nc = (G4int)nColumn;
175 }
176 for (G4int ix = 1; ix <= nc; ++ix) {
177 G4String word = GetElement(ix, iy)->data();
178
179 // care for color code
180 G4String colorWord;
181 const char tgt = word[(std::size_t)0];
182 if (strESC == tgt) {
183 colorWord = word.substr(0, 5);
184 word.erase(0, 5);
185 }
186 if (! colorWord.empty()) G4cout << colorWord << std::flush;
187
188 G4cout << std::setiosflags(std::ios::left) << std::setw(GetNField(ix)) << word.c_str()
189 << std::flush;
190 // against problem w/ g++ iostream
191 if (ix != nc)
192 G4cout << " " << std::flush;
193 else
194 G4cout << G4endl;
195 }
196 }
197}
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout

Referenced by G4VUIshell::ListCommand().


The documentation for this class was generated from the following files: