wxString CSizeFormatBase::FormatNumber(COptionsBase* pOptions, const wxLongLong& size, bool* thousands_separator /*=0*/)
{
	if ((thousands_separator && !*thousands_separator) || pOptions->GetOptionVal(OPTION_SIZE_USETHOUSANDSEP) == 0)
		return size.ToString();

	const wxString& sep = GetThousandsSeparator();
	if (sep.empty())
		return size.ToString();

	wxString tmp = size.ToString();
	const int len = tmp.Len();
	if (len <= 3)
		return tmp;

	wxString result;
	int i = (len - 1) % 3 + 1;
	result = tmp.Left(i);
	while (i < len)
	{
		result += sep + tmp.Mid(i, 3);
		i += 3;
	}

	return result;
}
std::wstring CSizeFormatBase::FormatNumber(COptionsBase* pOptions, int64_t size, bool* thousands_separator)
{
	std::wstring sep;
	wchar_t const* sepBegin = 0;
	wchar_t const* sepEnd = 0;

	if ((!thousands_separator || *thousands_separator) && pOptions->GetOptionVal(OPTION_SIZE_USETHOUSANDSEP) != 0) {
		sep = GetThousandsSeparator();
		if (!sep.empty()) {
			sepBegin = sep.c_str();
			sepEnd = sepBegin + sep.size();
		}
	}

	return ToString(size, sepBegin, sepEnd);
}