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

Last change on this file since 856 was 571, checked in by garnier, 18 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.