<!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>Crystal Space 1.2.1: csutil/scfarray.h Source File (Crystal Space 1.2.1 Public API Reference)</title> <link href="tabs.css" rel="stylesheet" type="text/css"> <link href="doxygen.css" rel="stylesheet" type="text/css"> </head><body> <table border="0" cellpadding="0" cellspacing="0" width="100%" class="head"> <tr height="59"> <td class="head" width="202" valign="bottom" style="padding-left:0;"><a href="http://www.crystalspace3d.org/"><img src="csblur.png" width="236" height="59" alt="CrystalSpace" border="0"></a></td> <td class="head"><h2>Public API Reference</h2></td> </tr> <tr height="11"> <td colspan="2" class="headshadow" valign="top" style="padding-left:0;"><img src="csblurb.png" width="236" height="11" alt="" border="0"></td> </tr> </table> <div class="content"> <!-- Generated by Doxygen 1.5.3 --> <div class="tabs"> <ul> <li><a href="index.html"><span>Main Page</span></a></li> <li><a href="modules.html"><span>Modules</span></a></li> <li><a href="namespaces.html"><span>Namespaces</span></a></li> <li><a href="classes.html"><span>Classes</span></a></li> <li class="current"><a href="files.html"><span>Files</span></a></li> <li><a href="pages.html"><span>Related Pages</span></a></li> </ul> </div> <h1>csutil/scfarray.h</h1><a href="scfarray_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*</span> <a name="l00002"></a>00002 <span class="comment"> Copyright (C) 2006 by Frank Richter</span> <a name="l00003"></a>00003 <span class="comment"></span> <a name="l00004"></a>00004 <span class="comment"> This library is free software; you can redistribute it and/or</span> <a name="l00005"></a>00005 <span class="comment"> modify it under the terms of the GNU Library General Public</span> <a name="l00006"></a>00006 <span class="comment"> License as published by the Free Software Foundation; either</span> <a name="l00007"></a>00007 <span class="comment"> version 2 of the License, or (at your option) any later version.</span> <a name="l00008"></a>00008 <span class="comment"></span> <a name="l00009"></a>00009 <span class="comment"> This library is distributed in the hope that it will be useful,</span> <a name="l00010"></a>00010 <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span> <a name="l00011"></a>00011 <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU</span> <a name="l00012"></a>00012 <span class="comment"> Library General Public License for more details.</span> <a name="l00013"></a>00013 <span class="comment"></span> <a name="l00014"></a>00014 <span class="comment"> You should have received a copy of the GNU Library General Public</span> <a name="l00015"></a>00015 <span class="comment"> License along with this library; if not, write to the Free</span> <a name="l00016"></a>00016 <span class="comment"> Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.</span> <a name="l00017"></a>00017 <span class="comment">*/</span> <a name="l00018"></a>00018 <a name="l00019"></a>00019 <span class="preprocessor">#ifndef __CS_CSUTIL_SCFARRAY_H__</span> <a name="l00020"></a>00020 <span class="preprocessor"></span><span class="preprocessor">#define __CS_CSUTIL_SCFARRAY_H__</span> <a name="l00021"></a>00021 <span class="preprocessor"></span> <a name="l00027"></a>00027 <span class="preprocessor">#include "<a class="code" href="iutil_2array_8h.html" title="Templates for array interfaces.">iutil/array.h</a>"</span> <a name="l00028"></a>00028 <a name="l00029"></a>00029 <span class="preprocessor">#include "<a class="code" href="csutil_2array_8h.html" title="Generic Array Template.">csutil/array.h</a>"</span> <a name="l00030"></a>00030 <span class="preprocessor">#include "<a class="code" href="scf__implementation_8h.html" title="Crystal Space Shared Class Facility (SCF) - implementation creation support.">csutil/scf_implementation.h</a>"</span> <a name="l00031"></a>00031 <a name="l00054"></a>00054 <span class="keyword">template</span><<span class="keyword">typename</span> IF, <a name="l00055"></a>00055 <span class="keyword">typename</span> Backend = <a class="code" href="classcsArray.html" title="A templated array class.">csArray<typename IF::ContainedType></a> > <a name="l00056"></a><a class="code" href="classscfArray.html">00056</a> <span class="keyword">class </span><a class="code" href="classscfArray.html" title="Implementation for iArrayReadOnly&lt;&gt;-, iArrayChangeElements&lt;&gt;- and iArrayChangeAll&lt;&gt...">scfArray</a> : <a name="l00057"></a>00057 <span class="keyword">public</span> <a class="code" href="classscfImplementation1.html">scfImplementation1</a><scfArray<IF, Backend>, IF> <a name="l00058"></a>00058 { <a name="l00059"></a>00059 <span class="keyword">typedef</span> <a class="code" href="classscfImplementation1.html">scfImplementation1<scfArray<IF, Backend></a>, IF> <a class="code" href="classscfImplementation1.html">scfImplementationType</a>; <a name="l00060"></a>00060 <span class="keyword">typedef</span> <span class="keyword">typename</span> IF::ContainedType ContainedType; <a name="l00061"></a>00061 <span class="keyword">public</span>: <a name="l00063"></a><a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c">00063</a> Backend <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>; <a name="l00064"></a>00064 <a name="l00066"></a>00066 <a name="l00067"></a><a class="code" href="group__util__containers.html#g590fba9b1b63e741b036779f80f41de9">00067</a> <a class="code" href="group__util__containers.html#g590fba9b1b63e741b036779f80f41de9" title="Construct with empty storage.">scfArray</a> () : <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this) {} <a name="l00068"></a><a class="code" href="group__util__containers.html#g66a9edf87e5dc48cc0bda5c87ac28c9e">00068</a> <a class="code" href="group__util__containers.html#g590fba9b1b63e741b036779f80f41de9" title="Construct with empty storage.">scfArray</a> (<a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>* <a class="code" href="classscfImplementation.html#fd66881aa3adfbdb3d837fa522ecf825">scfParent</a>) : <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this, scfParent) {} <a name="l00070"></a>00070 <a name="l00071"></a>00071 <a name="l00072"></a><a class="code" href="classscfArray.html#bbf8e7b55dc33f5a68ffd6a5ec88a99e">00072</a> <a class="code" href="group__util__containers.html#g590fba9b1b63e741b036779f80f41de9" title="Construct with empty storage.">scfArray</a> (<span class="keyword">const</span> Backend& <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>) : <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this), <a name="l00073"></a>00073 storage (storage) {} <a name="l00074"></a><a class="code" href="classscfArray.html#9d09384c5cf6d3e55b6390906f85d067">00074</a> <a class="code" href="group__util__containers.html#g590fba9b1b63e741b036779f80f41de9" title="Construct with empty storage.">scfArray</a> (<span class="keyword">const</span> Backend& <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>, <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>* <a class="code" href="classscfImplementation.html#fd66881aa3adfbdb3d837fa522ecf825">scfParent</a>) : <a name="l00075"></a>00075 <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this, scfParent), storage (storage) {} <a name="l00077"></a>00077 <a name="l00080"></a><a class="code" href="classscfArray.html#72ebd96666262385b29f2e52ccffe671">00080</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArray.html#72ebd96666262385b29f2e52ccffe671">GetSize</a> ()<span class="keyword"> const</span> <a name="l00081"></a>00081 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.GetSize(); } <a name="l00082"></a><a class="code" href="classscfArray.html#4c669b90c9309a36ff836bfe09419838">00082</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArray.html#4c669b90c9309a36ff836bfe09419838">Get</a> (<span class="keywordtype">size_t</span> n)<span class="keyword"> const</span> <a name="l00083"></a>00083 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Get (n); } <a name="l00084"></a><a class="code" href="classscfArray.html#079775941f005d8868b490fae400624a">00084</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArray.html#079775941f005d8868b490fae400624a">Top</a> ()<span class="keyword"> const</span> <a name="l00085"></a>00085 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Top(); } <a name="l00086"></a><a class="code" href="classscfArray.html#30d6ebbdc58abcf5bcd69e1abcc277f3">00086</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArray.html#30d6ebbdc58abcf5bcd69e1abcc277f3">Find</a> (ContainedType <span class="keyword">const</span>& which)<span class="keyword"> const</span> <a name="l00087"></a>00087 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Find (which); } <a name="l00088"></a><a class="code" href="classscfArray.html#1605acdded4267f758121fbfe3551159">00088</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArray.html#1605acdded4267f758121fbfe3551159">GetIndex</a> (<span class="keyword">const</span> ContainedType* which)<span class="keyword"> const</span> <a name="l00089"></a>00089 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.GetIndex (which); } <a name="l00090"></a><a class="code" href="classscfArray.html#f3bbf67d69b58522550ce1bb213cf67a">00090</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArray.html#f3bbf67d69b58522550ce1bb213cf67a">IsEmpty</a>()<span class="keyword"> const</span> <a name="l00091"></a>00091 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.IsEmpty(); } <a name="l00092"></a><a class="code" href="classscfArray.html#8e65d43047882c1e9a68987b442003b3">00092</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#8e65d43047882c1e9a68987b442003b3">GetAll</a> (ContainedType* dest)<span class="keyword"> const</span> <a name="l00093"></a>00093 <span class="keyword"> </span>{ <a name="l00094"></a>00094 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.GetSize(); i++) <a name="l00095"></a>00095 dest[i] = <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>[i]; <a name="l00096"></a>00096 } <a name="l00101"></a><a class="code" href="classscfArray.html#631a1f13f6150f0c4cd5efd4ea252c10">00101</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArray.html#4c669b90c9309a36ff836bfe09419838">Get</a> (<span class="keywordtype">size_t</span> n) <a name="l00102"></a>00102 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Get (n); } <a name="l00103"></a><a class="code" href="classscfArray.html#ad468cf5991d50b503220300d16b79d8">00103</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArray.html#079775941f005d8868b490fae400624a">Top</a> () <a name="l00104"></a>00104 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Top(); } <a name="l00109"></a><a class="code" href="classscfArray.html#b3d39d5d767614249dcfbf2b053a8d7d">00109</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#b3d39d5d767614249dcfbf2b053a8d7d">SetSize</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& what) <a name="l00110"></a>00110 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.SetSize (n, what); } <a name="l00111"></a><a class="code" href="classscfArray.html#b933782acffe65e47cabffa159436c3c">00111</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#b3d39d5d767614249dcfbf2b053a8d7d">SetSize</a> (<span class="keywordtype">size_t</span> n) <a name="l00112"></a>00112 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.SetSize (n); } <a name="l00113"></a><a class="code" href="classscfArray.html#b918ce788c526ba8458ca6ba2eb6cd28">00113</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArray.html#b918ce788c526ba8458ca6ba2eb6cd28">GetExtend</a> (<span class="keywordtype">size_t</span> n) <a name="l00114"></a>00114 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.GetExtend (n); } <a name="l00115"></a><a class="code" href="classscfArray.html#837c50a020483067923f4e5bbd0c5c04">00115</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#837c50a020483067923f4e5bbd0c5c04">Put</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& what) <a name="l00116"></a>00116 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Put (n, what); } <a name="l00117"></a><a class="code" href="classscfArray.html#dadecf2b6233dfaba34dd1aa25225444">00117</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArray.html#dadecf2b6233dfaba34dd1aa25225444">Push</a> (ContainedType <span class="keyword">const</span>& what) <a name="l00118"></a>00118 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Push (what); } <a name="l00119"></a><a class="code" href="classscfArray.html#0b537a672b6fbc5651f6ae3c9fa1c4c8">00119</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArray.html#0b537a672b6fbc5651f6ae3c9fa1c4c8">PushSmart</a> (ContainedType <span class="keyword">const</span>& what) <a name="l00120"></a>00120 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.PushSmart (what); } <a name="l00121"></a><a class="code" href="classscfArray.html#c0371cf4c8a5deb273438ace31358879">00121</a> <span class="keyword">virtual</span> ContainedType <a class="code" href="classscfArray.html#c0371cf4c8a5deb273438ace31358879">Pop</a> () <a name="l00122"></a>00122 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Pop (); } <a name="l00123"></a><a class="code" href="classscfArray.html#db7333f4429792ef6d37b25491172ee6">00123</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArray.html#db7333f4429792ef6d37b25491172ee6">Insert</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& item) <a name="l00124"></a>00124 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Insert (n, item); } <a name="l00125"></a><a class="code" href="classscfArray.html#073b73b8c5a8409ccb1c85c330b709e0">00125</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#073b73b8c5a8409ccb1c85c330b709e0">DeleteAll</a> () <a name="l00126"></a>00126 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.DeleteAll(); } <a name="l00127"></a><a class="code" href="classscfArray.html#8d06b0784b513ba1753d9e91fff61774">00127</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#8d06b0784b513ba1753d9e91fff61774">Truncate</a> (<span class="keywordtype">size_t</span> n) <a name="l00128"></a>00128 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Truncate(n); } <a name="l00129"></a><a class="code" href="classscfArray.html#0ab2fdb486e20709634c44a9e848bf54">00129</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArray.html#0ab2fdb486e20709634c44a9e848bf54">Empty</a> () <a name="l00130"></a>00130 { <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Empty(); } <a name="l00131"></a><a class="code" href="classscfArray.html#9245d8c6e46823fe181bc6b04b9241bb">00131</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArray.html#9245d8c6e46823fe181bc6b04b9241bb">DeleteIndex</a> (<span class="keywordtype">size_t</span> n) <a name="l00132"></a>00132 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.DeleteIndex (n); } <a name="l00133"></a><a class="code" href="classscfArray.html#33ec7a32bfe3ffcd11408baf46445f77">00133</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArray.html#33ec7a32bfe3ffcd11408baf46445f77">DeleteIndexFast</a> (<span class="keywordtype">size_t</span> n) <a name="l00134"></a>00134 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.DeleteIndexFast (n); } <a name="l00135"></a><a class="code" href="classscfArray.html#ca79ac947c24809b054483aca2bc9c2c">00135</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArray.html#ca79ac947c24809b054483aca2bc9c2c">Delete</a> (ContainedType <span class="keyword">const</span>& item) <a name="l00136"></a>00136 { <span class="keywordflow">return</span> <a class="code" href="classscfArray.html#3610cde4e2cd8226570a758518492c7c" title="The array storage.">storage</a>.Delete (item); } <a name="l00138"></a>00138 }; <a name="l00139"></a>00139 <a name="l00149"></a>00149 <span class="keyword">template</span><<span class="keyword">typename</span> IF, <span class="keyword">typename</span> Backend> <a name="l00150"></a><a class="code" href="classscfArrayWrap.html">00150</a> <span class="keyword">class </span><a class="code" href="classscfArrayWrap.html" title="Implementation for iArrayReadOnly&lt;&gt;-, iArrayChangeElements&lt;&gt;- and iArrayChangeAll&lt;&gt...">scfArrayWrap</a> : <a name="l00151"></a>00151 <span class="keyword">public</span> <a class="code" href="classscfImplementation1.html">scfImplementation1</a><scfArrayWrap<IF, Backend>, IF> <a name="l00152"></a>00152 { <a name="l00153"></a>00153 <span class="keyword">typedef</span> <a class="code" href="classscfImplementation1.html">scfImplementation1<scfArrayWrap<IF, Backend></a>, IF> <a name="l00154"></a>00154 <a class="code" href="classscfImplementation1.html">scfImplementationType</a>; <a name="l00155"></a>00155 <span class="keyword">typedef</span> <span class="keyword">typename</span> IF::ContainedType ContainedType; <a name="l00156"></a>00156 <span class="keyword">public</span>: <a name="l00158"></a><a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf">00158</a> Backend& <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>; <a name="l00159"></a>00159 <a name="l00161"></a>00161 <a name="l00162"></a><a class="code" href="classscfArrayWrap.html#8ad0cdd8cb853c7ac87240a245243bed">00162</a> <a class="code" href="classscfArrayWrap.html#8ad0cdd8cb853c7ac87240a245243bed" title="Initialize with a reference to the given storage.">scfArrayWrap</a> (Backend& <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>) : <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this), <a name="l00163"></a>00163 storage (storage) {} <a name="l00164"></a><a class="code" href="classscfArrayWrap.html#e276c30e44aaf354bc335b4a52aed1be">00164</a> <a class="code" href="classscfArrayWrap.html#8ad0cdd8cb853c7ac87240a245243bed" title="Initialize with a reference to the given storage.">scfArrayWrap</a> (Backend& <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>, <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>* <a class="code" href="classscfImplementation.html#fd66881aa3adfbdb3d837fa522ecf825">scfParent</a>) : <a name="l00165"></a>00165 <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this, scfParent), storage (storage) {} <a name="l00167"></a>00167 <a name="l00170"></a><a class="code" href="classscfArrayWrap.html#5c817c4af9ef5002692adaedccd6f8f0">00170</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrap.html#5c817c4af9ef5002692adaedccd6f8f0">GetSize</a> ()<span class="keyword"> const</span> <a name="l00171"></a>00171 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.GetSize(); } <a name="l00172"></a><a class="code" href="classscfArrayWrap.html#0eee4e7add92ae394313d10644abd41b">00172</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArrayWrap.html#0eee4e7add92ae394313d10644abd41b">Get</a> (<span class="keywordtype">size_t</span> n)<span class="keyword"> const</span> <a name="l00173"></a>00173 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Get (n); } <a name="l00174"></a><a class="code" href="classscfArrayWrap.html#f20a7b45b9baaa8adbc2afb0d8b83930">00174</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArrayWrap.html#f20a7b45b9baaa8adbc2afb0d8b83930">Top</a> ()<span class="keyword"> const</span> <a name="l00175"></a>00175 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Top(); } <a name="l00176"></a><a class="code" href="classscfArrayWrap.html#9e0d2931117921d85a5afa395cc5cbf4">00176</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrap.html#9e0d2931117921d85a5afa395cc5cbf4">Find</a> (ContainedType <span class="keyword">const</span>& which)<span class="keyword"> const</span> <a name="l00177"></a>00177 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Find (which); } <a name="l00178"></a><a class="code" href="classscfArrayWrap.html#73b645541d179c72cabecac1424e5b65">00178</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrap.html#73b645541d179c72cabecac1424e5b65">GetIndex</a> (<span class="keyword">const</span> ContainedType* which)<span class="keyword"> const</span> <a name="l00179"></a>00179 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.GetIndex (which); } <a name="l00180"></a><a class="code" href="classscfArrayWrap.html#29dc0e436d764a2e695058ce4cbb567d">00180</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrap.html#29dc0e436d764a2e695058ce4cbb567d">IsEmpty</a>()<span class="keyword"> const</span> <a name="l00181"></a>00181 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.IsEmpty(); } <a name="l00182"></a><a class="code" href="classscfArrayWrap.html#564a848ab22df64ef8c3015d16ae0ebe">00182</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#564a848ab22df64ef8c3015d16ae0ebe">GetAll</a> (ContainedType* dest)<span class="keyword"> const</span> <a name="l00183"></a>00183 <span class="keyword"> </span>{ <a name="l00184"></a>00184 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.GetSize(); i++) <a name="l00185"></a>00185 dest[i] = <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>[i]; <a name="l00186"></a>00186 } <a name="l00191"></a><a class="code" href="classscfArrayWrap.html#68c65fa115cf99456438c0a97e4801a1">00191</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArrayWrap.html#0eee4e7add92ae394313d10644abd41b">Get</a> (<span class="keywordtype">size_t</span> n) <a name="l00192"></a>00192 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Get (n); } <a name="l00193"></a><a class="code" href="classscfArrayWrap.html#13605eee5e92d2eaebb26e8cc4377597">00193</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArrayWrap.html#f20a7b45b9baaa8adbc2afb0d8b83930">Top</a> () <a name="l00194"></a>00194 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Top(); } <a name="l00199"></a><a class="code" href="classscfArrayWrap.html#840a5566abd5a4cfb8ce5e39db2273d0">00199</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#840a5566abd5a4cfb8ce5e39db2273d0">SetSize</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& what) <a name="l00200"></a>00200 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.SetSize (n, what); } <a name="l00201"></a><a class="code" href="classscfArrayWrap.html#659a140ed9f729c9acf417869ba0e0b9">00201</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#840a5566abd5a4cfb8ce5e39db2273d0">SetSize</a> (<span class="keywordtype">size_t</span> n) <a name="l00202"></a>00202 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.SetSize (n); } <a name="l00203"></a><a class="code" href="classscfArrayWrap.html#da22c63ff36556d6ab2f786af22970b8">00203</a> <span class="keyword">virtual</span> ContainedType& <a class="code" href="classscfArrayWrap.html#da22c63ff36556d6ab2f786af22970b8">GetExtend</a> (<span class="keywordtype">size_t</span> n) <a name="l00204"></a>00204 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.GetExtend (n); } <a name="l00205"></a><a class="code" href="classscfArrayWrap.html#92ef34b1e9ef25e60b8b688bbbf5889a">00205</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#92ef34b1e9ef25e60b8b688bbbf5889a">Put</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& what) <a name="l00206"></a>00206 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Put (n, what); } <a name="l00207"></a><a class="code" href="classscfArrayWrap.html#0dd9e39078561165ded0b5747412ebbb">00207</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrap.html#0dd9e39078561165ded0b5747412ebbb">Push</a> (ContainedType <span class="keyword">const</span>& what) <a name="l00208"></a>00208 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Push (what); } <a name="l00209"></a><a class="code" href="classscfArrayWrap.html#6e2018ee30157dd0e7705f47c7cdc7fd">00209</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrap.html#6e2018ee30157dd0e7705f47c7cdc7fd">PushSmart</a> (ContainedType <span class="keyword">const</span>& what) <a name="l00210"></a>00210 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.PushSmart (what); } <a name="l00211"></a><a class="code" href="classscfArrayWrap.html#ae35c60996bbb25baf2a0a1fb52dcd16">00211</a> <span class="keyword">virtual</span> ContainedType <a class="code" href="classscfArrayWrap.html#ae35c60996bbb25baf2a0a1fb52dcd16">Pop</a> () <a name="l00212"></a>00212 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Pop (); } <a name="l00213"></a><a class="code" href="classscfArrayWrap.html#b0a26dff65159a158b4ad2e8ccf724aa">00213</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrap.html#b0a26dff65159a158b4ad2e8ccf724aa">Insert</a> (<span class="keywordtype">size_t</span> n, ContainedType <span class="keyword">const</span>& item) <a name="l00214"></a>00214 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Insert (n, item); } <a name="l00215"></a><a class="code" href="classscfArrayWrap.html#37bf4990d808243927f3920dd8b9af83">00215</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#37bf4990d808243927f3920dd8b9af83">DeleteAll</a> () <a name="l00216"></a>00216 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.DeleteAll(); } <a name="l00217"></a><a class="code" href="classscfArrayWrap.html#3bf0ba0d506ac6d2b258040b7cfb582e">00217</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#3bf0ba0d506ac6d2b258040b7cfb582e">Truncate</a> (<span class="keywordtype">size_t</span> n) <a name="l00218"></a>00218 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Truncate(n); } <a name="l00219"></a><a class="code" href="classscfArrayWrap.html#fead12cb73c96da85815016da16b470b">00219</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrap.html#fead12cb73c96da85815016da16b470b">Empty</a> () <a name="l00220"></a>00220 { <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Empty(); } <a name="l00221"></a><a class="code" href="classscfArrayWrap.html#1521a06776990348c98a0172e415ff37">00221</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrap.html#1521a06776990348c98a0172e415ff37">DeleteIndex</a> (<span class="keywordtype">size_t</span> n) <a name="l00222"></a>00222 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.DeleteIndex (n); } <a name="l00223"></a><a class="code" href="classscfArrayWrap.html#0f4580d8fea89e68b0545e285d13b0d8">00223</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrap.html#0f4580d8fea89e68b0545e285d13b0d8">DeleteIndexFast</a> (<span class="keywordtype">size_t</span> n) <a name="l00224"></a>00224 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.DeleteIndexFast (n); } <a name="l00225"></a><a class="code" href="classscfArrayWrap.html#abceb4332d197a12a014622b4f846254">00225</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrap.html#abceb4332d197a12a014622b4f846254">Delete</a> (ContainedType <span class="keyword">const</span>& item) <a name="l00226"></a>00226 { <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrap.html#110c6ca27ef37f3afb52990307f18ddf" title="Reference to the array storage.">storage</a>.Delete (item); } <a name="l00228"></a>00228 }; <a name="l00229"></a>00229 <a name="l00238"></a>00238 <span class="keyword">template</span><<span class="keyword">typename</span> IF, <span class="keyword">typename</span> Backend> <a name="l00239"></a><a class="code" href="classscfArrayWrapConst.html">00239</a> <span class="keyword">class </span><a class="code" href="classscfArrayWrapConst.html" title="Implementation for iArrayReadOnly&lt;&gt;-derived interfaces, backed by a reference...">scfArrayWrapConst</a> : <a name="l00240"></a>00240 <span class="keyword">public</span> <a class="code" href="classscfImplementation1.html">scfImplementation1</a><scfArrayWrapConst<IF, Backend>, IF> <a name="l00241"></a>00241 { <a name="l00242"></a>00242 <span class="keyword">typedef</span> <a class="code" href="classscfImplementation1.html">scfImplementation1<scfArrayWrapConst<IF, Backend></a>, IF> <a name="l00243"></a>00243 <a class="code" href="classscfImplementation1.html">scfImplementationType</a>; <a name="l00244"></a>00244 <span class="keyword">typedef</span> <span class="keyword">typename</span> IF::ContainedType ContainedType; <a name="l00245"></a>00245 <span class="keyword">public</span>: <a name="l00247"></a><a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3">00247</a> <span class="keyword">const</span> Backend& <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>; <a name="l00248"></a>00248 <a name="l00250"></a>00250 <a name="l00251"></a><a class="code" href="classscfArrayWrapConst.html#b177f29202652d46eac39df0787e2504">00251</a> <a class="code" href="classscfArrayWrapConst.html#b177f29202652d46eac39df0787e2504" title="Initialize with a reference to the given storage.">scfArrayWrapConst</a> (<span class="keyword">const</span> Backend& <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>) : <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this), <a name="l00252"></a>00252 storage (storage) {} <a name="l00253"></a><a class="code" href="classscfArrayWrapConst.html#5d2e13a6a60f832c66c4dff88c5a8685">00253</a> <a class="code" href="classscfArrayWrapConst.html#b177f29202652d46eac39df0787e2504" title="Initialize with a reference to the given storage.">scfArrayWrapConst</a> (<span class="keyword">const</span> Backend& <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>, <a class="code" href="structiBase.html" title="This is the basic interface: all other interfaces should be derived from this one...">iBase</a>* <a class="code" href="classscfImplementation.html#fd66881aa3adfbdb3d837fa522ecf825">scfParent</a>) : <a name="l00254"></a>00254 <a class="code" href="classscfImplementation1.html">scfImplementationType</a> (this, scfParent), storage (storage) {} <a name="l00256"></a>00256 <a name="l00259"></a><a class="code" href="classscfArrayWrapConst.html#d6b2721d5ca9c7ebacef571d83c96293">00259</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrapConst.html#d6b2721d5ca9c7ebacef571d83c96293">GetSize</a> ()<span class="keyword"> const</span> <a name="l00260"></a>00260 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.GetSize(); } <a name="l00261"></a><a class="code" href="classscfArrayWrapConst.html#17b84a1a11b1060087d60cc2535ae76a">00261</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArrayWrapConst.html#17b84a1a11b1060087d60cc2535ae76a">Get</a> (<span class="keywordtype">size_t</span> n)<span class="keyword"> const</span> <a name="l00262"></a>00262 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.Get (n); } <a name="l00263"></a><a class="code" href="classscfArrayWrapConst.html#d6306b2ff875b071fcce3f808f46e30c">00263</a> <span class="keyword">virtual</span> ContainedType <span class="keyword">const</span>& <a class="code" href="classscfArrayWrapConst.html#d6306b2ff875b071fcce3f808f46e30c">Top</a> ()<span class="keyword"> const</span> <a name="l00264"></a>00264 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.Top(); } <a name="l00265"></a><a class="code" href="classscfArrayWrapConst.html#10c4a7a41da69c06ac04b1ff0c0b39ae">00265</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrapConst.html#10c4a7a41da69c06ac04b1ff0c0b39ae">Find</a> (ContainedType <span class="keyword">const</span>& which)<span class="keyword"> const</span> <a name="l00266"></a>00266 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.Find (which); } <a name="l00267"></a><a class="code" href="classscfArrayWrapConst.html#503dbea63bc44e44ccd9f71eb9f23c8e">00267</a> <span class="keyword">virtual</span> <span class="keywordtype">size_t</span> <a class="code" href="classscfArrayWrapConst.html#503dbea63bc44e44ccd9f71eb9f23c8e">GetIndex</a> (<span class="keyword">const</span> ContainedType* which)<span class="keyword"> const</span> <a name="l00268"></a>00268 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.GetIndex (which); } <a name="l00269"></a><a class="code" href="classscfArrayWrapConst.html#c2fb7c911bf5aa182e618a7c7b3d220f">00269</a> <span class="keyword">virtual</span> <span class="keywordtype">bool</span> <a class="code" href="classscfArrayWrapConst.html#c2fb7c911bf5aa182e618a7c7b3d220f">IsEmpty</a>()<span class="keyword"> const</span> <a name="l00270"></a>00270 <span class="keyword"> </span>{ <span class="keywordflow">return</span> <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.IsEmpty(); } <a name="l00271"></a><a class="code" href="classscfArrayWrapConst.html#7926ce9a7f3993ad349daf4c90c16c84">00271</a> <span class="keyword">virtual</span> <span class="keywordtype">void</span> <a class="code" href="classscfArrayWrapConst.html#7926ce9a7f3993ad349daf4c90c16c84">GetAll</a> (ContainedType* dest)<span class="keyword"> const</span> <a name="l00272"></a>00272 <span class="keyword"> </span>{ <a name="l00273"></a>00273 <span class="keywordflow">for</span> (<span class="keywordtype">size_t</span> i = 0; i < <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>.GetSize(); i++) <a name="l00274"></a>00274 dest[i] = <a class="code" href="classscfArrayWrapConst.html#948c67a9e84826fd6ad7e2eb6509b7f3" title="Reference to the array storage.">storage</a>[i]; <a name="l00275"></a>00275 } <a name="l00277"></a>00277 }; <a name="l00278"></a>00278 <a name="l00281"></a>00281 <span class="preprocessor">#endif // __CS_CSUTIL_SCFARRAY_H__</span> </pre></div><hr size="1"><address><small>Generated for Crystal Space 1.2.1 by <a href="http://www.doxygen.org/index.html">doxygen</a> 1.5.3 </small></address> </div></body> </html>