[uClibc-cvs] CVS uClibc++/include
CVS User gkajmowi
gkajmowi at codepoet.org
Thu Jan 13 23:56:01 UTC 2005
Update of /var/cvs/uClibc++/include
In directory nail:/tmp/cvs-serv25305/include
Modified Files:
sstream string
Log Message:
Fix to string::append length checking. Make sstream use append instead of push back for MUCH higher performance.
--- /var/cvs/uClibc++/include/sstream 2004/12/18 22:00:45 1.4
+++ /var/cvs/uClibc++/include/sstream 2005/01/13 23:55:59 1.5
@@ -145,11 +145,7 @@
virtual streamsize xsputn(const char_type* s, streamsize n){
streamsize i = 0;
- data.reserve(data.length() + n);
- while(i < n){
- data.push_back(s[i]);
- ++i;
- }
+ data.append(s, n);
return n;
}
--- /var/cvs/uClibc++/include/string 2005/01/10 20:24:43 1.17
+++ /var/cvs/uClibc++/include/string 2005/01/13 23:55:59 1.18
@@ -79,7 +79,6 @@
rlen = n;
}
resize(rlen);
-// vector<Ch, A>::elements = rlen;
Tr::copy(vector<Ch, A>::data, str.vector<Ch, A>::data + pos, vector<Ch, A>::elements);
}
@@ -91,7 +90,6 @@
}
if(s > 0){
resize(n);
-// vector<Ch, A>::elements = n;
Tr::copy(vector<Ch, A>::data, s, vector<Ch, A>::elements);
}
}
@@ -135,7 +133,7 @@
basic_string& operator=(Ch c){
vector<Ch, A>::clear();
- push_back(c);
+ vector<Ch, A>::push_back(c);
return *this;
}
@@ -154,7 +152,7 @@
}
basic_string& operator+=(Ch c){
- push_back(c);
+ vector<Ch, A>::push_back(c);
return *this;
}
@@ -162,7 +160,6 @@
size_t temp = vector<Ch, A>::elements;
resize(vector<Ch, A>::elements + str.elements);
Tr::copy( vector<Ch, A>::data + temp, str.vector<Ch, A>::data, str.elements);
-// vector<Ch, A>::elements += str.elements;
return *this;
}
@@ -181,8 +178,7 @@
}
size_t temp = vector<Ch, A>::elements;
resize(vector<Ch, A>::elements + rlen);
-// vector<Ch, A>::elements += rlen;
- Tr::copy( vector<Ch, A>::data + temp, str.vector<Ch, A>::data, rlen);
+ Tr::copy( vector<Ch, A>::data + temp, str.vector<Ch, A>::data + pos, rlen);
return *this;
}
@@ -190,15 +186,14 @@
size_t temp = vector<Ch, A>::elements;
resize(vector<Ch, A>::elements + n);
Tr::copy( vector<Ch, A>::data + temp, s, n);
-// vector<Ch, A>::elements+=n;
return *this;
}
+
basic_string& append(const Ch* s){
size_type strLen = Tr::length(s);
size_t temp = vector<Ch, A>::elements;
resize(vector<Ch, A>::elements + strLen);
Tr::copy( vector<Ch, A>::data + temp, s, strLen);
-// vector<Ch, A>::elements+=strLen;
return *this;
}
@@ -209,7 +204,6 @@
basic_string& assign(const basic_string& str){
operator=(str);
-// *this = str;
return *this;
}
@@ -295,7 +289,7 @@
if(pos > vector<Ch, A>::elements){
__throw_out_of_range();
}
- if(vector<Ch, A>::elements > pos - n){
+ if(vector<Ch, A>::elements > npos - n){
__throw_length_error();
}
resize(vector<Ch, A>::elements + n);
@@ -314,7 +308,7 @@
if(pos > vector<Ch, A>::elements){
__throw_out_of_range();
}
- if(vector<Ch, A>::elements > pos - n){
+ if(vector<Ch, A>::elements > npos - n){
__throw_length_error();
}
resize(vector<Ch, A>::elements + n);
@@ -729,10 +723,7 @@
{
if(s!=0){
size_type temp = Tr::length(s);
- reserve(temp);
- for(size_type i = 0; i< temp; ++i){
- push_back(s[i]);
- }
+ append(s, temp);
}
}
More information about the uClibc-cvs
mailing list