aboutsummaryrefslogtreecommitdiff
path: root/doc/oscl_html/oscl__string_8h_source.html
blob: a2af9e82d902d6533155429dd9340b8d5db235f3 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<title>oscl: oscl_string.h Source File</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.6.3 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="modules.html"><span>Modules</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div class="tabs">
    <ul>
      <li><a href="files.html"><span>File&nbsp;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<h1>oscl_string.h</h1><a href="oscl__string_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">// -*- c++ -*-</span>
<a name="l00002"></a>00002 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
<a name="l00003"></a>00003 
<a name="l00004"></a>00004 <span class="comment">//               O S C L_ S T R I N G   C L A S S</span>
<a name="l00005"></a>00005 
<a name="l00006"></a>00006 <span class="comment">//    This file contains a standardized set of string containers that</span>
<a name="l00007"></a>00007 <span class="comment">//    can be used in place of character arrays.</span>
<a name="l00008"></a>00008 
<a name="l00009"></a>00009 <span class="comment">// = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =</span>
<a name="l00010"></a>00010 
<a name="l00025"></a>00025 <span class="preprocessor">#ifndef OSCL_STRING_H_INCLUDED</span>
<a name="l00026"></a>00026 <span class="preprocessor"></span><span class="preprocessor">#define OSCL_STRING_H_INCLUDED</span>
<a name="l00027"></a>00027 <span class="preprocessor"></span>
<a name="l00028"></a>00028 
<a name="l00029"></a>00029 <span class="preprocessor">#ifndef OSCL_BASE_H_INCLUDED</span>
<a name="l00030"></a>00030 <span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="oscl__base_8h.html" title="The file oscl_base.h is the public header that should be included to pick up the...">oscl_base.h</a>&quot;</span>
<a name="l00031"></a>00031 <span class="preprocessor">#endif</span>
<a name="l00032"></a>00032 <span class="preprocessor"></span>
<a name="l00033"></a>00033 <span class="preprocessor">#ifndef OSCL_MEM_H_INCLUDED</span>
<a name="l00034"></a>00034 <span class="preprocessor"></span><span class="preprocessor">#include &quot;<a class="code" href="oscl__mem_8h.html" title="This file contains basic memory definitions for common use across platforms.">oscl_mem.h</a>&quot;</span>
<a name="l00035"></a>00035 <span class="preprocessor">#endif</span>
<a name="l00036"></a>00036 <span class="preprocessor"></span>
<a name="l00039"></a><a class="code" href="group__osclutil.html#gaf6a637a78b88f95b237198d9b90e52b5">00039</a> <span class="keyword">enum</span> <a class="code" href="group__osclutil.html#gaf6a637a78b88f95b237198d9b90e52b5">TOSCL_StringOp</a>
<a name="l00040"></a>00040 {
<a name="l00041"></a>00041     <span class="comment">//Compress from wide-character to single-wide without any conversion.</span>
<a name="l00042"></a>00042     <span class="comment">//This operation is only appropriate for ASCII strings.</span>
<a name="l00043"></a><a class="code" href="group__osclutil.html#ggaf6a637a78b88f95b237198d9b90e52b5ac5d7b98b8dce8a5722a5486cb3c254ce">00043</a>     <a class="code" href="group__osclutil.html#ggaf6a637a78b88f95b237198d9b90e52b5ac5d7b98b8dce8a5722a5486cb3c254ce">EOSCL_StringOp_CompressASCII</a>
<a name="l00044"></a>00044     <span class="comment">//Compress from wide-character to single-side with UTF-16 to UTF-8 conversion</span>
<a name="l00045"></a><a class="code" href="group__osclutil.html#ggaf6a637a78b88f95b237198d9b90e52b5a8fb4c753e0fbe7b8075cf91aae01afe8">00045</a>     , <a class="code" href="group__osclutil.html#ggaf6a637a78b88f95b237198d9b90e52b5a8fb4c753e0fbe7b8075cf91aae01afe8">EOSCL_StringOp_UTF16ToUTF8</a>
<a name="l00046"></a>00046 };
<a name="l00047"></a>00047 
<a name="l00050"></a><a class="code" href="group__osclutil.html#ga8634639175fa6338d6429a45b6da110e">00050</a> <span class="keyword">enum</span> <a class="code" href="group__osclutil.html#ga8634639175fa6338d6429a45b6da110e">TOSCL_wStringOp</a>
<a name="l00051"></a>00051 {
<a name="l00052"></a>00052     <span class="comment">//Expand from single-wide to wide-character without any conversion.</span>
<a name="l00053"></a>00053     <span class="comment">//This operation is only appropriate for ASCII strings.</span>
<a name="l00054"></a><a class="code" href="group__osclutil.html#gga8634639175fa6338d6429a45b6da110eafbaf18ac6722f22fb091e51a89df5fa2">00054</a>     <a class="code" href="group__osclutil.html#gga8634639175fa6338d6429a45b6da110eafbaf18ac6722f22fb091e51a89df5fa2">EOSCL_wStringOp_ExpandASCII</a>
<a name="l00055"></a>00055     <span class="comment">//Expand from single-wide to wide-character with UTF-8 to UTF-16 conversion.</span>
<a name="l00056"></a><a class="code" href="group__osclutil.html#gga8634639175fa6338d6429a45b6da110ea5fcb95dfb51190f6ad04692e8c573fd0">00056</a>     , <a class="code" href="group__osclutil.html#gga8634639175fa6338d6429a45b6da110ea5fcb95dfb51190f6ad04692e8c573fd0">EOSCL_wStringOp_UTF8ToUTF16</a>
<a name="l00057"></a>00057 };
<a name="l00058"></a>00058 
<a name="l00063"></a><a class="code" href="classOSCL__String.html">00063</a> <span class="keyword">class </span><a class="code" href="osclconfig_8h.html#a6de0f53c5c11f8f53ce72c70d74d9abc">OSCL_IMPORT_REF</a> <a class="code" href="classOSCL__String.html">OSCL_String</a> : <span class="keyword">public</span> <a class="code" href="classHeapBase.html">HeapBase</a>
<a name="l00064"></a>00064 
<a name="l00065"></a>00065 {
<a name="l00066"></a>00066     <span class="keyword">public</span>:
<a name="l00067"></a><a class="code" href="classOSCL__String.html#af7dea5502bbb5f76c4680a06e4d8f143">00067</a>         <span class="keyword">typedef</span> <span class="keywordtype">char</span> chartype;
<a name="l00068"></a>00068 
<a name="l00073"></a>00073         <span class="keyword">virtual</span> uint32 get_size() <span class="keyword">const</span> = 0;
<a name="l00074"></a>00074 
<a name="l00080"></a>00080         <span class="keyword">virtual</span> uint32 get_maxsize() <span class="keyword">const</span> = 0;
<a name="l00081"></a>00081 
<a name="l00085"></a>00085         <span class="keyword">virtual</span> <span class="keyword">const</span> chartype* get_cstr() <span class="keyword">const</span> = 0;
<a name="l00086"></a>00086 
<a name="l00090"></a>00090         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_writable() <span class="keyword">const</span>;
<a name="l00091"></a>00091 
<a name="l00096"></a>00096         <span class="keyword">virtual</span> chartype* get_str() <span class="keyword">const</span> = 0;
<a name="l00097"></a>00097 
<a name="l00100"></a>00100         <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src);
<a name="l00101"></a>00101 
<a name="l00105"></a>00105         <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; operator=(<span class="keyword">const</span> chartype* cstr);
<a name="l00106"></a>00106 
<a name="l00111"></a>00111         <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; operator+=(<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src);
<a name="l00112"></a>00112 
<a name="l00118"></a>00118         <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; operator+=(<span class="keyword">const</span> chartype* cstr);
<a name="l00119"></a>00119 
<a name="l00124"></a>00124         <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; operator+=(<span class="keyword">const</span> chartype c);
<a name="l00125"></a>00125 
<a name="l00128"></a>00128         <span class="keywordtype">bool</span> operator== (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00129"></a>00129         <span class="keywordtype">bool</span> operator!= (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00130"></a>00130         <span class="keywordtype">bool</span> operator&lt; (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00131"></a>00131         <span class="keywordtype">bool</span> operator&lt;= (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00132"></a>00132         <span class="keywordtype">bool</span> operator&gt; (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00133"></a>00133         <span class="keywordtype">bool</span> operator&gt;= (<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) <span class="keyword">const</span>;
<a name="l00134"></a>00134 
<a name="l00138"></a>00138         <span class="keywordtype">bool</span> operator== (<span class="keyword">const</span> chartype* cstr) <span class="keyword">const</span>;
<a name="l00139"></a>00139 
<a name="l00146"></a>00146         chartype operator[](uint32 index) <span class="keyword">const</span>;
<a name="l00147"></a>00147 
<a name="l00153"></a>00153         <span class="keyword">virtual</span> chartype read(uint32 index)<span class="keyword">const</span>;
<a name="l00154"></a>00154 
<a name="l00167"></a>00167         <span class="keyword">virtual</span> uint32 setrep_to_char(<span class="keyword">const</span> <a class="code" href="group__osclbase.html#gad3f9ec9db55ebd4760c877b17eb596ec">oscl_wchar</a>* src, uint32 len,
<a name="l00168"></a>00168                                       <a class="code" href="group__osclutil.html#gaf6a637a78b88f95b237198d9b90e52b5">TOSCL_StringOp</a> op, <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>* aAlloc);
<a name="l00173"></a>00173         <span class="keyword">virtual</span> int8 hash() <span class="keyword">const</span>;
<a name="l00174"></a>00174 
<a name="l00181"></a>00181         <span class="keyword">virtual</span> <span class="keywordtype">void</span> write(uint32 index, chartype c);
<a name="l00182"></a>00182 
<a name="l00192"></a>00192         <span class="keyword">virtual</span> <span class="keywordtype">void</span> write(uint32 offset, uint32 length, <span class="keyword">const</span> chartype* buf);
<a name="l00193"></a>00193 
<a name="l00194"></a>00194 <span class="preprocessor">#ifdef T_ARM</span>
<a name="l00195"></a>00195 <span class="preprocessor"></span><span class="comment">//ADS 1.2 compiler doesn&#39;t interpret &quot;protected&quot; correctly for templates.</span>
<a name="l00196"></a>00196 <span class="comment">//so the constructor/destructor need to be public.</span>
<a name="l00197"></a>00197     <span class="keyword">public</span>:
<a name="l00198"></a>00198 <span class="preprocessor">#else</span>
<a name="l00199"></a>00199 <span class="preprocessor"></span>    <span class="keyword">protected</span>:
<a name="l00200"></a>00200 <span class="preprocessor">#endif</span>
<a name="l00201"></a>00201 <span class="preprocessor"></span>        <a class="code" href="classOSCL__String.html">OSCL_String</a>();
<a name="l00202"></a>00202         <span class="keyword">virtual</span> ~<a class="code" href="classOSCL__String.html">OSCL_String</a>();
<a name="l00203"></a>00203 
<a name="l00204"></a>00204     <span class="keyword">protected</span>:
<a name="l00211"></a>00211         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_rep(<span class="keyword">const</span> chartype* cstr) = 0;
<a name="l00212"></a>00212 
<a name="l00217"></a>00217         <span class="keyword">virtual</span> <span class="keywordtype">void</span> append_rep(<span class="keyword">const</span> chartype* cstr) = 0;
<a name="l00218"></a>00218 
<a name="l00221"></a>00221         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_rep(<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) = 0;
<a name="l00222"></a>00222 
<a name="l00226"></a>00226         <span class="keyword">virtual</span> <span class="keywordtype">void</span> append_rep(<span class="keyword">const</span> <a class="code" href="classOSCL__String.html">OSCL_String</a>&amp; src) = 0;
<a name="l00227"></a>00227 
<a name="l00231"></a>00231         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_len(uint32 len) = 0;
<a name="l00232"></a>00232 };
<a name="l00233"></a>00233 
<a name="l00241"></a><a class="code" href="classOSCL__wString.html">00241</a> <span class="keyword">class </span><a class="code" href="osclconfig_8h.html#a6de0f53c5c11f8f53ce72c70d74d9abc">OSCL_IMPORT_REF</a> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>
<a name="l00242"></a>00242 {
<a name="l00243"></a>00243     <span class="keyword">public</span>:
<a name="l00244"></a><a class="code" href="classOSCL__wString.html#a9bb4700674b347022ae5d1757e64c450">00244</a>         <span class="keyword">typedef</span> <a class="code" href="group__osclbase.html#gad3f9ec9db55ebd4760c877b17eb596ec">oscl_wchar</a> chartype;
<a name="l00245"></a>00245 
<a name="l00246"></a>00246         <span class="keyword">virtual</span> uint32 get_size() <span class="keyword">const</span> = 0;
<a name="l00247"></a>00247 
<a name="l00248"></a>00248         <span class="keyword">virtual</span> uint32 get_maxsize() <span class="keyword">const</span> = 0;
<a name="l00249"></a>00249 
<a name="l00250"></a>00250         <span class="keyword">virtual</span> <span class="keyword">const</span> chartype* get_cstr() <span class="keyword">const</span> = 0;
<a name="l00251"></a>00251 
<a name="l00252"></a>00252         <span class="keyword">virtual</span> <span class="keywordtype">bool</span> is_writable() <span class="keyword">const</span>;
<a name="l00253"></a>00253 
<a name="l00254"></a>00254         <span class="keyword">virtual</span> chartype* get_str() <span class="keyword">const</span> = 0;
<a name="l00255"></a>00255 
<a name="l00256"></a>00256         <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; operator=(<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src);
<a name="l00257"></a>00257         <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; operator=(<span class="keyword">const</span> chartype* cstr);
<a name="l00258"></a>00258 
<a name="l00259"></a>00259         <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; operator+=(<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src);
<a name="l00260"></a>00260         <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; operator+=(<span class="keyword">const</span> chartype* cstr);
<a name="l00261"></a>00261         <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; operator+=(<span class="keyword">const</span> chartype c);
<a name="l00262"></a>00262 
<a name="l00263"></a>00263         <span class="keywordtype">bool</span> operator== (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00264"></a>00264         <span class="keywordtype">bool</span> operator!= (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00265"></a>00265         <span class="keywordtype">bool</span> operator&lt; (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00266"></a>00266         <span class="keywordtype">bool</span> operator&lt;= (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00267"></a>00267         <span class="keywordtype">bool</span> operator&gt; (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00268"></a>00268         <span class="keywordtype">bool</span> operator&gt;= (<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) <span class="keyword">const</span>;
<a name="l00269"></a>00269         <span class="keywordtype">bool</span> operator== (<span class="keyword">const</span> chartype* cstr) <span class="keyword">const</span>;
<a name="l00270"></a>00270 
<a name="l00271"></a>00271         chartype operator[](uint32 index) <span class="keyword">const</span>;
<a name="l00272"></a>00272 
<a name="l00273"></a>00273         <span class="keyword">virtual</span> chartype read(uint32 index)<span class="keyword">const</span>;
<a name="l00274"></a>00274 
<a name="l00275"></a>00275         <span class="keyword">virtual</span> uint32 setrep_to_wide_char(<span class="keyword">const</span> <span class="keywordtype">char</span>* src, uint32 len,
<a name="l00276"></a>00276                                            <a class="code" href="group__osclutil.html#ga8634639175fa6338d6429a45b6da110e">TOSCL_wStringOp</a> op, <a class="code" href="classOscl__DefAlloc.html">Oscl_DefAlloc</a>* aAlloc);
<a name="l00277"></a>00277 
<a name="l00278"></a>00278         <span class="keyword">virtual</span> int8 hash() <span class="keyword">const</span>;
<a name="l00279"></a>00279 
<a name="l00280"></a>00280         <span class="keyword">virtual</span> <span class="keywordtype">void</span> write(uint32 index, chartype c);
<a name="l00281"></a>00281         <span class="keyword">virtual</span> <span class="keywordtype">void</span> write(uint32 offset, uint32 length, <span class="keyword">const</span> chartype* buf);
<a name="l00282"></a>00282 
<a name="l00283"></a>00283 <span class="preprocessor">#ifdef T_ARM</span>
<a name="l00284"></a>00284 <span class="preprocessor"></span><span class="comment">//ADS 1.2 compiler doesn&#39;t interpret &quot;protected&quot; correctly for templates.</span>
<a name="l00285"></a>00285 <span class="comment">//so the constructor/destructor need to be public.</span>
<a name="l00286"></a>00286     <span class="keyword">public</span>:
<a name="l00287"></a>00287 <span class="preprocessor">#else</span>
<a name="l00288"></a>00288 <span class="preprocessor"></span>    <span class="keyword">protected</span>:
<a name="l00289"></a>00289 <span class="preprocessor">#endif</span>
<a name="l00290"></a>00290 <span class="preprocessor"></span>        <a class="code" href="classOSCL__wString.html">OSCL_wString</a>();
<a name="l00291"></a>00291         <span class="keyword">virtual</span> ~<a class="code" href="classOSCL__wString.html">OSCL_wString</a>();
<a name="l00292"></a>00292 
<a name="l00293"></a>00293     <span class="keyword">protected</span>:
<a name="l00294"></a>00294         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_rep(<span class="keyword">const</span> chartype* cstr) = 0;
<a name="l00295"></a>00295         <span class="keyword">virtual</span> <span class="keywordtype">void</span> append_rep(<span class="keyword">const</span> chartype* cstr) = 0;
<a name="l00296"></a>00296 
<a name="l00297"></a>00297         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_rep(<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) = 0;
<a name="l00298"></a>00298         <span class="keyword">virtual</span> <span class="keywordtype">void</span> append_rep(<span class="keyword">const</span> <a class="code" href="classOSCL__wString.html">OSCL_wString</a>&amp; src) = 0;
<a name="l00299"></a>00299 
<a name="l00300"></a>00300         <span class="keyword">virtual</span> <span class="keywordtype">void</span> set_len(uint32 len) = 0;
<a name="l00301"></a>00301 };
<a name="l00302"></a>00302 
<a name="l00303"></a>00303 <span class="preprocessor">#endif   // OSCL_STRING_H_INCLUDED</span>
<a name="l00304"></a>00304 <span class="preprocessor"></span>
</pre></div></div>
<hr size="1"><img src="pvlogo_small.jpg"><address style="align: right;"><small>OSCL API</small>
<address style="align: left;"><small>Posting Version: CORE_9.002.1.1 </small>
</small></address>
</body>
</html>