summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sc/source/filter/excel/xeformula.cxx52
-rw-r--r--sc/source/filter/excel/xelink.cxx149
-rw-r--r--sc/source/filter/inc/xelink.hxx18
3 files changed, 106 insertions, 113 deletions
diff --git a/sc/source/filter/excel/xeformula.cxx b/sc/source/filter/excel/xeformula.cxx
index 16bd88715d54..162f8f2968b7 100644
--- a/sc/source/filter/excel/xeformula.cxx
+++ b/sc/source/filter/excel/xeformula.cxx
@@ -452,13 +452,6 @@ private:
void AppendExt( double fData );
void AppendExt( const OUString& rString );
- std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem)
- {
- if (!mxData->mpLinkMgr)
- return {};
- return mxData->mpLinkMgr->InsertDde(rApplic, rTopic, rItem);
- }
-
private:
typedef std::map< XclFormulaType, XclExpCompConfig > XclExpCompConfigMap;
typedef std::shared_ptr< XclExpCompData > XclExpCompDataRef;
@@ -1299,14 +1292,15 @@ void XclExpFmlaCompImpl::ProcessDdeLink( const XclExpScToken& rTokData )
if( mxData->mbOk ) mxData->mbOk = !aApplic.isEmpty() && !aTopic.isEmpty() && !aItem.isEmpty();
if( mxData->mbOk )
{
- const auto oResult = InsertDde(aApplic, aTopic, aItem);
-
- if ( oResult ) {
- AppendNameXToken( oResult->first, oResult->second, rTokData.mnSpaces );
- }
- else {
- AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces );
+ if ( mxData->mpLinkMgr )
+ {
+ if( const auto& rResult = mxData->mpLinkMgr->InsertDde( aApplic, aTopic, aItem ) )
+ AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab, rTokData.mnSpaces );
+ else
+ AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces );
}
+ else
+ AppendErrorToken( EXC_ERR_NA, rTokData.mnSpaces );
}
}
@@ -2225,12 +2219,12 @@ void XclExpFmlaCompImpl::ProcessExternalName( const XclExpScToken& rTokData )
}
// insert the new external name and create the tNameX token
- if (const OUString* pFile = rExtRefMgr.getExternalFileName( nFileId )) {
-
-
- const auto oResult = mxData->mpLinkMgr->InsertExtName( *pFile, aName, xArray );
- if( oResult ) {
- AppendNameXToken( oResult->first, oResult->second, rTokData.mnSpaces );
+ const OUString* pFile = rExtRefMgr.getExternalFileName( nFileId );
+ if ( pFile )
+ {
+ if ( const auto& rResult = mxData->mpLinkMgr->InsertExtName( *pFile, aName, xArray ) )
+ {
+ AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab, rTokData.mnSpaces );
return;
}
}
@@ -2441,10 +2435,9 @@ void XclExpFmlaCompImpl::AppendAddInCallToken( const XclExpExtFuncData& rExtFunc
OUString aXclFuncName;
if( mxData->mpLinkMgr && ScGlobal::GetAddInCollection()->GetExcelName( rExtFuncData.maFuncName, GetUILanguage(), aXclFuncName ) )
{
- const auto oResult = mxData->mpLinkMgr->InsertAddIn( aXclFuncName );
- if (oResult)
+ if ( const auto& rResult = mxData->mpLinkMgr->InsertAddIn( aXclFuncName ) )
{
- AppendNameXToken(oResult->first, oResult->second);
+ AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab );
return;
}
}
@@ -2455,14 +2448,13 @@ void XclExpFmlaCompImpl::AppendEuroToolCallToken( const XclExpExtFuncData& rExtF
{
if ( mxData->mpLinkMgr )
{
- const auto oResult = mxData->mpLinkMgr->InsertEuroTool( rExtFuncData.maFuncName );
- if ( oResult )
- {
- AppendNameXToken( oResult->first, oResult->second );
- return;
- }
+ if( const auto& rResult = mxData->mpLinkMgr->InsertEuroTool( rExtFuncData.maFuncName ) )
+ AppendNameXToken( rResult->mnSupbook, rResult->mnSBTab );
+ else
+ AppendMacroCallToken( rExtFuncData );
}
- AppendMacroCallToken( rExtFuncData );
+ else
+ AppendMacroCallToken( rExtFuncData );
}
void XclExpFmlaCompImpl::AppendOperatorTokenId( sal_uInt8 nTokenId, const XclExpOperandListRef& rxOperands, sal_uInt8 nSpaces )
diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx
index 47217e2d775c..db68b16770c2 100644
--- a/sc/source/filter/excel/xelink.cxx
+++ b/sc/source/filter/excel/xelink.cxx
@@ -413,23 +413,21 @@ public:
void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange );
/** Finds or inserts an EXTERNNAME record for an add-in function name.
- * @return an optional pair, containing [rnSupbook, rnExtName]
+ * @return an optional struct, containing [mnSupbook, mnExtName]
rnSupbook Returns the index of the SUPBOOK record which contains the DDE link.
rnExtName Returns the 1-based EXTERNNAME record index.
*/
- std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertAddIn(const OUString& rName);
+ std::optional<XclExpSBIndex> InsertAddIn(const OUString& rName);
/** InsertEuroTool */
- std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertEuroTool(const OUString& rName);
+ std::optional<XclExpSBIndex> InsertEuroTool(const OUString& rName);
/** Finds or inserts an EXTERNNAME record for DDE links.
- * @return an optional pair, containing [rnSupbook, rnExtName]
+ * @return an optional struct, containing [mnSupbook, mnExtName]
* rnSupbook Returns the index of the SUPBOOK record which contains the DDE link.
rnExtName Returns the 1-based EXTERNNAME record index.
*/
- std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem);
+ std::optional<XclExpSBIndex> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem);
- std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertExtName(const OUString& rUrl, const OUString& rName,
+ std::optional<XclExpSBIndex> InsertExtName(const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray);
XclExpXti GetXti( sal_uInt16 nFileId, const OUString& rTabName, sal_uInt16 nXclTabSpan,
@@ -444,14 +442,6 @@ public:
/** Whether we need to write externalReferences or not. */
bool HasExternalReferences() const;
- struct XclExpSBIndex
- {
- sal_uInt16 mnSupbook; /// SUPBOOK index for an Excel sheet.
- sal_uInt16 mnSBTab; /// Sheet name index in SUPBOOK for an Excel sheet.
- void Set( sal_uInt16 nSupbook, sal_uInt16 nSBTab )
- { mnSupbook = nSupbook; mnSBTab = nSBTab; }
- };
-
private:
typedef XclExpRecordList< XclExpSupbook > XclExpSupbookList;
typedef XclExpSupbookList::RecordRefType XclExpSupbookRef;
@@ -508,17 +498,15 @@ public:
virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) = 0;
/** Derived classes find or insert an EXTERNNAME record for an add-in function name. */
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertAddIn(const OUString& rName) = 0;
+ virtual std::optional<XclExpSBIndex> InsertAddIn(const OUString& rName) = 0;
/** InsertEuroTool */
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertEuroTool(const OUString& rName)
+ virtual std::optional<XclExpSBIndex> InsertEuroTool(const OUString& rName)
= 0;
/** Derived classes find or insert an EXTERNNAME record for DDE links. */
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) = 0;
+ virtual std::optional<XclExpSBIndex> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) = 0;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertExtName(const OUString& rUrl, const OUString& rName,
+ virtual std::optional<XclExpSBIndex> InsertExtName(const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray)
= 0;
@@ -555,18 +543,14 @@ public:
virtual void StoreCell( sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rPos ) override;
virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertAddIn(const OUString& rName) override;
+ virtual std::optional<XclExpSBIndex> InsertAddIn(const OUString& rName) override;
/** InsertEuroTool */
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertEuroTool(const OUString& rName) override;
+ virtual std::optional<XclExpSBIndex> InsertEuroTool(const OUString& rName) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override;
+ virtual std::optional<XclExpSBIndex> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertExtName(const OUString& rUrl, const OUString& rName,
+ virtual std::optional<XclExpSBIndex> InsertExtName(const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray) override;
virtual void Save( XclExpStream& rStrm ) override;
@@ -622,17 +606,13 @@ public:
virtual void StoreCell( sal_uInt16 nFileId, const OUString& rTabName, const ScAddress& rPos ) override;
virtual void StoreCellRange( sal_uInt16 nFileId, const OUString& rTabName, const ScRange& rRange ) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertAddIn(const OUString& rName) override;
+ virtual std::optional<XclExpSBIndex> InsertAddIn(const OUString& rName) override;
/** InsertEuroTool */
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertEuroTool(const OUString& rName) override;
+ virtual std::optional<XclExpSBIndex> InsertEuroTool(const OUString& rName) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override;
+ virtual std::optional<XclExpSBIndex> InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem) override;
- virtual std::optional<std::pair<sal_uInt16, sal_uInt16>>
- InsertExtName(const OUString& rUrl, const OUString& rName,
+ virtual std::optional<XclExpSBIndex> InsertExtName(const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray) override;
virtual void Save( XclExpStream& rStrm ) override;
@@ -1856,7 +1836,7 @@ public:
explicit FindSBIndexEntry(sal_uInt16 nSupbookId, sal_uInt16 nTabId) :
mnSupbookId(nSupbookId), mnTabId(nTabId) {}
- bool operator()(const XclExpSupbookBuffer::XclExpSBIndex& r) const
+ bool operator()(const XclExpSBIndex& r) const
{
return mnSupbookId == r.mnSupbook && mnTabId == r.mnSBTab;
}
@@ -1965,7 +1945,7 @@ void XclExpSupbookBuffer::StoreCellRange( sal_uInt16 nFileId, const OUString& rT
}
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertAddIn(const OUString& rName )
+std::optional<XclExpSBIndex> XclExpSupbookBuffer::InsertAddIn(const OUString& rName )
{
XclExpSupbookRef xSupbook;
if( mnAddInSB == SAL_MAX_UINT16 )
@@ -1977,57 +1957,57 @@ std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertAddI
xSupbook = maSupbookList.GetRecord( mnAddInSB );
OSL_ENSURE( xSupbook, "XclExpSupbookBuffer::InsertAddin - missing add-in supbook" );
- auto nExtName = xSupbook->InsertAddIn( rName );
+ sal_uInt16 nExtName = xSupbook->InsertAddIn( rName );
if( nExtName > 0)
{
- return std::make_pair(mnAddInSB, nExtName);
+ return XclExpSBIndex( mnAddInSB, nExtName );
}
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertEuroTool( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpSupbookBuffer::InsertEuroTool( const OUString& rName )
{
XclExpSupbookRef xSupbook;
OUString aUrl( u"\001\010EUROTOOL.XLA"_ustr );
auto nSupbookId = GetSupbookUrl(xSupbook, aUrl);
- if (!nSupbookId)
+ if ( !nSupbookId )
{
xSupbook = new XclExpSupbook( GetRoot(), aUrl, XclSupbookType::Eurotool );
- nSupbookId = Append(xSupbook);
+ nSupbookId = Append( xSupbook );
}
auto nExtName = xSupbook->InsertEuroTool( rName );
if( nExtName > 0)
{
- return std::make_pair(*nSupbookId, nExtName);
+ return XclExpSBIndex( *nSupbookId, nExtName );
}
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertDde(
+std::optional<XclExpSBIndex> XclExpSupbookBuffer::InsertDde(
const OUString& rApplic, const OUString& rTopic, const OUString& rItem )
{
XclExpSupbookRef xSupbook;
- auto nSupbookDde = GetSupbookDde( xSupbook, rApplic, rTopic );
- if (!nSupbookDde)
+ auto nSupbook = GetSupbookDde( xSupbook, rApplic, rTopic );
+ if( !nSupbook )
{
xSupbook = new XclExpSupbook( GetRoot(), rApplic, rTopic );
- nSupbookDde = Append(xSupbook);
+ nSupbook = Append( xSupbook );
}
auto nExtName = xSupbook->InsertDde( rItem );
if (nExtName > 0)
{
- return std::make_pair(*nSupbookDde, nExtName);
+ return XclExpSBIndex(*nSupbook, nExtName);
}
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertExtName( const OUString& rUrl,
+std::optional<XclExpSBIndex> XclExpSupbookBuffer::InsertExtName( const OUString& rUrl,
const OUString& rName, const ScExternalRefCache::TokenArrayRef& rArray )
{
XclExpSupbookRef xSupbook;
auto nSupbookId = GetSupbookUrl(xSupbook, rUrl);
- if (!nSupbookId)
+ if ( !nSupbookId )
{
xSupbook = new XclExpSupbook(GetRoot(), rUrl);
nSupbookId = Append(xSupbook);
@@ -2036,7 +2016,7 @@ std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpSupbookBuffer::InsertExtN
auto nExtName = xSupbook->InsertExtName(rName, rArray);
if (nExtName > 0)
{
- return std::make_pair(*nSupbookId, nExtName);
+ return XclExpSBIndex( *nSupbookId, nExtName );
}
return {};
}
@@ -2262,7 +2242,7 @@ void XclExpLinkManagerImpl5::StoreCellRange( sal_uInt16 /*nFileId*/, const OUStr
// not implemented
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl5::InsertAddIn( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl5::InsertAddIn( const OUString& rName )
{
sal_uInt16 nExtSheet, nExtName;
XclExpExtSheetRef xExtSheet = FindInternal( nExtSheet, EXC_EXTSH_ADDIN );
@@ -2271,25 +2251,25 @@ std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl5::InsertA
nExtName = xExtSheet->InsertAddIn( rName );
if(nExtName > 0)
{
- return std::make_pair(nExtSheet, nExtName);
+ return XclExpSBIndex( nExtSheet, nExtName );
}
}
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl5::InsertEuroTool( const OUString& /*rName*/ )
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl5::InsertEuroTool( const OUString& /*rName*/ )
{
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl5::InsertDde(
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl5::InsertDde(
const OUString& /*rApplic*/, const OUString& /*rTopic*/, const OUString& /*rItem*/ )
{
// not implemented
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl5::InsertExtName( const OUString& /*rUrl*/,
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl5::InsertExtName( const OUString& /*rUrl*/,
const OUString& /*rName*/, const ScExternalRefCache::TokenArrayRef& /*rArray*/ )
{
// not implemented
@@ -2461,37 +2441,48 @@ void XclExpLinkManagerImpl8::StoreCellRange( sal_uInt16 nFileId, const OUString&
maSBBuffer.StoreCellRange(nFileId, rTabName, rRange);
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl8::InsertAddIn( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl8::InsertAddIn( const OUString& rName )
{
- const auto& rResult = maSBBuffer.InsertAddIn(rName);
- if (rResult)
- return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second);
+ const auto & rResult = maSBBuffer.InsertAddIn( rName );
+ if( rResult )
+ {
+ return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->mnSBTab);
+ }
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl8::InsertEuroTool( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl8::InsertEuroTool( const OUString& rName )
{
- const auto& rResult = maSBBuffer.InsertEuroTool(rName);
- if (rResult)
- return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second);
+ const auto & rResult = maSBBuffer.InsertEuroTool( rName );
+ if( rResult )
+ {
+ return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ),
+ rResult->mnSBTab);
+ }
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl8::InsertDde(
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl8::InsertDde(
const OUString& rApplic, const OUString& rTopic, const OUString& rItem )
{
- const auto& rResult = maSBBuffer.InsertDde(rApplic, rTopic, rItem);
- if (rResult)
- return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second);
+ const auto & rResult = maSBBuffer.InsertDde( rApplic, rTopic, rItem );
+ if( rResult )
+ {
+ return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ),
+ rResult->mnSBTab);
+ }
return {};
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManagerImpl8::InsertExtName( const OUString& rUrl, const OUString& rName,
+std::optional<XclExpSBIndex> XclExpLinkManagerImpl8::InsertExtName( const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray )
{
- const auto& rResult = maSBBuffer.InsertExtName(rUrl, rName, rArray);
- if (rResult)
- return std::make_pair(InsertXti( XclExpXti( rResult->first, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ), rResult->second);
+ const auto & rResult = maSBBuffer.InsertExtName( rUrl, rName, rArray );
+ if( rResult )
+ {
+ return XclExpSBIndex(InsertXti( XclExpXti( rResult->mnSupbook, EXC_TAB_EXTERNAL, EXC_TAB_EXTERNAL ) ),
+ rResult->mnSBTab);
+ }
return {};
}
@@ -2611,23 +2602,23 @@ void XclExpLinkManager::StoreCellRange( sal_uInt16 nFileId, const OUString& rTab
mxImpl->StoreCellRange(nFileId, rTabName, rRange);
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManager::InsertAddIn( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpLinkManager::InsertAddIn( const OUString& rName )
{
return mxImpl->InsertAddIn( rName );
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManager::InsertEuroTool( const OUString& rName )
+std::optional<XclExpSBIndex> XclExpLinkManager::InsertEuroTool( const OUString& rName )
{
return mxImpl->InsertEuroTool( rName );
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManager::InsertDde(
+std::optional<XclExpSBIndex> XclExpLinkManager::InsertDde(
const OUString& rApplic, const OUString& rTopic, const OUString& rItem )
{
return mxImpl->InsertDde( rApplic, rTopic, rItem );
}
-std::optional<std::pair<sal_uInt16, sal_uInt16>> XclExpLinkManager::InsertExtName( const OUString& rUrl, const OUString& rName,
+std::optional<XclExpSBIndex> XclExpLinkManager::InsertExtName( const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray )
{
return mxImpl->InsertExtName( rUrl, rName, rArray);
diff --git a/sc/source/filter/inc/xelink.hxx b/sc/source/filter/inc/xelink.hxx
index d71a732e4dcd..a4bef778b991 100644
--- a/sc/source/filter/inc/xelink.hxx
+++ b/sc/source/filter/inc/xelink.hxx
@@ -55,6 +55,16 @@ namespace o3tl {
template<> struct typed_flags<ExcTabBufFlags> : is_typed_flags<ExcTabBufFlags, 0x73> {};
}
+struct XclExpSBIndex
+{
+ sal_uInt16 mnSupbook; /// SUPBOOK index for an Excel sheet.
+ sal_uInt16 mnSBTab; /// Sheet name index in SUPBOOK for an Excel sheet.
+ void Set( sal_uInt16 nSupbook, sal_uInt16 nSBTab )
+ { mnSupbook = nSupbook; mnSBTab = nSBTab; }
+ XclExpSBIndex( sal_uInt16 nSupbook, sal_uInt16 nSBTab ) : mnSupbook(nSupbook), mnSBTab(nSBTab) {}
+ XclExpSBIndex() {}
+};
+
/** Stores the correct Excel sheet index for each Calc sheet.
@descr The class knows all sheets which will not exported
(i.e. external link sheets, scenario sheets). */
@@ -189,17 +199,17 @@ public:
rnExtName Returns the 1-based EXTERNNAME record index.
sc/source/filter/inc/xelink.hxx
@return [rnExtSheet, rnExtName] as an optional pair. If empty, it's not supported in current BIFF.*/
- std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertAddIn(const OUString& rName);
+ std::optional<XclExpSBIndex> InsertAddIn(const OUString& rName);
/** InsertEuroTool */
- std::optional<std::pair<sal_uInt16, sal_uInt16>> InsertEuroTool(const OUString& rName);
+ std::optional<XclExpSBIndex> InsertEuroTool(const OUString& rName);
/** Finds or inserts an EXTERNNAME record for DDE links.
rnExtSheet Returns the index of the EXTSHEET structure for the DDE link.
rnExtName Returns the 1-based EXTERNNAME record index.
@return [rnExtSheet, rnExtName] as an optional pair. If empty, it's not supported in current BIFF. */
- std::optional<std::pair<sal_uInt16, sal_uInt16>>
+ std::optional<XclExpSBIndex>
InsertDde(const OUString& rApplic, const OUString& rTopic, const OUString& rItem);
- std::optional<std::pair<sal_uInt16, sal_uInt16>>
+ std::optional<XclExpSBIndex>
InsertExtName(const OUString& rUrl, const OUString& rName,
const ScExternalRefCache::TokenArrayRef& rArray);