Kaydet (Commit) db9a73d5 authored tarafından Kohei Yoshida's avatar Kohei Yoshida

Allow non-pooled instance of SvNumberFormatter inside ScCompiler.

Change-Id: I645079254621c2f2684a69116b094e37e46f46f4
üst 4efc5fa3
...@@ -312,6 +312,8 @@ private: ...@@ -312,6 +312,8 @@ private:
ScDocument* pDoc; ScDocument* pDoc;
ScAddress aPos; ScAddress aPos;
SvNumberFormatter* mpFormatter;
// For CONV_XL_OOX, may be set via API by MOOXML filter. // For CONV_XL_OOX, may be set via API by MOOXML filter.
::com::sun::star::uno::Sequence< const ::com::sun::star::sheet::ExternalLinkInfo > maExternalLinks; ::com::sun::star::uno::Sequence< const ::com::sun::star::sheet::ExternalLinkInfo > maExternalLinks;
...@@ -400,6 +402,7 @@ public: ...@@ -400,6 +402,7 @@ public:
void SetGrammar( const formula::FormulaGrammar::Grammar eGrammar ); void SetGrammar( const formula::FormulaGrammar::Grammar eGrammar );
void SetNumberFormatter( SvNumberFormatter* pFormatter );
EncodeUrlMode GetEncodeUrlMode() const; EncodeUrlMode GetEncodeUrlMode() const;
private: private:
/** Set grammar and reference convention from within SetFormulaLanguage() /** Set grammar and reference convention from within SetFormulaLanguage()
......
...@@ -239,6 +239,11 @@ void ScCompiler::SetGrammar( const FormulaGrammar::Grammar eGrammar ) ...@@ -239,6 +239,11 @@ void ScCompiler::SetGrammar( const FormulaGrammar::Grammar eGrammar )
} }
} }
void ScCompiler::SetNumberFormatter( SvNumberFormatter* pFormatter )
{
mpFormatter = pFormatter;
}
ScCompiler::EncodeUrlMode ScCompiler::GetEncodeUrlMode() const ScCompiler::EncodeUrlMode ScCompiler::GetEncodeUrlMode() const
{ {
return meEncodeUrlMode; return meEncodeUrlMode;
...@@ -1640,6 +1645,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos,ScTokenArra ...@@ -1640,6 +1645,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos,ScTokenArra
: FormulaCompiler(rArr), : FormulaCompiler(rArr),
pDoc( pDocument ), pDoc( pDocument ),
aPos( rPos ), aPos( rPos ),
mpFormatter(pDoc->GetFormatTable()),
pCharClass( ScGlobal::pCharClass ), pCharClass( ScGlobal::pCharClass ),
mnPredetectedReference(0), mnPredetectedReference(0),
mnRangeOpPosInSymbol(-1), mnRangeOpPosInSymbol(-1),
...@@ -1656,6 +1662,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos) ...@@ -1656,6 +1662,7 @@ ScCompiler::ScCompiler( ScDocument* pDocument, const ScAddress& rPos)
: :
pDoc( pDocument ), pDoc( pDocument ),
aPos( rPos ), aPos( rPos ),
mpFormatter(pDoc->GetFormatTable()),
pCharClass( ScGlobal::pCharClass ), pCharClass( ScGlobal::pCharClass ),
mnPredetectedReference(0), mnPredetectedReference(0),
mnRangeOpPosInSymbol(-1), mnRangeOpPosInSymbol(-1),
...@@ -2517,12 +2524,12 @@ bool ScCompiler::IsOpCode2( const OUString& rName ) ...@@ -2517,12 +2524,12 @@ bool ScCompiler::IsOpCode2( const OUString& rName )
bool ScCompiler::IsValue( const OUString& rSym ) bool ScCompiler::IsValue( const OUString& rSym )
{ {
double fVal; double fVal;
sal_uInt32 nIndex = ( mxSymbols->isEnglish() ? sal_uInt32 nIndex = mxSymbols->isEnglish() ? mpFormatter->GetStandardIndex(LANGUAGE_ENGLISH_US) : 0;
pDoc->GetFormatTable()->GetStandardIndex( LANGUAGE_ENGLISH_US ) : 0 );
if (pDoc->GetFormatTable()->IsNumberFormat( rSym, nIndex, fVal ) ) if (!mpFormatter->IsNumberFormat(rSym, nIndex, fVal))
{ return false;
sal_uInt16 nType = pDoc->GetFormatTable()->GetType(nIndex);
sal_uInt16 nType = mpFormatter->GetType(nIndex);
// Don't accept 3:3 as time, it is a reference to entire row 3 instead. // Don't accept 3:3 as time, it is a reference to entire row 3 instead.
// Dates should never be entered directly and automatically converted // Dates should never be entered directly and automatically converted
...@@ -2548,9 +2555,6 @@ bool ScCompiler::IsValue( const OUString& rSym ) ...@@ -2548,9 +2555,6 @@ bool ScCompiler::IsValue( const OUString& rSym )
aToken.SetDouble( fVal ); aToken.SetDouble( fVal );
pRawToken = aToken.Clone(); pRawToken = aToken.Clone();
return true; return true;
}
else
return false;
} }
bool ScCompiler::IsString() bool ScCompiler::IsString()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment