void SbxBase::RemoveFactory( SbxFactory const * pFac )
{ if (!IsSbxData_Impl()) return;
SbxAppData& r = GetSbxData_Impl(); auto it = std::find(r.m_Factories.begin(), r.m_Factories.end(), pFac); if (it != r.m_Factories.end())
r.m_Factories.erase( it );
}
SbxBaseRef SbxBase::Create( sal_uInt16 nSbxId, sal_uInt32 nCreator )
{ // #91626: Hack to skip old Basic dialogs // Problem: There does not exist a factory any more, // so we have to create a dummy SbxVariable instead if( nSbxId == 0x65 ) // Dialog Id returnnew SbxVariable;
if( nCreator == SBXCR_SBX ) switch( nSbxId )
{ case SBXID_VALUE: returnnew SbxValue; case SBXID_VARIABLE: returnnew SbxVariable; case SBXID_ARRAY: returnnew SbxArray; case SBXID_DIMARRAY: returnnew SbxDimArray; case SBXID_OBJECT: returnnew SbxObject( u""_ustr ); case SBXID_COLLECTION: returnnew SbxCollection; case SBXID_FIXCOLLECTION: returnnew SbxStdCollection; case SBXID_METHOD: returnnew SbxMethod( u""_ustr, SbxEMPTY ); case SBXID_PROPERTY: returnnew SbxProperty( u""_ustr, SbxEMPTY );
} // Unknown type: go over the factories!
SbxAppData& r = GetSbxData_Impl();
SbxBaseRef pNew; for (autoconst& rpFac : r.m_Factories)
{
pNew = rpFac->Create( nSbxId, nCreator ); if( pNew ) break;
}
SAL_WARN_IF(!pNew, "basic", "No factory for SBX ID " << nSbxId); return pNew;
}
SbxObjectRef SbxBase::CreateObject( const OUString& rClass )
{
SbxAppData& r = GetSbxData_Impl();
SbxObjectRef pNew; for (autoconst& rpFac : r.m_Factories)
{
pNew = rpFac->CreateObject( rClass ); if( pNew ) break;
}
SAL_WARN_IF(!pNew, "basic", "No factory for object class " << rClass); return pNew;
}
namespace {
// coverity[ -taint_source ]
[[nodiscard]] SbxFlagBits CorrectFlags(SbxFlagBits nFlags)
{ // Correcting a foolishness of mine: if (nFlags & SbxFlagBits::Reserved)
nFlags |= SbxFlagBits::GlobalSearch; return nFlags & ~SbxFlagBits::Reserved;
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.