summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--svl/prj/build.lst2
-rw-r--r--svl/source/numbers/zformat.cxx79
2 files changed, 80 insertions, 1 deletions
diff --git a/svl/prj/build.lst b/svl/prj/build.lst
index 8d121c7a0cf1..b89cde57e0cd 100644
--- a/svl/prj/build.lst
+++ b/svl/prj/build.lst
@@ -1,4 +1,4 @@
-sl svl : l10n rsc offuh ucbhelper unotools cppu cppuhelper comphelper sal sot NULL
+sl svl : i18npool l10n rsc offuh ucbhelper unotools cppu cppuhelper comphelper sal sot NULL
sl svl usr1 - all svl_mkout NULL
sl svl\inc nmake - all svl_inc NULL
sl svl\unx\source\svdde nmake - u svl_usdde svl_inc NULL
diff --git a/svl/source/numbers/zformat.cxx b/svl/source/numbers/zformat.cxx
index 461fac7066ac..f5f1ec321624 100644
--- a/svl/source/numbers/zformat.cxx
+++ b/svl/source/numbers/zformat.cxx
@@ -57,6 +57,48 @@
#include <cmath>
+#include <stdio.h>
+#include <string>
+#include <sys/time.h>
+
+namespace {
+
+class StackPrinter
+{
+public:
+ explicit StackPrinter(const char* msg) :
+ msMsg(msg)
+ {
+ fprintf(stdout, "%s: --begin\n", msMsg.c_str());
+ mfStartTime = getTime();
+ }
+
+ ~StackPrinter()
+ {
+ double fEndTime = getTime();
+ fprintf(stdout, "%s: --end (duration: %g sec)\n", msMsg.c_str(), (fEndTime-mfStartTime));
+ }
+
+ void printTime(int line) const
+ {
+ double fEndTime = getTime();
+ fprintf(stdout, "%s: --(%d) (duration: %g sec)\n", msMsg.c_str(), line, (fEndTime-mfStartTime));
+ }
+
+private:
+ double getTime() const
+ {
+ timeval tv;
+ gettimeofday(&tv, NULL);
+ return tv.tv_sec + tv.tv_usec / 1000000.0;
+ }
+
+ ::std::string msMsg;
+ double mfStartTime;
+};
+
+}
+
using namespace svt;
using ::rtl::OUString;
using ::rtl::OUStringBuffer;
@@ -605,6 +647,9 @@ SvNumberformat::SvNumberformat(String& rString,
nNewStandardDefined(0),
bStarFlag( FALSE )
{
+ StackPrinter __stack_printer__("SvNumberformat::SvNumberformat");
+ fprintf(stdout, "SvNumberformat::SvNumberformat: str = '%s'\n",
+ rtl::OUStringToOString(rString, RTL_TEXTENCODING_UTF8).getStr());
// If the group (AKA thousand) separator is a Non-Breaking Space (French)
// replace all occurrences by a simple space.
// The tokens will be changed to the LocaleData separator again later on.
@@ -4245,6 +4290,8 @@ String SvNumberformat::GetMappedFormatstring(
const NfKeywordTable& rKeywords, const LocaleDataWrapper& rLocWrp,
BOOL bDontQuote ) const
{
+ StackPrinter __stack_printer__("SvNumberformat::GetMappedFormatstring");
+
String aStr;
BOOL bDefault[4];
// 1 subformat matches all if no condition specified,
@@ -4283,6 +4330,7 @@ String SvNumberformat::GetMappedFormatstring(
int nSub = 0; // subformats delimited so far
for ( int n=0; n<4; n++ )
{
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: n = %d\n", n);
if ( n > 0 )
nSem++;
@@ -4303,6 +4351,9 @@ String SvNumberformat::GetMappedFormatstring(
}
}
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
+
const String& rColorName = NumFor[n].GetColorName();
if ( rColorName.Len() )
{
@@ -4329,6 +4380,9 @@ String SvNumberformat::GetMappedFormatstring(
aPrefix += 't'; // must be lowercase, otherwise taken as literal
}
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
+
USHORT nAnz = NumFor[n].GetnAnz();
if ( nSem && (nAnz || aPrefix.Len()) )
{
@@ -4338,8 +4392,16 @@ String SvNumberformat::GetMappedFormatstring(
bDefault[nSub] = FALSE;
}
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: prefix = '%s'\n",
+ rtl::OUStringToOString(aPrefix, RTL_TEXTENCODING_UTF8).getStr());
+
if ( aPrefix.Len() )
+ {
aStr += aPrefix;
+ }
+
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
if ( nAnz )
{
@@ -4350,29 +4412,41 @@ String SvNumberformat::GetMappedFormatstring(
if ( 0 <= pType[j] && pType[j] < NF_KEYWORD_ENTRIES_COUNT )
{
aStr += rKeywords[pType[j]];
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
if( NF_KEY_NNNN == pType[j] )
+ {
aStr += rLocWrp.getLongDateDayOfWeekSep();
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
+ }
}
else
{
switch ( pType[j] )
{
case NF_SYMBOLTYPE_DECSEP :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: decimal sep\n");
aStr += rLocWrp.getNumDecimalSep();
break;
case NF_SYMBOLTYPE_THSEP :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: thousand sep\n");
aStr += rLocWrp.getNumThousandSep();
break;
case NF_SYMBOLTYPE_DATESEP :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: date sep\n");
aStr += rLocWrp.getDateSep();
break;
case NF_SYMBOLTYPE_TIMESEP :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: time sep\n");
aStr += rLocWrp.getTimeSep();
break;
case NF_SYMBOLTYPE_TIME100SECSEP :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: time100sec sep\n");
aStr += rLocWrp.getTime100SecSep();
break;
case NF_SYMBOLTYPE_STRING :
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: string\n");
if( bDontQuote )
aStr += pStr[j];
else if ( pStr[j].Len() == 1 )
@@ -4388,17 +4462,22 @@ String SvNumberformat::GetMappedFormatstring(
}
break;
default:
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: default\n");
aStr += pStr[j];
}
}
}
}
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s' (%d)\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr(), __LINE__);
}
for ( ; nSub<4 && bDefault[nSub]; ++nSub )
{ // append empty subformats
aStr += ';';
}
+ fprintf(stdout, "SvNumberformat::GetMappedFormatstring: str = '%s'\n",
+ rtl::OUStringToOString(aStr, RTL_TEXTENCODING_UTF8).getStr());
return aStr;
}