Main Page | Class Hierarchy | Class List | File List | Class Members | File Members

G4UIArrayString Class Reference

#include <G4UIArrayString.hh>

List of all members.

Public Member Functions

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

Private Member Functions

G4String * GetElement (G4int icol, G4int irow) const
G4int GetNRow (G4int icol) const
G4int GetNField (G4int icol) const
G4int CalculateColumnWidth () const

Private Attributes

G4String * stringArray
G4int nElement
G4int nColumn


Constructor & Destructor Documentation

G4UIArrayString::G4UIArrayString const G4String &  stream  ) 
 

Definition at line 37 of file G4UIArrayString.cc.

References nColumn, nElement, and stringArray.

00039 {
00040   nElement=0;
00041   nColumn=5;  // temporal assignment
00042 
00043   G4String tmpstr= stream;  // G4String::strip() CONST !!
00044   G4String astream= tmpstr.strip(G4String::both);
00045 
00046   // tokenize...
00047   G4int indx=0;
00048   while(1) {
00049     G4int jc= astream.index(" ", indx);
00050     nElement++;
00051     if(jc == G4int(G4String::npos)) break;
00052     jc++; // fix a tiny mistake...
00053     for(; jc< G4int(astream.length()); ) {  // skip continuing spaces
00054       if(astream[(size_t)(jc)]==' ') jc++;
00055       else break;
00056     }
00057     indx= jc;
00058   }
00059 
00060   // allocate string array
00061   stringArray= new G4String[nElement];   
00062 
00063   // push...
00064   indx=0;
00065   for(G4int i=0; i<nElement; i++){
00066     G4int jc= astream.index(" ", indx);
00067     if(jc != G4int(G4String::npos))
00068       stringArray[i]= astream(indx, jc-indx);
00069     else {  // last token
00070       jc= astream.length()+1;
00071       stringArray[i]= astream(indx, jc-indx);
00072     }
00073     for(G4int j=1; jc+j< G4int(astream.length()); j++ ) { // skip continuing spaces
00074       if(astream(jc+j)==' ') jc++;
00075       else break;
00076     }
00077     indx= jc+1;
00078   }
00079 }

G4UIArrayString::~G4UIArrayString  ) 
 

Definition at line 82 of file G4UIArrayString.cc.

References stringArray.

00084 { 
00085   delete [] stringArray;
00086 }


Member Function Documentation

int G4UIArrayString::CalculateColumnWidth  )  const [private]
 

Definition at line 140 of file G4UIArrayString.cc.

Referenced by Show().

00142 {
00143   G4int totalWidth= 0;
00144 
00145   for(G4int ix=1; ix<= nColumn; ix++) {
00146     totalWidth+= GetNField(ix);
00147   }
00148 
00149   const G4int nwSpace= 2;
00150   totalWidth+= (nColumn-1)*nwSpace;  // for space
00151 
00152   return totalWidth;
00153 }

G4String * G4UIArrayString::GetElement G4int  icol,
G4int  irow
const [private]
 

Definition at line 89 of file G4UIArrayString.cc.

Referenced by Show().

00091 {  
00092   if( !(icol>=1 && irow>=1)) // offset of column/row is "1".
00093     G4cerr << "G4UIArrayString: overrange" << G4endl;
00094   if(icol>nColumn) G4cerr << "G4UIArrayString: overrange" << G4endl;
00095 
00096   G4int jq= (irow-1)*nColumn + icol;
00097   if(jq> nElement) G4cerr << "G4UIArrayString: overrange" << G4endl;
00098 
00099   jq--;
00100   return &stringArray[jq];
00101 }

G4int G4UIArrayString::GetNField G4int  icol  )  const [private]
 

Referenced by Show().

G4int G4UIArrayString::GetNRow G4int  icol  )  const [private]
 

Referenced by Show().

void G4UIArrayString::Show G4int  ncol  ) 
 

Definition at line 156 of file G4UIArrayString.cc.

References CalculateColumnWidth(), GetElement(), GetNField(), GetNRow(), nColumn, nElement, and strESC.

Referenced by G4VUIshell::ListCommand().

00158 {
00159   // calculate #colums in need...
00160   while( CalculateColumnWidth()< ncol ) {
00161     nColumn++;
00162   }
00163   while( CalculateColumnWidth()> ncol && nColumn>1 ) {
00164     nColumn--;
00165   }
00166   
00167   for(G4int iy=1; iy<= GetNRow(1); iy++) {
00168     G4int nc= nColumn;
00169     if(iy == GetNRow(1)) { // last row
00170       nc= nElement%nColumn;
00171       if(nc==0) nc= nColumn;
00172     }
00173     for(G4int ix=1; ix<=nc; ix++) {
00174       G4String word= GetElement(ix,iy)-> data();
00175 
00176       // care for color code
00177       G4String colorWord;
00178       //if(word.index(strESC,0) != G4String::npos) {
00179       //if(strESC == word[0]) {
00180       const char tgt = word[(size_t)0];
00181       if(strESC == tgt) {
00182         colorWord= word(0,5);
00183         word.erase(0,5);
00184       }
00185       if(!colorWord.empty()) G4cout << colorWord << std::flush;
00186 
00187       G4cout << std::setiosflags(std::ios::left) << std::setw(GetNField(ix)) 
00188              << word.c_str() << std::flush; 
00189                 // against problem w/ g++ iostream
00190       if(ix != nc) G4cout << "  " << std::flush;
00191       else G4cout << G4endl;      
00192     }
00193   }
00194 }

Here is the call graph for this function:


Member Data Documentation

G4int G4UIArrayString::nColumn [private]
 

Definition at line 46 of file G4UIArrayString.hh.

Referenced by G4UIArrayString(), and Show().

G4int G4UIArrayString::nElement [private]
 

Definition at line 45 of file G4UIArrayString.hh.

Referenced by G4UIArrayString(), and Show().

G4String* G4UIArrayString::stringArray [private]
 

Definition at line 44 of file G4UIArrayString.hh.

Referenced by G4UIArrayString(), and ~G4UIArrayString().


The documentation for this class was generated from the following files:
Generated on Fri Jun 22 11:07:07 2007 by doxygen 1.3.4