]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/string.cc
*** empty log message ***
[lilypond.git] / flower / string.cc
index b19180401384fc433d78af1c4d101c0a31eafe07..79995a1c76306e0212843c669ecb4d43ec65bbc2 100644 (file)
@@ -16,6 +16,7 @@
 #include <cstring>
 
 #include <iostream>
+using namespace std;
 
 #include "libc-extension.hh"
 #include "string-convert.hh"
@@ -131,12 +132,6 @@ String::to_bytes () const
   return strh_.to_bytes ();
 }
 
-char const *
-String::to_str0 () const
-{
-  return strh_.to_str0 ();
-}
-
 Byte *
 String::get_bytes ()
 {
@@ -238,8 +233,9 @@ String::index (String searchfor) const
 {
   char const *me = strh_.to_str0 ();
 
-  char const *p = (char const *)
-    memmem (me, length (), searchfor.to_str0 (), searchfor.length ());
+  char const *p
+    = (char const *) memmem (me, length (),
+                            searchfor.to_str0 (), searchfor.length ());
 
   if (p)
     return p - me;
@@ -266,9 +262,7 @@ String::index_any (String set) const
     {
       char *found = (char *) memchr (me, set[i], n);
       if (found)
-       {
-         return found - (char const *)me;
-       }
+       return found - (char const *)me;
     }
   return -1;
 }
@@ -348,7 +342,7 @@ String::to_lower ()
 void
 String::reverse ()
 {
-  strrev (get_bytes (), length ());
+  memrev (get_bytes (), length ());
 }
 
 int
@@ -382,9 +376,26 @@ String::print_on (ostream &os) const
 }
 #endif
 
-void
-String::substitute_char (char chr, String sub)
+String
+String::substitute (String find, String replace)
 {
-  for (int i = index (chr); i > -1; i = index (chr))
-    *this = left_string (i) + sub + right_string (length () - i - 1);
+  int n = find.length ();
+  int m = replace.length ();
+  for (int i = index (find), j = 0; i > -1;
+       i = right_string (length () - j).index (find))
+    {
+      *this = left_string (i + j)
+       + replace
+       + right_string (length () - j - i - n);
+      j += i + m;
+    }
+  return *this;
+}
+
+String
+String::substitute (char find, char replace)
+{
+  for (int i = index (find); i > - 1; i = index (find))
+    (*this)[i] = replace;
+  return *this;
 }