<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1">
<title>FTGL: FTVector.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.3.6 -->
<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">Data&nbsp;Structures</a> | <a class="qindex" href="files.html">File&nbsp;List</a> | <a class="qindex" href="functions.html">Data&nbsp;Fields</a> | <a class="qindex" href="globals.html">Globals</a></div>
<h1>FTVector.h</h1><a href="FTVector_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="preprocessor">#ifndef    __FTVector__</span>
00002 <span class="preprocessor"></span><span class="preprocessor">#define    __FTVector__</span>
00003 <span class="preprocessor"></span>
00004 <span class="preprocessor">#include "<a class="code" href="FTGL_8h.html">FTGL.h</a>"</span>
00005 
00009 <span class="keyword">template</span> &lt;<span class="keyword">typename</span> FT_VECTOR_ITEM_TYPE&gt;
<a name="l00010"></a><a class="code" href="classFTVector.html">00010</a> <span class="keyword">class </span><a class="code" href="FTGL_8h.html#a3">FTGL_EXPORT</a> FTVector
00011 {
00012     <span class="keyword">public</span>:
<a name="l00013"></a><a class="code" href="classFTVector.html#w0">00013</a>         <span class="keyword">typedef</span> FT_VECTOR_ITEM_TYPE value_type;
<a name="l00014"></a><a class="code" href="classFTVector.html#w1">00014</a>         <span class="keyword">typedef</span> value_type&amp; reference;
<a name="l00015"></a><a class="code" href="classFTVector.html#w2">00015</a>         <span class="keyword">typedef</span> <span class="keyword">const</span> value_type&amp; const_reference;
<a name="l00016"></a><a class="code" href="classFTVector.html#w3">00016</a>         <span class="keyword">typedef</span> value_type* iterator;
<a name="l00017"></a><a class="code" href="classFTVector.html#w4">00017</a>         <span class="keyword">typedef</span> <span class="keyword">const</span> value_type* const_iterator;
<a name="l00018"></a><a class="code" href="classFTVector.html#w5">00018</a>         <span class="keyword">typedef</span> size_t size_type;
00019         
<a name="l00020"></a><a class="code" href="classFTVector.html#a0">00020</a>         FTVector()
00021         {
00022             Capacity = Size = 0;
00023             Items = 0;
00024         }
00025 
00026         
<a name="l00027"></a><a class="code" href="classFTVector.html#a1">00027</a>         <span class="keyword">virtual</span> ~FTVector()
00028         {
00029             clear();
00030         }
00031         
<a name="l00032"></a><a class="code" href="classFTVector.html#a2">00032</a>         FTVector&amp; operator =(<span class="keyword">const</span> FTVector&amp; v)
00033         {
00034             reserve(v.<a class="code" href="classFTVector.html#a4">capacity</a>());
00035             
00036             iterator ptr = begin();
00037             const_iterator vbegin = v.<a class="code" href="classFTVector.html#a5">begin</a>();
00038             const_iterator vend = v.<a class="code" href="classFTVector.html#a7">end</a>();
00039             
00040             <span class="keywordflow">while</span>( vbegin != vend)
00041             {
00042                 *ptr++ = *vbegin++;
00043             }
00044             
00045             Size = v.<a class="code" href="classFTVector.html#a3">size</a>();
00046             <span class="keywordflow">return</span> *<span class="keyword">this</span>;
00047         }
00048         
<a name="l00049"></a><a class="code" href="classFTVector.html#a3">00049</a>         size_type size()<span class="keyword"> const</span>
00050 <span class="keyword">        </span>{
00051             <span class="keywordflow">return</span> Size;
00052         }
00053         
<a name="l00054"></a><a class="code" href="classFTVector.html#a4">00054</a>         size_type capacity()<span class="keyword"> const</span>
00055 <span class="keyword">        </span>{
00056             <span class="keywordflow">return</span> Capacity;
00057         }
00058         
<a name="l00059"></a><a class="code" href="classFTVector.html#a5">00059</a>         iterator begin()
00060         {
00061             <span class="keywordflow">return</span> Items;
00062         }
00063         
<a name="l00064"></a><a class="code" href="classFTVector.html#a6">00064</a>         const_iterator begin()<span class="keyword"> const</span>
00065 <span class="keyword">        </span>{
00066             <span class="keywordflow">return</span> Items;
00067         }
00068         
<a name="l00069"></a><a class="code" href="classFTVector.html#a7">00069</a>         iterator end()
00070         {
00071             <span class="keywordflow">return</span> begin() + size(); 
00072         }
00073         
<a name="l00074"></a><a class="code" href="classFTVector.html#a8">00074</a>         const_iterator end()<span class="keyword"> const</span>
00075 <span class="keyword">        </span>{
00076             <span class="keywordflow">return</span> begin() + size(); 
00077         }
00078         
<a name="l00079"></a><a class="code" href="classFTVector.html#a9">00079</a>         <span class="keywordtype">bool</span> empty()<span class="keyword"> const </span>
00080 <span class="keyword">        </span>{ 
00081             <span class="keywordflow">return</span> size() == 0; 
00082         }
00083 
<a name="l00084"></a><a class="code" href="classFTVector.html#a10">00084</a>         reference operator [](size_type pos) 
00085         { 
00086             <span class="keywordflow">return</span>( *(begin() + pos)); 
00087         }
00088 
<a name="l00089"></a><a class="code" href="classFTVector.html#a11">00089</a>         const_reference operator []( size_type pos)<span class="keyword"> const </span>
00090 <span class="keyword">        </span>{ 
00091             <span class="keywordflow">return</span>( *(begin() + pos)); 
00092         }
00093         
<a name="l00094"></a><a class="code" href="classFTVector.html#a12">00094</a>         <span class="keywordtype">void</span> clear()
00095         {
00096             <span class="keywordflow">if</span>( Capacity)
00097             {
00098                 <span class="keyword">delete</span> [] Items;
00099                 Capacity = Size = 0;
00100                 Items = 0;
00101             }
00102         }
00103 
<a name="l00104"></a><a class="code" href="classFTVector.html#a13">00104</a>         <span class="keywordtype">void</span> reserve( size_type n)
00105         {
00106             <span class="keywordflow">if</span>( capacity() &lt; n)
00107             {
00108                 expand(n);
00109             }
00110         }
00111 
<a name="l00112"></a><a class="code" href="classFTVector.html#a14">00112</a>         <span class="keywordtype">void</span> push_back(<span class="keyword">const</span> value_type&amp; x)
00113         {
00114             <span class="keywordflow">if</span>( size() == capacity())
00115             {
00116                 expand();
00117             }
00118            
00119            ( *this)[size()] = x;
00120             ++Size;
00121         }
00122 
<a name="l00123"></a><a class="code" href="classFTVector.html#a15">00123</a>         <span class="keywordtype">void</span> resize(size_type n, value_type x)
00124         {
00125             <span class="keywordflow">if</span>( n == size())
00126             {
00127                 <span class="keywordflow">return</span>;
00128             }
00129             
00130             reserve(n);
00131             iterator begin, end;
00132             
00133             <span class="keywordflow">if</span>( n &gt;= Size)
00134             {
00135                 begin = this-&gt;end();
00136                 end = this-&gt;begin() + n;
00137             }
00138             <span class="keywordflow">else</span>
00139             {
00140                 begin = this-&gt;begin() + n;
00141                 end = this-&gt;end();
00142             }
00143         
00144             <span class="keywordflow">while</span>( begin != end)
00145             {
00146                 *begin++ = x;
00147             }
00148         
00149             Size = n;
00150         }
00151 
00152         
00153     <span class="keyword">private</span>:
00154         <span class="keywordtype">void</span> expand(size_type capacity_hint = 0)
00155         {
00156             size_type new_capacity =( capacity() == 0) ? 256 : capacity()* 2;
00157             <span class="keywordflow">if</span>( capacity_hint)
00158             {
00159                 <span class="keywordflow">while</span>( new_capacity &lt; capacity_hint)
00160                 {
00161                     new_capacity *= 2;
00162                 }
00163             }
00164             
00165             value_type *new_items = <span class="keyword">new</span> value_type[new_capacity];
00166             
00167             iterator begin = this-&gt;begin();
00168             iterator end = this-&gt;end();
00169             value_type *ptr = new_items;
00170             
00171             <span class="keywordflow">while</span>( begin != end)
00172             {
00173                 *ptr++ = *begin++;
00174             }
00175             
00176             <span class="keywordflow">if</span>( Capacity)
00177             {
00178                 <span class="keyword">delete</span> [] Items;
00179             }
00180         
00181             Items = new_items;
00182             Capacity = new_capacity;
00183         }
00184 
00185         size_type Capacity;
00186         size_type Size;
00187         value_type* Items;
00188 };
00189 
00190 <span class="preprocessor">#endif  //  __FTVector__</span>
</pre></div><hr size="1"><address style="align: right;"><small>Generated on Sun Dec 5 22:24:06 2004 for FTGL by
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border=0 > 
</a>1.3.6 </small></address>
</body>
</html>
