1
1
forked from 0ad/0ad

remove *tot - non-portable and inefficient. replaced with stringstream

This was SVN commit r529.
This commit is contained in:
janwas 2004-06-18 13:22:26 +00:00
parent df62c14469
commit b09211c4a3
4 changed files with 91 additions and 131 deletions

View File

@ -351,52 +351,3 @@ void base32(const int len, const u8* in, u8* out)
}
}
#ifndef _WIN32
char *_itoa(int value, char *out, int radix)
{
return _ltoa(value, out, radix);
}
static const char digits[]="0123456789abcdef";
char *_ultoa(unsigned long int value, char *out, int radix)
{
char buf[21];
char *p=buf+21;
do
{
*(--p)=digits[value % radix];
value /= radix;
}
while (value);
memcpy(out, p, (buf+21)-p);
out[(buf+21)-p]=0;
return out;
}
char *_ltoa(long val, char *out, int radix)
{
char buf[21];
char *p=buf+21;
bool sign=val < 0;
if (sign) val=-val;
do
{
*(--p)=digits[val % radix];
val /= radix;
}
while (val);
if (sign) *(--p) = '-';
memcpy(out, p, (buf+21)-p);
out[(buf+21)-p]=0;
return out;
}
#endif

View File

@ -14,6 +14,8 @@
#include "CStr.h"
using namespace std;
#include <sstream>
CStr::CStr()
{
// Default Constructor
@ -44,43 +46,47 @@ CStr::CStr(TCHAR Char)
CStr::CStr(int Number)
{
// Creates CStr from a int
m_String = _itot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::CStr(unsigned int Number)
{
// Creates CStr from a uint
m_String = _ultot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::CStr(long Number)
{
// Creates CStr from a long
m_String = _ltot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::CStr(unsigned long Number)
{
// Creates CStr from a ulong
m_String = _ultot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::CStr(float Number)
{
// Creates CStr from a float
_tsnprintf(m_ConversionBuffer, CONVERSION_BUFFER_SIZE, FLOAT_CONVERSION, Number);
m_String = m_ConversionBuffer;
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::CStr(double Number)
{
// Creates CStr from a double
_tsnprintf(m_ConversionBuffer, CONVERSION_BUFFER_SIZE, FLOAT_CONVERSION, Number);
m_String = m_ConversionBuffer;
std::tstringstream ss;
ss << Number;
ss >> m_String;
}
CStr::~CStr()
@ -313,40 +319,54 @@ CStr &CStr::operator=(TCHAR Char)
CStr& CStr::operator=(int Number)
{
m_String = _itot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}
CStr& CStr::operator=(long Number)
{
m_String = _ltot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}
CStr& CStr::operator=(unsigned int Number)
{
m_String = _ultot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}
CStr& CStr::operator=(unsigned long Number)
{
m_String = _ultot(Number, m_ConversionBuffer, 10);
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}
CStr& CStr::operator=(float Number)
{
_tsnprintf(m_ConversionBuffer, CONVERSION_BUFFER_SIZE, FLOAT_CONVERSION, Number);
m_String = m_ConversionBuffer;
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}
CStr& CStr::operator=(double Number)
{
_tsnprintf(m_ConversionBuffer, CONVERSION_BUFFER_SIZE, FLOAT_CONVERSION, Number);
m_String = m_ConversionBuffer;
std::tstringstream ss;
ss << Number;
ss >> m_String;
return *this;
}

View File

@ -35,10 +35,6 @@ More Info:
#ifndef CSTR_H_FIRST
#define CSTR_H_FIRST
// DEFINES/ENUMS
#define CONVERSION_BUFFER_SIZE 32
#define FLOAT_CONVERSION _T("%.6f")
enum PS_TRIM_MODE {PS_TRIM_LEFT, PS_TRIM_RIGHT, PS_TRIM_BOTH};
#ifndef IN_UNIDOUBLER
@ -64,34 +60,30 @@ enum PS_TRIM_MODE {PS_TRIM_LEFT, PS_TRIM_RIGHT, PS_TRIM_BOTH};
#ifdef _UNICODE
#define tstring wstring
#define tstringstream wstringstream
#define _tcout wcout
#define _tstod wcstod
#define TCHAR wchar_t
#define _ttoi _wtoi
#define _ttol _wtol
#define _itot _itow
#define _ultot _itow
#define _T(t) L ## t
#define _totlower towlower
#define _istspace iswspace
#define _tsnprintf swprintf
#define _ltot _ltow
#else
#define tstringstream stringstream
#define tstring string
#define _tcout cout
#define _tstod strtod
#define _ttoi atoi
#define _ttol atol
#define _itot _itoa
#define TCHAR char
#define _T(t) t
#define _istspace isspace
#define _tsnprintf snprintf
#define _totlower tolower
#define _ultot _ultoa
#define _ltot _ltoa
#endif
@ -200,7 +192,6 @@ public:
protected:
std::tstring m_String;
TCHAR m_ConversionBuffer[CONVERSION_BUFFER_SIZE];
};
class CStr_hash_compare

View File

@ -14,18 +14,16 @@
// Undef all the Conversion Macros
#undef tstring
#undef tstringstream
#undef _tcout
#undef _tstod
#undef _ttoi
#undef _ttol
#undef _itot
#undef TCHAR
#undef _T
#undef _istspace
#undef _tsnprintf
#undef _totlower
#undef _ultot
#undef _ltot
// Now include the 8-bit version under the name CStr8
#undef _UNICODE