blob: 8f00aba5f613560e7ed08fefd6eb64bc9f448e5e [file]
/*------------------------------------------------------------------------------
* Copyright (C) 2003-2006 Ben van Klinken and the CLucene Team
*
* Distributable under the terms of either the Apache License (Version 2.0) or
* the GNU Lesser General Public License, as specified in the COPYING file.
------------------------------------------------------------------------------*/
#include "test.h"
CL_NS_USE(util)
void English::IntToEnglish(int32_t i, StringBuffer* result)
{
if (i == 0)
{
result->append(_T("zero"));
return ;
}
if (i < 0)
{
result->append(_T("minus "));
i = - i;
}
if (i >= 1000000000)
{
// billions
IntToEnglish(i / 1000000000, result);
result->append(_T("billion, "));
i = i % 1000000000;
}
if (i >= 1000000)
{
// millions
IntToEnglish(i / 1000000, result);
result->append(_T("million, "));
i = i % 1000000;
}
if (i >= 1000)
{
// thousands
IntToEnglish(i / 1000, result);
result->append(_T("thousand, "));
i = i % 1000;
}
if (i >= 100)
{
// hundreds
IntToEnglish(i / 100, result);
result->append(_T("hundred "));
i = i % 100;
}
if (i >= 20)
{
switch (i / 10)
{
case 9: result->append(_T("ninety")); break;
case 8: result->append(_T("eighty")); break;
case 7: result->append(_T("seventy")); break;
case 6: result->append(_T("sixty")); break;
case 5: result->append(_T("fifty")); break;
case 4: result->append(_T("forty")); break;
case 3: result->append(_T("thirty")); break;
case 2: result->append(_T("twenty")); break;
}
i = i % 10;
if (i == 0)
result->append(_T(" "));
else
result->append(_T("-"));
}
switch (i)
{
case 19: result->append(_T("nineteen ")); break;
case 18: result->append(_T("eighteen ")); break;
case 17: result->append(_T("seventeen ")); break;
case 16: result->append(_T("sixteen ")); break;
case 15: result->append(_T("fifteen ")); break;
case 14: result->append(_T("fourteen ")); break;
case 13: result->append(_T("thirteen ")); break;
case 12: result->append(_T("twelve ")); break;
case 11: result->append(_T("eleven ")); break;
case 10: result->append(_T("ten ")); break;
case 9: result->append(_T("nine ")); break;
case 8: result->append(_T("eight ")); break;
case 7: result->append(_T("seven ")); break;
case 6: result->append(_T("six ")); break;
case 5: result->append(_T("five ")); break;
case 4: result->append(_T("four ")); break;
case 3: result->append(_T("three ")); break;
case 2: result->append(_T("two ")); break;
case 1: result->append(_T("one ")); break;
case 0: result->append(_T("")); break;
}
}
TCHAR* English::IntToEnglish(int32_t i)
{
StringBuffer result;
IntToEnglish(i, &result);
return result.toString();
}
void English::IntToEnglish(int32_t i, TCHAR* buf, int32_t buflen)
{
StringBuffer result;
IntToEnglish(i, &result);
_tcsncpy(buf,result.getBuffer(),buflen);
}