source: trunk/source/interfaces/html/G4UIArrayString_8cc-source.html @ 828

Last change on this file since 828 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: 13.6 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=iso-8859-1">
3<title>G4UIArrayString.cc Source File</title>
4<link href="doxygen.css" rel="stylesheet" type="text/css">
5</head><body>
6<!-- Generated by Doxygen 1.3.4 -->
7<div class="qindex"><a class="qindex" href="index.html">Main&nbsp;Page</a> | <a class="qindex" href="hierarchy.html">Class&nbsp;Hierarchy</a> | <a class="qindex" href="annotated.html">Class&nbsp;List</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Class&nbsp;Members</a> | <a class="qindex" href="globals.html">File&nbsp;Members</a></div>
8<h1>G4UIArrayString.cc</h1><a href="G4UIArrayString_8cc.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">//</span>
900002 <span class="comment">// ********************************************************************</span>
1000003 <span class="comment">// * License and Disclaimer                                           *</span>
1100004 <span class="comment">// *                                                                  *</span>
1200005 <span class="comment">// * The  Geant4 software  is  copyright of the Copyright Holders  of *</span>
1300006 <span class="comment">// * the Geant4 Collaboration.  It is provided  under  the terms  and *</span>
1400007 <span class="comment">// * conditions of the Geant4 Software License,  included in the file *</span>
1500008 <span class="comment">// * LICENSE and available at  http://cern.ch/geant4/license .  These *</span>
1600009 <span class="comment">// * include a list of copyright holders.                             *</span>
1700010 <span class="comment">// *                                                                  *</span>
1800011 <span class="comment">// * Neither the authors of this software system, nor their employing *</span>
1900012 <span class="comment">// * institutes,nor the agencies providing financial support for this *</span>
2000013 <span class="comment">// * work  make  any representation or  warranty, express or implied, *</span>
2100014 <span class="comment">// * regarding  this  software system or assume any liability for its *</span>
2200015 <span class="comment">// * use.  Please see the license in the file  LICENSE  and URL above *</span>
2300016 <span class="comment">// * for the full disclaimer and the limitation of liability.         *</span>
2400017 <span class="comment">// *                                                                  *</span>
2500018 <span class="comment">// * This  code  implementation is the result of  the  scientific and *</span>
2600019 <span class="comment">// * technical work of the GEANT4 collaboration.                      *</span>
2700020 <span class="comment">// * By using,  copying,  modifying or  distributing the software (or *</span>
2800021 <span class="comment">// * any work based  on the software)  you  agree  to acknowledge its *</span>
2900022 <span class="comment">// * use  in  resulting  scientific  publications,  and indicate your *</span>
3000023 <span class="comment">// * acceptance of all terms of the Geant4 Software license.          *</span>
3100024 <span class="comment">// ********************************************************************</span>
3200025 <span class="comment">//</span>
3300026 <span class="comment">//</span>
3400027 <span class="comment">// $Id: G4UIArrayString.cc,v 1.8 2006/06/29 19:09:43 gunter Exp $</span>
3500028 <span class="comment">// GEANT4 tag $Name: geant4-08-01-patch-01 $</span>
3600029 <span class="comment">//</span>
3700030
3800031 <span class="preprocessor">#include &lt;iomanip&gt;</span>
3900032 <span class="preprocessor">#include "<a class="code" href="G4UIArrayString_8hh.html">G4UIArrayString.hh</a>"</span>
4000033
41<a name="l00034"></a><a class="code" href="G4UIArrayString_8cc.html#a0">00034</a> <span class="keyword">static</span> <span class="keyword">const</span> <span class="keywordtype">char</span> <a class="code" href="G4UIArrayString_8cc.html#a0">strESC</a>= <span class="charliteral">'\033'</span>;
4200035
43<a name="l00037"></a><a class="code" href="classG4UIArrayString.html#a0">00037</a> <a class="code" href="classG4UIArrayString.html#a0">G4UIArrayString::G4UIArrayString</a>(<span class="keyword">const</span> G4String&amp; stream)
4400039 {
4500040   <a class="code" href="classG4UIArrayString.html#r1">nElement</a>=0;
4600041   <a class="code" href="classG4UIArrayString.html#r2">nColumn</a>=5;  <span class="comment">// temporal assignment</span>
4700042
4800043   G4String tmpstr= stream;  <span class="comment">// G4String::strip() CONST !!</span>
4900044   G4String astream= tmpstr.strip(G4String::both);
5000045
5100046   <span class="comment">// tokenize...</span>
5200047   G4int indx=0;
5300048   <span class="keywordflow">while</span>(1) {
5400049     G4int jc= astream.index(<span class="stringliteral">" "</span>, indx);
5500050     <a class="code" href="classG4UIArrayString.html#r1">nElement</a>++;
5600051     <span class="keywordflow">if</span>(jc == G4int(G4String::npos)) <span class="keywordflow">break</span>;
5700052     jc++; <span class="comment">// fix a tiny mistake...</span>
5800053     <span class="keywordflow">for</span>(; jc&lt; G4int(astream.length()); ) {  <span class="comment">// skip continuing spaces</span>
5900054       <span class="keywordflow">if</span>(astream[(size_t)(jc)]==<span class="charliteral">' '</span>) jc++;
6000055       <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
6100056     }
6200057     indx= jc;
6300058   }
6400059
6500060   <span class="comment">// allocate string array</span>
6600061   <a class="code" href="classG4UIArrayString.html#r0">stringArray</a>= <span class="keyword">new</span> G4String[<a class="code" href="classG4UIArrayString.html#r1">nElement</a>];   
6700062
6800063   <span class="comment">// push...</span>
6900064   indx=0;
7000065   <span class="keywordflow">for</span>(G4int i=0; i&lt;<a class="code" href="classG4UIArrayString.html#r1">nElement</a>; i++){
7100066     G4int jc= astream.index(<span class="stringliteral">" "</span>, indx);
7200067     <span class="keywordflow">if</span>(jc != G4int(G4String::npos))
7300068       <a class="code" href="classG4UIArrayString.html#r0">stringArray</a>[i]= astream(indx, jc-indx);
7400069     <span class="keywordflow">else</span> {  <span class="comment">// last token</span>
7500070       jc= astream.length()+1;
7600071       <a class="code" href="classG4UIArrayString.html#r0">stringArray</a>[i]= astream(indx, jc-indx);
7700072     }
7800073     <span class="keywordflow">for</span>(G4int j=1; jc+j&lt; G4int(astream.length()); j++ ) { <span class="comment">// skip continuing spaces</span>
7900074       <span class="keywordflow">if</span>(astream(jc+j)==<span class="charliteral">' '</span>) jc++;
8000075       <span class="keywordflow">else</span> <span class="keywordflow">break</span>;
8100076     }
8200077     indx= jc+1;
8300078   }
8400079 }
8500080
86<a name="l00082"></a><a class="code" href="classG4UIArrayString.html#a1">00082</a> <a class="code" href="classG4UIArrayString.html#a1">G4UIArrayString::~G4UIArrayString</a>()
8700084 {
8800085   <span class="keyword">delete</span> [] <a class="code" href="classG4UIArrayString.html#r0">stringArray</a>;
8900086 }
9000087
91<a name="l00089"></a><a class="code" href="classG4UIArrayString.html#d0">00089</a> G4String* <a class="code" href="classG4UIArrayString.html#d0">G4UIArrayString::GetElement</a>(G4int icol, G4int irow) <span class="keyword">const</span>
9200091 { 
9300092   <span class="keywordflow">if</span>( !(icol&gt;=1 &amp;&amp; irow&gt;=1)) <span class="comment">// offset of column/row is "1".</span>
9400093     G4cerr &lt;&lt; <span class="stringliteral">"G4UIArrayString: overrange"</span> &lt;&lt; G4endl;
9500094   <span class="keywordflow">if</span>(icol&gt;nColumn) G4cerr &lt;&lt; <span class="stringliteral">"G4UIArrayString: overrange"</span> &lt;&lt; G4endl;
9600095
9700096   G4int jq= (irow-1)*nColumn + icol;
9800097   <span class="keywordflow">if</span>(jq&gt; nElement) G4cerr &lt;&lt; <span class="stringliteral">"G4UIArrayString: overrange"</span> &lt;&lt; G4endl;
9900098
10000099   jq--;
10100100   <span class="keywordflow">return</span> &amp;stringArray[jq];
10200101 }
10300102
10400104 G4int <a class="code" href="classG4UIArrayString.html#d1">G4UIArrayString::GetNRow</a>(<span class="keywordtype">int</span> icol) <span class="keyword">const</span>
10500106 {
10600107   G4int ni;
10700108   <span class="keywordflow">if</span>(nElement%nColumn ==0) ni= nElement/nColumn;
10800109   <span class="keywordflow">else</span> ni= nElement/nColumn + 1;
10900110
11000111   G4int nn= nElement%nColumn;
11100112   <span class="keywordflow">if</span>(nn==0) nn= nColumn;
11200113
11300114   <span class="keywordflow">if</span>(icol&lt;= nn) <span class="keywordflow">return</span> ni;
11400115   <span class="keywordflow">else</span> <span class="keywordflow">return</span> ni-1;
11500116 }
11600117
11700119 G4int <a class="code" href="classG4UIArrayString.html#d2">G4UIArrayString::GetNField</a>(<span class="keywordtype">int</span> icol) <span class="keyword">const</span>
11800121 {
11900122   G4int maxWidth=0;
12000123   <span class="keywordflow">for</span> (G4int iy=1; iy&lt;= GetNRow(icol); iy++) {
12100124     G4int ilen= GetElement(icol,iy)-&gt; length();
12200125     <span class="comment">// care for color code</span>
12300126     <span class="comment">// if(GetElement(icol,iy)-&gt; index(strESC,0) != G4String::npos) {</span>
12400127     <span class="comment">// if(strESC == (*GetElement(icol,iy))[0] ) {</span>
12500128     <span class="keyword">const</span> <span class="keywordtype">char</span> tgt = (*GetElement(icol,iy))[(size_t)0];
12600129     <span class="keywordflow">if</span>(<a class="code" href="G4UIArrayString_8cc.html#a0">strESC</a> == tgt) {
12700130       ilen-= 5;
12800131       <span class="keywordflow">if</span>(ilen&lt;0) G4cout &lt;&lt; <span class="stringliteral">"length(c) cal. error."</span> &lt;&lt; G4endl;
12900132     }
13000133     <span class="keywordflow">if</span>(ilen&gt; maxWidth) maxWidth= ilen;
13100134   }
13200135
13300136   <span class="keywordflow">return</span> maxWidth;
13400137 }
13500138
136<a name="l00140"></a><a class="code" href="classG4UIArrayString.html#d3">00140</a> <span class="keywordtype">int</span> <a class="code" href="classG4UIArrayString.html#d3">G4UIArrayString::CalculateColumnWidth</a>() <span class="keyword">const</span>
13700142 {
13800143   G4int totalWidth= 0;
13900144
14000145   <span class="keywordflow">for</span>(G4int ix=1; ix&lt;= nColumn; ix++) {
14100146     totalWidth+= GetNField(ix);
14200147   }
14300148
14400149   <span class="keyword">const</span> G4int nwSpace= 2;
14500150   totalWidth+= (nColumn-1)*nwSpace;  <span class="comment">// for space</span>
14600151
14700152   <span class="keywordflow">return</span> totalWidth;
14800153 }
14900154
150<a name="l00156"></a><a class="code" href="classG4UIArrayString.html#a2">00156</a> <span class="keywordtype">void</span> <a class="code" href="classG4UIArrayString.html#a2">G4UIArrayString::Show</a>(G4int ncol)
15100158 {
15200159   <span class="comment">// calculate #colums in need...</span>
15300160   <span class="keywordflow">while</span>( <a class="code" href="classG4UIArrayString.html#d3">CalculateColumnWidth</a>()&lt; ncol ) {
15400161     <a class="code" href="classG4UIArrayString.html#r2">nColumn</a>++;
15500162   }
15600163   <span class="keywordflow">while</span>( <a class="code" href="classG4UIArrayString.html#d3">CalculateColumnWidth</a>()&gt; ncol &amp;&amp; <a class="code" href="classG4UIArrayString.html#r2">nColumn</a>&gt;1 ) {
15700164     <a class="code" href="classG4UIArrayString.html#r2">nColumn</a>--;
15800165   }
15900166   
16000167   <span class="keywordflow">for</span>(G4int iy=1; iy&lt;= <a class="code" href="classG4UIArrayString.html#d1">GetNRow</a>(1); iy++) {
16100168     G4int nc= <a class="code" href="classG4UIArrayString.html#r2">nColumn</a>;
16200169     <span class="keywordflow">if</span>(iy == <a class="code" href="classG4UIArrayString.html#d1">GetNRow</a>(1)) { <span class="comment">// last row</span>
16300170       nc= <a class="code" href="classG4UIArrayString.html#r1">nElement</a>%nColumn;
16400171       <span class="keywordflow">if</span>(nc==0) nc= nColumn;
16500172     }
16600173     <span class="keywordflow">for</span>(G4int ix=1; ix&lt;=nc; ix++) {
16700174       G4String word= <a class="code" href="classG4UIArrayString.html#d0">GetElement</a>(ix,iy)-&gt; data();
16800175
16900176       <span class="comment">// care for color code</span>
17000177       G4String colorWord;
17100178       <span class="comment">//if(word.index(strESC,0) != G4String::npos) {</span>
17200179       <span class="comment">//if(strESC == word[0]) {</span>
17300180       <span class="keyword">const</span> <span class="keywordtype">char</span> tgt = word[(size_t)0];
17400181       <span class="keywordflow">if</span>(<a class="code" href="G4UIArrayString_8cc.html#a0">strESC</a> == tgt) {
17500182         colorWord= word(0,5);
17600183         word.erase(0,5);
17700184       }
17800185       <span class="keywordflow">if</span>(!colorWord.empty()) G4cout &lt;&lt; colorWord &lt;&lt; std::flush;
17900186
18000187       G4cout &lt;&lt; std::setiosflags(std::ios::left) &lt;&lt; std::setw(<a class="code" href="classG4UIArrayString.html#d2">GetNField</a>(ix))
18100188              &lt;&lt; word.c_str() &lt;&lt; std::flush;
18200189                 <span class="comment">// against problem w/ g++ iostream</span>
18300190       <span class="keywordflow">if</span>(ix != nc) G4cout &lt;&lt; <span class="stringliteral">"  "</span> &lt;&lt; std::flush;
18400191       <span class="keywordflow">else</span> G4cout &lt;&lt; G4endl;     
18500192     }
18600193   }
18700194 }
18800195
189</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Jun 22 11:07:01 2007 by
190<a href="http://www.doxygen.org/index.html">
191<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
192</a>1.3.4 </small></address>
193</body>
194</html>
Note: See TracBrowser for help on using the repository browser.