diff options
-rw-r--r-- | formula/inc/formula/FormulaCompiler.hxx | 1 | ||||
-rwxr-xr-x | formula/inc/formula/compiler.hrc | 25 | ||||
-rw-r--r-- | formula/inc/formula/opcode.hxx | 1 | ||||
-rw-r--r-- | formula/inc/formula/tokenarray.hxx | 1 | ||||
-rw-r--r-- | formula/source/core/api/FormulaCompiler.cxx | 24 | ||||
-rw-r--r-- | formula/source/core/api/token.cxx | 7 | ||||
-rw-r--r-- | sc/inc/compiler.hxx | 1 | ||||
-rw-r--r-- | sc/source/core/data/conditio.cxx | 4 | ||||
-rw-r--r-- | sc/source/core/tool/compiler.cxx | 4 | ||||
-rw-r--r-- | sc/source/ui/docshell/docfunc.cxx | 4 |
10 files changed, 33 insertions, 39 deletions
diff --git a/formula/inc/formula/FormulaCompiler.hxx b/formula/inc/formula/FormulaCompiler.hxx index 825a31e9863b..215115214fc5 100644 --- a/formula/inc/formula/FormulaCompiler.hxx +++ b/formula/inc/formula/FormulaCompiler.hxx @@ -273,7 +273,6 @@ protected: virtual void CreateStringFromMatrix(rtl::OUStringBuffer& rBuffer,FormulaToken* pTokenP); virtual void CreateStringFromIndex(rtl::OUStringBuffer& rBuffer,FormulaToken* pTokenP); virtual void LocalizeString( String& rName ); // modify rName - input: exact name - virtual bool IsImportingXML() const; sal_uInt16 GetErrorConstant( const String& rName ); void AppendErrorConstant( rtl::OUStringBuffer& rBuffer, sal_uInt16 nError ); diff --git a/formula/inc/formula/compiler.hrc b/formula/inc/formula/compiler.hrc index a7b5cd808f88..49252ce85d2b 100755 --- a/formula/inc/formula/compiler.hrc +++ b/formula/inc/formula/compiler.hrc @@ -44,18 +44,19 @@ #define SC_OPCODE_SEP 10 #define SC_OPCODE_MISSING 11 /* special OpCodes */ #define SC_OPCODE_BAD 12 -#define SC_OPCODE_SPACES 13 -#define SC_OPCODE_MAT_REF 14 -#define SC_OPCODE_DB_AREA 15 /* additional access operators */ -#define SC_OPCODE_MACRO 16 -#define SC_OPCODE_COL_ROW_NAME 17 -#define SC_OPCODE_COL_ROW_NAME_AUTO 18 -#define SC_OPCODE_PERCENT_SIGN 19 /* operator _follows_ value */ -#define SC_OPCODE_ARRAY_OPEN 20 -#define SC_OPCODE_ARRAY_CLOSE 21 -#define SC_OPCODE_ARRAY_ROW_SEP 22 -#define SC_OPCODE_ARRAY_COL_SEP 23 /* some convs use sep != col_sep */ -#define SC_OPCODE_STOP_DIV 24 +#define SC_OPCODE_STRINGXML 13 +#define SC_OPCODE_SPACES 14 +#define SC_OPCODE_MAT_REF 15 +#define SC_OPCODE_DB_AREA 16 /* additional access operators */ +#define SC_OPCODE_MACRO 17 +#define SC_OPCODE_COL_ROW_NAME 18 +#define SC_OPCODE_COL_ROW_NAME_AUTO 19 +#define SC_OPCODE_PERCENT_SIGN 20 /* operator _follows_ value */ +#define SC_OPCODE_ARRAY_OPEN 21 +#define SC_OPCODE_ARRAY_CLOSE 22 +#define SC_OPCODE_ARRAY_ROW_SEP 23 +#define SC_OPCODE_ARRAY_COL_SEP 24 /* some convs use sep != col_sep */ +#define SC_OPCODE_STOP_DIV 25 /*** error constants #... ***/ #define SC_OPCODE_START_ERRORS 30 diff --git a/formula/inc/formula/opcode.hxx b/formula/inc/formula/opcode.hxx index 571e1b00c247..e562c27639c8 100644 --- a/formula/inc/formula/opcode.hxx +++ b/formula/inc/formula/opcode.hxx @@ -55,6 +55,7 @@ enum OpCodeEnum // Special OpCodes ocMissing = SC_OPCODE_MISSING, ocBad = SC_OPCODE_BAD, + ocStringXML = SC_OPCODE_STRINGXML, ocSpaces = SC_OPCODE_SPACES, ocMatRef = SC_OPCODE_MAT_REF, // Access commands diff --git a/formula/inc/formula/tokenarray.hxx b/formula/inc/formula/tokenarray.hxx index 8ec6a56f9f0f..3947ed5987dd 100644 --- a/formula/inc/formula/tokenarray.hxx +++ b/formula/inc/formula/tokenarray.hxx @@ -214,6 +214,7 @@ public: FormulaToken* AddExternal( const String& rStr, OpCode eOp = ocExternal ); FormulaToken* AddBad( const sal_Unicode* pStr ); /// ocBad with String FormulaToken* AddBad( const String& rStr ); /// ocBad with String + FormulaToken* AddStringXML( const String& rStr ); /// ocStringXML with String, temporary during import virtual FormulaToken* MergeArray( ); diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx index e1122c22b0fd..8108f11ae926 100644 --- a/formula/source/core/api/FormulaCompiler.cxx +++ b/formula/source/core/api/FormulaCompiler.cxx @@ -1683,7 +1683,7 @@ FormulaToken* FormulaCompiler::CreateStringFromToken( rtl::OUStringBuffer& rBuff break; case svString: - if( eOp == ocBad ) + if( eOp == ocBad || eOp == ocStringXML ) rBuffer.append(t->GetString()); else AppendString( rBuffer, t->GetString() ); @@ -1770,28 +1770,18 @@ void FormulaCompiler::AppendBoolean( rtl::OUStringBuffer& rBuffer, bool bVal ) rBuffer.append( mxSymbols->getSymbol(static_cast<OpCode>(bVal ? ocTrue : ocFalse)) ); } // ----------------------------------------------------------------------------- -bool FormulaCompiler::IsImportingXML() const -{ - return false; -} -// ----------------------------------------------------------------------------- void FormulaCompiler::AppendString( rtl::OUStringBuffer& rBuffer, const String & rStr ) { - if (IsImportingXML()) + rBuffer.append(sal_Unicode('"')); + if ( lcl_UnicodeStrChr( rStr.GetBuffer(), '"' ) == NULL ) rBuffer.append( rStr ); else { - rBuffer.append(sal_Unicode('"')); - if ( lcl_UnicodeStrChr( rStr.GetBuffer(), '"' ) == NULL ) - rBuffer.append( rStr ); - else - { - String aStr( rStr ); - aStr.SearchAndReplaceAll( '"', String( RTL_CONSTASCII_USTRINGPARAM( "\"\""))); - rBuffer.append(aStr); - } - rBuffer.append(sal_Unicode('"')); + String aStr( rStr ); + aStr.SearchAndReplaceAll( '"', String( RTL_CONSTASCII_USTRINGPARAM( "\"\""))); + rBuffer.append(aStr); } + rBuffer.append(sal_Unicode('"')); } void FormulaCompiler::UpdateSeparatorsNative( diff --git a/formula/source/core/api/token.cxx b/formula/source/core/api/token.cxx index 08a6738c488c..745d628be216 100644 --- a/formula/source/core/api/token.cxx +++ b/formula/source/core/api/token.cxx @@ -329,6 +329,8 @@ bool FormulaTokenArray::AddFormulaToken(const sheet::FormulaToken& _aToken,Exter AddString( aStrVal ); else if ( eOpCode == ocBad ) AddBad( aStrVal ); + else if ( eOpCode == ocStringXML ) + AddStringXML( aStrVal ); else if ( eOpCode == ocExternal || eOpCode == ocMacro ) AddToken( formula::FormulaExternalToken( eOpCode, aStrVal ) ); else @@ -808,6 +810,11 @@ FormulaToken* FormulaTokenArray::AddBad( const String& rStr ) return Add( new FormulaStringOpToken( ocBad, rStr ) ); } +FormulaToken* FormulaTokenArray::AddStringXML( const String& rStr ) +{ + return Add( new FormulaStringOpToken( ocStringXML, rStr ) ); +} + void FormulaTokenArray::AddRecalcMode( ScRecalcMode nBits ) diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx index f7dde6ae7ed2..371192c2db2c 100644 --- a/sc/inc/compiler.hxx +++ b/sc/inc/compiler.hxx @@ -544,7 +544,6 @@ private: virtual void CreateStringFromMatrix( rtl::OUStringBuffer& rBuffer, formula::FormulaToken* _pTokenP); virtual void CreateStringFromIndex(rtl::OUStringBuffer& rBuffer,formula::FormulaToken* _pTokenP); virtual void LocalizeString( String& rName ); // modify rName - input: exact name - virtual bool IsImportingXML() const; /// Access the CharTable flags inline sal_uLong GetCharTableFlags( sal_Unicode c, sal_Unicode cLast ) diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 923f90d87e09..757b7387db63 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -319,7 +319,7 @@ void ScConditionEntry::Compile( const String& rExpr1, const String& rExpr2, // temporary formula string as string tokens //! merge with lcl_ScDocFunc_CreateTokenArrayXML pFormula1 = new ScTokenArray; - pFormula1->AddString( rExpr1 ); + pFormula1->AddStringXML( rExpr1 ); // bRelRef1 is set when the formula is compiled again (CompileXML) } else @@ -356,7 +356,7 @@ void ScConditionEntry::Compile( const String& rExpr1, const String& rExpr2, // temporary formula string as string tokens //! merge with lcl_ScDocFunc_CreateTokenArrayXML pFormula2 = new ScTokenArray; - pFormula2->AddString( rExpr2 ); + pFormula2->AddStringXML( rExpr2 ); // bRelRef2 is set when the formula is compiled again (CompileXML) } else diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 3f227b4d08a9..cc6d69fffda5 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -5206,10 +5206,6 @@ void ScCompiler::LocalizeString( String& rName ) ScGlobal::GetAddInCollection()->LocalizeString( rName ); } // ----------------------------------------------------------------------------- -bool ScCompiler::IsImportingXML() const -{ - return pDoc->IsImportingXML(); -} // Put quotes around string if non-alphanumeric characters are contained, // quote characters contained within are escaped by '\\'. diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx index 7410da8f224e..dbb567ff455f 100644 --- a/sc/source/ui/docshell/docfunc.cxx +++ b/sc/source/ui/docshell/docfunc.cxx @@ -1010,9 +1010,9 @@ sal_Bool ScDocFunc::PutData( const ScAddress& rPos, ScEditEngineDefaulter& rEngi ScTokenArray* lcl_ScDocFunc_CreateTokenArrayXML( const String& rText, const String& rFormulaNmsp, const formula::FormulaGrammar::Grammar eGrammar ) { ScTokenArray* pCode = new ScTokenArray; - pCode->AddString( rText ); + pCode->AddStringXML( rText ); if( (eGrammar == formula::FormulaGrammar::GRAM_EXTERNAL) && (rFormulaNmsp.Len() > 0) ) - pCode->AddString( rFormulaNmsp ); + pCode->AddStringXML( rFormulaNmsp ); return pCode; } |