22#include <rtl/ustrbuf.hxx>
43#include <com/sun/star/lang/XMultiServiceFactory.hpp>
44#include <com/sun/star/util/XCloseBroadcaster.hpp>
45#include <com/sun/star/util/XCloseListener.hpp>
49#include <unordered_map>
51#include <com/sun/star/script/ModuleType.hpp>
52#include <com/sun/star/script/ModuleInfo.hpp>
63using com::sun::star::uno::Any;
64using com::sun::star::uno::UNO_QUERY;
65using com::sun::star::lang::XMultiServiceFactory;
68class DocBasicItem :
public ::cppu::WeakImplHelper< util::XCloseListener >
87 virtual void SAL_CALL
queryClosing(
const lang::EventObject& rSource,
sal_Bool bGetsOwnership )
override;
88 virtual void SAL_CALL
notifyClosing(
const lang::EventObject& rSource )
override;
89 virtual void SAL_CALL
disposing(
const lang::EventObject& rSource )
override;
100 mrDocBasic( rDocBasic ),
101 mxClassModules( new
SbxObject( OUString() ) ),
102 mbDocClosed( false ),
144 try { xCloseBC->addCloseListener(
this ); }
catch(
const uno::Exception& ) {}
159 try { xCloseBC->removeCloseListener(
this ); }
catch(
const uno::Exception& ) {}
181typedef ::rtl::Reference< DocBasicItem > DocBasicItemRef;
183std::unordered_map< const StarBASIC *, DocBasicItemRef > gaDocBasicItems;
187 auto it = gaDocBasicItems.find( pDocBasic );
188 auto end = gaDocBasicItems.end();
189 return (it != end) ? it->second.get() :
nullptr;
192void lclInsertDocBasicItem(
StarBASIC& rDocBasic )
194 DocBasicItemRef& rxDocBasicItem = gaDocBasicItems[ &rDocBasic ];
196 rxDocBasicItem->startListening();
199void lclRemoveDocBasicItem(
StarBASIC& rDocBasic )
201 auto it = gaDocBasicItems.find( &rDocBasic );
202 if( it != gaDocBasicItems.end() )
204 it->second->stopListening();
205 gaDocBasicItems.erase( it );
207 for(
auto& rEntry : gaDocBasicItems )
209 rEntry.second->clearDependingVarsOnDelete( rDocBasic );
217 while( pCurParent->
GetParent() !=
nullptr )
221 if( pDocBasic !=
nullptr && pDocBasic->
IsDocBasic() )
223 pRetBasic = pDocBasic;
245 xDocFac->createInstance(
"ooo.vba.VBAGlobals");
261 if( rName ==
"ThisComponent" )
276struct SFX_VB_ErrorItem
408 { 0xFFFF,
ErrCode(0xFFFFFFFFUL) }
441 if( rClass.equalsIgnoreAsciiCase(
"StarBASIC" ) )
445 else if( rClass.equalsIgnoreAsciiCase(
"StarBASICModule" ) )
449 else if( rClass.equalsIgnoreAsciiCase(
"Collection" ) )
453 else if( rClass.equalsIgnoreAsciiCase(
"FileSystemObject" ) )
458 OUString aServiceName(
"ooo.vba.FileSystemObject");
499 bool bInitState = pFormModule->getInitState();
503 pFormModule->ResetApiObj(
false );
504 pFormModule->setInitState(
false );
510 return pFormModule->CreateInstance();
523 pRet->PutObject( pRet.
get() );
526 SbxArray* pProps = pRet->GetProperties();
528 for( sal_uInt32
i = 0 ;
i <
nCount ;
i++ )
547 for (sal_Int32 j = 1; j <= pSource->
GetDims(); ++j)
549 pSource->
GetDim(j, lb, ub);
569 if( pSrcObj !=
nullptr )
607SbClassModuleObject::SbClassModuleObject(
SbModule* pClassModule )
609 , mpClassModule( pClassModule )
610 , mbInitializeEventDone( false )
615 pImage.reset(pClassModule->
pImage.get());
616 pBreaks = pClassModule->
pBreaks;
618 SetClassName( pClassModule->
GetName() );
625 sal_uInt32 nMethodCount = pClassMethods->
Count();
627 for( i = 0 ;
i < nMethodCount ;
i++ )
643 pNewMethod->
pMod =
this;
645 pMethods->PutDirect( pNewMethod, i );
653 for( i = 0 ;
i < nMethodCount ;
i++ )
663 OSL_FAIL(
"No ImplMethod" );
670 if( !pImplMethodCopy )
672 OSL_FAIL(
"Found no ImplMethod copy" );
677 pMethods->PutDirect( pNewIfaceMethod, i );
683 sal_uInt32 nPropertyCount = pClassProps->
Count();
684 for( i = 0 ;
i < nPropertyCount ;
i++ )
696 pProcedureProp->
SetFlags( nFlags_ );
697 pProps->PutDirect( pNewProp, i );
716 if( pObj !=
nullptr )
720 SbClassModuleObject* pClassModuleObj =
dynamic_cast<SbClassModuleObject*
>( pObjBase );
721 if( pClassModuleObj !=
nullptr )
723 SbModule* pLclClassModule = pClassModuleObj->getClassModule();
724 SbClassModuleObject* pNewObj =
new SbClassModuleObject( pLclClassModule );
725 pNewObj->SetName( pProp->
GetName() );
726 pNewObj->SetParent( pLclClassModule->
pParent );
729 else if( aObjClass.equalsIgnoreAsciiCase(
"Collection" ) )
741 pProps->PutDirect( pNewProp, i );
746 SetModuleType( ModuleType::CLASS );
750SbClassModuleObject::~SbClassModuleObject()
754 if(
StarBASIC* pDocBasic = lclGetDocBasicForModule(
this ) )
755 if(
const DocBasicItem* pDocBasicItem = lclFindDocBasicItem( pDocBasic ) )
756 if( !pDocBasicItem->isDocClosed() )
757 triggerTerminateEvent();
767 handleProcedureProperties( rBC, rHint );
775 triggerInitializeEvent();
778 if( pIfaceMapperMethod )
787void SbClassModuleObject::triggerInitializeEvent()
789 if( mbInitializeEventDone )
794 mbInitializeEventDone =
true;
805void SbClassModuleObject::triggerTerminateEvent()
807 if( !mbInitializeEventDone ||
GetSbData()->bRunInit )
844 if(
StarBASIC* pDocBasic = lclGetDocBasicForModule( pClassModule ) )
845 if(
const DocBasicItem* pDocBasicItem = lclFindDocBasicItem( pDocBasic ) )
846 xToUseClassModules = pDocBasicItem->getClassModules();
849 xToUseClassModules->Insert( pClassModule );
870 if(
StarBASIC* pDocBasic = lclGetDocBasicForModule( pMod ) )
872 if(
const DocBasicItem* pDocBasicItem = lclFindDocBasicItem( pDocBasic ) )
874 xToUseClassModules = pDocBasicItem->getClassModules();
883 pRet =
new SbClassModuleObject( pVarMod );
896 :
SbxObject(
"StarBASIC"), bDocBasic( bIsDocBasic )
925 lclInsertDocBasicItem( *
this );
966 lclRemoveDocBasicItem( *
this );
979 for( sal_uInt32
i = 0 ;
i < uCount ;
i++ )
992 if(
this != pDeletedBasic )
1000 for (sal_uInt32 nObj = 0; nObj <
pObjs->Count(); nObj++)
1004 if( pBasic && pBasic != pDeletedBasic )
1015 aInfo.ModuleType = ModuleType::NORMAL;
1023 "create module " << rName <<
" type mInfo " <<
mInfo.ModuleType);
1025 switch (
mInfo.ModuleType )
1027 case ModuleType::DOCUMENT:
1033 case ModuleType::CLASS:
1035 p->SetModuleType( ModuleType::CLASS );
1037 case ModuleType::FORM:
1044 p->SetSource32( rSrc );
1045 p->SetParent(
this );
1053 if(
auto pModule =
dynamic_cast<SbModule*
>(pVar) )
1094 for (
const auto& pModule:
pModules)
1096 if( pModule->
GetName().equalsIgnoreAsciiCase( rName ) )
1098 return pModule.get();
1126 std::unordered_map< OUString, ClassModuleRunInitItem >
1136 std::vector< OUString >& rReqTypes = pModule->
pClassData->maRequiredTypes;
1137 for(
const auto& rStr : rReqTypes )
1140 ModuleInitDependencyMap::iterator itFind = rMap.find( rStr );
1141 if( itFind != rMap.end() )
1147 OSL_FAIL(
"Cyclic module dependency detected" );
1170 for (
const auto& pModule:
pModules)
1181 for (
const auto& pModule:
pModules)
1183 OUString aModuleName = pModule->
GetName();
1190 for (
auto & elem : aMIDMap)
1197 for (
const auto& pModule:
pModules)
1207 for (sal_uInt32 nObj = 0; nObj <
pObjs->Count(); nObj++)
1211 if( pBasic && pBasic != pBasicNotToInit )
1223 for (
const auto& pModule:
pModules)
1227 pModule->
pImage->bInit =
false;
1231 for (sal_uInt32 nObj = 0; nObj <
pObjs->Count(); nObj++)
1258 if( rName.equalsIgnoreAsciiCase(
SB_RTLNAME ) )
1275 for (
const auto& pModule:
pModules)
1281 if( pModule->
GetName().equalsIgnoreAsciiCase( rName ) )
1285 pRes = pModule.get();
break;
1287 pNamed = pModule.get();
1292 if (
nType == ModuleType::DOCUMENT ||
nType == ModuleType::FORM )
1300 pRes = pModule->
Find( rName,
t );
1309 static constexpr OUStringLiteral aMainStr(
u"Main");
1311 !pNamed->
GetName().equalsIgnoreAsciiCase( aMainStr ) )
1445 sal_uInt16 nRet = 0;
1466 const SFX_VB_ErrorItem* pErrItem;
1471 if( pErrItem->nErrorSFX == nError )
1473 nRet = pErrItem->nErrorVB;
1478 while( pErrItem->nErrorVB != 0xFFFF );
1513 const SFX_VB_ErrorItem* pErrItem;
1518 if( pErrItem->nErrorVB == nError )
1520 nRet = pErrItem->nErrorSFX;
1523 else if( pErrItem->nErrorVB > nError )
1529 while( pErrItem->nErrorVB != 0xFFFF );
1535 sal_uInt16 nCol1, sal_uInt16 nCol2 )
1538 aGlobals.
nCode = nCode;
1539 aGlobals.
nLine = nLine;
1540 aGlobals.
nCol1 = nCol1;
1541 aGlobals.
nCol2 = nCol2;
1554 pErrorMsg =
pItem->first;
1562 OUString sError =
BasResId(pErrorMsg);
1563 OUStringBuffer aMsg1(sError);
1565 OUString aSrgStr(
"$(ARG1)" );
1566 sal_Int32 nResult = sError.indexOf(aSrgStr);
1570 aMsg1.remove(nResult, aSrgStr.getLength());
1571 aMsg1.insert(nResult, aMsg);
1573 else if (!aMsg.empty())
1576 aMsg1 =
BasResId(STR_ADDITIONAL_INFO)
1577 .replaceFirst(
"$ERR", aMsg1)
1578 .replaceFirst(
"$MSG", aMsg);
1583 else if (!aMsg.empty())
1587 else if( nOldID != 0 )
1589 OUString aStdMsg =
"Error " + OUString::number(nOldID) +
1590 ": No error text available!";
1600 sal_Int32 l, sal_Int32 c1, sal_Int32 c2 )
1609 if( pStartedBasic !=
this )
1623 if( !rMsg.isEmpty() )
1647 if( c.
GetClass() == ErrCodeClass::Compiler )
1654 if( !rMsg.isEmpty() )
1782 sal_uInt32 nObjCount =
pObjs->Count();
1783 std::unique_ptr<SbxVariable*[]> ppDeleteTab(
new SbxVariable*[ nObjCount ]);
1786 for( nObj = 0 ; nObj < nObjCount ; nObj++ )
1790 ppDeleteTab[nObj] = pBasic ? nullptr : pVar;
1792 for( nObj = 0 ; nObj < nObjCount ; nObj++ )
1797 pObjs->Remove( pVar );
1800 ppDeleteTab.reset();
1805 const size_t nMinSbxSize(14);
1806 const size_t nMaxPossibleEntries = r.
remainingSize() / nMinSbxSize;
1807 if (nMod > nMaxPossibleEntries)
1809 nMod = nMaxPossibleEntries;
1810 SAL_WARN(
"basic",
"Parsing error: " << nMaxPossibleEntries <<
1811 " max possible entries, but " << nMod <<
" claimed, truncating");
1813 for (sal_uInt16
i = 0;
i < nMod; ++
i)
1855 return {
false, 0 };
1859 for(
const auto& rpModule:
pModules )
1861 const auto& [bSuccessModule, nVersionModule] = rpModule->Store(r);
1862 if( !bSuccessModule )
1864 return {
false, 0 };
1866 else if (nVersionModule >
nVersion)
1888 OSL_PRECOND( pBasic !=
nullptr,
"getModelFromBasic: illegal call!" );
1896 static constexpr OUStringLiteral sThisComponent(
u"ThisComponent");
1900 while ( pLookup && !pThisComponent )
1905 if ( !pThisComponent )
1907 SAL_WARN(
"basic",
"Failed to get ThisComponent");
1933 for (
auto const& item : gaDocBasicItems)
1935 DocBasicItemRef xItem = item.second;
1936 xItem->setDisposed(
true);
2007 bool bRead =
nId == SfxHintId::BasicDataWanted;
2008 bool bWrite =
nId == SfxHintId::BasicDataChanged;
2009 bool bRequestInfo =
nId == SfxHintId::BasicInfoWanted;
2012 OUString aVarName( pVar->
GetName() );
2013 if( bRead || bWrite )
2016 && aVarName.equalsIgnoreAsciiCase(
pCountStr ) )
2021 && aVarName.equalsIgnoreAsciiCase(
pAddStr ) )
2026 && aVarName.equalsIgnoreAsciiCase(
pItemStr ) )
2031 && aVarName.equalsIgnoreAsciiCase(
pRemoveStr ) )
2041 else if ( bRequestInfo )
2044 && aVarName.equalsIgnoreAsciiCase(
pAddStr ) )
2049 && aVarName.equalsIgnoreAsciiCase(
pItemStr ) )
2080 for( sal_Int32
i = 0 ;
i <
nCount ;
i++ )
2085 if (aNameCI.isEmpty() && !rName.isEmpty())
2097 if( nCount < 2 || nCount > 5 )
2106 sal_uInt32 nNextIndex;
2123 if( nAfterIndex == -1 )
2128 nNextIndex = sal::static_int_cast<sal_uInt32>(nAfterIndex + 1);
2133 if( nBeforeIndex == -1 )
2138 nNextIndex = sal::static_int_cast<sal_uInt32>(nBeforeIndex);
2142 auto pNewItem = tools::make_ref<SbxVariable>( *
pItem );
2159 pNewItem->SetName( aKey );
2163 xItemArray->Insert(pNewItem.get(), nNextIndex);
2174 if (pPar_->
Count() != 2)
2192 *(pPar_->
Get(0)) = *pRes;
2198 if (pPar_ ==
nullptr || pPar_->
Count() != 2)
2216 if( pStack !=
nullptr )
AgileEncryptionInfo & mInfo
void CollRemove(SbxArray *pPar_)
void CollItem(SbxArray *pPar_)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
virtual ~BasicCollection() override
BasicCollection(const OUString &rClassname)
static SbxInfoRef xAddInfo
sal_Int32 implGetIndex(SbxVariable const *pIndexVar)
sal_Int32 implGetIndexForName(const OUString &rName)
virtual void Clear() override
void CollAdd(SbxArray *pPar_)
static SbxInfoRef xItemInfo
virtual void SAL_CALL notifyClosing(const lang::EventObject &rSource) override
virtual ~DocBasicItem() override
const SbxObjectRef & getClassModules() const
void setDisposed(bool bDisposed)
virtual void SAL_CALL queryClosing(const lang::EventObject &rSource, sal_Bool bGetsOwnership) override
SbxObjectRef mxClassModules
DocBasicItem(StarBASIC &rDocBasic)
void clearDependingVarsOnDelete(StarBASIC &rDeletedBasic)
virtual void SAL_CALL disposing(const lang::EventObject &rSource) override
constexpr ErrCodeClass GetClass() const
virtual SbxObjectRef CreateObject(const OUString &) override
void RemoveClassModule(SbModule *pClassModule)
void AddClassModule(SbModule *pClassModule)
virtual SbxBaseRef Create(sal_uInt16 nSbxId, sal_uInt32) override
virtual ~SbClassFactory() override
SbModule * FindClass(const OUString &rClassName)
SbxObjectRef xClassModules
SbMethod * getImplMethod()
SAL_DLLPRIVATE const SbxObject * FindType(const OUString &aTypeName) const
static SAL_DLLPRIVATE void implProcessModuleRunInit(ModuleInitDependencyMap &rMap, ClassModuleRunInitItem &rItem)
const SbxArrayRef & GetMethods() const
virtual SAL_DLLPRIVATE SbxVariable * Find(const OUString &, SbxClassType) override
sal_Int32 GetModuleType() const
SAL_DLLPRIVATE void RunInit()
std::unique_ptr< SbiImage > pImage
SAL_DLLPRIVATE void ClearVarsDependingOnDeletedBasic(StarBASIC *pDeletedBasic)
std::unique_ptr< SbClassData > pClassData
bool isProxyModule() const
virtual SAL_DLLPRIVATE void SetParent(SbxObject *) override
virtual SbxObjectRef CreateObject(const OUString &) override
virtual SbxBaseRef Create(sal_uInt16 nSbxId, sal_uInt32) override
virtual SbxBaseRef Create(sal_uInt16 nSbxId, sal_uInt32) override
virtual SbxObjectRef CreateObject(const OUString &) override
css::uno::Any getUnoAny()
virtual SbxObjectRef CreateObject(const OUString &) override
virtual SbxBaseRef Create(sal_uInt16 nSbxId, sal_uInt32) override
const OUString & GetErrorMsg() const
SbModule * GetActiveModule()
ErrCode const & GetErr() const
SbMethod * GetCaller(sal_uInt16)
static bool isVBAEnabled()
SbiForStack * FindForStackItemForCollection(class BasicCollection const *pCollection)
SbxBase * FindElementExtern(const OUString &rName)
BASIC_DLLPRIVATE void PutDirect(SbxVariable *pVar, sal_uInt32 nIdx)
SbxVariable * Get(sal_uInt32)
static OUString const & GetErrorMsg()
static void SetError(ErrCode)
void SetFlags(SbxFlagBits n)
static void AddFactory(SbxFactory *)
static ErrCode const & GetError()
bool IsSet(SbxFlagBits n) const
void SetFlag(SbxFlagBits n)
SbxFlagBits GetFlags() const
virtual void SetModified(bool)
static SbxBaseRef Load(SvStream &)
static void RemoveFactory(SbxFactory const *)
void ResetFlag(SbxFlagBits n)
bool GetDim(sal_Int32, sal_Int32 &, sal_Int32 &) const
void AddDim(sal_Int32, sal_Int32)
sal_Int32 GetDims() const
bool hasFixedSize() const
void setHasFixedSize(bool bHasFixedSize)
void unoAddDim(sal_Int32, sal_Int32)
static css::uno::Reference< ooo::vba::XErrObject > const & getUnoErrObject()
SbxArray * GetProperties()
virtual void Clear() override
virtual void Insert(SbxVariable *)
virtual SbxVariable * Find(const OUString &, SbxClassType)
virtual bool Call(const OUString &, SbxArray *=nullptr)
const OUString & GetClassName() const
void Remove(const OUString &, SbxClassType)
virtual bool LoadData(SvStream &, sal_uInt16) override
SbxVariable * Make(const OUString &, SbxClassType, SbxDataType, bool bIsRuntimeFunction=false)
virtual void Notify(SfxBroadcaster &rBC, const SfxHint &rHint) override
virtual std::pair< bool, sal_uInt32 > StoreData(SvStream &) const override
OUString GetOUString() const
SbxBase * GetObject() const
bool PutObject(SbxBase *)
sal_Int32 GetLong() const
bool SetType(SbxDataType)
bool Get(SbxValues &) const
const SbxObject * GetParent() const
SfxBroadcaster & GetBroadcaster()
void SetName(const OUString &)
virtual SbxDataType GetType() const override
SbxArray * GetParameters() const
const OUString & GetName(SbxNameType=SbxNameType::NONE) const
static constexpr sal_uInt16 MakeHashCode(std::u16string_view aName)
static OUString NameToCaseInsensitiveName(const OUString &rName)
virtual void SetParent(SbxObject *)
sal_uInt16 GetHashCode() const
void StartListening(SfxBroadcaster &rBroadcaster, DuplicateHandling eDuplicateHanding=DuplicateHandling::Unexpected)
void EndListening(SfxBroadcaster &rBroadcaster, bool bRemoveAllDuplicates=false)
static sal_uInt16 GetCol2()
virtual bool Call(const OUString &, SbxArray *=nullptr) override
SbxArrayRef const & getUnoListeners()
BasicDebugFlags BreakHdl()
static void SetErrorData(ErrCode nCode, sal_uInt16 nLine, sal_uInt16 nCol1, sal_uInt16 nCol2)
static ErrCode GetErrBasic()
Link< StarBASIC *, BasicDebugFlags > aBreakHdl
BASIC_DLLPRIVATE BasicDebugFlags StepPoint(sal_Int32 nLine, sal_Int32 nCol1, sal_Int32 nCol2)
virtual void Clear() override
Link< StarBASIC *, bool > aErrorHdl
virtual SbxVariable * Find(const OUString &, SbxClassType) override
static void DetachAllDocBasicItems()
static void SetGlobalErrorHdl(const Link< StarBASIC *, bool > &rNewHdl)
SbxArrayRef xUnoListeners
static sal_uInt16 GetLine()
static ErrCode GetSfxFromVBError(sal_uInt16 nError)
static Link< StarBASIC *, bool > const & GetGlobalErrorHdl()
bool GetUNOConstant(const OUString &rName, css::uno::Any &aOut)
static SbModule * GetActiveModule()
bool CError(ErrCode, const OUString &, sal_Int32, sal_Int32, sal_Int32)
static const OUString & GetErrorText()
static ErrCode const & GetErrorCode()
BASIC_DLLPRIVATE void implClearDependingVarsOnDelete(StarBASIC *pDeletedBasic)
static css::uno::Reference< css::frame::XModel > GetModelFromBasic(SbxObject *pBasic)
static sal_Int32 GetErl()
BASIC_DLLPRIVATE BasicDebugFlags BreakPoint(sal_Int32 nLine, sal_Int32 nCol1, sal_Int32 nCol2)
static void Error(ErrCode, const OUString &rMsg={})
BASIC_DLLPRIVATE bool RTError(ErrCode, const OUString &rMsg, sal_Int32, sal_Int32, sal_Int32)
virtual ~StarBASIC() override
static void SetGlobalBreakHdl(const Link< StarBASIC *, BasicDebugFlags > &rNewHdl)
static sal_uInt16 GetCol1()
bool isVBAEnabled() const
SbModule * MakeModule(const OUString &rName, const OUString &rSrc)
virtual bool LoadData(SvStream &, sal_uInt16) override
static SbxBase * FindSBXInCurrentScope(const OUString &rName)
SbModule * FindModule(std::u16string_view)
StarBASIC(StarBASIC *pParent=nullptr, bool bIsDocBasic=false)
virtual void Remove(SbxVariable *) override
static OUString GetErrorMsg()
virtual void Insert(SbxVariable *) override
void InitAllModules(StarBASIC const *pBasicNotToInit=nullptr)
static SbMethod * GetActiveMethod(sal_uInt16 nLevel=0)
virtual void SetModified(bool) override
static void MakeErrorText(ErrCode, std::u16string_view aMsg)
SbxObject * getVBAGlobals()
static void FatalError(ErrCode)
void QuitAndExitApplication()
static sal_uInt16 GetVBErrorCode(ErrCode nError)
SbxVariable * VBAFind(const OUString &rName, SbxClassType t)
virtual std::pair< bool, sal_uInt32 > StoreData(SvStream &) const override
SvStream & WriteUInt16(sal_uInt16 nUInt16)
SvStream & ReadUInt16(sal_uInt16 &rUInt16)
sal_uInt64 remainingSize()
static SolarMutex * get()
sal_uInt32 release(bool bUnlockAll=false)
void acquire(sal_uInt32 nLockCount=1)
#define DBG_ASSERT(sCon, aError)
virtual OUString GetName() const override
Reference< XSingleServiceFactory > xFactory
#define SAL_WARN(area, stream)
#define SAL_INFO(area, stream)
Reference< XMultiServiceFactory > getProcessServiceFactory()
constexpr std::enable_if_t< std::is_signed_v< T >, std::make_unsigned_t< T > > make_unsigned(T value)
constexpr OUStringLiteral pItemStr
SbxObjectRef createUserTypeImpl(const OUString &rClassName)
constexpr sal_uInt16 nRemoveHash
SbxObjectRef cloneTypeObjectImpl(const SbxObject &rTypeObj)
constexpr OUStringLiteral SB_RTLNAME
constexpr sal_uInt16 nItemHash
constexpr sal_uInt16 nCountHash
constexpr OUStringLiteral pRemoveStr
const SFX_VB_ErrorItem SFX_VB_ErrorTab[]
constexpr sal_uInt16 nAddHash
constexpr OUStringLiteral pCountStr
constexpr OUStringLiteral pAddStr
BASIC_DLLPUBLIC std::pair< TranslateId, ErrCode > const RID_BASIC_START[]
#define SBXID_JSCRIPTMETH
#define SBXID_BASICMETHOD
#define ERRCODE_BASIC_EXPECTED
#define ERRCODE_BASIC_EXCEPTION
#define ERRCODE_BASIC_DDE_OUTOFCHANNELS
#define ERRCODE_BASIC_NO_ACTIVE_OBJECT
#define ERRCODE_BASIC_USER_ABORT
#define ERRCODE_BASIC_ALREADY_DIM
#define ERRCODE_BASIC_BAD_METHOD
#define ERRCODE_BASIC_NOT_IN_MAIN
#define ERRCODE_BASIC_PROG_TOO_LARGE
#define ERRCODE_BASIC_INVALID_OBJECT
#define ERRCODE_BASIC_NOT_READY
#define ERRCODE_BASIC_TOO_MANY_FILES
#define ERRCODE_BASIC_OLE_ERROR
#define ERRCODE_BASIC_BAD_DECLARATION
#define ERRCODE_BASIC_BAD_CHAR_IN_NUMBER
#define ERRCODE_BASIC_VAR_EXPECTED
#define ERRCODE_BASIC_BAD_ACTION
#define ERRCODE_BASIC_BAD_PROP_VALUE
#define ERRCODE_BASIC_ACCESS_ERROR
#define ERRCODE_BASIC_NOT_IN_SUBR
#define ERRCODE_BASIC_BAD_INDEX
#define ERRCODE_BASIC_BAD_LOCALE
#define ERRCODE_BASIC_NO_METHOD
#define ERRCODE_BASIC_UNDEF_PROC
#define ERRCODE_BASIC_BAD_PARAMETERS
#define ERRCODE_BASIC_BAD_FILE_MODE
#define ERRCODE_BASIC_OPER_NOT_PERFORM
#define ERRCODE_BASIC_BAD_PATTERN
#define ERRCODE_BASIC_PROP_WRITEONLY
#define ERRCODE_BASIC_DDE_NOTPROCESSED
#define ERRCODE_BASIC_UNDEF_ARRAY
#define ERRCODE_BASIC_STRING_OVERFLOW
#define ERRCODE_BASIC_NO_OBJECT
#define ERRCODE_BASIC_BAD_PARAMETER
#define ERRCODE_BASIC_DDE_INVALID_LINK
#define ERRCODE_BASIC_UNDEF_TYPE
#define ERRCODE_BASIC_GETPROP_FAILED
#define ERRCODE_BASIC_PROC_UNDEFINED
#define ERRCODE_BASIC_DDE_LINK_ALREADY_EST
#define ERRCODE_BASIC_LABEL_DEFINED
#define ERRCODE_BASIC_METHOD_NOT_FOUND
#define ERRCODE_BASIC_NO_DEVICE
#define ERRCODE_BASIC_REDO_FROM_START
#define ERRCODE_BASIC_MUST_HAVE_DIMS
#define ERRCODE_BASIC_ACCESS_DENIED
#define ERRCODE_BASIC_UNEXPECTED
#define ERRCODE_BASIC_DDE_USER_INTERRUPT
#define ERRCODE_BASIC_DDE_BUSY
#define ERRCODE_BASIC_FILE_EXISTS
#define ERRCODE_BASIC_NO_STRINGS_ARRAYS
#define ERRCODE_BASIC_LVALUE_EXPECTED
#define ERRCODE_BASIC_PROC_DEFINED
#define ERRCODE_BASIC_UNDEF_LABEL
#define ERRCODE_BASIC_DDE_WAITINGACK
#define ERRCODE_BASIC_PROP_READONLY
#define ERRCODE_BASIC_LABEL_EXPECTED
#define ERRCODE_BASIC_DDE_QUEUE_OVERFLOW
#define ERRCODE_BASIC_OUT_OF_RANGE
#define ERRCODE_BASIC_ARG_MISSING
#define ERRCODE_BASIC_TOO_MANY_DLL
#define ERRCODE_BASIC_BAD_CLIPBD_FORMAT
#define ERRCODE_BASIC_NO_GOSUB
#define ERRCODE_BASIC_DDE_MULT_RESPONSES
#define ERRCODE_BASIC_VAR_UNDEFINED
#define ERRCODE_BASIC_MATH_OVERFLOW
#define ERRCODE_BASIC_SYMBOL_EXPECTED
#define ERRCODE_BASIC_DDE_NO_CHANNEL
#define ERRCODE_BASIC_EXPR_TOO_COMPLEX
#define ERRCODE_BASIC_DDE_TIMEOUT
#define ERRCODE_BASIC_BAD_ORDINAL
#define ERRCODE_BASIC_FILE_NOT_FOUND
#define ERRCODE_BASIC_CANNOT_LOAD
#define ERRCODE_BASIC_BAD_RECORD_NUMBER
#define ERRCODE_BASIC_SYNTAX
#define ERRCODE_BASIC_COMPAT
#define ERRCODE_BASIC_METHOD_FAILED
#define ERRCODE_BASIC_NAMED_NOT_FOUND
#define ERRCODE_BASIC_PATH_NOT_FOUND
#define ERRCODE_BASIC_BAD_BRACKETS
#define ERRCODE_BASIC_CONVERSION
#define ERRCODE_BASIC_DDE_NO_DATA
#define ERRCODE_BASIC_NO_MEMORY
#define ERRCODE_BASIC_IS_NULL
#define ERRCODE_BASIC_VAR_DEFINED
#define ERRCODE_BASIC_DDE_DLL_NOT_FOUND
#define ERRCODE_BASIC_BAD_ARGUMENT
#define ERRCODE_BASIC_DIFFERENT_DRIVE
#define ERRCODE_BASIC_INTERNAL_ERROR
#define ERRCODE_BASIC_NOT_A_COLL
#define ERRCODE_BASIC_WRONG_ARGS
#define ERRCODE_BASIC_DDE_ERROR
#define ERRCODE_BASIC_NOT_IMPLEMENTED
#define ERRCODE_BASIC_DDE_WRONG_DATA_FORMAT
#define ERRCODE_BASIC_ARRAY_FIX
#define ERRCODE_BASIC_CONSTANT_REDECLARED
#define ERRCODE_BASIC_NO_OLE
#define ERRCODE_BASIC_READ_PAST_EOF
#define ERRCODE_BASIC_DDE_PARTNER_QUIT
#define ERRCODE_BASIC_DDE_NO_RESPONSE
#define ERRCODE_BASIC_BAD_NUMBER_OF_ARGS
#define ERRCODE_BASIC_BAD_RESUME
#define ERRCODE_BASIC_DUPLICATE_DEF
#define ERRCODE_BASIC_DISK_FULL
#define ERRCODE_BASIC_LOOP_NOT_INIT
#define ERRCODE_BASIC_SETPROP_FAILED
#define ERRCODE_BASIC_DDE_CHANNEL_LOCKED
#define ERRCODE_BASIC_PROPERTY_NOT_FOUND
#define ERRCODE_BASIC_BAD_BLOCK
#define ERRCODE_BASIC_NOT_OPTIONAL
#define ERRCODE_BASIC_NO_NAMED_ARGS
#define ERRCODE_BASIC_FILE_ALREADY_OPEN
#define ERRCODE_BASIC_IO_ERROR
#define ERRCODE_BASIC_NEEDS_OBJECT
#define ERRCODE_BASIC_DDE_CONV_CLOSED
#define ERRCODE_BASIC_BAD_RECORD_LENGTH
#define ERRCODE_BASIC_BAD_EXIT
#define ERRCODE_BASIC_STACK_OVERFLOW
#define ERRCODE_BASIC_BAD_OPTION
#define ERRCODE_BASIC_BAD_CHANNEL
#define ERRCODE_BASIC_WRONG_DIMS
#define ERRCODE_BASIC_DLLPROC_NOT_FOUND
#define ERRCODE_BASIC_ZERODIV
#define ERRCODE_BASIC_UNDEF_VAR
#define ERRCODE_BASIC_DDE_LINK_INV_TOPIC
#define ERRCODE_BASIC_NO_IF
#define ERRCODE_BASIC_BAD_DLL_LOAD
#define ERRCODE_BASIC_INVALID_USAGE_OBJECT
#define ERRCODE_BASIC_BAD_DLL_CALL
SbUnoObject * createOLEObject_Impl(const OUString &aType)
void clearUnoMethodsForBasic(StarBASIC const *pBasic)
void disposeComVariablesForBasic(StarBASIC const *pBasic)
Any sbxToUnoValue(const SbxValue *pVar)
static sal_uInt16 nNameHash
OUString BasResId(TranslateId aId)
ClassModuleRunInitItem(SbModule *pModule)
std::vector< OUString > maRequiredTypes
sal_Int32 nCurCollectionIndex
Link< StarBASIC *, bool > aErrHdl
static SbiGlobals * pGlobals
Link< StarBASIC *, BasicDebugFlags > aBreakHdl
Reference< XController > xController
Reference< XModel > xModel