| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> |
| <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> |
| <title>oscl_vector.h Source File</title> |
| <link href="doxygen.css" rel="stylesheet" type="text/css"> |
| </head><body> |
| <!-- Generated by Doxygen 1.2.18 --> |
| <center> |
| <a class="qindex" href="index.html">Main Page</a> <a class="qindex" href="modules.html">Modules</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="annotated.html">Data Structures</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Data Fields</a> <a class="qindex" href="globals.html">Globals</a> </center> |
| <hr><h1>oscl_vector.h</h1><a href="oscl__vector_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">// -*- c++ -*-</span> |
| 00002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span> |
| 00003 |
| 00004 <span class="comment">// O S C L _ V E C T O R</span> |
| 00005 |
| 00006 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span> |
| 00007 |
| 00017 <span class="preprocessor">#ifndef OSCL_VECTOR_H_INCLUDED</span> |
| 00018 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_VECTOR_H_INCLUDED</span> |
| 00019 <span class="preprocessor"></span> |
| 00020 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span> |
| 00021 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__base_8h.html">oscl_base.h</a>"</span> |
| 00022 <span class="preprocessor">#endif</span> |
| 00023 <span class="preprocessor"></span> |
| 00024 <span class="preprocessor">#ifndef OSCL_MEM_BASIC_FUNCTIONS_H_INCLUDED</span> |
| 00025 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__mem__basic__functions_8h.html">oscl_mem_basic_functions.h</a>"</span> |
| 00026 <span class="preprocessor">#endif</span> |
| 00027 <span class="preprocessor"></span> |
| 00028 <span class="preprocessor">#ifndef OSCL_ASSERT_H_INCLUDED</span> |
| 00029 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__assert_8h.html">oscl_assert.h</a>"</span> |
| 00030 <span class="preprocessor">#endif</span> |
| 00031 <span class="preprocessor"></span> |
| 00032 <span class="preprocessor">#ifndef OSCL_OPAQUE_TYPE_H_INCLUDED</span> |
| 00033 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__opaque__type_8h.html">oscl_opaque_type.h</a>"</span> |
| 00034 <span class="preprocessor">#endif</span> |
| 00035 <span class="preprocessor"></span> |
| 00036 <span class="preprocessor">#ifndef OSCL_DEF_ALLOC_H_INCLUDED</span> |
| 00037 <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="oscl__defalloc_8h.html">oscl_defalloc.h</a>"</span> |
| 00038 <span class="preprocessor">#endif</span> |
| 00039 <span class="preprocessor"></span> |
| <a name="l00047"></a><a class="code" href="classOscl__Vector__Base.html">00047</a> <span class="keyword">class </span><a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a> |
| 00048 { |
| 00049 <span class="keyword">public</span>: |
| <a name="l00053"></a><a class="code" href="classOscl__Vector__Base.html#a0">00053</a> uint32 <a class="code" href="classOscl__Vector__Base.html#a0">size</a>()<span class="keyword"> const</span> |
| 00054 <span class="keyword"> </span>{ |
| 00055 <span class="keywordflow">return</span> <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>; |
| 00056 } |
| 00057 |
| <a name="l00061"></a><a class="code" href="classOscl__Vector__Base.html#a1">00061</a> uint32 <a class="code" href="classOscl__Vector__Base.html#a1">capacity</a>()<span class="keyword"> const</span> |
| 00062 <span class="keyword"> </span>{ |
| 00063 <span class="keywordflow">return</span> <a class="code" href="classOscl__Vector__Base.html#n1">bufsize</a>; |
| 00064 } |
| 00065 |
| <a name="l00069"></a><a class="code" href="classOscl__Vector__Base.html#a2">00069</a> <span class="keywordtype">bool</span> <a class="code" href="classOscl__Vector__Base.html#a2">empty</a>()<span class="keyword"> const</span> |
| 00070 <span class="keyword"> </span>{ |
| 00071 <span class="keywordflow">return</span> <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a> == 0; |
| 00072 } |
| 00073 |
| 00082 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#a3">reserve</a>(uint32 n) ; |
| 00083 |
| 00084 <span class="keyword">protected</span>: |
| 00085 |
| 00086 <span class="comment">//for use in default constructor. vtable isn't available in c'tor so this is a subroutine.</span> |
| 00087 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b0">construct</a>(<a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>* aType); |
| 00088 |
| 00089 <span class="comment">//for use in constructor with pre-allocation for "n" elements.</span> |
| 00090 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b0">construct</a>(<a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>* aType, uint32 n) ; |
| 00091 |
| 00092 <span class="comment">//for use in copy constructor.</span> |
| 00093 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b0">construct</a>(<a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>* aType, <span class="keyword">const</span> <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a>& x); |
| 00094 |
| <a name="l00098"></a><a class="code" href="classOscl__Vector__Base.html#b3">00098</a> <span class="keyword">virtual</span> <a class="code" href="classOscl__Vector__Base.html#b3">~Oscl_Vector_Base</a>() |
| 00099 {} |
| 00100 |
| 00107 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b4">push_back</a>(<span class="keyword">const</span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* x) ; |
| 00108 |
| 00112 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b5">pop_back</a>() ; |
| 00113 |
| 00120 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b6">push_front</a>(<span class="keyword">const</span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* x) ; |
| 00121 |
| 00127 OSCL_IMPORT_REF <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOscl__Vector__Base.html#b7">insert</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* pos, <span class="keyword">const</span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* x); |
| 00128 |
| 00135 OSCL_IMPORT_REF <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOscl__Vector__Base.html#b8">erase</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* pos) ; |
| 00136 |
| 00144 OSCL_IMPORT_REF <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOscl__Vector__Base.html#b8">erase</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* last) ; |
| 00145 |
| 00146 <span class="comment">//copy vector x into this vector</span> |
| 00147 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b10">assign_vector</a>(<span class="keyword">const</span> <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a>& x); |
| 00148 |
| 00149 OSCL_IMPORT_REF <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b11">destroy</a>(); |
| 00150 |
| <a name="l00151"></a><a class="code" href="classOscl__Vector__Base.html#n0">00151</a> uint32 <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>; <span class="comment">//number of T items in buffer.</span> |
| <a name="l00152"></a><a class="code" href="classOscl__Vector__Base.html#n1">00152</a> uint32 <a class="code" href="classOscl__Vector__Base.html#n1">bufsize</a>; <span class="comment">//available bufsize as number of T-sized items.</span> |
| <a name="l00153"></a><a class="code" href="classOscl__Vector__Base.html#n2">00153</a> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOscl__Vector__Base.html#n2">elems</a>; <span class="comment">//buffer</span> |
| <a name="l00154"></a><a class="code" href="classOscl__Vector__Base.html#n3">00154</a> uint32 <a class="code" href="classOscl__Vector__Base.html#n3">sizeof_T</a>; |
| 00155 |
| <a name="l00156"></a><a class="code" href="classOscl__Vector__Base.html#l0">00156</a> <span class="keyword">friend</span> <span class="keyword">class </span><a class="code" href="classOsclPriorityQueueBase.html">OsclPriorityQueueBase</a>; |
| 00157 |
| 00158 <span class="keyword">private</span>: |
| 00159 |
| 00163 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* increment_T(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p_T, int32 n)<span class="keyword"> const</span> |
| 00164 <span class="keyword"> </span>{ |
| 00165 <span class="keywordflow">return</span> (<a class="code" href="group__osclbase.html#a25">OsclAny</a>*)((int32)p_T + n*<a class="code" href="classOscl__Vector__Base.html#n3">sizeof_T</a>); |
| 00166 } |
| 00167 |
| 00171 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* begin()<span class="keyword"> const</span> |
| 00172 <span class="keyword"> </span>{ |
| 00173 <span class="keywordflow">return</span> <a class="code" href="classOscl__Vector__Base.html#n2">elems</a>; |
| 00174 } |
| 00175 |
| 00179 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* end()<span class="keyword"> const</span> |
| 00180 <span class="keyword"> </span>{ |
| 00181 <span class="keywordflow">return</span> increment_T(<a class="code" href="classOscl__Vector__Base.html#n2">elems</a>, <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>); |
| 00182 } |
| 00183 |
| 00184 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* move(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* last, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* result) ; |
| 00185 |
| 00186 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* copy(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* last, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* result) ; |
| 00187 |
| 00188 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* uninitialized_copy(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* last, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* result) ; |
| 00189 |
| 00190 <span class="comment">//destroy a range of T*</span> |
| 00191 <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector__Base.html#b11">destroy</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first, <a class="code" href="group__osclbase.html#a25">OsclAny</a>* last) ; |
| 00192 |
| 00193 <a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>* pOpaqueType; |
| 00194 }; |
| 00195 |
| 00204 <span class="keyword">template</span><<span class="keyword">class</span> T, <span class="keyword">class</span> Alloc> |
| <a name="l00205"></a><a class="code" href="classOscl__Vector.html">00205</a> <span class="keyword">class </span><a class="code" href="classOscl__Vector.html">Oscl_Vector</a> |
| 00206 : <span class="keyword">public</span> <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a> |
| 00207 , <span class="keyword">public</span> <a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a> |
| 00208 { |
| 00209 |
| 00210 <span class="keyword">public</span>: |
| <a name="l00211"></a><a class="code" href="classOscl__Vector.html#s0">00211</a> <span class="keyword">typedef</span> T <a class="code" href="classOscl__Vector.html#s0">value_type</a>; |
| <a name="l00212"></a><a class="code" href="classOscl__Vector.html#s1">00212</a> <span class="keyword">typedef</span> T* <a class="code" href="classOscl__Vector.html#s1">pointer</a>; |
| <a name="l00213"></a><a class="code" href="classOscl__Vector.html#s2">00213</a> <span class="keyword">typedef</span> T& <a class="code" href="classOscl__Vector.html#s2">reference</a>; |
| <a name="l00214"></a><a class="code" href="classOscl__Vector.html#s3">00214</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T& <a class="code" href="classOscl__Vector.html#s3">const_reference</a>; |
| <a name="l00215"></a><a class="code" href="classOscl__Vector.html#s4">00215</a> <span class="keyword">typedef</span> T* <a class="code" href="classOscl__Vector.html#s4">iterator</a>; |
| <a name="l00216"></a><a class="code" href="classOscl__Vector.html#s5">00216</a> <span class="keyword">typedef</span> <span class="keyword">const</span> T* <a class="code" href="classOscl__Vector.html#s5">const_iterator</a>; |
| 00217 |
| <a name="l00221"></a><a class="code" href="classOscl__Vector.html#a0">00221</a> <a class="code" href="classOscl__Vector.html#a0">Oscl_Vector</a>() : <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a>(), <a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>() |
| 00222 { |
| 00223 <a class="code" href="classOscl__Vector__Base.html#n3">sizeof_T</a> = <span class="keyword">sizeof</span>(T); |
| 00224 <a class="code" href="classOscl__Vector__Base.html#b0">Oscl_Vector_Base::construct</a>(<span class="keyword">this</span>); |
| 00225 } |
| 00226 |
| <a name="l00235"></a><a class="code" href="classOscl__Vector.html#a1">00235</a> <a class="code" href="classOscl__Vector.html#a0">Oscl_Vector</a>(uint32 n) : <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a>(), <a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>() |
| 00236 { |
| 00237 <a class="code" href="classOscl__Vector__Base.html#n3">sizeof_T</a> = <span class="keyword">sizeof</span>(T); |
| 00238 <a class="code" href="classOscl__Vector__Base.html#b0">Oscl_Vector_Base::construct</a>(<span class="keyword">this</span>, n); |
| 00239 } |
| 00240 |
| <a name="l00245"></a><a class="code" href="classOscl__Vector.html#a2">00245</a> <a class="code" href="classOscl__Vector.html#a0">Oscl_Vector</a>(<span class="keyword">const</span> <a class="code" href="classOscl__Vector.html">Oscl_Vector<T, Alloc></a>& x) : <a class="code" href="classOscl__Vector__Base.html">Oscl_Vector_Base</a>(), <a class="code" href="classOscl__Opaque__Type__Alloc.html">Oscl_Opaque_Type_Alloc</a>() |
| 00246 { |
| 00247 <a class="code" href="classOscl__Vector__Base.html#n3">sizeof_T</a> = <span class="keyword">sizeof</span>(T); |
| 00248 <a class="code" href="classOscl__Vector__Base.html#b0">Oscl_Vector_Base::construct</a>(<span class="keyword">this</span>, x); |
| 00249 } |
| 00250 |
| <a name="l00254"></a><a class="code" href="classOscl__Vector.html#a3">00254</a> <span class="keyword">virtual</span> <a class="code" href="classOscl__Vector.html#a3">~Oscl_Vector</a>() |
| 00255 { |
| 00256 <a class="code" href="classOscl__Vector__Base.html#b11">Oscl_Vector_Base::destroy</a>(); |
| 00257 } |
| 00258 |
| <a name="l00262"></a><a class="code" href="classOscl__Vector.html#a4">00262</a> <a class="code" href="classOscl__Vector.html">Oscl_Vector<T, Alloc></a>& <a class="code" href="classOscl__Vector.html#a4">operator=</a>(<span class="keyword">const</span> <a class="code" href="classOscl__Vector.html">Oscl_Vector<T, Alloc></a>& x) |
| 00263 { |
| 00264 <span class="keywordflow">if</span> (&x != <span class="keyword">this</span>) |
| 00265 <a class="code" href="classOscl__Vector__Base.html#b10">Oscl_Vector_Base::assign_vector</a>(x); |
| 00266 <span class="keywordflow">return</span> *<span class="keyword">this</span>; |
| 00267 } |
| 00268 |
| <a name="l00275"></a><a class="code" href="classOscl__Vector.html#a5">00275</a> <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a5">push_back</a>(<span class="keyword">const</span> T& x) |
| 00276 { |
| 00277 <a class="code" href="classOscl__Vector__Base.html#b4">Oscl_Vector_Base::push_back</a>(&x); |
| 00278 } |
| 00279 |
| <a name="l00286"></a><a class="code" href="classOscl__Vector.html#a6">00286</a> <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a6">push_front</a>(<span class="keyword">const</span> T& x) |
| 00287 { |
| 00288 <a class="code" href="classOscl__Vector__Base.html#b6">Oscl_Vector_Base::push_front</a>(&x); |
| 00289 } |
| 00290 |
| <a name="l00296"></a><a class="code" href="classOscl__Vector.html#a7">00296</a> <a class="code" href="classOscl__Vector.html#s4">iterator</a> <a class="code" href="classOscl__Vector.html#a7">insert</a>(<a class="code" href="classOscl__Vector.html#s4">iterator</a> pos, <span class="keyword">const</span> T& x) |
| 00297 { |
| 00298 <span class="keywordflow">return</span> (iterator)<a class="code" href="classOscl__Vector__Base.html#b7">Oscl_Vector_Base::insert</a>(pos, &x); |
| 00299 } |
| 00300 |
| <a name="l00305"></a><a class="code" href="classOscl__Vector.html#a8">00305</a> T& <a class="code" href="classOscl__Vector.html#a8">operator[]</a>(uint32 n) |
| 00306 { |
| 00307 <span class="keywordflow">return</span> (*(<a class="code" href="classOscl__Vector.html#a17">begin</a>() + n)); |
| 00308 } |
| 00309 |
| <a name="l00314"></a><a class="code" href="classOscl__Vector.html#a9">00314</a> <span class="keyword">const</span> T& <a class="code" href="classOscl__Vector.html#a8">operator[]</a>(uint32 n)<span class="keyword"> const</span> |
| 00315 <span class="keyword"> </span>{ |
| 00316 <span class="keywordflow">return</span> (*(<a class="code" href="classOscl__Vector.html#a17">begin</a>() + n)); |
| 00317 } |
| 00318 |
| <a name="l00322"></a><a class="code" href="classOscl__Vector.html#a10">00322</a> T& <a class="code" href="classOscl__Vector.html#a10">front</a>() |
| 00323 { |
| 00324 <span class="keywordflow">return</span> *<a class="code" href="classOscl__Vector.html#a17">begin</a>(); |
| 00325 } |
| 00326 |
| <a name="l00330"></a><a class="code" href="classOscl__Vector.html#a11">00330</a> <span class="keyword">const</span> T& <a class="code" href="classOscl__Vector.html#a10">front</a>()<span class="keyword"> const</span> |
| 00331 <span class="keyword"> </span>{ |
| 00332 <span class="keywordflow">return</span> *<a class="code" href="classOscl__Vector.html#a17">begin</a>(); |
| 00333 } |
| 00334 |
| <a name="l00338"></a><a class="code" href="classOscl__Vector.html#a12">00338</a> T& <a class="code" href="classOscl__Vector.html#a12">back</a>() |
| 00339 { |
| 00340 <span class="keywordflow">return</span> (*(<a class="code" href="classOscl__Vector.html#a18">end</a>() - 1)); |
| 00341 } |
| 00342 |
| <a name="l00346"></a><a class="code" href="classOscl__Vector.html#a13">00346</a> <span class="keyword">const</span> T& <a class="code" href="classOscl__Vector.html#a12">back</a>()<span class="keyword"> const</span> |
| 00347 <span class="keyword"> </span>{ |
| 00348 <span class="keywordflow">return</span> (*(<a class="code" href="classOscl__Vector.html#a18">end</a>() - 1)); |
| 00349 } |
| 00350 |
| <a name="l00354"></a><a class="code" href="classOscl__Vector.html#a14">00354</a> <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a14">pop_back</a>() |
| 00355 { |
| 00356 <a class="code" href="group__osclbase.html#a78">OSCL_ASSERT</a>(<a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>); |
| 00357 <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>--; |
| 00358 <a class="code" href="classOscl__Vector.html#a16">destroy</a>(<a class="code" href="classOscl__Vector.html#a18">end</a>()); |
| 00359 } |
| 00360 |
| <a name="l00364"></a><a class="code" href="classOscl__Vector.html#a15">00364</a> <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a15">clear</a>() |
| 00365 { |
| 00366 <a class="code" href="classOscl__Vector__Base.html#b8">Oscl_Vector_Base::erase</a>(<a class="code" href="classOscl__Vector.html#a17">begin</a>(), <a class="code" href="classOscl__Vector.html#a18">end</a>()); |
| 00367 } |
| 00368 |
| <a name="l00372"></a><a class="code" href="classOscl__Vector.html#a16">00372</a> <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a16">destroy</a>() |
| 00373 { |
| 00374 <a class="code" href="classOscl__Vector__Base.html#b11">Oscl_Vector_Base::destroy</a>(); |
| 00375 } |
| 00376 |
| <a name="l00380"></a><a class="code" href="classOscl__Vector.html#a17">00380</a> <a class="code" href="classOscl__Vector.html#s4">iterator</a> <a class="code" href="classOscl__Vector.html#a17">begin</a>()<span class="keyword"> const</span> |
| 00381 <span class="keyword"> </span>{ |
| 00382 <span class="keywordflow">return</span> (pointer)<a class="code" href="classOscl__Vector__Base.html#n2">elems</a>; |
| 00383 } |
| 00384 |
| <a name="l00388"></a><a class="code" href="classOscl__Vector.html#a18">00388</a> <a class="code" href="classOscl__Vector.html#s4">iterator</a> <a class="code" href="classOscl__Vector.html#a18">end</a>()<span class="keyword"> const</span> |
| 00389 <span class="keyword"> </span>{ |
| 00390 <span class="keywordflow">return</span> (pointer)<a class="code" href="classOscl__Vector__Base.html#n2">elems</a> + <a class="code" href="classOscl__Vector__Base.html#n0">numelems</a>; |
| 00391 } |
| 00392 |
| <a name="l00399"></a><a class="code" href="classOscl__Vector.html#a19">00399</a> <a class="code" href="classOscl__Vector.html#s4">iterator</a> <a class="code" href="classOscl__Vector.html#a19">erase</a>(<a class="code" href="classOscl__Vector.html#s4">iterator</a> pos) |
| 00400 { |
| 00401 <span class="keywordflow">return</span> (iterator)<a class="code" href="classOscl__Vector__Base.html#b8">Oscl_Vector_Base::erase</a>(pos); |
| 00402 } |
| 00403 |
| <a name="l00411"></a><a class="code" href="classOscl__Vector.html#a20">00411</a> <a class="code" href="classOscl__Vector.html#s4">iterator</a> <a class="code" href="classOscl__Vector.html#a19">erase</a>(<a class="code" href="classOscl__Vector.html#s4">iterator</a> first, <a class="code" href="classOscl__Vector.html#s4">iterator</a> last) |
| 00412 { |
| 00413 <span class="keywordflow">return</span> (iterator)<a class="code" href="classOscl__Vector__Base.html#b8">Oscl_Vector_Base::erase</a>(first, last); |
| 00414 } |
| 00415 |
| 00416 <span class="keyword">private</span>: |
| 00417 |
| 00418 Alloc defAlloc; |
| 00419 |
| 00420 <span class="comment">//from Oscl_Opaque_Type_Alloc</span> |
| 00421 <a class="code" href="group__osclbase.html#a25">OsclAny</a>* <a class="code" href="classOscl__Opaque__Type__Alloc.html#a2">allocate</a>(<span class="keyword">const</span> uint32 <a class="code" href="classOscl__Vector__Base.html#a0">size</a>) |
| 00422 { |
| 00423 <span class="comment">//prevent zero-size allocations since some allocators don't handle this</span> |
| 00424 <span class="keywordflow">return</span> (size) ? defAlloc.ALLOCATE(<a class="code" href="classOscl__Vector__Base.html#a0">size</a>) : <a class="code" href="group__osclbase.html#a81">NULL</a>; |
| 00425 } |
| 00426 |
| 00427 <span class="comment">//from Oscl_Opaque_Type_Alloc</span> |
| 00428 <span class="keywordtype">void</span> <a class="code" href="classOscl__Opaque__Type__Alloc.html#a3">deallocate</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p) |
| 00429 { |
| 00430 defAlloc.deallocate(p); |
| 00431 } |
| 00432 |
| 00433 <span class="comment">//from Oscl_Opaque_Type_Alloc</span> |
| 00434 <span class="keywordtype">void</span> <a class="code" href="classOscl__Opaque__Type__Alloc.html#a0">construct</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* p, <span class="keyword">const</span> <a class="code" href="group__osclbase.html#a25">OsclAny</a>* x) |
| 00435 { |
| 00436 <a class="code" href="group__osclbase.html#a78">OSCL_ASSERT</a>(x); |
| 00437 <span class="keyword">new</span>(p) <a class="code" href="classOscl__Vector.html#s0">value_type</a>(*((T*)x)); |
| 00438 } |
| 00439 |
| 00440 <span class="comment">//from Oscl_Opaque_Type_Alloc</span> |
| 00441 <span class="keywordtype">void</span> <a class="code" href="classOscl__Vector.html#a16">destroy</a>(<a class="code" href="group__osclbase.html#a25">OsclAny</a>* first) |
| 00442 { |
| 00443 <a class="code" href="group__osclbase.html#a78">OSCL_ASSERT</a>(first); |
| 00444 <a class="code" href="group__osclbase.html#a89">OSCL_UNUSED_ARG</a>(first); |
| 00445 <span class="comment">//note: must use "pointer" instead of "T*" here to avoid ADS 1.2 compile error.</span> |
| 00446 ((pointer)first)->~T(); |
| 00447 } |
| 00448 |
| 00449 }; |
| 00450 |
| 00451 |
| 00455 <span class="preprocessor">#endif</span> |
| 00456 <span class="preprocessor"></span> |
| 00457 |
| 00458 |
| 00459 |
| 00460 |
| </pre></div><hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small> |
| <address style="align: left;"><small>Posting Version: OPENCORE_20090310 </small> |
| </small></address> |
| </body> |
| </html> |