diff options
-rw-r--r-- | basctl/source/basicide/basides1.cxx | 4 | ||||
-rw-r--r-- | basctl/source/basicide/macrodlg.cxx | 4 | ||||
-rw-r--r-- | basic/source/basmgr/basmgr.cxx | 34 | ||||
-rw-r--r-- | basic/source/classes/sb.cxx | 78 | ||||
-rw-r--r-- | basic/source/classes/sbxmod.cxx | 7 | ||||
-rw-r--r-- | basic/source/comp/exprnode.cxx | 5 | ||||
-rw-r--r-- | include/basic/sbmod.hxx | 1 | ||||
-rw-r--r-- | include/basic/sbstar.hxx | 6 | ||||
-rw-r--r-- | sw/source/filter/html/htmlbas.cxx | 14 |
9 files changed, 61 insertions, 92 deletions
diff --git a/basctl/source/basicide/basides1.cxx b/basctl/source/basicide/basides1.cxx index df3021bb79aa..7315853aefeb 100644 --- a/basctl/source/basicide/basides1.cxx +++ b/basctl/source/basicide/basides1.cxx @@ -302,7 +302,7 @@ void Shell::ExecuteGlobal( SfxRequest& rReq ) SbModule* pModule = pBasic->FindModule( rInfo.GetModule() ); if ( !pModule ) { - if ( !rInfo.GetModule().isEmpty() || !pBasic->GetModules()->Count() ) + if ( !rInfo.GetModule().isEmpty() || pBasic->GetModules().empty() ) { OUString aModName = rInfo.GetModule(); @@ -311,7 +311,7 @@ void Shell::ExecuteGlobal( SfxRequest& rReq ) pModule = pBasic->FindModule( aModName ); } else - pModule = static_cast<SbModule*>( pBasic->GetModules()->Get(0) ); + pModule = pBasic->GetModules().front(); } DBG_ASSERT( pModule, "Kein Modul!" ); if ( pModule && !pModule->GetMethods()->Find( rInfo.GetMethod(), SbxCLASS_METHOD ) ) diff --git a/basctl/source/basicide/macrodlg.cxx b/basctl/source/basicide/macrodlg.cxx index 83a5ed471076..8979d4df2eba 100644 --- a/basctl/source/basicide/macrodlg.cxx +++ b/basctl/source/basicide/macrodlg.cxx @@ -371,8 +371,8 @@ SbMethod* MacroChooser::CreateMacro() } pModule = pBasic->FindModule( aModName ); } - else if ( pBasic->GetModules()->Count() ) - pModule = static_cast<SbModule*>(pBasic->GetModules()->Get( 0 )); + else if ( !pBasic->GetModules().empty() ) + pModule = pBasic->GetModules().front(); if ( !pModule ) { diff --git a/basic/source/basmgr/basmgr.cxx b/basic/source/basmgr/basmgr.cxx index 2742a2476e02..8ce26ae27e53 100644 --- a/basic/source/basmgr/basmgr.cxx +++ b/basic/source/basmgr/basmgr.cxx @@ -580,12 +580,8 @@ void copyToLibraryContainer( StarBASIC* pBasic, const LibraryContainerInfo& rInf if ( !xLib.is() ) return; - sal_uInt16 nModCount = pBasic->GetModules()->Count(); - for ( sal_uInt16 nMod = 0 ; nMod < nModCount ; nMod++ ) + for ( const auto& pModule: pBasic->GetModules() ) { - SbModule* pModule = static_cast<SbModule*>(pBasic->GetModules()->Get( nMod )); - DBG_ASSERT( pModule, "Module not received!" ); - OUString aModName = pModule->GetName(); if( !xLib->hasByName( aModName ) ) { @@ -917,14 +913,10 @@ bool BasicManager::HasExeCode( const OUString& sLib ) StarBASIC* pLib = GetLib(sLib); if ( pLib ) { - SbxArray* pMods = pLib->GetModules(); - sal_uInt16 nMods = pMods ? pMods->Count() : 0; - for( sal_uInt16 i = 0; i < nMods; i++ ) + for (const auto& pModule: pLib->GetModules()) { - SbModule* p = static_cast<SbModule*>( pMods->Get( i ) ); - if ( p ) - if ( p->HasExeCode() ) - return true; + if (pModule->HasExeCode()) + return true; } } return false; @@ -1114,9 +1106,8 @@ void BasicManager::CheckModules( StarBASIC* pLib, bool bReference ) } bool bModified = pLib->IsModified(); - for ( sal_uInt16 nMod = 0; nMod < pLib->GetModules()->Count(); nMod++ ) + for ( const auto& pModule: pLib->GetModules() ) { - SbModule* pModule = static_cast<SbModule*>(pLib->GetModules()->Get( nMod )); DBG_ASSERT( pModule, "Module not received!" ); if ( !pModule->IsCompiled() && !StarBASIC::GetErrorCode() ) { @@ -1601,11 +1592,9 @@ namespace if( pLib ) { - sal_uInt16 nModCount = pLib->GetModules()->Count(); - for( sal_uInt16 nMod = 0; nMod < nModCount; ++nMod ) + for ( const auto& pMod: pLib->GetModules() ) { - SbModule* pMod = static_cast<SbModule*>(pLib->GetModules()->Get( nMod )); - if ( pMod && rTransliteration.isEqual( pMod->GetName(), sModule ) ) + if ( rTransliteration.isEqual( pMod->GetName(), sModule ) ) { SbMethod* pMethod = static_cast<SbMethod*>(pMod->Find( sMacro, SbxCLASS_METHOD )); if( pMethod ) @@ -1827,8 +1816,7 @@ uno::Type ModuleContainer_Impl::getElementType() sal_Bool ModuleContainer_Impl::hasElements() throw(uno::RuntimeException, std::exception) { - SbxArray* pMods = mpLib ? mpLib->GetModules() : nullptr; - return pMods && pMods->Count() > 0; + return mpLib && !mpLib->GetModules().empty(); } // Methods XNameAccess @@ -1848,14 +1836,12 @@ uno::Any ModuleContainer_Impl::getByName( const OUString& aName ) uno::Sequence< OUString > ModuleContainer_Impl::getElementNames() throw(uno::RuntimeException, std::exception) { - SbxArray* pMods = mpLib ? mpLib->GetModules() : nullptr; - sal_uInt16 nMods = pMods ? pMods->Count() : 0; + sal_uInt16 nMods = mpLib ? mpLib->GetModules().size() : 0; uno::Sequence< OUString > aRetSeq( nMods ); OUString* pRetSeq = aRetSeq.getArray(); for( sal_uInt16 i = 0 ; i < nMods ; i++ ) { - SbxVariable* pMod = pMods->Get( i ); - pRetSeq[i] = OUString( pMod->GetName() ); + pRetSeq[i] = mpLib->GetModules()[i]->GetName(); } return aRetSeq; } diff --git a/basic/source/classes/sb.cxx b/basic/source/classes/sb.cxx index 41e9ab0c12e2..6b2a78db441e 100644 --- a/basic/source/classes/sb.cxx +++ b/basic/source/classes/sb.cxx @@ -924,7 +924,6 @@ StarBASIC::StarBASIC( StarBASIC* p, bool bIsDocBasic ) pLibInfo = nullptr; bNoRtl = bBreak = false; bVBAEnabled = false; - pModules = new SbxArray; if( !GetSbData()->nInst++ ) { @@ -1018,10 +1017,9 @@ void StarBASIC::implClearDependingVarsOnDelete( StarBASIC* pDeletedBasic ) { if( this != pDeletedBasic ) { - for( sal_uInt16 i = 0; i < pModules->Count(); i++ ) + for( const auto& pModule: pModules) { - SbModule* p = static_cast<SbModule*>(pModules->Get( i )); - p->ClearVarsDependingOnDeletedBasic( pDeletedBasic ); + pModule->ClearVarsDependingOnDeletedBasic( pDeletedBasic ); } } @@ -1082,7 +1080,7 @@ SbModule* StarBASIC::MakeModule32( const OUString& rName, const ModuleInfo& mInf } p->SetSource32( rSrc ); p->SetParent( this ); - pModules->Insert( p, pModules->Count() ); + pModules.push_back(p); SetModified( true ); return p; } @@ -1091,7 +1089,7 @@ void StarBASIC::Insert( SbxVariable* pVar ) { if( dynamic_cast<const SbModule*>(pVar) != nullptr) { - pModules->Insert( pVar, pModules->Count() ); + pModules.push_back(static_cast<SbModule*>(pVar)); pVar->SetParent( this ); StartListening( pVar->GetBroadcaster(), true ); } @@ -1112,7 +1110,7 @@ void StarBASIC::Remove( SbxVariable* pVar ) { // #87540 Can be last reference! SbxVariableRef xVar = pVar; - pModules->Remove( pVar ); + pModules.erase(std::remove(pModules.begin(), pModules.end(), pVar)); pVar->SetParent( nullptr ); EndListening( pVar->GetBroadcaster() ); } @@ -1129,20 +1127,16 @@ bool StarBASIC::Compile( SbModule* pMod ) void StarBASIC::Clear() { - while( pModules->Count() ) - { - pModules->Remove( pModules->Count() - 1 ); - } + pModules.clear(); } SbModule* StarBASIC::FindModule( const OUString& rName ) { - for( sal_uInt16 i = 0; i < pModules->Count(); i++ ) + for (const auto& pModule: pModules) { - SbModule* p = static_cast<SbModule*>( pModules->Get( i ) ); - if( p->GetName().equalsIgnoreAsciiCase( rName ) ) + if( pModule->GetName().equalsIgnoreAsciiCase( rName ) ) { - return p; + return pModule.get(); } } return nullptr; @@ -1218,13 +1212,9 @@ void StarBASIC::InitAllModules( StarBASIC* pBasicNotToInit ) SolarMutexGuard guard; // Init own modules - for ( sal_uInt16 nMod = 0; nMod < pModules->Count(); nMod++ ) + for (const auto& pModule: pModules) { - SbModule* pModule = static_cast<SbModule*>( pModules->Get( nMod ) ); - if( !pModule->IsCompiled() ) - { - pModule->Compile(); - } + pModule->Compile(); } // compile modules first then RunInit ( otherwise there is // can be order dependency, e.g. classmodule A has a member @@ -1233,13 +1223,12 @@ void StarBASIC::InitAllModules( StarBASIC* pBasicNotToInit ) // Consider required types to init in right order. Class modules // that are required by other modules have to be initialized first. ModuleInitDependencyMap aMIDMap; - for ( sal_uInt16 nMod = 0; nMod < pModules->Count(); nMod++ ) + for (const auto& pModule: pModules) { - SbModule* pModule = static_cast<SbModule*>(pModules->Get( nMod )); OUString aModuleName = pModule->GetName(); if( pModule->isProxyModule() ) { - aMIDMap[aModuleName] = ClassModuleRunInitItem( pModule ); + aMIDMap[aModuleName] = ClassModuleRunInitItem( pModule.get() ); } } @@ -1251,9 +1240,8 @@ void StarBASIC::InitAllModules( StarBASIC* pBasicNotToInit ) } // Call RunInit on standard modules - for ( sal_uInt16 nMod = 0; nMod < pModules->Count(); nMod++ ) + for (const auto& pModule: pModules) { - SbModule* pModule = static_cast<SbModule*>(pModules->Get( nMod )); if( !pModule->isProxyModule() ) { pModule->RunInit(); @@ -1278,10 +1266,9 @@ void StarBASIC::InitAllModules( StarBASIC* pBasicNotToInit ) void StarBASIC::DeInitAllModules() { // Deinit own modules - for ( sal_uInt16 nMod = 0; nMod < pModules->Count(); nMod++ ) + for (const auto& pModule: pModules) { - SbModule* pModule = static_cast<SbModule*>(pModules->Get( nMod )); - if( pModule->pImage && !pModule->isProxyModule() && nullptr == dynamic_cast<const SbObjModule*>( pModule) ) + if( pModule->pImage && !pModule->isProxyModule() && nullptr == dynamic_cast<SbObjModule*>( pModule.get()) ) { pModule->pImage->bInit = false; } @@ -1331,34 +1318,33 @@ SbxVariable* StarBASIC::Find( const OUString& rName, SbxClassType t ) // Search module if( !pRes ) { - for( sal_uInt16 i = 0; i < pModules->Count(); i++ ) + for (const auto& pModule: pModules) { - SbModule* p = static_cast<SbModule*>( pModules->Get( i ) ); - if( p->IsVisible() ) + if( pModule->IsVisible() ) { // Remember modul fpr Main() call // or is the name equal?!? - if( p->GetName().equalsIgnoreAsciiCase( rName ) ) + if( pModule->GetName().equalsIgnoreAsciiCase( rName ) ) { if( t == SbxCLASS_OBJECT || t == SbxCLASS_DONTCARE ) { - pRes = p; break; + pRes = pModule.get(); break; } - pNamed = p; + pNamed = pModule.get(); } // Only variables qualified by the Module Name e.g. Sheet1.foo // should work for Document && Class type Modules - sal_Int32 nType = p->GetModuleType(); + sal_Int32 nType = pModule->GetModuleType(); if ( nType == ModuleType::DOCUMENT || nType == ModuleType::FORM ) { continue; } // otherwise check if the element is available // unset GBLSEARCH-Flag (due to Rekursion) - SbxFlagBits nGblFlag = p->GetFlags() & SbxFlagBits::GlobalSearch; - p->ResetFlag( SbxFlagBits::GlobalSearch ); - pRes = p->Find( rName, t ); - p->SetFlag( nGblFlag ); + SbxFlagBits nGblFlag = pModule->GetFlags() & SbxFlagBits::GlobalSearch; + pModule->ResetFlag( SbxFlagBits::GlobalSearch ); + pRes = pModule->Find( rName, t ); + pModule->SetFlag( nGblFlag ); if( pRes ) { break; @@ -1887,7 +1873,7 @@ bool StarBASIC::LoadData( SvStream& r, sal_uInt16 nVer ) ppDeleteTab.reset(); sal_uInt16 nMod(0); - pModules->Clear(); + pModules.clear(); r.ReadUInt16( nMod ); const size_t nMinSbxSize(14); const size_t nMaxPossibleEntries = r.remainingSize() / nMinSbxSize; @@ -1913,7 +1899,7 @@ bool StarBASIC::LoadData( SvStream& r, sal_uInt16 nVer ) else { pMod->SetParent( this ); - pModules->Put( pMod, i ); + pModules.push_back( pMod ); } } // HACK for SFX-Bullshit! @@ -1940,11 +1926,11 @@ bool StarBASIC::StoreData( SvStream& r ) const { return false; } - r.WriteUInt16( pModules->Count() ); - for( sal_uInt16 i = 0; i < pModules->Count(); i++ ) + assert(pModules.size() < SAL_MAX_UINT16); + r.WriteUInt16( static_cast<sal_uInt16>(pModules.size())); + for( const auto& rpModule: pModules ) { - SbModule* p = static_cast<SbModule*>( pModules->Get( i ) ); - if( !p->Store( r ) ) + if( !rpModule->Store( r ) ) { return false; } diff --git a/basic/source/classes/sbxmod.cxx b/basic/source/classes/sbxmod.cxx index 2834dd23a6b0..c025a9c80a1b 100644 --- a/basic/source/classes/sbxmod.cxx +++ b/basic/source/classes/sbxmod.cxx @@ -1400,12 +1400,11 @@ void SbModule::ClearVarsDependingOnDeletedBasic( StarBASIC* pDeletedBasic ) void StarBASIC::ClearAllModuleVars() { // Initialise the own module - for ( sal_uInt16 nMod = 0; nMod < pModules->Count(); nMod++ ) + for (const auto& rModule: pModules) { - SbModule* pModule = static_cast<SbModule*>(pModules->Get( nMod )); // Initialise only, if the startcode was already executed - if( pModule->pImage && pModule->pImage->bInit && !pModule->isProxyModule() && nullptr == dynamic_cast<const SbObjModule*>( pModule) ) - pModule->ClearPrivateVars(); + if( rModule->pImage && rModule->pImage->bInit && !rModule->isProxyModule() && nullptr == dynamic_cast<const SbObjModule*>( rModule.get()) ) + rModule->ClearPrivateVars(); } } diff --git a/basic/source/comp/exprnode.cxx b/basic/source/comp/exprnode.cxx index 9d77f6dba071..19272dc3da6a 100644 --- a/basic/source/comp/exprnode.cxx +++ b/basic/source/comp/exprnode.cxx @@ -19,6 +19,7 @@ #include <math.h> +#include <algorithm> #include <rtl/math.hxx> #include "codegen.hxx" @@ -191,9 +192,7 @@ short SbiExprNode::GetDepth() if( IsOperand() ) return 0; else { - short d1 = pLeft->GetDepth(); - short d2 = pRight->GetDepth(); - return( (d1 < d2 ) ? d2 : d1 ) + 1; + return std::max(pLeft->GetDepth(), pRight->GetDepth()) + 1; } } diff --git a/include/basic/sbmod.hxx b/include/basic/sbmod.hxx index 5dfe5f0e0c4b..95e1bdb043e3 100644 --- a/include/basic/sbmod.hxx +++ b/include/basic/sbmod.hxx @@ -136,6 +136,7 @@ public: }; typedef tools::SvRef<SbModule> SbModuleRef; +typedef std::vector<SbModuleRef> SbModules; // Object class for instances of class modules class BASIC_DLLPUBLIC SbClassModuleObject : public SbModule diff --git a/include/basic/sbstar.hxx b/include/basic/sbstar.hxx index 8c02be3a8e01..0f59a5c8272b 100644 --- a/include/basic/sbstar.hxx +++ b/include/basic/sbstar.hxx @@ -22,6 +22,7 @@ #include <basic/sbx.hxx> #include <basic/sbxobj.hxx> +#include <basic/sbmod.hxx> #include <rtl/ustring.hxx> #include <osl/mutex.hxx> #include <tools/link.hxx> @@ -32,7 +33,6 @@ #include <com/sun/star/frame/XModel.hpp> #include <basic/basicdllapi.h> -class SbModule; // completed module class SbiInstance; // runtime instance class SbiRuntime; // currently running procedure class SbiImage; // compiled image @@ -49,7 +49,7 @@ class BASIC_DLLPUBLIC StarBASIC : public SbxObject friend class SbiRuntime; friend class DocBasicItem; - SbxArrayRef pModules; // List of all modules + SbModules pModules; // List of all modules SbxObjectRef pRtl; // Runtime Library SbxArrayRef xUnoListeners; // Listener handled by CreateUnoListener @@ -117,7 +117,7 @@ public: virtual SbxVariable* Find( const OUString&, SbxClassType ) override; virtual bool Call( const OUString&, SbxArray* = nullptr ) override; - SbxArray* GetModules() { return pModules; } + SbModules& GetModules() { return pModules; } SbxObject* GetRtl() { return pRtl; } SbModule* FindModule( const OUString& ); // Run init code of all modules (including the inserted Doc-Basics) diff --git a/sw/source/filter/html/htmlbas.cxx b/sw/source/filter/html/htmlbas.cxx index 748985992dde..ef2f83ba43cd 100644 --- a/sw/source/filter/html/htmlbas.cxx +++ b/sw/source/filter/html/htmlbas.cxx @@ -268,23 +268,21 @@ void SwHTMLWriter::OutBasic() return; } + bool bFirst=true; // und jetzt alle StarBasic-Module und alle unbenutzen JavaSrript-Module // ausgeben for( sal_uInt16 i=0; i<pBasicMan->GetLibCount(); i++ ) { StarBASIC *pBasic = pBasicMan->GetLib( i ); const OUString& rLibName = pBasic->GetName(); - - SbxArray *pModules = pBasic->GetModules(); - for( sal_uInt16 j=0; j<pModules->Count(); j++ ) + for( const auto& pModule: pBasic->GetModules() ) { - const SbModule &rModule = dynamic_cast<const SbModule&>(*pModules->Get(j)); - OUString sLang(SVX_MACRO_LANGUAGE_STARBASIC); ScriptType eType = STARBASIC; - if( 0==i && 0==j ) + if( bFirst ) { + bFirst = false; OutNewLine(); OStringBuffer sOut; sOut.append('<').append(OOO_STRING_SVTOOLS_HTML_meta) @@ -299,9 +297,9 @@ void SwHTMLWriter::OutBasic() .WriteCharPtr( "\">" ); } - const OUString& rModName = rModule.GetName(); + const OUString& rModName = pModule->GetName(); Strm().WriteCharPtr( SAL_NEWLINE_STRING ); // nicht einruecken! - HTMLOutFuncs::OutScript( Strm(), GetBaseURL(), rModule.GetSource(), + HTMLOutFuncs::OutScript( Strm(), GetBaseURL(), pModule->GetSource(), sLang, eType, aEmptyOUStr, &rLibName, &rModName, m_eDestEnc, &m_aNonConvertableCharacters ); |