From c5e7a7d769a6ac2b9793591d02fc97c82fb7890a Mon Sep 17 00:00:00 2001
From: =?utf8?q?V=C3=A1clav=20Slav=C3=ADk?= <vslavik@fastmail.fm>
Date: Wed, 9 May 2007 21:07:08 +0000
Subject: [PATCH] changed wxString::StartsWidth/EndsWidth to take wxString
 argument instead of wxChar*

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@45922 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
---
 docs/latex/wx/wxstring.tex |  4 ++--
 include/wx/string.h        |  4 ++--
 src/common/string.cpp      | 27 ++++++---------------------
 3 files changed, 10 insertions(+), 25 deletions(-)

diff --git a/docs/latex/wx/wxstring.tex b/docs/latex/wx/wxstring.tex
index 20b9f19f69..57504f03e6 100644
--- a/docs/latex/wx/wxstring.tex
+++ b/docs/latex/wx/wxstring.tex
@@ -1110,7 +1110,7 @@ Minimizes the string's memory. This can be useful after a call to
 
 \membersection{wxString::StartsWith}\label{wxstringstartswith}
 
-\constfunc{bool}{StartsWith}{\param{const wxChar }{*prefix}, \param{wxString }{*rest = NULL}}
+\constfunc{bool}{StartsWith}{\param{const wxString\& }{prefix}, \param{wxString }{*rest = NULL}}
 
 This function can be used to test if the string starts with the specified 
 {\it prefix}. If it does, the function will return \true and put the rest
@@ -1121,7 +1121,7 @@ of the string (i.e. after the prefix) into {\it rest} string if it is not
 
 \membersection{wxString::EndsWith}\label{wxstringendswith}
 
-\constfunc{bool}{EndsWith}{\param{const wxChar }{*suffix}, \param{wxString }{*rest = NULL}}
+\constfunc{bool}{EndsWith}{\param{const wxString\& }{suffix}, \param{wxString }{*rest = NULL}}
 
 This function can be used to test if the string ends with the specified 
 {\it suffix}. If it does, the function will return \true and put the
diff --git a/include/wx/string.h b/include/wx/string.h
index dac27573fa..c1cfbb5aa2 100644
--- a/include/wx/string.h
+++ b/include/wx/string.h
@@ -1464,11 +1464,11 @@ public:
       // check if the string starts with the given prefix and return the rest
       // of the string in the provided pointer if it is not NULL; otherwise
       // return false
-  bool StartsWith(const wxChar *prefix, wxString *rest = NULL) const;
+  bool StartsWith(const wxString& prefix, wxString *rest = NULL) const;
       // check if the string ends with the given suffix and return the
       // beginning of the string before the suffix in the provided pointer if
       // it is not NULL; otherwise return false
-  bool EndsWith(const wxChar *suffix, wxString *rest = NULL) const;
+  bool EndsWith(const wxString& suffix, wxString *rest = NULL) const;
 
       // get first nCount characters
   wxString Left(size_t nCount) const;
diff --git a/src/common/string.cpp b/src/common/string.cpp
index dac95cc926..3ae68d82e6 100644
--- a/src/common/string.cpp
+++ b/src/common/string.cpp
@@ -1065,28 +1065,15 @@ wxString wxString::Mid(size_t nFirst, size_t nCount) const
 
 // check that the string starts with prefix and return the rest of the string
 // in the provided pointer if it is not NULL, otherwise return false
-bool wxString::StartsWith(const wxChar *prefix, wxString *rest) const
+bool wxString::StartsWith(const wxString& prefix, wxString *rest) const
 {
-    wxASSERT_MSG( prefix, _T("invalid parameter in wxString::StartsWith") );
-
-    // first check if the beginning of the string matches the prefix: note
-    // that we don't have to check that we don't run out of this string as
-    // when we reach the terminating NUL, either prefix string ends too (and
-    // then it's ok) or we break out of the loop because there is no match
-    const wxChar *p = c_str();
-    while ( *prefix )
-    {
-        if ( *prefix++ != *p++ )
-        {
-            // no match
-            return false;
-        }
-    }
+    if ( compare(0, prefix.length(), prefix) != 0 )
+        return false;
 
     if ( rest )
     {
         // put the rest of the string into provided pointer
-        *rest = p;
+        rest->assign(*this, prefix.length(), npos);
     }
 
     return true;
@@ -1095,11 +1082,9 @@ bool wxString::StartsWith(const wxChar *prefix, wxString *rest) const
 
 // check that the string ends with suffix and return the rest of it in the
 // provided pointer if it is not NULL, otherwise return false
-bool wxString::EndsWith(const wxChar *suffix, wxString *rest) const
+bool wxString::EndsWith(const wxString& suffix, wxString *rest) const
 {
-    wxASSERT_MSG( suffix, _T("invalid parameter in wxString::EndssWith") );
-
-    int start = length() - wxStrlen(suffix);
+    int start = length() - suffix.length();
 
     if ( start < 0 || compare(start, npos, suffix) != 0 )
         return false;
-- 
2.50.0

