blob: a44392bd509b110283b7b3ddd949ae1fdd6c1a1c [file] [log] [blame]
<HTML><HEAD><TITLE>Xalan-C++ API Documentation</TITLE></HEAD>
<BODY>
<h2 align="center">Xalan-C++ API Documentation</h2>
<h3 align="center">The Xalan C++ XSLT Processor Version 1.10</h3>
</BODY>
<!-- Generated by Doxygen 1.2.8.1 -->
<center>
<a class="qindex" href="index.html">Main Page</a> &nbsp; <a class="qindex" href="hierarchy.html">Class Hierarchy</a> &nbsp; <a class="qindex" href="classes.html">Alphabetical List</a> &nbsp; <a class="qindex" href="annotated.html">Compound List</a> &nbsp; <a class="qindex" href="files.html">File List</a> &nbsp; <a class="qindex" href="functions.html">Compound Members</a> &nbsp; <a class="qindex" href="globals.html">File Members</a> &nbsp; </center>
<hr><h1>XalanVector.hpp</h1><a href="XalanVector_8hpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <font class="comment">/*</font>
00002 <font class="comment"> * Copyright 1999-2004 The Apache Software Foundation.</font>
00003 <font class="comment"> *</font>
00004 <font class="comment"> * Licensed under the Apache License, Version 2.0 (the "License");</font>
00005 <font class="comment"> * you may not use this file except in compliance with the License.</font>
00006 <font class="comment"> * You may obtain a copy of the License at</font>
00007 <font class="comment"> *</font>
00008 <font class="comment"> * http://www.apache.org/licenses/LICENSE-2.0</font>
00009 <font class="comment"> *</font>
00010 <font class="comment"> * Unless required by applicable law or agreed to in writing, software</font>
00011 <font class="comment"> * distributed under the License is distributed on an "AS IS" BASIS,</font>
00012 <font class="comment"> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.</font>
00013 <font class="comment"> * See the License for the specific language governing permissions and</font>
00014 <font class="comment"> * limitations under the License.</font>
00015 <font class="comment"> */</font>
00016
00021
00022 <font class="preprocessor">#if !defined(XALANVECTOR_HEADER_GUARD_1357924680)</font>
<a name="l00023"></a><a class="code" href="XalanVector_8hpp.html#a0">00023</a> <font class="preprocessor"></font><font class="preprocessor">#define XALANVECTOR_HEADER_GUARD_1357924680</font>
00024 <font class="preprocessor"></font>
00025
00026
00027 <font class="comment">// Base include file. Must be first.</font>
00028 <font class="preprocessor">#include &lt;<a class="code" href="PlatformDefinitions_8hpp.html">xalanc/Include/PlatformDefinitions.hpp</a>&gt;</font>
00029
00030
00031 <font class="preprocessor">#include &lt;<a class="code" href="XalanMemoryManagement_8hpp.html">xalanc/Include/XalanMemoryManagement.hpp</a>&gt;</font>
00032 <font class="preprocessor">#include &lt;<a class="code" href="XalanMemMgrAutoPtr_8hpp.html">xalanc/Include/XalanMemMgrAutoPtr.hpp</a>&gt;</font>
00033
00034
00035 <font class="preprocessor">#include &lt;cstddef&gt;</font>
00036 <font class="preprocessor">#include &lt;algorithm&gt;</font>
00037 <font class="preprocessor">#include &lt;cassert&gt;</font>
00038 <font class="preprocessor">#include &lt;new&gt;</font>
00039 <font class="preprocessor">#include &lt;iterator&gt;</font>
00040 <font class="preprocessor">#include &lt;stdexcept&gt;</font>
00041
00042
00043
00044
00045
00046 XALAN_CPP_NAMESPACE_BEGIN
00047
00048
00049 <font class="preprocessor">#if defined(_MSC_VER)</font>
00050 <font class="preprocessor"></font><font class="preprocessor">#pragma warning(push)</font>
00051 <font class="preprocessor"></font><font class="preprocessor">#pragma warning(disable: 4100)</font>
00052 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
00053 <font class="preprocessor"></font>
00054
00055
<a name="l00056"></a><a class="code" href="XalanVector_8hpp.html#a1">00056</a> <a class="code" href="XSLTInputSource_8hpp.html#a3">XALAN_USING_XERCES</a>(MemoryManager)
00057
00058
00059
00060 template &lt;class Type, class ConstructionTraits = MemoryManagedConstructionTraits&lt;Type&gt; &gt;
00061 <font class="keyword">class </font>XalanVector
00062 {
00063 <font class="keyword">public</font>:
00064
00065
00066 <font class="keyword">typedef</font> Type value_type;
00067 <font class="keyword">typedef</font> value_type* pointer;
00068 <font class="keyword">typedef</font> <font class="keyword">const</font> value_type* const_pointer;
00069 <font class="keyword">typedef</font> value_type&amp; reference;
00070 <font class="keyword">typedef</font> <font class="keyword">const</font> value_type&amp; const_reference;
00071 <font class="keyword">typedef</font> size_t size_type;
00072 <font class="keyword">typedef</font> ptrdiff_t difference_type;
00073
00074 <font class="preprocessor">#if defined(XALAN_VCPP_USE_PTRIT)</font>
00075 <font class="preprocessor"></font> <font class="keyword">typedef</font> std::_Ptrit&lt;
00076 Type,
00077 ptrdiff_t,
00078 pointer,
00079 reference,
00080 pointer,
00081 reference&gt; iterator;
00082
00083 <font class="keyword">typedef</font> std::_Ptrit&lt;
00084 Type,
00085 ptrdiff_t,
00086 const_pointer,
00087 const_reference,
00088 pointer,
00089 reference&gt; const_iterator;
00090 <font class="preprocessor">#else</font>
00091 <font class="preprocessor"></font> <font class="keyword">typedef</font> value_type* iterator;
00092 <font class="keyword">typedef</font> <font class="keyword">const</font> value_type* const_iterator;
00093 <font class="preprocessor">#endif</font>
00094 <font class="preprocessor"></font>
00095 <font class="preprocessor">#if defined(XALAN_HAS_STD_ITERATORS)</font>
00096 <font class="preprocessor"></font> <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;iterator&gt; reverse_iterator_;
00097 <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;const_iterator&gt; const_reverse_iterator_;
00098 <font class="preprocessor">#elif defined(XALAN_RW_NO_CLASS_PARTIAL_SPEC)</font>
00099 <font class="preprocessor"></font> <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;
00100 iterator,
00101 XALAN_STD_QUALIFIER random_access_iterator_tag,
00102 value_type&gt; reverse_iterator_;
00103 <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;
00104 const_iterator,
00105 XALAN_STD_QUALIFIER random_access_iterator_tag,
00106 <font class="keyword">const</font> value_type&gt; const_reverse_iterator_;
00107 <font class="preprocessor">#else</font>
00108 <font class="preprocessor"></font> <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;iterator, value_type&gt; reverse_iterator_;
00109 <font class="keyword">typedef</font> XALAN_STD_QUALIFIER reverse_iterator&lt;const_iterator, value_type, const_reference&gt; const_reverse_iterator_;
00110 <font class="preprocessor">#endif</font>
00111 <font class="preprocessor"></font>
00112 <font class="keyword">typedef</font> reverse_iterator_ reverse_iterator;
00113 <font class="keyword">typedef</font> const_reverse_iterator_ const_reverse_iterator;
00114
00115 <font class="keyword">typedef</font> XalanVector&lt;value_type, ConstructionTraits&gt; <a class="code" href="classXalanDeque.html">ThisType</a>;
00116
00117 <font class="keyword">typedef</font> <font class="keyword">typename</font> ConstructionTraits::Constructor <a class="code" href="structMemoryManagedConstructionTraits.html">Constructor</a>;
00118 <font class="keyword">typedef</font> <font class="keyword">typename</font> Constructor::ConstructableType ConstructibleType;
00119
00120 XalanVector(
00121 MemoryManager&amp; theManager XALAN_DEFAULT_CONSTRUCTOR_MEMORY_MGR,
00122 size_type initialAllocation = <a class="code" href="XalanMap_8hpp.html#a1">size_type</a>(0)) :
00123 m_memoryManager(&amp;theManager),
00124 m_size(0),
00125 m_allocation(initialAllocation),
00126 m_data(initialAllocation &gt; 0 ? allocate(initialAllocation) : 0)
00127 {
00128 invariants();
00129 }
00130
00131 <font class="keyword">static</font> XalanVector*
00132 create(
00133 MemoryManager&amp; theManager,
00134 size_type initialAllocation = <a class="code" href="XalanMap_8hpp.html#a1">size_type</a>(0))
00135 {
00136 <font class="keyword">typedef</font> XalanVector <a class="code" href="classXalanDeque.html">ThisType</a>;
00137
00138 XalanMemMgrAutoPtr&lt;ThisType, false&gt; theGuard( theManager , (<a class="code" href="classXalanDeque.html">ThisType</a>*)theManager.allocate(<font class="keyword">sizeof</font>(<a class="code" href="classXalanDeque.html">ThisType</a>)));
00139
00140 <a class="code" href="classXalanDeque.html">ThisType</a>* theResult = theGuard.get();
00141
00142 <font class="keyword">new</font> (theResult) ThisType(theManager, initialAllocation);
00143
00144 theGuard.release();
00145
00146 <font class="keywordflow">return</font> theResult;
00147 }
00148
00149 XalanVector(
00150 <font class="keyword">const</font> <a class="code" href="classXalanDeque.html">ThisType</a>&amp; theSource,
00151 MemoryManager&amp; theManager XALAN_DEFAULT_CONSTRUCTOR_MEMORY_MGR,
00152 size_type theInitialAllocation = <a class="code" href="XalanMap_8hpp.html#a1">size_type</a>(0)) :
00153 m_memoryManager(&amp;theManager),
00154 m_size(0),
00155 m_allocation(0),
00156 m_data(0)<font class="keyword"></font>
00157 <font class="keyword"> </font>{
00158 <font class="keywordflow">if</font> (theSource.m_size &gt; 0)
00159 {
00160 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(theManager, local_max(theSource.m_size, theInitialAllocation));
00161
00162 theTemp.insert(theTemp.begin(), theSource.<a class="code" href="classXalanDeque.html#a3">begin</a>(), theSource.<a class="code" href="classXalanDeque.html#a5">end</a>());
00163
00164 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00165
00166 }
00167 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (theInitialAllocation &gt; 0)
00168 {
00169 m_data = allocate(theInitialAllocation);
00170
00171 m_allocation = theInitialAllocation;
00172 }
00173
00174 invariants();
00175 }
00176
00177 XalanVector(
00178 const_iterator theFirst,
00179 const_iterator theLast,
00180 MemoryManager&amp; theManager) :
00181 m_memoryManager(&amp;theManager),
00182 m_size(0),
00183 m_allocation(0),
00184 m_data(0)<font class="keyword"></font>
00185 <font class="keyword"></font>
00186 <font class="keyword"> </font>{
00187 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(theManager);
00188
00189 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a3">begin</a>(), theFirst, theLast);
00190
00191 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00192
00193 invariants();
00194 }
00195
00196 <font class="keyword">static</font> XalanVector*
00197 create(
00198 const_iterator theFirst,
00199 const_iterator theLast,
00200 MemoryManager&amp; theManager)<font class="keyword"></font>
00201 <font class="keyword"> </font>{
00202 <font class="keyword">typedef</font> XalanVector <a class="code" href="classXalanDeque.html">ThisType</a>;
00203
00204 XalanMemMgrAutoPtr&lt;ThisType, false&gt; theGuard( theManager , (<a class="code" href="classXalanDeque.html">ThisType</a>*)theManager.allocate(<font class="keyword">sizeof</font>(<a class="code" href="classXalanDeque.html">ThisType</a>)));
00205
00206 <a class="code" href="classXalanDeque.html">ThisType</a>* theResult = theGuard.get();
00207
00208 <font class="keyword">new</font> (theResult) ThisType(theFirst, theLast, theManager);
00209
00210 theGuard.release();
00211
00212 <font class="keywordflow">return</font> theResult;
00213 }
00214
00215 XalanVector(
00216 size_type theInsertSize,
00217 <font class="keyword">const</font> value_type&amp; theData,
00218 MemoryManager&amp; theManager) :
00219 m_memoryManager(&amp;theManager),
00220 m_size(0),
00221 m_allocation(0),
00222 m_data(0)<font class="keyword"></font>
00223 <font class="keyword"> </font>{
00224 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(theManager);
00225
00226 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a3">begin</a>(), theInsertSize, theData);
00227
00228 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00229
00230 invariants();
00231 }
00232
00233 ~XalanVector()<font class="keyword"></font>
00234 <font class="keyword"> </font>{
00235 invariants();
00236
00237 <font class="keywordflow">if</font> (m_allocation != 0)
00238 {
00239 destroy(begin(), end());
00240
00241 deallocate(m_data);
00242 }
00243 }
00244
00245 <font class="keywordtype">void</font>
00246 push_back(<font class="keyword">const</font> value_type&amp; data)<font class="keyword"></font>
00247 <font class="keyword"> </font>{
00248 invariants();
00249
00250 doPushBack(data);
00251
00252 invariants();
00253 }
00254
00255 <font class="keywordtype">void</font>
00256 pop_back()<font class="keyword"></font>
00257 <font class="keyword"> </font>{
00258 invariants();
00259
00260 --m_size;
00261
00262 destroy(m_data[m_size]);
00263
00264 invariants();
00265 }
00266
00267 iterator
00268 <a class="code" href="DOMStringHelper_8hpp.html#a81">erase</a>(
00269 iterator theFirst,
00270 iterator theLast)<font class="keyword"></font>
00271 <font class="keyword"> </font>{
00272 invariants();
00273
00274 <font class="keywordflow">if</font> (theFirst != theLast)
00275 {
00276 XALAN_STD_QUALIFIER copy(
00277 theLast,
00278 end(),
00279 theFirst);
00280
00281 shrinkCount(local_distance(theFirst, theLast));
00282 }
00283
00284 invariants();
00285
00286 <font class="keywordflow">return</font> theFirst;
00287 }
00288
00289 iterator
00290 <a class="code" href="DOMStringHelper_8hpp.html#a81">erase</a>(iterator position)<font class="keyword"></font>
00291 <font class="keyword"> </font>{
00292 <font class="keywordflow">return</font> <a class="code" href="DOMStringHelper_8hpp.html#a81">erase</a>(position, position + 1);
00293 }
00294
00295 <font class="keywordtype">void</font>
00296 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(
00297 iterator thePosition,
00298 const_iterator theFirst,
00299 const_iterator theLast)<font class="keyword"></font>
00300 <font class="keyword"> </font>{
00301 <font class="comment">// Since we're using bare pointers for now, we can</font>
00302 <font class="comment">// assert this...</font>
00303 assert(theFirst &lt;= theLast);
00304 assert(thePosition &gt;= begin());
00305 assert(thePosition &lt;= end());
00306
00307 invariants();
00308
00309 <font class="keyword">const</font> size_type theInsertSize =
00310 local_distance(theFirst, theLast);
00311
00312 <font class="keywordflow">if</font> (theInsertSize == 0)
00313 {
00314 <font class="keywordflow">return</font>;
00315 }
00316
00317 <font class="keyword">const</font> size_type theTotalSize = size() + theInsertSize;
00318
00319 <font class="keywordflow">if</font> (thePosition == end())
00320 {
00321 pointer thePointer = ensureCapacity(theTotalSize);
00322
00323 <font class="keywordflow">while</font> (theFirst != theLast)
00324 {
00325 Constructor::construct(thePointer, *theFirst, *m_memoryManager);
00326
00327 ++thePointer;
00328 ++m_size;
00329 ++theFirst;
00330 }
00331 }
00332 <font class="keywordflow">else</font>
00333 {
00334 <font class="keywordflow">if</font> (theTotalSize &gt; capacity())
00335 {
00336 assert (m_memoryManager != 0);
00337
00338 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(*m_memoryManager, theTotalSize);
00339
00340 <font class="comment">// insert everything up to the position...</font>
00341 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), begin(), thePosition);
00342
00343 <font class="comment">// insert the new stuff...</font>
00344 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), theFirst, theLast);
00345
00346 <font class="comment">// insert everything from the position to the end...</font>
00347 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), thePosition, end());
00348
00349 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00350 }
00351 <font class="keywordflow">else</font>
00352 {
00353 <font class="comment">// insert into the middle of the vector that has enough capacity</font>
00354 <font class="keyword">const</font> iterator theOriginalEnd = end();
00355
00356 <font class="keyword">const</font> size_type theRightSplitSize =
00357 local_distance(thePosition, theOriginalEnd);
00358
00359 <font class="keywordflow">if</font> (theRightSplitSize &lt;= theInsertSize)
00360 {
00361 <font class="comment">// inserted range will go to or beyond edge of current vector</font>
00362
00363 <font class="comment">// append from inserted range, all values that will extend </font>
00364 <font class="comment">// beyond the current vector</font>
00365 <font class="keyword">const</font> const_iterator toInsertSplit = theFirst + theRightSplitSize;
00366 const_iterator toInsertIter = toInsertSplit;
00367
00368 <font class="keywordflow">while</font> (toInsertIter != theLast)
00369 {
00370 doPushBack(*toInsertIter);
00371
00372 ++toInsertIter;
00373 }
00374
00375 <font class="comment">// copy the "right" of the current vector to the end</font>
00376 toInsertIter = thePosition;
00377 <font class="keywordflow">while</font> (toInsertIter != theOriginalEnd)
00378 {
00379 doPushBack(*toInsertIter);
00380
00381 ++toInsertIter;
00382 }
00383
00384 <font class="comment">// copy the remaining part of inserted range into </font>
00385 <font class="comment">// the original vector spaces</font>
00386 XALAN_STD_QUALIFIER copy(theFirst, toInsertSplit, thePosition);
00387 }
00388 <font class="keywordflow">else</font>
00389 {
00390 <font class="comment">// inserted range will not extend beyond edge of current vector</font>
00391
00392 <font class="comment">// move end of current vector by insertion size</font>
00393 const_iterator toMoveIter = end() - theInsertSize;
00394
00395 <font class="keywordflow">while</font> (toMoveIter != theOriginalEnd)
00396 {
00397 doPushBack(*toMoveIter);
00398
00399 ++toMoveIter;
00400 }
00401
00402 <font class="comment">// reverse copy the remaining part of the "right" piece of the current vector</font>
00403 XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theInsertSize, theOriginalEnd);
00404
00405 <font class="comment">// insert into current vector</font>
00406 XALAN_STD_QUALIFIER copy(theFirst, theLast, thePosition);
00407 }
00408 }
00409 }
00410
00411 invariants();
00412 }
00413
00414 <font class="keywordtype">void</font>
00415 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(
00416 iterator thePosition,
00417 size_type theCount,
00418 <font class="keyword">const</font> value_type&amp; theData)<font class="keyword"></font>
00419 <font class="keyword"> </font>{
00420 invariants();
00421
00422 <font class="keyword">const</font> size_type theTotalSize = size() + theCount;
00423
00424 <font class="comment">// Needs to be optimized</font>
00425 <font class="keywordflow">if</font> (thePosition == end())
00426 {
00427 pointer thePointer = ensureCapacity(theTotalSize);
00428
00429 <font class="keywordflow">for</font> (size_type index = 0; index &lt; theCount; ++index)
00430 {
00431 Constructor::construct(thePointer, theData, *m_memoryManager);
00432
00433 ++thePointer;
00434 ++m_size;
00435 }
00436 }
00437 <font class="keywordflow">else</font>
00438 {
00439 <font class="keywordflow">if</font> (theTotalSize &gt; capacity())
00440 {
00441 assert ( m_memoryManager != 0 );
00442
00443 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(*m_memoryManager, theTotalSize);
00444
00445 <font class="comment">// insert everything up to the position...</font>
00446 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), begin(), thePosition);
00447
00448 <font class="comment">// insert the new stuff...</font>
00449 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), theCount, theData);
00450
00451 <font class="comment">// insert everything from the position to the end...</font>
00452 theTemp.<a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theTemp.<a class="code" href="classXalanDeque.html#a5">end</a>(), thePosition, end());
00453
00454 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00455 }
00456 <font class="keywordflow">else</font>
00457 {
00458 <font class="comment">// insert into the middle of the vector that has enough capacity </font>
00459 <font class="keyword">const</font> iterator theOriginalEnd = end();
00460
00461 <font class="keyword">const</font> size_type theRightSplitSize =
00462 local_distance(thePosition, theOriginalEnd);
00463
00464 <font class="keywordflow">if</font> (theRightSplitSize &lt;= theCount)
00465 {
00466 <font class="comment">// inserted range will go to or beyond edge of current vector</font>
00467
00468 <font class="comment">// append all copies that will extend </font>
00469 <font class="comment">// beyond the current vector</font>
00470 <font class="keywordflow">for</font> (size_type i = 0; i &lt; (theCount - theRightSplitSize); ++i)
00471 {
00472 doPushBack(theData);
00473 }
00474
00475 <font class="comment">// copy the "right" of the current vector to the end</font>
00476 iterator toInsertIter = thePosition;
00477
00478 <font class="keywordflow">while</font> (toInsertIter != theOriginalEnd)
00479 {
00480 doPushBack(*toInsertIter);
00481
00482 ++toInsertIter;
00483 }
00484
00485 <font class="comment">// copy the remaining part of inserted range into </font>
00486 <font class="comment">// the original vector spaces</font>
00487 XALAN_STD_QUALIFIER fill(thePosition, thePosition + theRightSplitSize, theData);
00488 }
00489 <font class="keywordflow">else</font>
00490 {
00491 <font class="comment">// inserted range will not extend beyond edge of current vector</font>
00492
00493 <font class="comment">// move end of current vector by insertion size</font>
00494 const_iterator toMoveIter = end() - theCount;
00495
00496 <font class="keywordflow">while</font> (toMoveIter != theOriginalEnd)
00497 {
00498 doPushBack(*toMoveIter);
00499
00500 ++toMoveIter;
00501 }
00502
00503 <font class="comment">// reverse copy the remaining part of the "right" piece of the current vector</font>
00504 XALAN_STD_QUALIFIER copy_backward(thePosition, theOriginalEnd - theCount, theOriginalEnd);
00505
00506 <font class="comment">// insert into current vector</font>
00507 XALAN_STD_QUALIFIER fill(thePosition, thePosition + theCount, theData);
00508 }
00509 }
00510 }
00511
00512 invariants();
00513 }
00514
00515 iterator
00516 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(
00517 iterator thePosition,
00518 <font class="keyword">const</font> value_type&amp; theData)<font class="keyword"></font>
00519 <font class="keyword"> </font>{
00520 <font class="keywordflow">if</font> (m_allocation &gt; m_size)
00521 {
00522 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(thePosition, 1, theData);
00523
00524 <font class="keywordflow">return</font> thePosition;
00525 }
00526 <font class="keywordflow">else</font>
00527 {
00528 <font class="keyword">const</font> size_type theDistance =
00529 local_distance(begin(), thePosition);
00530
00531 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(thePosition, 1, theData);
00532
00533 <font class="keywordflow">return</font> begin() + theDistance;
00534 }
00535 }
00536
00537 <font class="keywordtype">void</font>
00538 <a class="code" href="DOMStringHelper_8hpp.html#a72">assign</a>(
00539 const_iterator theFirst,
00540 const_iterator theLast)<font class="keyword"></font>
00541 <font class="keyword"> </font>{
00542 <a class="code" href="DOMStringHelper_8hpp.html#a80">clear</a>();
00543
00544 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(
00545 begin(),
00546 theFirst,
00547 theLast);
00548 }
00549
00550 <font class="keywordtype">void</font>
00551 <a class="code" href="DOMStringHelper_8hpp.html#a72">assign</a>(
00552 iterator theFirst,
00553 iterator theLast)<font class="keyword"></font>
00554 <font class="keyword"> </font>{
00555 <a class="code" href="DOMStringHelper_8hpp.html#a72">assign</a>(
00556 const_iterator(theFirst),
00557 const_iterator(theLast));
00558 }
00559
00560 <font class="keywordtype">void</font>
00561 <a class="code" href="DOMStringHelper_8hpp.html#a72">assign</a>(
00562 size_type theCount,
00563 <font class="keyword">const</font> value_type&amp; theData)<font class="keyword"></font>
00564 <font class="keyword"> </font>{
00565 <a class="code" href="DOMStringHelper_8hpp.html#a80">clear</a>();
00566
00567 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(theCount, theData);
00568 }
00569
00570 size_type
00571 size()<font class="keyword"> const</font>
00572 <font class="keyword"> </font>{
00573 invariants();
00574
00575 <font class="keywordflow">return</font> m_size;
00576 }
00577
00578 size_type
00579 max_size()<font class="keyword"> const</font>
00580 <font class="keyword"> </font>{
00581 invariants();
00582
00583 <font class="keywordflow">return</font> ~size_type(0);
00584 }
00585
00586 <font class="keywordtype">void</font>
00587 resize(size_type theSize)<font class="keyword"></font>
00588 <font class="keyword"> </font>{
00589 <font class="keyword">const</font> ConstructibleType defaultValue(*m_memoryManager);
00590
00591 resize(theSize, defaultValue.value);
00592 }
00593
00594 <font class="keywordtype">void</font>
00595 resize( size_type theSize,
00596 <font class="keyword">const</font> value_type&amp; theValue)<font class="keyword"></font>
00597 <font class="keyword"> </font>{
00598 invariants();
00599
00600 <font class="keywordflow">if</font> (m_size &gt; theSize)
00601 {
00602 shrinkToSize(theSize);
00603 }
00604 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (m_size &lt; theSize)
00605 {
00606 <font class="comment">// Reserve memory up-front...</font>
00607 <a class="code" href="DOMStringHelper_8hpp.html#a11">reserve</a>(theSize);
00608
00609 assert(m_allocation &gt;= theSize);
00610
00611 <font class="keyword">const</font> value_type* <font class="keyword">const</font> theEnd = m_data + theSize;
00612
00613 <font class="comment">// Fill the new area...</font>
00614 <font class="keywordflow">for</font> (value_type* data = endPointer();
00615 data != theEnd;
00616 ++data, ++m_size)
00617 {
00618 Constructor::construct(data, theValue, *m_memoryManager);
00619 }
00620 }
00621
00622 assert(m_size == theSize);
00623
00624 invariants();
00625 }
00626
00627 size_type
00628 capacity()<font class="keyword"> const</font>
00629 <font class="keyword"> </font>{
00630 invariants();
00631
00632 <font class="keywordflow">return</font> m_allocation;
00633 }
00634
00635 <font class="keywordtype">bool</font>
00636 empty()<font class="keyword"> const</font>
00637 <font class="keyword"> </font>{
00638 invariants();
00639
00640 <font class="keywordflow">return</font> m_size == 0 ? <font class="keyword">true</font> : <font class="keyword">false</font>;
00641 }
00642
00643 <font class="keywordtype">void</font>
00644 <a class="code" href="DOMStringHelper_8hpp.html#a11">reserve</a>(size_type theSize)<font class="keyword"></font>
00645 <font class="keyword"> </font>{
00646 invariants();
00647
00648 <font class="keywordflow">if</font> (theSize &gt; m_allocation)
00649 {
00650 doReserve(theSize);
00651 }
00652
00653 invariants();
00654 }
00655
00656 reference
00657 front()<font class="keyword"></font>
00658 <font class="keyword"> </font>{
00659 invariants();
00660
00661 <font class="keywordflow">return</font> m_data[0];
00662 }
00663
00664 const_reference
00665 front()<font class="keyword"> const</font>
00666 <font class="keyword"> </font>{
00667 invariants();
00668
00669 <font class="keywordflow">return</font> m_data[0];
00670 }
00671
00672 reference
00673 back()<font class="keyword"></font>
00674 <font class="keyword"> </font>{
00675 <font class="keywordflow">return</font> m_data[m_size - 1];
00676 }
00677
00678 const_reference
00679 back()<font class="keyword"> const</font>
00680 <font class="keyword"> </font>{
00681 <font class="keywordflow">return</font> m_data[m_size - 1];
00682 }
00683
00684 iterator
00685 begin()<font class="keyword"></font>
00686 <font class="keyword"> </font>{
00687 invariants();
00688
00689 <font class="keywordflow">return</font> m_data;
00690 }
00691
00692 const_iterator
00693 begin()<font class="keyword"> const</font>
00694 <font class="keyword"> </font>{
00695 invariants();
00696
00697 <font class="keywordflow">return</font> m_data;
00698 }
00699
00700 iterator
00701 end()<font class="keyword"></font>
00702 <font class="keyword"> </font>{
00703 invariants();
00704
00705 <font class="keywordflow">return</font> endPointer();
00706 }
00707
00708 const_iterator
00709 end()<font class="keyword"> const</font>
00710 <font class="keyword"> </font>{
00711 invariants();
00712
00713 <font class="keywordflow">return</font> endPointer();
00714 }
00715
00716 reverse_iterator
00717 rbegin()<font class="keyword"></font>
00718 <font class="keyword"> </font>{
00719 invariants();
00720
00721 <font class="keywordflow">return</font> reverse_iterator(end());
00722 }
00723
00724 const_reverse_iterator
00725 rbegin()<font class="keyword"> const</font>
00726 <font class="keyword"> </font>{
00727 invariants();
00728
00729 <font class="keywordflow">return</font> const_reverse_iterator(end());
00730 }
00731
00732 reverse_iterator
00733 rend()<font class="keyword"></font>
00734 <font class="keyword"> </font>{
00735 invariants();
00736
00737 <font class="keywordflow">return</font> reverse_iterator(begin());
00738 }
00739
00740 const_reverse_iterator
00741 rend()<font class="keyword"> const</font>
00742 <font class="keyword"> </font>{
00743 invariants();
00744
00745 <font class="keywordflow">return</font> const_reverse_iterator(begin());
00746 }
00747
00748
00749 reference
00750 at(size_type theIndex)<font class="keyword"></font>
00751 <font class="keyword"> </font>{
00752 <font class="keywordflow">if</font> (theIndex &gt;= m_size)
00753 {
00754 outOfRange();
00755 }
00756
00757 <font class="keywordflow">return</font> m_data[theIndex];
00758 }
00759
00760 const_reference
00761 at(size_type theIndex)<font class="keyword"> const</font>
00762 <font class="keyword"> </font>{
00763 <font class="keywordflow">if</font> (theIndex &gt;= m_size)
00764 {
00765 outOfRange();
00766 }
00767
00768 <font class="keywordflow">return</font> m_data[theIndex];
00769 }
00770
00771 reference
00772 operator[](size_type theIndex)<font class="keyword"></font>
00773 <font class="keyword"> </font>{
00774 assert (theIndex &lt; m_size);
00775
00776 <font class="keywordflow">return</font> m_data[theIndex];
00777 }
00778
00779 const_reference
00780 operator[](size_type theIndex)<font class="keyword"> const</font>
00781 <font class="keyword"> </font>{
00782 assert (theIndex &lt; m_size);
00783
00784 <font class="keywordflow">return</font> m_data[theIndex];
00785 }
00786
00787 <font class="keywordtype">void</font>
00788 <a class="code" href="DOMStringHelper_8hpp.html#a80">clear</a>()<font class="keyword"></font>
00789 <font class="keyword"> </font>{
00790 invariants();
00791
00792 <font class="keywordflow">if</font> (m_size &gt; 0)
00793 {
00794 shrinkToSize(0);
00795 }
00796
00797 invariants();
00798 }
00799
00800 <font class="comment">// Operators...</font>
00801 <a class="code" href="classXalanDeque.html">ThisType</a>&amp;
00802 operator=(<font class="keyword">const</font> <a class="code" href="classXalanDeque.html">ThisType</a>&amp; theRHS)<font class="keyword"></font>
00803 <font class="keyword"> </font>{
00804 invariants();
00805
00806 <font class="keywordflow">if</font> (&amp;theRHS != <font class="keyword">this</font>)
00807 {
00808 <font class="keywordflow">if</font> (m_allocation &lt; theRHS.m_size)
00809 {
00810 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(theRHS,*m_memoryManager);
00811
00812 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
00813 }
00814 <font class="keywordflow">else</font>
00815 {
00816 const_iterator theRHSCopyEnd = theRHS.<a class="code" href="classXalanDeque.html#a5">end</a>();
00817
00818 <font class="keywordflow">if</font> (m_size &gt; theRHS.m_size)
00819 {
00820 <font class="comment">// Resize to the target size...</font>
00821 shrinkToSize(theRHS.m_size);
00822 }
00823 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (m_size &lt; theRHS.m_size)
00824 {
00825 theRHSCopyEnd =
00826 theRHS.<a class="code" href="classXalanDeque.html#a3">begin</a>() + m_size;
00827
00828 <a class="code" href="DOMStringHelper_8hpp.html#a79">insert</a>(
00829 end(),
00830 theRHSCopyEnd,
00831 theRHS.<a class="code" href="classXalanDeque.html#a5">end</a>());
00832 }
00833
00834 <font class="comment">// Copy everything that already exists...</font>
00835 XALAN_STD_QUALIFIER copy(
00836 theRHS.<a class="code" href="classXalanDeque.html#a3">begin</a>(),
00837 theRHSCopyEnd,
00838 begin());
00839 }
00840 }
00841
00842 invariants();
00843
00844 <font class="keywordflow">return</font> *<font class="keyword">this</font>;
00845 }
00846
00847 <font class="keywordtype">void</font>
00848 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(<a class="code" href="classXalanDeque.html">ThisType</a>&amp; theOther)<font class="keyword"></font>
00849 <font class="keyword"> </font>{
00850 invariants();
00851
00852 MemoryManager* <font class="keyword">const</font> theTempManager = m_memoryManager;
00853 <font class="keyword">const</font> size_type theTempLength = m_size;
00854 <font class="keyword">const</font> size_type theTempAllocation = m_allocation;
00855 value_type* <font class="keyword">const</font> theTempData = m_data;
00856
00857 m_memoryManager = theOther.m_memoryManager;
00858 m_size = theOther.m_size;
00859 m_allocation = theOther.m_allocation;
00860 m_data = theOther.m_data;
00861
00862 theOther.m_memoryManager = theTempManager;
00863 theOther.m_size = theTempLength;
00864 theOther.m_allocation = theTempAllocation;
00865 theOther.m_data = theTempData;
00866
00867 invariants();
00868 }
00869
00870 <font class="keyword">const</font> MemoryManager*
00871 getMemoryManager()<font class="keyword"> const</font>
00872 <font class="keyword"> </font>{
00873 <font class="keywordflow">return</font> m_memoryManager;
00874 }
00875
00876 MemoryManager&amp;
00877 getMemoryManager()<font class="keyword"></font>
00878 <font class="keyword"> </font>{
00879 assert (m_memoryManager != 0);
00880
00881 <font class="keywordflow">return</font> *m_memoryManager;
00882 }
00883
00884 <font class="comment">// Detaches the allocated memory from the vector, and returns</font>
00885 <font class="comment">// the pointer to the caller. The caller then owns the memory</font>
00886 <font class="comment">// and must destroy any objects and deallocate it using the</font>
00887 <font class="comment">// the memory manager returned from getMemoryManager()</font>
00888 pointer
00889 detach()<font class="keyword"></font>
00890 <font class="keyword"> </font>{
00891 m_size = 0;
00892 m_allocation = 0;
00893
00894 value_type* <font class="keyword">const</font> theTemp = m_data;
00895
00896 m_data = 0;
00897
00898 <font class="keywordflow">return</font> theTemp;
00899 }
00900
00901 <font class="keyword">private</font>:
00902
00903 <font class="preprocessor">#if defined(NDEBUG)</font>
00904 <font class="preprocessor"></font> <font class="keywordtype">void</font>
00905 invariants()<font class="keyword"> const</font>
00906 <font class="keyword"> </font>{
00907 }
00908 <font class="preprocessor">#else</font>
00909 <font class="preprocessor"></font> <font class="keywordtype">void</font>
00910 invariants()<font class="keyword"> const</font>
00911 <font class="keyword"> </font>{
00912 assert(m_allocation &gt;= m_size);
00913 assert(m_data == 0 &amp;&amp; m_allocation == 0 || m_data != 0 &amp;&amp; m_allocation != 0);
00914 }
00915 <font class="preprocessor">#endif</font>
00916 <font class="preprocessor"></font>
00917 size_type
00918 local_distance(
00919 const_iterator theFirst,
00920 const_iterator theLast)<font class="keyword"></font>
00921 <font class="keyword"> </font>{
00922 <font class="comment">// Since we're using bare pointers for now, we can</font>
00923 <font class="comment">// assert this...</font>
00924 assert(theFirst &lt;= theLast);
00925
00926 <font class="preprocessor">#if defined(XALAN_HAS_STD_DISTANCE)</font>
00927 <font class="preprocessor"></font> <font class="keywordflow">return</font> XALAN_STD_QUALIFIER distance(theFirst, theLast);
00928 <font class="preprocessor">#else</font>
00929 <font class="preprocessor"></font> size_type theDistance;
00930
00931 XALAN_STD_QUALIFIER distance(theFirst, theLast, theDistance);
00932
00933 <font class="keywordflow">return</font> theDistance;
00934 <font class="preprocessor">#endif</font>
00935 <font class="preprocessor"></font> }
00936
00937 value_type*
00938 allocate(size_type size)<font class="keyword"></font>
00939 <font class="keyword"> </font>{
00940 <font class="keyword">const</font> size_type theBytesNeeded = size * <font class="keyword">sizeof</font>(value_type);
00941
00942 assert (m_memoryManager != 0);
00943
00944 <font class="keywordtype">void</font>* pointer = m_memoryManager-&gt;allocate(theBytesNeeded);
00945
00946 assert(pointer != 0);
00947
00948 <font class="keywordflow">return</font> (value_type*) pointer;
00949 }
00950
00951 <font class="keywordtype">void</font>
00952 deallocate(value_type* pointer)<font class="keyword"></font>
00953 <font class="keyword"> </font>{
00954 assert(m_memoryManager != 0);
00955
00956 m_memoryManager-&gt;deallocate(pointer);
00957
00958 }
00959
00960 <font class="keyword">static</font> <font class="keywordtype">void</font>
00961 destroy(value_type&amp; theValue)<font class="keyword"></font>
00962 <font class="keyword"> </font>{
00963 theValue.~Type();
00964 }
00965
00966 <font class="keyword">static</font> <font class="keywordtype">void</font>
00967 destroy(
00968 iterator theFirst,
00969 iterator theLast)<font class="keyword"></font>
00970 <font class="keyword"> </font>{
00971 <font class="keywordflow">for</font>(; theFirst != theLast; ++theFirst)
00972 {
00973 destroy(*theFirst);
00974 }
00975 }
00976
00977 <font class="keywordtype">void</font>
00978 doPushBack(<font class="keyword">const</font> value_type&amp; data)<font class="keyword"></font>
00979 <font class="keyword"> </font>{
00980 invariants();
00981
00982 <font class="keywordflow">if</font> (m_size &lt; m_allocation)
00983 {
00984 Constructor::construct(endPointer(), data, *m_memoryManager);
00985
00986 ++m_size;
00987 }
00988 <font class="keywordflow">else</font>
00989 {
00990 assert(m_size == m_allocation);
00991
00992 <font class="keyword">const</font> size_type theNewSize = m_size == 0 ? 1 : <a class="code" href="XalanMap_8hpp.html#a1">size_type</a>((m_size * 1.6) + 0.5);
00993 assert(theNewSize &gt; m_size);
00994
00995 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(*<font class="keyword">this</font>, *m_memoryManager, theNewSize);
00996
00997 theTemp.doPushBack(data);
00998
00999 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
01000 }
01001
01002 invariants();
01003 }
01004
01005 pointer
01006 ensureCapacity(size_type theSize)<font class="keyword"></font>
01007 <font class="keyword"> </font>{
01008 <font class="keywordflow">if</font> (theSize &gt; capacity())
01009 {
01010 doReserve(theSize);
01011 }
01012
01013 <font class="keywordflow">return</font> endPointer();
01014 }
01015
01016 <font class="keywordtype">void</font>
01017 doReserve(size_type theSize)<font class="keyword"></font>
01018 <font class="keyword"> </font>{
01019 invariants();
01020
01021 assert(theSize &gt; m_allocation);
01022
01023 <a class="code" href="classXalanDeque.html">ThisType</a> theTemp(*<font class="keyword">this</font>, *m_memoryManager, theSize);
01024
01025 <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theTemp);
01026
01027 invariants();
01028 }
01029
01030 pointer
01031 endPointer()<font class="keyword"></font>
01032 <font class="keyword"> </font>{
01033 <font class="keywordflow">return</font> m_data + m_size;
01034 }
01035
01036 const_pointer
01037 endPointer()<font class="keyword"> const</font>
01038 <font class="keyword"> </font>{
01039 <font class="keywordflow">return</font> m_data + m_size;
01040 }
01041
01042 <font class="keyword">static</font> <font class="keywordtype">void</font>
01043 outOfRange()<font class="keyword"></font>
01044 <font class="keyword"> </font>{
01045 <font class="keywordflow">throw</font> XALAN_STD_QUALIFIER out_of_range(<font class="stringliteral">""</font>);
01046 }
01047
01048 <font class="keywordtype">void</font>
01049 shrinkToSize(size_type theSize)<font class="keyword"></font>
01050 <font class="keyword"> </font>{
01051 assert(m_size &gt; theSize);
01052
01053 <font class="keywordflow">do</font>
01054 {
01055 pop_back();
01056 } <font class="keywordflow">while</font> (m_size &gt; theSize);
01057 }
01058
01059 <font class="keywordtype">void</font>
01060 shrinkCount(size_type theCount)<font class="keyword"></font>
01061 <font class="keyword"> </font>{
01062 assert(m_size &gt;= theCount);
01063
01064 <font class="keywordflow">while</font> (theCount &gt; 0)
01065 {
01066 pop_back();
01067
01068 --theCount;
01069 }
01070 }
01071
01072 size_type
01073 local_max(
01074 size_type theLHS,
01075 size_type theRHS)<font class="keyword"></font>
01076 <font class="keyword"> </font>{
01077 <font class="keywordflow">return</font> theLHS &gt; theRHS ? theLHS : theRHS;
01078 }
01079
01080 <font class="preprocessor">#if defined(XALAN_DEVELOPMENT)</font>
01081 <font class="preprocessor"></font> <font class="comment">//not implemented</font>
01082 XalanVector(<font class="keyword">const</font> XalanVector&amp;);
01083 XalanVector();
01084 <font class="preprocessor">#endif</font>
01085 <font class="preprocessor"></font>
01086 <font class="comment">// Data members...</font>
01087 MemoryManager* m_memoryManager;
01088
01089 size_type m_size;
01090
01091 size_type m_allocation;
01092
01093 value_type* m_data;
01094 };
01095
01096
01097
01098 template &lt;class Type&gt;
01099 <font class="keyword">inline</font> <font class="keywordtype">void</font>
<a name="l01100"></a><a class="code" href="XalanVector_8hpp.html#a2">01100</a> <a class="code" href="XalanVector_8hpp.html#a2">swap</a>(
01101 XalanVector&lt;Type&gt;&amp; theLHS,
01102 XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01103 <font class="keyword"></font>{
01104 theLHS.<a class="code" href="XalanVector_8hpp.html#a2">swap</a>(theRHS);
01105 }
01106
01107
01108
01109 template &lt;class Type&gt;
01110 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01111"></a><a class="code" href="XalanVector_8hpp.html#a3">01111</a> <a class="code" href="ElemAttributeSet_8hpp.html#a1">operator==</a>(
01112 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01113 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01114 <font class="keyword"></font>{
01115 <font class="keywordflow">if</font> (theLHS.size() != theRHS.size())
01116 {
01117 <font class="keywordflow">return</font> <font class="keyword">false</font>;
01118 }
01119 <font class="keywordflow">else</font> <font class="keywordflow">if</font> (theLHS.size() == 0)
01120 {
01121 <font class="keywordflow">return</font> <font class="keyword">true</font>;
01122 }
01123 <font class="keywordflow">else</font>
01124 {
01125 <font class="keywordflow">return</font> XALAN_STD_QUALIFIER equal(theLHS.begin(), theLHS.end(), theRHS.begin());
01126 }
01127 }
01128
01129
01130
01131 template &lt;class Type&gt;
01132 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01133"></a><a class="code" href="XalanVector_8hpp.html#a4">01133</a> <a class="code" href="XObject_8hpp.html#a3">operator!=</a>(
01134 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01135 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01136 <font class="keyword"></font>{
01137 <font class="keywordflow">return</font> !(theLHS == theRHS);
01138 }
01139
01140
01141
01142 template &lt;class Type&gt;
01143 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01144"></a><a class="code" href="XalanVector_8hpp.html#a5">01144</a> <a class="code" href="ElemAttributeSet_8hpp.html#a2">operator&lt;</a>(
01145 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01146 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01147 <font class="keyword"></font>{
01148 <font class="keywordflow">return</font> XALAN_STD_QUALIFIER lexicographical_compare(
01149 theLHS.begin(),
01150 theLHS.end(),
01151 theRHS.begin(),
01152 theRHS.end());
01153 }
01154
01155
01156
01157 template &lt;class Type&gt;
01158 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01159"></a><a class="code" href="XalanVector_8hpp.html#a6">01159</a> <a class="code" href="XalanVector_8hpp.html#a6">operator&lt;=</a>(
01160 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01161 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01162 <font class="keyword"></font>{
01163 <font class="keywordflow">return</font> !(theRHS &lt; theLHS);
01164 }
01165
01166
01167
01168 template &lt;class Type&gt;
01169 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01170"></a><a class="code" href="XalanVector_8hpp.html#a7">01170</a> <a class="code" href="XalanVector_8hpp.html#a7">operator&gt;</a>(
01171 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01172 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01173 <font class="keyword"></font>{
01174 <font class="keywordflow">return</font> theRHS &lt; theLHS;
01175 }
01176
01177
01178
01179 template &lt;class Type&gt;
01180 <font class="keyword">inline</font> <font class="keywordtype">bool</font>
<a name="l01181"></a><a class="code" href="XalanVector_8hpp.html#a8">01181</a> <a class="code" href="XalanVector_8hpp.html#a8">operator&gt;=</a>(
01182 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theLHS,
01183 <font class="keyword">const</font> XalanVector&lt;Type&gt;&amp; theRHS)<font class="keyword"></font>
01184 <font class="keyword"></font>{
01185 <font class="keywordflow">return</font> !(theLHS &lt; theRHS);
01186 }
01187
01188
01189
01190 <font class="preprocessor">#if defined(_MSC_VER)</font>
01191 <font class="preprocessor"></font><font class="preprocessor">#pragma warning(pop)</font>
01192 <font class="preprocessor"></font><font class="preprocessor">#endif</font>
01193 <font class="preprocessor"></font>
01194
01195
01196 XALAN_CPP_NAMESPACE_END
01197
01198
01199
01200 <font class="preprocessor">#endif // XALANVECTOR_HEADER_GUARD_1357924680</font>
</font></pre></div><p align="center"><a href="diagramnotes.html">Interpreting class diagrams</a></p>
<p><FONT color="#000000" face="arial,helvetica,sanserif" size="-1">
<i><A href="http://www.stack.nl/~dimitri/doxygen/">Doxygen</A> and
<A href="http://www.research.att.com/sw/tools/graphviz/">GraphViz</A> are used to generate this API documentation from the Xalan-C header files.</I></FONT></p>
<TABLE border="0" cellpadding="0" cellspacing="0" width="820"><TR><TD bgcolor="#0086b2"><IMG height="1" src="../resources/dot.gif" width="1" alt="dot"></TD></TR></TABLE>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH="80%">
<TR>
<TD WIDTH="80%" VALIGN="TOP">
<P ALIGN="CENTER"><B>Xalan-C++ XSLT Processor Version 1.10</B><BR>
Copyright &copy; 1999-2004 The Apache Software Foundation. All Rights Reserved.</i></p>
</TD>
</TR>
<TR>
<TD WIDTH="100%">
<P ALIGN="CENTER"><IMG SRC="ApacheLogo.jpg" WIDTH="387" HEIGHT="100" ALIGN="BOTTOM" BORDER="0" ALT="Apache Logo">
</TD>
</TR>
</TABLE>