Browse Source

tags/2021-05-28
jules 18 years ago
parent
commit
6f56153b6e
1 changed files with 44 additions and 36 deletions
  1. +44
    -36
      src/juce_core/text/juce_String.cpp

+ 44
- 36
src/juce_core/text/juce_String.cpp View File

@@ -265,10 +265,31 @@ const String String::charToString (const tchar character) throw()
}
// pass in a pointer to the END of a buffer..
static tchar* intToCharString (tchar* t, const int n)
static tchar* int64ToCharString (tchar* t, const int64 n) throw()
{
int v = abs (n);
*--t = 0;
int64 v = (n >= 0) ? n : -n;
do
{
*--t = (tchar) (T('0') + (int) (v % 10));
v /= 10;
} while (v > 0);
if (n < 0)
*--t = T('-');
return t;
}
static tchar* intToCharString (tchar* t, const int n) throw()
{
if (n == 0x80000000) // (would cause an overflow)
return int64ToCharString (t, n);
*--t = 0;
int v = abs (n);
do
{
@@ -283,7 +304,7 @@ static tchar* intToCharString (tchar* t, const int n)
return t;
}
static tchar* uintToCharString (tchar* t, unsigned int v)
static tchar* uintToCharString (tchar* t, unsigned int v) throw()
{
*--t = 0;
@@ -299,8 +320,8 @@ static tchar* uintToCharString (tchar* t, unsigned int v)
String::String (const int number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar buffer [16];
tchar* const end = buffer + 16;
const tchar* const t = intToCharString (end, number);
const int numChars = (int) (end - t);
@@ -310,8 +331,8 @@ String::String (const int number) throw()
String::String (const unsigned int number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar buffer [16];
tchar* const end = buffer + 16;
const tchar* const t = uintToCharString (end, number);
const int numChars = (int) (end - t);
@@ -321,8 +342,8 @@ String::String (const unsigned int number) throw()
String::String (const short number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar buffer [16];
tchar* const end = buffer + 16;
const tchar* const t = intToCharString (end, (int) number);
const int numChars = (int) (end - t);
@@ -332,8 +353,8 @@ String::String (const short number) throw()
String::String (const unsigned short number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar buffer [16];
tchar* const end = buffer + 16;
const tchar* const t = uintToCharString (end, (unsigned int) number);
const int numChars = (int) (end - t);
@@ -343,32 +364,19 @@ String::String (const unsigned short number) throw()
String::String (const int64 number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar* t = end;
*--t = 0;
int64 v = (number >= 0) ? number : -number;
do
{
*--t = (tchar)(T('0') + (int) (v % 10));
v /= 10;
} while (v > 0);
if (number < 0)
*--t = T('-');
tchar buffer [32];
tchar* const end = buffer + 32;
const tchar* const t = int64ToCharString (end, number);
const int len = (int) (((char*) end) - ((char*) t));
createInternal (len - 1);
memcpy (text->text, t, len);
const int numChars = (int) (end - t);
createInternal (numChars - 1);
memcpy (text->text, t, numChars * sizeof (tchar));
}
String::String (const uint64 number) throw()
{
tchar buffer [64];
tchar* const end = buffer + 64;
tchar buffer [32];
tchar* const end = buffer + 32;
tchar* t = end;
*--t = 0;
@@ -376,14 +384,14 @@ String::String (const uint64 number) throw()
do
{
*--t = (tchar)(T('0') + (int) (v % 10));
*--t = (tchar) (T('0') + (int) (v % 10));
v /= 10;
} while (v > 0);
const int len = (int) (((char*) end) - ((char*) t));
createInternal (len - 1);
memcpy (text->text, t, len);
const int numChars = (int) (end - t);
createInternal (numChars - 1);
memcpy (text->text, t, numChars * sizeof (tchar));
}
// a double-to-string routine that actually uses the number of dec. places you asked for


Loading…
Cancel
Save