You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by db...@apache.org on 2002/04/02 08:10:44 UTC
cvs commit: xml-xalan/c/src/XalanDOM XalanDOMString.cpp XalanDOMString.hpp
dbertoni 02/04/01 22:10:44
Modified: c/src/XalanDOM XalanDOMString.cpp XalanDOMString.hpp
Log:
Better implementations of assign. Added new iterator accessors.
Revision Changes Path
1.18 +50 -7 xml-xalan/c/src/XalanDOM/XalanDOMString.cpp
Index: XalanDOMString.cpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanDOM/XalanDOMString.cpp,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- XalanDOMString.cpp 6 Feb 2002 20:05:25 -0000 1.17
+++ XalanDOMString.cpp 2 Apr 2002 06:10:44 -0000 1.18
@@ -2,7 +2,7 @@
* The Apache Software License, Version 1.1
*
*
- * Copyright (c) 1999-2000 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -175,9 +175,7 @@
// If the string is not of 0 length, resize but
// put a copy of theChar where the terminating
// byte used to be.
- m_data.resize(theCount, theChar);
-
- m_data[theOldSize] = theChar;
+ m_data.resize(theCount + 1, theChar);
}
m_size = theCount;
@@ -232,16 +230,61 @@
XalanDOMString&
XalanDOMString::assign(
+ const XalanDOMString& theSource,
+ size_type thePosition,
+ size_type theCount)
+{
+ invariants();
+
+ assert(thePosition < theSource.size() && thePosition + theCount <= theSource.size());
+
+ if (&theSource != this)
+ {
+ erase();
+
+ append(theSource, thePosition, theCount);
+ }
+ else
+ {
+ if (thePosition == 0)
+ {
+ // See if we're being asked to
+ // assign everything to ourself,
+ // which is a noop...
+ if (theCount != m_size)
+ {
+ // We're being asked to truncate...
+ resize(theCount);
+ }
+ }
+ else
+ {
+ // Yuck. We have to move data...
+ memmove(&*begin(), &*begin() + thePosition, theCount * sizeof(XalanDOMChar));
+
+ resize(theCount);
+ }
+ }
+
+ invariants();
+
+ return *this;
+}
+
+
+
+XalanDOMString&
+XalanDOMString::assign(
const_iterator theFirstPosition,
const_iterator theLastPosition)
{
invariants();
- erase();
+ m_data.assign(theFirstPosition, theLastPosition);
- invariants();
+ m_data.push_back(XalanDOMChar(0));
- insert(begin(), theFirstPosition, theLastPosition);
+ m_size = m_data.size() - 1;
invariants();
1.21 +34 -16 xml-xalan/c/src/XalanDOM/XalanDOMString.hpp
Index: XalanDOMString.hpp
===================================================================
RCS file: /home/cvs/xml-xalan/c/src/XalanDOM/XalanDOMString.hpp,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- XalanDOMString.hpp 25 Sep 2001 21:13:55 -0000 1.20
+++ XalanDOMString.hpp 2 Apr 2002 06:10:44 -0000 1.21
@@ -2,7 +2,7 @@
* The Apache Software License, Version 1.1
*
*
- * Copyright (c) 1999 The Apache Software Foundation. All rights
+ * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
@@ -177,6 +177,22 @@
return m_data.begin();
}
+ iterator
+ end()
+ {
+ invariants();
+
+ return m_data.end();
+ }
+
+ const_iterator
+ end() const
+ {
+ invariants();
+
+ return m_data.end();
+ }
+
reverse_iterator
rbegin()
{
@@ -193,6 +209,22 @@
return m_data.rbegin();
}
+ reverse_iterator
+ rend()
+ {
+ invariants();
+
+ return m_data.rend();
+ }
+
+ const_reverse_iterator
+ rend() const
+ {
+ invariants();
+
+ return m_data.rend();
+ }
+
size_type
size() const
{
@@ -417,21 +449,7 @@
assign(
const XalanDOMString& theSource,
size_type thePosition,
- size_type theCount)
- {
- invariants();
-
- if (&theSource != this)
- {
- erase();
-
- append(theSource, thePosition, theCount);
- }
-
- invariants();
-
- return *this;
- }
+ size_type theCount);
XalanDOMString&
assign(const XalanDOMString& theSource)
---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org