]> git.donarmstrong.com Git - lilypond.git/blobdiff - flower/string-convert.cc
* scm/framework-ps.scm (page-header): add version number to
[lilypond.git] / flower / string-convert.cc
index d44857c423976bfbc333c221191cc688d08e4ee6..af4d9931bdb027acea187ba446e2ab6953913ac3 100644 (file)
@@ -2,15 +2,14 @@
   PROJECT: FlowerSoft C++ library
   FILE   : string-convert.cc
 
   PROJECT: FlowerSoft C++ library
   FILE   : string-convert.cc
 
---*/
+  --*/
 
 
-#include <string.h>
-#include <stdio.h>
-#include <assert.h>
-#include <limits.h>
-#include "libc-extension.hh"
-#include "string.hh"
 #include "string-convert.hh"
 #include "string-convert.hh"
+
+#include <cstring>
+#include <cstdio>
+
+#include "libc-extension.hh"
 #include "rational.hh"
 #include "array.hh"
 
 #include "rational.hh"
 #include "array.hh"
 
    2e318, this number would have approx 318 zero's in its string.
 
    Should enlarge buff dynamically.
    2e318, this number would have approx 318 zero's in its string.
 
    Should enlarge buff dynamically.
-   
+
    @see
    man 3 snprintf
    @see
    man 3 snprintf
-   */
-static const int STRING_BUFFER_LEN=1024;
+*/
+static const int STRING_BUFFER_LEN = 1024;
 
 String
 
 String
-String_convert::bool_str (bool b)
+String_convert::bool_string (bool b)
 {
   return String (b ? "true" : "false");
 }
 
 String
 {
   return String (b ? "true" : "false");
 }
 
 String
-String_convert::bin2hex_str (String bin_str)
+String_convert::bin2hex (String bin_string)
 {
   String str;
 {
   String str;
-  Byte const* byte_C = bin_str.byte_C ();
-  for (int i = 0; i < bin_str.length_i (); i++) 
+  Byte const *byte = bin_string.to_bytes ();
+  for (int i = 0; i < bin_string.length (); i++)
     {
     {
-      str += to_str ((char)nibble2hex_byte (*byte_C >> 4));
-      str += to_str ((char)nibble2hex_byte (*byte_C++));
+      str += to_string ((char)nibble2hex_byte (*byte >> 4));
+      str += to_string ((char)nibble2hex_byte (*byte++));
     }
   return str;
 }
 
 int
     }
   return str;
 }
 
 int
-String_convert::bin2_i (String bin_str)
+String_convert::bin2int (String bin_string)
 {
 {
-  return bin2_u (bin_str);
+  return bin2unsigned (bin_string);
 }
 
 unsigned
 }
 
 unsigned
-String_convert::bin2_u (String bin_str)
+String_convert::bin2unsigned (String bin_string)
 {
 {
-  assert (bin_str.length_i () <= (int)sizeof (unsigned));
+  assert (bin_string.length () <= (int)sizeof (unsigned));
 
   unsigned result_u = 0;
 
   unsigned result_u = 0;
-  for (int i = 0; i < bin_str.length_i (); i++) 
+  for (int i = 0; i < bin_string.length (); i++)
     {
       result_u <<= 8;
     {
       result_u <<= 8;
-      result_u += (Byte)bin_str[ i ];
+      result_u += (Byte)bin_string[ i ];
     }
   return result_u;
 }
 
 // breendet imp from String
 int
     }
   return result_u;
 }
 
 // breendet imp from String
 int
-String_convert::dec2_i (String dec_str)
+String_convert::dec2int (String dec_string)
 {
 {
-  if (!dec_str.length_i ())
+  if (!dec_string.length ())
     return 0;
 
   long l = 0;
     return 0;
 
   long l = 0;
-  int conv = sscanf (dec_str.ch_C (), "%ld", &l);
+  int conv = sscanf (dec_string.to_str0 (), "%ld", &l);
   assert (conv);
 
   return (int)l;
 }
 
 String
   assert (conv);
 
   return (int)l;
 }
 
 String
-String_convert::i64_str (I64 i64, char const* fmt)
+String_convert::i64_string (I64 i64, char const *fmt)
 {
   char buffer[STRING_BUFFER_LEN];
   snprintf (buffer, STRING_BUFFER_LEN,
 {
   char buffer[STRING_BUFFER_LEN];
   snprintf (buffer, STRING_BUFFER_LEN,
(fmt ? fmt : "%Ld"), i64);     // assume radix 10
          (fmt ? fmt : "%Ld"), i64); // assume radix 10
   return String (buffer);
   return String (buffer);
-
 }
 // breendet imp from String
 double
 }
 // breendet imp from String
 double
-String_convert::dec2_f (String dec_str)
+String_convert::dec2double (String dec_string)
 {
 {
-  if (!dec_str.length_i ())
+  if (!dec_string.length ())
     return 0;
   double d = 0;
     return 0;
   double d = 0;
-  int conv = sscanf (dec_str.ch_C (), "%lf", &d);
+  int conv = sscanf (dec_string.to_str0 (), "%lf", &d);
   assert (conv);
   return d;
 }
 
 int
   assert (conv);
   return d;
 }
 
 int
-String_convert::hex2bin_i (String hex_str, String& bin_str_r)
+String_convert::hex2bin (String hex_string, String &bin_string_r)
 {
 {
-  if (hex_str.length_i () % 2)
-    hex_str = "0" + hex_str;
+  if (hex_string.length () % 2)
+    hex_string = "0" + hex_string;
 
 
-  bin_str_r = "";
-  Byte const* byte_C= hex_str.byte_C ();
+  bin_string_r = "";
+  Byte const *byte = hex_string.to_bytes ();
   int i = 0;
   int i = 0;
-  while (i < hex_str.length_i ()) 
+  while (i < hex_string.length ())
     {
     {
-      int high_i = hex2nibble_i (*byte_C++);
-      int low_i = hex2nibble_i (*byte_C++);
+      int high_i = hex2nibble (*byte++);
+      int low_i = hex2nibble (*byte++);
       if (high_i < 0 || low_i < 0)
        return 1; // illegal char
       if (high_i < 0 || low_i < 0)
        return 1; // illegal char
-      bin_str_r += to_str ((char) (high_i << 4 | low_i), 1 );
+      bin_string_r += to_string ((char) (high_i << 4 | low_i), 1);
       i += 2;
     }
   return 0;
 }
 
       i += 2;
     }
   return 0;
 }
 
-String 
-String_convert::hex2bin_str (String hex_str)
+String
+String_convert::hex2bin (String hex_string)
 {
   String str;
   //  silly, asserts should alway be "on"!
 {
   String str;
   //  silly, asserts should alway be "on"!
-  //    assert (!hex2bin_i (hex_str, str) );
-  int error_i = hex2bin_i (hex_str, str);
+  //    assert (!hex2bin (hex_string, str) );
+  int error_i = hex2bin (hex_string, str);
   assert (!error_i);
   return str;
 }
 
   assert (!error_i);
   return str;
 }
 
-int 
-String_convert::hex2nibble_i (Byte byte)
+int
+String_convert::hex2nibble (Byte byte)
 {
   if (byte >= '0' && byte <= '9')
     return byte - '0';
 {
   if (byte >= '0' && byte <= '9')
     return byte - '0';
@@ -145,78 +143,77 @@ String_convert::hex2nibble_i (Byte byte)
   return -1;
 }
 
   return -1;
 }
 
-// stupido.  Should use int_str ()
-String 
-String_convert::i2dec_str (int i, int length_i, char ch)
+// stupido.  Should use int_string ()
+String
+String_convert::int2dec (int i, int length_i, char ch)
 {
 {
-  char fill_ch = ch;
-  if (fill_ch)
-    fill_ch = '0';
+  char fill_char = ch;
+  if (fill_char)
+    fill_char = '0';
 
   // ugh
 
   // ugh
-  String dec_str = to_str (i);
-  
+  String dec_string = to_string (i);
+
   // ugh
   // ugh
-  return to_str (fill_ch, length_i - dec_str.length_i ()) + dec_str;
+  return to_string (fill_char, length_i - dec_string.length ()) + dec_string;
 }
 
 }
 
-
-// stupido.  Should use int_str ()
-String 
-String_convert::u2hex_str (unsigned u, int length_i, char fill_ch)
+// stupido.  Should use int_string ()
+String
+String_convert::unsigned2hex (unsigned u, int length_i, char fill_char)
 {
   String str;
   if (!u)
     str = "0";
 
 #if 1 // both go...
 {
   String str;
   if (!u)
     str = "0";
 
 #if 1 // both go...
-  while (u) 
+  while (u)
     {
     {
-      str = to_str ((char) ((u % 16)["0123456789abcdef"] ) ) + str;
+      str = to_string ((char) ((u % 16)["0123456789abcdef"])) + str;
       u /= 16;
     }
 #else
       u /= 16;
     }
 #else
-  str += int_str (u, "%x");    // hmm. %lx vs. %x -> portability?
+  str += int_string (u, "%x"); // hmm. %lx vs. %x -> portability?
 #endif
 
 #endif
 
-  str = to_str (fill_ch, length_i - str.length_i ()) + str;
-  while ((str.length_i () > length_i) && (str[ 0 ] == 'f' ) )
-    str = str.cut_str (2, INT_MAX);
+  str = to_string (fill_char, length_i - str.length ()) + str;
+  while ((str.length () > length_i) && (str[ 0 ] == 'f'))
+    str = str.cut_string (2, INT_MAX);
 
   return str;
 }
 
 
   return str;
 }
 
-String 
-String_convert::i2hex_str (int i, int length_i, char fill_ch)
+String
+String_convert::int2hex (int i, int length_i, char fill_char)
 {
 {
-  return u2hex_str ((unsigned)i, length_i, fill_ch);
+  return unsigned2hex ((unsigned)i, length_i, fill_char);
 }
 
 Byte
 String_convert::nibble2hex_byte (Byte byte)
 {
 }
 
 Byte
 String_convert::nibble2hex_byte (Byte byte)
 {
-  if ((byte & 0x0f) <= 9 )
+  if ((byte & 0x0f) <= 9)
     return (byte & 0x0f) + '0';
   else
     return (byte & 0x0f) - 10 + 'a';
 }
 /**
     return (byte & 0x0f) + '0';
   else
     return (byte & 0x0f) - 10 + 'a';
 }
 /**
-  Convert an integer to a string
+   Convert an integer to a string
 
 
-  @param
-  #fmt# is a printf style format, default assumes "%d" as format. 
-  */
+   @param
+   #fmt# is a printf style format, default assumes "%d" as format.
+*/
 String
 String
-String_convert::int_str (int i, char const* fmt)
+String_convert::int_string (int i, char const *fmt)
 {
   char buffer[STRING_BUFFER_LEN];
   snprintf (buffer, STRING_BUFFER_LEN,
 {
   char buffer[STRING_BUFFER_LEN];
   snprintf (buffer, STRING_BUFFER_LEN,
(fmt ? fmt : "%d"), i);     // assume radix 10
          (fmt ? fmt : "%d"), i); // assume radix 10
   return String (buffer);
 }
 
 String
   return String (buffer);
 }
 
 String
-String_convert::form_str (char const* format, ...)
+String_convert::form_string (char const *format, ...)
 {
   va_list args;
   va_start (args, format);
 {
   va_list args;
   va_start (args, format);
@@ -226,8 +223,8 @@ String_convert::form_str (char const* format, ...)
   return String (buffer);
 }
 
   return String (buffer);
 }
 
-String 
-String_convert::vform_str (char const* format, va_list args)
+String
+String_convert::vform_string (char const *format, va_list args)
 {
   char buffer[STRING_BUFFER_LEN];
   vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
 {
   char buffer[STRING_BUFFER_LEN];
   vsnprintf (buffer, STRING_BUFFER_LEN, format, args);
@@ -235,81 +232,81 @@ String_convert::vform_str (char const* format, va_list args)
 }
 
 /**
 }
 
 /**
-  Convert a double to a string.
+   Convert a double to a string.
 
 
-  @param #fmt# is a printf style format, default assumes "%lf" as format
- */
+   @param #fmt# is a printf style format, default assumes "%lf" as format
+*/
 String
 String
-String_convert::double_str (double f, char const* fmt)
+String_convert::double_string (double f, char const *fmt)
 {
 {
-  char buf[STRING_BUFFER_LEN]; 
+  char buf[STRING_BUFFER_LEN];
 
   snprintf (buf, STRING_BUFFER_LEN, fmt ? fmt : "%f", f);
   return String (buf);
 }
 
 /**
 
   snprintf (buf, STRING_BUFFER_LEN, fmt ? fmt : "%f", f);
   return String (buf);
 }
 
 /**
-Make a string from a single character.
+   Make a string from a single character.
 
 
-  @param
-  #n# is a repetition count, default value is 1
- */
+   @param
+   #n# is a repetition count, default value is 1
+*/
 String
 String
-String_convert::char_str (char c, int n)
+String_convert::char_string (char c, int n)
 {
   n = n >= 0 ? n : 0;
 {
   n = n >= 0 ? n : 0;
-  char* ch_p = new char[ n ];
-  memset (ch_p, c, n);
-  String s ((Byte*)ch_p, n);
-  delete[] ch_p;
+  char *ch = new char[ n ];
+  memset (ch, c, n);
+  String s ((Byte *)ch, n);
+  delete[] ch;
   return s;
 }
 
 String
   return s;
 }
 
 String
-String_convert::rational_str (Rational r)
+String_convert::rational_string (Rational r)
 {
 {
-       return r.str ();
+  return r.to_string ();
 }
 
 String
 }
 
 String
-String_convert::pointer_str (void const *l)
+String_convert::pointer_string (void const *l)
 {
   char buffer[STRING_BUFFER_LEN];
 {
   char buffer[STRING_BUFFER_LEN];
-  snprintf (buffer, STRING_BUFFER_LEN, "%p", l);     // assume radix 10
+  snprintf (buffer, STRING_BUFFER_LEN, "%p", l); // assume radix 10
   return String (buffer);
 }
 
 /**
   return String (buffer);
 }
 
 /**
-  Convert a double to a string.
+   Convert a double to a string.
 
 
-  @param
-  #n# is the number of nonzero digits
- */
+   @param
+   #n# is the number of nonzero digits
+*/
 String
 String
-String_convert::precision_str (double x, int n)
+String_convert::precision_string (double x, int n)
 {
 {
-  String format = "%." + to_str (0 >? n - 1) + "e";
-  String str = double_str (abs (x), format.ch_C ());
+  String format = "%." + to_string (max (0, n - 1)) + "e";
+  String str = double_string (abs (x), format.to_str0 ());
 
 
-  int exp = str.right_str (3).value_i ();
-  str = str.left_str (str.length_i () - 4);
+  int exp = str.right_string (3).to_int ();
+  str = str.left_string (str.length () - 4);
 
 
-  while (str[str.length_i () - 1] == '0')
-    str = str.left_str (str.length_i () - 1);
-  if (str[str.length_i () - 1] == '.')
-    str = str.left_str (str.length_i () - 1);
+  while (str[str.length () - 1] == '0')
+    str = str.left_string (str.length () - 1);
+  if (str[str.length () - 1] == '.')
+    str = str.left_string (str.length () - 1);
 
   if (exp == 0)
     return (sign (x) > 0 ? str : "-" + str);
 
 
   if (exp == 0)
     return (sign (x) > 0 ? str : "-" + str);
 
-  str = str.left_str (1) + str.cut_str (2, INT_MAX);
+  str = str.left_string (1) + str.cut_string (2, INT_MAX);
   int dot = 1 + exp;
   if (dot <= 0)
   int dot = 1 + exp;
   if (dot <= 0)
-    str = "0." + to_str ('0', -dot) + str;
-  else if (dot >= str.length_i ())
-    str += to_str ('0', dot - str.length_i ());
-  else if (( dot > 0) && (dot < str.length_i ()))
-    str = str.left_str (dot) + "." + str.cut_str (dot, INT_MAX);
+    str = "0." + to_string ('0', -dot) + str;
+  else if (dot >= str.length ())
+    str += to_string ('0', dot - str.length ());
+  else if ((dot > 0) && (dot < str.length ()))
+    str = str.left_string (dot) + "." + str.cut_string (dot, INT_MAX);
   else
     assert (0);
 
   else
     assert (0);
 
@@ -317,35 +314,34 @@ String_convert::precision_str (double x, int n)
 }
 
 Array<String>
 }
 
 Array<String>
-String_convert::split_arr (String str, char c)
+String_convert::split (String str, char c)
 {
   Array<String> a;
 {
   Array<String> a;
-  int i = str.index_i (c);
-  while (i >=0)
+  int i = str.index (c);
+  while (i >= 0)
     {
     {
-      String s = str.left_str (i);
+      String s = str.left_string (i);
       a.push (s);
       while (str[++i] == c)
        ;
       a.push (s);
       while (str[++i] == c)
        ;
-      str = str.cut_str (i, INT_MAX);
-      i = str.index_i (c);
+      str = str.cut_string (i, INT_MAX);
+      i = str.index (c);
     }
     }
-  if (str.length_i ())
+  if (str.length ())
     a.push (str);
   return a;
 }
 
     a.push (str);
   return a;
 }
 
-
 String
 String
-String_convert::long_str (long l)
+String_convert::long_string (long l)
 {
   char s[STRING_BUFFER_LEN];
 {
   char s[STRING_BUFFER_LEN];
-  sprintf (s,"%ld", l);
+  sprintf (s, "%ld", l);
   return s;
 }
 
 String
 String_convert::pad_to (String s, int n)
 {
   return s;
 }
 
 String
 String_convert::pad_to (String s, int n)
 {
-  return s + to_str (' ' , (n - s.length_i ()) >? 0);
+  return s + to_string (' ', max (n - s.length (), 0));
 }
 }