[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