[Libreoffice-commits] core.git: 5 commits - formula/source include/formula offapi/com sc/source
Eike Rathke
erack at redhat.com
Wed Aug 3 13:17:24 UTC 2016
formula/source/core/api/FormulaCompiler.cxx | 16 ++++----------
formula/source/core/api/grammar.cxx | 3 +-
include/formula/grammar.hxx | 5 ++++
offapi/com/sun/star/sheet/FormulaLanguage.idl | 13 ++++++++++++
sc/source/ui/docshell/docfunc.cxx | 6 ++---
sc/source/ui/docshell/impex.cxx | 6 +++--
sc/source/ui/unoobj/cellsuno.cxx | 18 ++++++++--------
sc/source/ui/unoobj/fmtuno.cxx | 4 +--
sc/source/ui/unoobj/funcuno.cxx | 4 +--
sc/source/ui/unoobj/nameuno.cxx | 28 +++++++++++++-------------
sc/source/ui/vba/vbarange.cxx | 8 +++----
11 files changed, 63 insertions(+), 48 deletions(-)
New commits:
commit 569825ea2b64f3682932cd07dae2b244854f4157
Author: Eike Rathke <erack at redhat.com>
Date: Wed Aug 3 15:15:58 2016 +0200
comment about using GRAM_ENGLISH_XL_R1C1
... found when looking for GRAM_PODF_A1.
Change-Id: I175f92f297c8720c2d0736d3a30815217e334276
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 5abc8a8..15b4102 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -1831,7 +1831,8 @@ bool ScImportExport::Sylk2Doc( SvStream& rStrm )
ScAddress aPos( nCol, nRow, aRange.aStart.Tab() );
/* FIXME: do we want GRAM_ODFF_A1 instead? At the
* end it probably should be GRAM_ODFF_R1C1, since
- * R1C1 is what Excel writes in SYLK. */
+ * R1C1 is what Excel writes in SYLK, or even
+ * better GRAM_ENGLISH_XL_R1C1. */
const formula::FormulaGrammar::Grammar eGrammar = formula::FormulaGrammar::GRAM_PODF_A1;
ScCompiler aComp( pDoc, aPos);
aComp.SetGrammar(eGrammar);
@@ -2035,7 +2036,8 @@ bool ScImportExport::Doc2Sylk( SvStream& rStrm )
/* FIXME: do we want GRAM_ODFF_A1 instead? At
* the end it probably should be
* GRAM_ODFF_R1C1, since R1C1 is what Excel
- * writes in SYLK. */
+ * writes in SYLK, or even better
+ * GRAM_ENGLISH_XL_R1C1. */
}
if ( pFCell->GetMatrixFlag() != MM_NONE &&
aCellStr.startsWith("{") &&
commit 4afd35f691ffbf369e90e031b17379f52a31c510
Author: Eike Rathke <erack at redhat.com>
Date: Wed Aug 3 15:14:34 2016 +0200
use GRAM_API instead of GRAM_PODF_A1 in API context
... which right now is identical but may get corrections in future.
Change-Id: Id4e1707afb32a3d8e073705072e5e65105f2a14a
diff --git a/formula/source/core/api/grammar.cxx b/formula/source/core/api/grammar.cxx
index c013f26..cc2aec2 100644
--- a/formula/source/core/api/grammar.cxx
+++ b/formula/source/core/api/grammar.cxx
@@ -28,7 +28,7 @@ FormulaGrammar::Grammar FormulaGrammar::mapAPItoGrammar( const bool bEnglish, co
if (bEnglish && bXML)
eGrammar = GRAM_PODF;
else if (bEnglish && !bXML)
- eGrammar = GRAM_PODF_A1;
+ eGrammar = GRAM_API;
else if (!bEnglish && bXML)
eGrammar = GRAM_NATIVE_ODF;
else // (!bEnglish && !bXML)
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index 6e533db..46f18cd 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -5225,11 +5225,11 @@ void ScDocFunc::ResizeMatrix( const ScRange& rOldRange, const ScAddress& rNewEnd
if ( DeleteContents( aMark, InsertDeleteFlags::CONTENTS, true, false/*bApi*/ ) )
{
- // GRAM_PODF_A1 for API compatibility.
- if (!EnterMatrix( aNewRange, &aMark, nullptr, aFormula, false/*bApi*/, false, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_PODF_A1 ))
+ // GRAM_API for API compatibility.
+ if (!EnterMatrix( aNewRange, &aMark, nullptr, aFormula, false/*bApi*/, false, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_API ))
{
// versuchen, alten Zustand wiederherzustellen
- EnterMatrix( rOldRange, &aMark, nullptr, aFormula, false/*bApi*/, false, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_PODF_A1 );
+ EnterMatrix( rOldRange, &aMark, nullptr, aFormula, false/*bApi*/, false, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_API );
}
}
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 9162faa..182f8ea 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -5129,8 +5129,8 @@ void SAL_CALL ScCellRangeObj::setArrayFormula( const OUString& aFormula )
throw(uno::RuntimeException, std::exception)
{
SolarMutexGuard aGuard;
- // GRAM_PODF_A1 for API compatibility.
- SetArrayFormula_Impl( aFormula, OUString(), formula::FormulaGrammar::GRAM_PODF_A1);
+ // GRAM_API for API compatibility.
+ SetArrayFormula_Impl( aFormula, OUString(), formula::FormulaGrammar::GRAM_API);
}
// XArrayFormulaTokens
@@ -5186,10 +5186,10 @@ void SAL_CALL ScCellRangeObj::setArrayTokens( const uno::Sequence<sheet::Formula
ScTokenArray aTokenArray;
(void)ScTokenConversion::ConvertToTokenArray( rDoc, aTokenArray, rTokens );
- // Actually GRAM_PODF_A1 is a don't-care here because of the token
+ // Actually GRAM_API is a don't-care here because of the token
// array being set, it fits with other API compatibility grammars
// though.
- pDocSh->GetDocFunc().EnterMatrix( aRange, nullptr, &aTokenArray, EMPTY_OUSTRING, true, true, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_PODF_A1 );
+ pDocSh->GetDocFunc().EnterMatrix( aRange, nullptr, &aTokenArray, EMPTY_OUSTRING, true, true, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_API );
}
else
{
@@ -5304,8 +5304,8 @@ void SAL_CALL ScCellRangeObj::setFormulaArray(
{
ScExternalRefManager::ApiGuard aExtRefGuard(&pDocSh->GetDocument());
- // GRAM_PODF_A1 for API compatibility.
- bDone = lcl_PutFormulaArray( *pDocSh, aRange, aArray, formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ bDone = lcl_PutFormulaArray( *pDocSh, aRange, aArray, formula::FormulaGrammar::GRAM_API );
}
if (!bDone)
@@ -6188,9 +6188,9 @@ void ScCellObj::SetString_Impl(const OUString& rString, bool bInterpret, bool bE
ScDocShell* pDocSh = GetDocShell();
if ( pDocSh )
{
- // GRAM_PODF_A1 for API compatibility.
+ // GRAM_API for API compatibility.
(void)pDocSh->GetDocFunc().SetCellText(
- aCellPos, rString, bInterpret, bEnglish, true, formula::FormulaGrammar::GRAM_PODF_A1 );
+ aCellPos, rString, bInterpret, bEnglish, true, formula::FormulaGrammar::GRAM_API );
}
}
@@ -6256,7 +6256,7 @@ void ScCellObj::InputEnglishString( const OUString& rText )
case ScInputStringType::Formula:
rFunc.SetFormulaCell(
aCellPos,
- new ScFormulaCell(&rDoc, aCellPos, aRes.maText, formula::FormulaGrammar::GRAM_PODF_A1),
+ new ScFormulaCell(&rDoc, aCellPos, aRes.maText, formula::FormulaGrammar::GRAM_API),
false);
break;
case ScInputStringType::Number:
diff --git a/sc/source/ui/unoobj/fmtuno.cxx b/sc/source/ui/unoobj/fmtuno.cxx
index 417c97b..edc5e48 100644
--- a/sc/source/ui/unoobj/fmtuno.cxx
+++ b/sc/source/ui/unoobj/fmtuno.cxx
@@ -182,8 +182,8 @@ FormulaGrammar::Grammar lclResolveGrammar( FormulaGrammar::Grammar eExtGrammar,
{
if( eExtGrammar != FormulaGrammar::GRAM_UNSPECIFIED )
return eExtGrammar;
- OSL_ENSURE( eIntGrammar != FormulaGrammar::GRAM_UNSPECIFIED, "lclResolveGrammar - unspecified grammar, using GRAM_PODF_A1" );
- return (eIntGrammar == FormulaGrammar::GRAM_UNSPECIFIED) ? FormulaGrammar::GRAM_PODF_A1 : eIntGrammar;
+ OSL_ENSURE( eIntGrammar != FormulaGrammar::GRAM_UNSPECIFIED, "lclResolveGrammar - unspecified grammar, using GRAM_API" );
+ return (eIntGrammar == FormulaGrammar::GRAM_UNSPECIFIED) ? FormulaGrammar::GRAM_API : eIntGrammar;
}
} // namespace
diff --git a/sc/source/ui/unoobj/funcuno.cxx b/sc/source/ui/unoobj/funcuno.cxx
index 24af421..23ff3d5 100644
--- a/sc/source/ui/unoobj/funcuno.cxx
+++ b/sc/source/ui/unoobj/funcuno.cxx
@@ -610,10 +610,10 @@ uno::Any SAL_CALL ScFunctionAccess::callFunction( const OUString& aName,
if ( !bArgErr && !bOverflow && nDocRow <= MAXROWCOUNT )
{
ScAddress aFormulaPos( 0, 0, nTempSheet );
- // GRAM_PODF_A1 doesn't really matter for the token array but fits with
+ // GRAM_API doesn't really matter for the token array but fits with
// other API compatibility grammars.
ScFormulaCell* pFormula = new ScFormulaCell(
- pDoc, aFormulaPos, aTokenArr, formula::FormulaGrammar::GRAM_PODF_A1,
+ pDoc, aFormulaPos, aTokenArr, formula::FormulaGrammar::GRAM_API,
(sal_uInt8)(mbArray ? MM_FORMULA : MM_NONE) );
pFormula = pDoc->SetFormulaCell(aFormulaPos, pFormula);
diff --git a/sc/source/ui/unoobj/nameuno.cxx b/sc/source/ui/unoobj/nameuno.cxx
index df1c88d..fa61a67 100644
--- a/sc/source/ui/unoobj/nameuno.cxx
+++ b/sc/source/ui/unoobj/nameuno.cxx
@@ -224,8 +224,8 @@ void SAL_CALL ScNamedRangeObj::setName( const OUString& aNewName )
//! adapt formulas ?????
OUString aNewStr(aNewName);
- // GRAM_PODF_A1 for API compatibility.
- Modify_Impl( &aNewStr, nullptr, nullptr, nullptr, nullptr,formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ Modify_Impl( &aNewStr, nullptr, nullptr, nullptr, nullptr,formula::FormulaGrammar::GRAM_API );
if ( aName != aNewStr ) // some error occurred...
throw uno::RuntimeException(); // no other exceptions specified
@@ -237,8 +237,8 @@ OUString SAL_CALL ScNamedRangeObj::getContent() throw(uno::RuntimeException, std
OUString aContent;
ScRangeData* pData = GetRangeData_Impl();
if (pData)
- // GRAM_PODF_A1 for API compatibility.
- pData->GetSymbol( aContent,formula::FormulaGrammar::GRAM_PODF_A1);
+ // GRAM_API for API compatibility.
+ pData->GetSymbol( aContent,formula::FormulaGrammar::GRAM_API);
return aContent;
}
@@ -247,8 +247,8 @@ void SAL_CALL ScNamedRangeObj::setContent( const OUString& aContent )
{
SolarMutexGuard aGuard;
OUString aContStr(aContent);
- // GRAM_PODF_A1 for API compatibility.
- Modify_Impl( nullptr, nullptr, &aContStr, nullptr, nullptr,formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ Modify_Impl( nullptr, nullptr, &aContStr, nullptr, nullptr,formula::FormulaGrammar::GRAM_API );
}
table::CellAddress SAL_CALL ScNamedRangeObj::getReferencePosition()
@@ -282,8 +282,8 @@ void SAL_CALL ScNamedRangeObj::setReferencePosition( const table::CellAddress& a
{
SolarMutexGuard aGuard;
ScAddress aPos( (SCCOL)aReferencePosition.Column, (SCROW)aReferencePosition.Row, aReferencePosition.Sheet );
- // GRAM_PODF_A1 for API compatibility.
- Modify_Impl( nullptr, nullptr, nullptr, &aPos, nullptr,formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ Modify_Impl( nullptr, nullptr, nullptr, &aPos, nullptr,formula::FormulaGrammar::GRAM_API );
}
sal_Int32 SAL_CALL ScNamedRangeObj::getType() throw(uno::RuntimeException, std::exception)
@@ -312,8 +312,8 @@ void SAL_CALL ScNamedRangeObj::setType( sal_Int32 nUnoType )
if ( nUnoType & sheet::NamedRangeFlag::COLUMN_HEADER ) nNewType |= ScRangeData::Type::ColHeader;
if ( nUnoType & sheet::NamedRangeFlag::ROW_HEADER ) nNewType |= ScRangeData::Type::RowHeader;
- // GRAM_PODF_A1 for API compatibility.
- Modify_Impl( nullptr, nullptr, nullptr, nullptr, &nNewType,formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ Modify_Impl( nullptr, nullptr, nullptr, nullptr, &nNewType,formula::FormulaGrammar::GRAM_API );
}
// XFormulaTokens
@@ -341,8 +341,8 @@ void SAL_CALL ScNamedRangeObj::setTokens( const uno::Sequence<sheet::FormulaToke
{
ScTokenArray aTokenArray;
(void)ScTokenConversion::ConvertToTokenArray( pDocShell->GetDocument(), aTokenArray, rTokens );
- // GRAM_PODF_A1 for API compatibility.
- Modify_Impl( nullptr, &aTokenArray, nullptr, nullptr, nullptr, formula::FormulaGrammar::GRAM_PODF_A1 );
+ // GRAM_API for API compatibility.
+ Modify_Impl( nullptr, &aTokenArray, nullptr, nullptr, nullptr, formula::FormulaGrammar::GRAM_API );
}
}
@@ -515,9 +515,9 @@ void SAL_CALL ScNamedRangesObj::addNewByName( const OUString& aName,
if (pNames && !pNames->findByUpperName(ScGlobal::pCharClass->uppercase(aName)))
{
ScRangeName* pNewRanges = new ScRangeName( *pNames );
- // GRAM_PODF_A1 for API compatibility.
+ // GRAM_API for API compatibility.
ScRangeData* pNew = new ScRangeData( &rDoc, aName, aContent,
- aPos, nNewType,formula::FormulaGrammar::GRAM_PODF_A1 );
+ aPos, nNewType,formula::FormulaGrammar::GRAM_API );
if ( pNewRanges->insert(pNew) )
{
pDocShell->GetDocFunc().SetNewRangeNames(pNewRanges, mbModifyAndBroadcast, GetTab_Impl());
diff --git a/sc/source/ui/vba/vbarange.cxx b/sc/source/ui/vba/vbarange.cxx
index 48524fd..1f7cec9 100644
--- a/sc/source/ui/vba/vbarange.cxx
+++ b/sc/source/ui/vba/vbarange.cxx
@@ -875,11 +875,11 @@ protected:
double aDblValue = 0.0;
if ( aValue >>= sFormula )
{
- // convert to GRAM_PODF_A1 style grammar because XCell::setFormula
+ // convert to GRAM_API style grammar because XCell::setFormula
// always compile it in that grammar. Perhaps
// css.sheet.FormulaParser should be used in future to directly
// pass formula tokens when that API stabilizes.
- if ( m_eGrammar != formula::FormulaGrammar::GRAM_PODF_A1 && ( sFormula.trim().startsWith("=") ) )
+ if ( m_eGrammar != formula::FormulaGrammar::GRAM_API && ( sFormula.trim().startsWith("=") ) )
{
uno::Reference< uno::XInterface > xIf( xCell, uno::UNO_QUERY_THROW );
ScCellRangesBase* pUnoRangesBase = dynamic_cast< ScCellRangesBase* >( xIf.get() );
@@ -891,7 +891,7 @@ protected:
// compile the string in the format passed in
std::unique_ptr<ScTokenArray> pArray(aCompiler.CompileString(sFormula));
// set desired convention to that of the document
- aCompiler.SetGrammar( formula::FormulaGrammar::GRAM_PODF_A1 );
+ aCompiler.SetGrammar( formula::FormulaGrammar::GRAM_API );
OUString sConverted;
aCompiler.CreateStringFromTokenArray(sConverted);
sFormula = EQUALS + sConverted;
@@ -2001,7 +2001,7 @@ ScVbaRange::setFormulaArray(const uno::Any& rFormula) throw (uno::RuntimeExcepti
ScTokenArray aTokenArray;
(void)ScTokenConversion::ConvertToTokenArray( getScDocument(), aTokenArray, aTokens );
- getScDocShell()->GetDocFunc().EnterMatrix( *getScRangeList()[0], nullptr, &aTokenArray, OUString(), true, true, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_PODF_A1 );
+ getScDocShell()->GetDocFunc().EnterMatrix( *getScRangeList()[0], nullptr, &aTokenArray, OUString(), true, true, EMPTY_OUSTRING, formula::FormulaGrammar::GRAM_API );
}
OUString
commit f21a73bc5b1f13708e0f3ccd2c9d654c3ddc76be
Author: Eike Rathke <erack at redhat.com>
Date: Wed Aug 3 15:11:54 2016 +0200
InitSymbolsAPI() for FormulaLanguage::API
Change-Id: I203557ed50d0d54fe9977e3d51e7f979551b472b
diff --git a/formula/source/core/api/FormulaCompiler.cxx b/formula/source/core/api/FormulaCompiler.cxx
index dd728de..86ac30a 100644
--- a/formula/source/core/api/FormulaCompiler.cxx
+++ b/formula/source/core/api/FormulaCompiler.cxx
@@ -692,19 +692,8 @@ FormulaCompiler::OpCodeMapPtr FormulaCompiler::GetOpCodeMap( const sal_Int32 nLa
case FormulaLanguage::ODF_11 :
if (!mxSymbolsPODF)
InitSymbolsPODF();
- /* FIXME: only temporarily init mxSymbolsAPI here */
- if (!mxSymbolsAPI)
- InitSymbolsAPI();
xMap = mxSymbolsPODF;
break;
-/* FIXME: add FormulaLanguage::API constant */
-#if 0
- case FormulaLanguage::API :
- if (!mxSymbolsAPI)
- InitSymbolsAPI();
- xMap = mxSymbolsAPI;
- break;
-#endif
case FormulaLanguage::ENGLISH :
if (!mxSymbolsEnglish)
InitSymbolsEnglish();
@@ -725,6 +714,11 @@ FormulaCompiler::OpCodeMapPtr FormulaCompiler::GetOpCodeMap( const sal_Int32 nLa
InitSymbolsOOXML();
xMap = mxSymbolsOOXML;
break;
+ case FormulaLanguage::API :
+ if (!mxSymbolsAPI)
+ InitSymbolsAPI();
+ xMap = mxSymbolsAPI;
+ break;
default:
; // nothing, NULL map returned
}
commit 41eb7eef764d32b4e210a2ec5a745535418fb870
Author: Eike Rathke <erack at redhat.com>
Date: Wed Aug 3 15:10:56 2016 +0200
introduce formula::FormulaGrammar::Grammar::GRAM_API
Change-Id: Iceaf114847129f0b014ffd61d547e131baf1f07b
diff --git a/formula/source/core/api/grammar.cxx b/formula/source/core/api/grammar.cxx
index f99bbdd..c013f26 100644
--- a/formula/source/core/api/grammar.cxx
+++ b/formula/source/core/api/grammar.cxx
@@ -56,6 +56,7 @@ bool FormulaGrammar::isSupported( const Grammar eGrammar )
case GRAM_ENGLISH_XL_R1C1:
case GRAM_ENGLISH_XL_OOX :
case GRAM_OOXML :
+ case GRAM_API :
return true;
default:
return extractFormulaLanguage( eGrammar) == GRAM_EXTERNAL;
diff --git a/include/formula/grammar.hxx b/include/formula/grammar.hxx
index 9dea4fb..2bd6585 100644
--- a/include/formula/grammar.hxx
+++ b/include/formula/grammar.hxx
@@ -143,6 +143,11 @@ public:
((CONV_XL_OOX +
kConventionOffset) << kConventionShift) |
kEnglishBit,
+ /// API English with A1 reference style, unbracketed.
+ GRAM_API = css::sheet::FormulaLanguage::API |
+ ((CONV_OOO +
+ kConventionOffset) << kConventionShift) |
+ kEnglishBit,
/// Central definition of the default grammar to be used.
GRAM_DEFAULT = GRAM_NATIVE_UI,
commit f85991efc2ef6a624360ce6225f5ad50f7fd4034
Author: Eike Rathke <erack at redhat.com>
Date: Wed Aug 3 15:07:57 2016 +0200
introduce css::sheet::FormulaLanguage::API
Change-Id: I70624ded4060f50ad820a9590cb461fe58abceb9
diff --git a/offapi/com/sun/star/sheet/FormulaLanguage.idl b/offapi/com/sun/star/sheet/FormulaLanguage.idl
index aaea388..f6b810f 100644
--- a/offapi/com/sun/star/sheet/FormulaLanguage.idl
+++ b/offapi/com/sun/star/sheet/FormulaLanguage.idl
@@ -60,6 +60,19 @@ constants FormulaLanguage
@since LibreOffice 4.2
*/
const long OOXML = 5;
+
+ /** Function names and operators as used with XFunctionAccess and
+ other API context.
+
+ Names are mostly identical to ENGLISH and ODF_11, but while
+ ENGLISH names can be adapted to UI needs and ODF_11 has to stay
+ error compatible, the API names strive to stay compatible but
+ may get corrected in case of errors. Earlier versions than
+ LibreOffice 5.3 always used ODF_11 in API context.
+
+ @since LibreOffice 5.3
+ */
+ const long API = 6;
};
More information about the Libreoffice-commits
mailing list