PROJECT: FlowerSoft C++ library
FILE : string-convert.cc
---*/
+ --*/
#include "string-convert.hh"
2e318, this number would have approx 318 zero's in its string.
Should enlarge buff dynamically.
-
+
@see
man 3 snprintf
- */
-static const int STRING_BUFFER_LEN=1024;
+*/
+static const int STRING_BUFFER_LEN = 1024;
String
String_convert::bool_string (bool b)
String_convert::bin2hex (String bin_string)
{
String str;
- Byte const* byte = bin_string.to_bytes ();
- for (int i = 0; i < bin_string.length (); i++)
+ Byte const *byte = bin_string.to_bytes ();
+ for (int i = 0; i < bin_string.length (); i++)
{
str += to_string ((char)nibble2hex_byte (*byte >> 4));
str += to_string ((char)nibble2hex_byte (*byte++));
assert (bin_string.length () <= (int)sizeof (unsigned));
unsigned result_u = 0;
- for (int i = 0; i < bin_string.length (); i++)
+ for (int i = 0; i < bin_string.length (); i++)
{
result_u <<= 8;
result_u += (Byte)bin_string[ i ];
}
String
-String_convert::i64_string (I64 i64, char const* fmt)
+String_convert::i64_string (I64 i64, char const *fmt)
{
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);
}
}
int
-String_convert::hex2bin (String hex_string, String& bin_string_r)
+String_convert::hex2bin (String hex_string, String &bin_string_r)
{
if (hex_string.length () % 2)
hex_string = "0" + hex_string;
bin_string_r = "";
- Byte const* byte= hex_string.to_bytes ();
+ Byte const *byte= hex_string.to_bytes ();
int i = 0;
- while (i < hex_string.length ())
+ while (i < hex_string.length ())
{
int high_i = hex2nibble (*byte++);
int low_i = hex2nibble (*byte++);
if (high_i < 0 || low_i < 0)
return 1; // illegal char
- bin_string_r += to_string ((char) (high_i << 4 | low_i), 1 );
+ bin_string_r += to_string ((char) (high_i << 4 | low_i), 1);
i += 2;
}
return 0;
}
-String
+String
String_convert::hex2bin (String hex_string)
{
String str;
return str;
}
-int
+int
String_convert::hex2nibble (Byte byte)
{
if (byte >= '0' && byte <= '9')
}
// stupido. Should use int_string ()
-String
+String
String_convert::int2dec (int i, int length_i, char ch)
{
char fill_char = ch;
// ugh
String dec_string = to_string (i);
-
+
// ugh
return to_string (fill_char, length_i - dec_string.length ()) + dec_string;
}
-
// stupido. Should use int_string ()
-String
+String
String_convert::unsigned2hex (unsigned u, int length_i, char fill_char)
{
String str;
str = "0";
#if 1 // both go...
- while (u)
+ while (u)
{
- str = to_string ((char) ((u % 16)["0123456789abcdef"] ) ) + str;
+ str = to_string ((char) ((u % 16)["0123456789abcdef"])) + str;
u /= 16;
}
#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_convert::int_string (int i, char const* fmt)
+String_convert::int_string (int i, char const *fmt)
{
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
-String_convert::form_string (char const* format, ...)
+String_convert::form_string (char const *format, ...)
{
va_list args;
va_start (args, format);
return String (buffer);
}
-String
-String_convert::vform_string (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);
}
/**
- 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_convert::double_string (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);
}
/**
-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_convert::char_string (char c, int n)
{
n = n >= 0 ? n : 0;
- char* ch = new char[ n ];
+ char *ch = new char[ n ];
memset (ch, c, n);
- String s ((Byte*)ch, n);
+ String s ((Byte *)ch, n);
delete[] ch;
return s;
}
String
String_convert::rational_string (Rational r)
{
- return r.to_string ();
+ return r.to_string ();
}
String
String_convert::pointer_string (void const *l)
{
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);
}
/**
- 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_convert::precision_string (double x, int n)
{
{
String s = str.left_string (i);
a.push (s);
- while (str[++i] == c)
- ;
+ while (str[++i] == c);
str = str.cut_string (i, INT_MAX);
i = str.index (c);
}
return a;
}
-
String
String_convert::long_string (long l)
{
char s[STRING_BUFFER_LEN];
- sprintf (s,"%ld", l);
+ sprintf (s, "%ld", l);
return s;
}