Kaydet (Commit) e5c38f63 authored tarafından Noel Grandin's avatar Noel Grandin

convert ExternalLinkType to scoped enum

and drop unused enumerators:
LINKTYPE_INTERNAL
LINKTYPE_ANALYSIS
LINKTYPE_MAYBE_DDE_OLE

Change-Id: I2274997227b0fb62fb8fa44f2be19943514ccb4d
üst 2312e530
......@@ -155,18 +155,15 @@ private:
sal_Int32 mnLast; /// Index of the last sheet or index of last external sheet cache.
};
enum ExternalLinkType
enum class ExternalLinkType
{
LINKTYPE_SELF, /// Link refers to the current workbook.
LINKTYPE_SAME, /// Link refers to the current sheet.
LINKTYPE_INTERNAL, /// Link refers to a sheet in the own workbook.
LINKTYPE_EXTERNAL, /// Link refers to an external spreadsheet document.
LINKTYPE_ANALYSIS, /// Link refers to the Analysis add-in.
LINKTYPE_LIBRARY, /// Link refers to an external add-in.
LINKTYPE_DDE, /// DDE link.
LINKTYPE_OLE, /// OLE link.
LINKTYPE_MAYBE_DDE_OLE, /// Could be DDE or OLE link (BIFF only).
LINKTYPE_UNKNOWN /// Unknown or unsupported link type.
Self, /// Link refers to the current workbook.
Same, /// Link refers to the current sheet.
External, /// Link refers to an external spreadsheet document.
Library, /// Link refers to an external add-in.
DDE, /// DDE link.
OLE, /// OLE link.
Unknown /// Unknown or unsupported link type.
};
class ExternalLink : public WorkbookHelper
......@@ -207,7 +204,7 @@ public:
void importExternalAddin( SequenceInputStream& rStrm );
/** Sets the link type to 'self reference'. */
inline void setSelfLinkType() { meLinkType = LINKTYPE_SELF; }
inline void setSelfLinkType() { meLinkType = ExternalLinkType::Self; }
/** Returns the type of this external link. */
inline ExternalLinkType getLinkType() const { return meLinkType; }
......@@ -254,7 +251,7 @@ private:
typedef RefVector< ExternalName > ExternalNameVector;
ExternalLinkType meLinkType; /// Type of this link object.
FunctionLibraryType meFuncLibType; /// Type of the function library, if link type is LINKTYPE_LIBRARY.
FunctionLibraryType meFuncLibType; /// Type of the function library, if link type is ExternalLinkType::Library.
OUString maRelId; /// Relation identifier for the external link fragment.
OUString maClassName; /// DDE service, OLE class name.
OUString maTargetUrl; /// Target link, DDE topic, OLE target.
......
......@@ -195,7 +195,7 @@ ContextHandlerRef ExternalLinkFragment::onCreateContext( sal_Int32 nElement, con
if( nElement == XLS_TOKEN( definedName ) ) mrExtLink.importDefinedName( rAttribs );
break;
case XLS_TOKEN( sheetDataSet ):
if( (nElement == XLS_TOKEN( sheetData )) && (mrExtLink.getLinkType() == LINKTYPE_EXTERNAL) )
if( (nElement == XLS_TOKEN( sheetData )) && (mrExtLink.getLinkType() == ExternalLinkType::External) )
return createSheetDataContext( rAttribs.getInteger( XML_sheetId, -1 ) );
break;
......@@ -280,7 +280,7 @@ ContextHandlerRef ExternalLinkFragment::onCreateRecordContext( sal_Int32 nRecId,
switch( nRecId )
{
case BIFF12_ID_EXTSHEETDATA:
if( mrExtLink.getLinkType() == LINKTYPE_EXTERNAL )
if( mrExtLink.getLinkType() == ExternalLinkType::External )
return createSheetDataContext( rStrm.readInt32() );
break;
......
......@@ -582,8 +582,8 @@ ApiTokenSequence FormulaParserImpl::importBiff12Formula( const ScAddress&, Formu
OUString FormulaParserImpl::resolveOleTarget( sal_Int32 nRefId, bool bUseRefSheets ) const
{
const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, bUseRefSheets ).get();
OSL_ENSURE( pExtLink && (pExtLink->getLinkType() == LINKTYPE_OLE), "FormulaParserImpl::resolveOleTarget - missing or wrong link" );
if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_OLE) )
OSL_ENSURE( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::OLE), "FormulaParserImpl::resolveOleTarget - missing or wrong link" );
if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::OLE) )
return getBaseFilter().getAbsoluteUrl( pExtLink->getTargetUrl() );
return OUString();
}
......@@ -982,23 +982,16 @@ bool FormulaParserImpl::pushExternalNameOperand( const ExternalNameRef& rxExtNam
{
if( rxExtName.get() ) switch( rExtLink.getLinkType() )
{
case LINKTYPE_INTERNAL:
case LINKTYPE_EXTERNAL:
case ExternalLinkType::External:
return pushEmbeddedRefOperand( *rxExtName, false );
case LINKTYPE_ANALYSIS:
// TODO: need support for localized addin function names
if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( rxExtName->getUpcaseModelName() ) )
return pushExternalFuncOperand( *pFuncInfo );
break;
case LINKTYPE_LIBRARY:
case ExternalLinkType::Library:
if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( rxExtName->getUpcaseModelName() ) )
if( (pFuncInfo->meFuncLibType != FUNCLIB_UNKNOWN) && (pFuncInfo->meFuncLibType == rExtLink.getFuncLibraryType()) )
return pushExternalFuncOperand( *pFuncInfo );
break;
case LINKTYPE_DDE:
case ExternalLinkType::DDE:
{
OUString aDdeServer, aDdeTopic, aDdeItem;
if( rxExtName->getDdeLinkData( aDdeServer, aDdeTopic, aDdeItem ) )
......@@ -1007,7 +1000,7 @@ bool FormulaParserImpl::pushExternalNameOperand( const ExternalNameRef& rxExtNam
break;
default:
OSL_ENSURE( rExtLink.getLinkType() != LINKTYPE_SELF, "FormulaParserImpl::pushExternalNameOperand - invalid call" );
OSL_ENSURE( rExtLink.getLinkType() != ExternalLinkType::Self, "FormulaParserImpl::pushExternalNameOperand - invalid call" );
}
return pushBiffErrorOperand( BIFF_ERR_NAME );
}
......@@ -1170,7 +1163,7 @@ const FunctionInfo* FormulaParserImpl::resolveBadFuncName( const OUString& rToke
{
sal_Int32 nRefId = rTokenData.copy( nBracketOpen + 1, nBracketClose - nBracketOpen - 1 ).toInt32();
const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId ).get();
if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_LIBRARY) )
if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::Library) )
{
OUString aFuncName = rTokenData.copy( nExclamation + 1 ).toAsciiUpperCase();
if( const FunctionInfo* pFuncInfo = getFuncInfoFromOoxFuncName( aFuncName ) )
......@@ -1722,7 +1715,7 @@ bool OoxFormulaParserImpl::pushBiff12ExtName( sal_Int32 nRefId, sal_Int32 nNameI
{
if( const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId ).get() )
{
if( pExtLink->getLinkType() == LINKTYPE_SELF )
if( pExtLink->getLinkType() == ExternalLinkType::Self )
return pushBiff12Name( nNameId );
// external name indexes are one-based in BIFF12
ExternalNameRef xExtName = pExtLink->getNameByIndex( nNameId - 1 );
......@@ -1857,7 +1850,7 @@ OUString FormulaParser::importMacroName( const OUString& rFormulaString )
const ExternalLink* pExtLink = getExternalLinks().getExternalLink( nRefId, false ).get();
OSL_ENSURE( pExtLink, "FormulaParser::importMacroName - missing link" );
// do not accept macros in external documents (not supported)
if( pExtLink && (pExtLink->getLinkType() == LINKTYPE_SELF) )
if( pExtLink && (pExtLink->getLinkType() == ExternalLinkType::Self) )
{
// ignore sheet macros (defined name for VBA macros may not exist, see above)
OUString aMacroName = aRemainder.copy( 1 );
......
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