Geant4  10.02.p03
G4UIArrayString Class Reference

#include <G4UIArrayString.hh>

Collaboration diagram for G4UIArrayString:

Public Member Functions

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

Private Member Functions

G4StringGetElement (G4int icol, G4int irow) const
 
G4int GetNRow (G4int icol) const
 
G4int GetNField (G4int icol) const
 
G4int CalculateColumnWidth () const
 

Private Attributes

G4StringstringArray
 
G4int nElement
 
G4int nColumn
 

Detailed Description

Definition at line 41 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 tmpstr= stream; // G4String::strip() CONST !!
43  G4String astream= tmpstr.strip(G4String::both);
44 
45  // tokenize...
46  G4int indx=0;
47  while(1) {
48  G4int jc= astream.index(" ", indx);
49  nElement++;
50  if(jc == G4int(G4String::npos)) break;
51  jc++; // fix a tiny mistake...
52  for(; jc< G4int(astream.length()); ) { // skip continuing spaces
53  if(astream[(size_t)(jc)]==' ') jc++;
54  else break;
55  }
56  indx= jc;
57  }
58 
59  // allocate string array
61 
62  // push...
63  indx=0;
64  for(G4int i=0; i<nElement; i++){
65  G4int jc= astream.index(" ", indx);
66  if(jc != G4int(G4String::npos))
67  stringArray[i]= astream(indx, jc-indx);
68  else { // last token
69  jc= astream.length()+1;
70  stringArray[i]= astream(indx, jc-indx);
71  }
72  for(G4int j=1; jc+j< G4int(astream.length()); j++ ) { // skip continuing spaces
73  if(astream(jc+j)==' ') jc++;
74  else break;
75  }
76  indx= jc+1;
77  }
78 }
G4String strip(G4int strip_Type=trailing, char c=' ')
str_size index(const char *, G4int pos=0) const
int G4int
Definition: G4Types.hh:78
G4String * stringArray
Here is the call graph for this function:

◆ ~G4UIArrayString()

G4UIArrayString::~G4UIArrayString ( )

Definition at line 81 of file G4UIArrayString.cc.

83 {
84  delete [] stringArray;
85 }
G4String * stringArray

Member Function Documentation

◆ CalculateColumnWidth()

int G4UIArrayString::CalculateColumnWidth ( ) const
private

Definition at line 139 of file G4UIArrayString.cc.

141 {
142  G4int totalWidth= 0;
143 
144  for(G4int ix=1; ix<= nColumn; ix++) {
145  totalWidth+= GetNField(ix);
146  }
147 
148  const G4int nwSpace= 2;
149  totalWidth+= (nColumn-1)*nwSpace; // for space
150 
151  return totalWidth;
152 }
int G4int
Definition: G4Types.hh:78
G4int GetNField(G4int icol) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetElement()

G4String * G4UIArrayString::GetElement ( G4int  icol,
G4int  irow 
) const
private

Definition at line 88 of file G4UIArrayString.cc.

90 {
91  if( !(icol>=1 && irow>=1)) // offset of column/row is "1".
92  G4cerr << "G4UIArrayString: overrange" << G4endl;
93  if(icol>nColumn) G4cerr << "G4UIArrayString: overrange" << G4endl;
94 
95  G4int jq= (irow-1)*nColumn + icol;
96  if(jq> nElement) G4cerr << "G4UIArrayString: overrange" << G4endl;
97 
98  jq--;
99  return &stringArray[jq];
100 }
int G4int
Definition: G4Types.hh:78
#define G4endl
Definition: G4ios.hh:61
G4String * stringArray
G4GLOB_DLL std::ostream G4cerr
Here is the caller graph for this function:

◆ GetNField()

G4int G4UIArrayString::GetNField ( G4int  icol) const
private

Definition at line 118 of file G4UIArrayString.cc.

120 {
121  G4int maxWidth=0;
122  for (G4int iy=1; iy<= GetNRow(icol); iy++) {
123  G4int ilen= GetElement(icol,iy)-> length();
124  // care for color code
125  // if(GetElement(icol,iy)-> index(strESC,0) != G4String::npos) {
126  // if(strESC == (*GetElement(icol,iy))[0] ) {
127  const char tgt = (*GetElement(icol,iy))[(size_t)0];
128  if(strESC == tgt) {
129  ilen-= 5;
130  if(ilen<0) G4cout << "length(c) cal. error." << G4endl;
131  }
132  if(ilen> maxWidth) maxWidth= ilen;
133  }
134 
135  return maxWidth;
136 }
G4int GetNRow(G4int icol) const
static const char strESC
G4String * GetElement(G4int icol, G4int irow) const
int G4int
Definition: G4Types.hh:78
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetNRow()

G4int G4UIArrayString::GetNRow ( G4int  icol) const
private

Definition at line 103 of file G4UIArrayString.cc.

105 {
106  G4int ni;
107  if(nElement%nColumn ==0) ni= nElement/nColumn;
108  else ni= nElement/nColumn + 1;
109 
111  if(nn==0) nn= nColumn;
112 
113  if(icol<= nn) return ni;
114  else return ni-1;
115 }
int G4int
Definition: G4Types.hh:78
Here is the caller graph for this function:

◆ Show()

void G4UIArrayString::Show ( G4int  ncol)

Definition at line 155 of file G4UIArrayString.cc.

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

Member Data Documentation

◆ nColumn

G4int G4UIArrayString::nColumn
private

Definition at line 45 of file G4UIArrayString.hh.

◆ nElement

G4int G4UIArrayString::nElement
private

Definition at line 44 of file G4UIArrayString.hh.

◆ stringArray

G4String* G4UIArrayString::stringArray
private

Definition at line 43 of file G4UIArrayString.hh.


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