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

remove PseudoSlot support from idl compiler

Since we have removed the last usage with
commit 12c6caa8
"Kill remaining PseudoSlots usage"

And remove corresponding support from the list-dispatch-commands script.

Also remove the now unused SFX_NEW_SLOT_ENUM macro

Change-Id: Id07c431de4404acf61a8bdd3507e390e5249879a
Reviewed-on: https://gerrit.libreoffice.org/35754Reviewed-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
Tested-by: 's avatarNoel Grandin <noel.grandin@collabora.co.uk>
üst dad96279
......@@ -48,11 +48,10 @@ function analyseFile($fileName) {
$slotId = trim($tmp[1]);
$index++;
$aLine = $lines[$index];
$isEnumSlot = strpos($aLine, 'SFX_NEW_SLOT_ENUM') !== FALSE;
$tmp = explode(',', $aLine);
$slotRID = $tmp[1];
$index += $isEnumSlot ? 4 : 3;
$index += 3;
$aLine = $lines[$index];
$mode = "";
addMode($mode, $aLine, "CACHABLE", "C");
......@@ -60,7 +59,7 @@ function analyseFile($fileName) {
addMode($mode, $aLine, "MENUCONFIG", "M");
addMode($mode, $aLine, "TOOLBOXCONFIG", "T");
addMode($mode, $aLine, "ACCELCONFIG", "A");
$index += $isEnumSlot ? 1 : 3;
$index += 3;
$aLine = $lines[$index];
if (strpos($aLine, '"') === FALSE) {
$index++;
......
......@@ -44,7 +44,6 @@ struct SvGlobalHashNames
SvStringHashEntry* MM_float;
SvStringHashEntry* MM_double;
SvStringHashEntry* MM_item;
SvStringHashEntry* MM_PseudoSlots;
SvStringHashEntry* MM_import;
SvStringHashEntry* MM_SlotIdFile;
SvStringHashEntry* MM_include;
......@@ -52,7 +51,6 @@ struct SvGlobalHashNames
SvStringHashEntry* MM_StateMethod;
SvStringHashEntry* MM_GroupId;
SvStringHashEntry* MM_Export;
SvStringHashEntry* MM_PseudoPrefix;
SvStringHashEntry* MM_define;
SvStringHashEntry* MM_MenuConfig;
SvStringHashEntry* MM_ToolBoxConfig;
......@@ -106,7 +104,6 @@ HASH_INLINE(INT32)
HASH_INLINE(BOOL)
HASH_INLINE(BYTE)
HASH_INLINE(item)
HASH_INLINE(PseudoSlots)
HASH_INLINE(import)
HASH_INLINE(SlotIdFile)
HASH_INLINE(include)
......@@ -116,7 +113,6 @@ HASH_INLINE(GroupId)
HASH_INLINE(float)
HASH_INLINE(double)
HASH_INLINE(Export)
HASH_INLINE(PseudoPrefix)
HASH_INLINE(define)
HASH_INLINE(MenuConfig)
HASH_INLINE(ToolBoxConfig)
......
......@@ -31,7 +31,6 @@ public:
SvIdentifier aGroupId;
SvIdentifier aExecMethod;
SvIdentifier aStateMethod;
SvBOOL aPseudoSlots;
SvBOOL aToggle;
SvBOOL aAutoUpdate;
......@@ -48,12 +47,9 @@ public:
SvBOOL aAccelConfig;
SvBOOL aFastCall;
SvBOOL aContainer;
SvIdentifier aPseudoPrefix;
OString aDisableFlags;
SvMetaSlot* pLinkedSlot;
SvMetaSlot* pNextSlot;
sal_uLong nListPos;
SvMetaEnumValue* pEnumValue;
SvBOOL aReadOnlyDoc;
SvBOOL aExport;
......@@ -63,7 +59,6 @@ public:
size_t nStart,
SvIdlDataBase & rBase, SvStream & rOutStm );
void SetEnumValue(SvMetaEnumValue *p) { pEnumValue = p; }
OString GetMangleName() const;
bool IsVariable() const;
bool IsMethod() const;
......@@ -97,7 +92,6 @@ public:
const OString& GetExecMethod() const;
const OString& GetStateMethod() const;
const OString& GetDisableFlags() const;
bool GetPseudoSlots() const;
bool GetToggle() const;
bool GetAutoUpdate() const;
......@@ -108,7 +102,6 @@ public:
bool GetNoRecord() const;
bool GetRecordAbsolute() const;
const OString& GetPseudoPrefix() const;
bool GetMenuConfig() const;
bool GetToolBoxConfig() const;
bool GetAccelConfig() const;
......@@ -123,14 +116,13 @@ public:
void SetListPos(sal_uLong n)
{ nListPos = n; }
void ResetSlotPointer()
{ pNextSlot = pLinkedSlot = nullptr; }
{ pNextSlot = nullptr; }
virtual bool Test( SvTokenStream & rInStm ) override;
virtual void ReadAttributesSvIdl( SvIdlDataBase & rBase,
SvTokenStream & rInStm ) override;
virtual bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override;
virtual void Insert( SvSlotElementList&, const OString& rPrefix,
SvIdlDataBase& ) override;
virtual void Insert( SvSlotElementList& ) override;
void WriteSlotStubs( const OString& rShellName,
ByteStringList & rList,
SvStream & rOutStm );
......
......@@ -44,8 +44,7 @@ public:
virtual bool Test( SvTokenStream & rInStm ) override;
virtual bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override;
sal_uLong MakeSfx( OStringBuffer& rAtrrArray );
virtual void Insert( SvSlotElementList&, const OString& rPrefix,
SvIdlDataBase& );
virtual void Insert( SvSlotElementList& );
};
enum MetaTypeType { Method, Struct, Base, Enum, Interface, Shell };
......
......@@ -192,7 +192,7 @@ void SvMetaClass::InsertSlots( SvSlotElementList& rList, std::vector<sal_uLong>&
// Write only if not already written by subclass or
// imported interface.
rSuperList.push_back(nId);
pAttr->Insert(rList, rPrefix, rBase);
pAttr->Insert(rList);
}
}
......
......@@ -28,10 +28,8 @@
SvMetaSlot::SvMetaSlot()
: aRecordPerSet( true )
, aRecordAbsolute( false )
, pLinkedSlot(nullptr)
, pNextSlot(nullptr)
, nListPos(0)
, pEnumValue(nullptr)
, aReadOnlyDoc ( true )
, aExport( true )
{
......@@ -41,10 +39,8 @@ SvMetaSlot::SvMetaSlot( SvMetaType * pType )
: SvMetaAttribute( pType )
, aRecordPerSet( true )
, aRecordAbsolute( false )
, pLinkedSlot(nullptr)
, pNextSlot(nullptr)
, nListPos(0)
, pEnumValue(nullptr)
, aReadOnlyDoc ( true )
, aExport( true )
{
......@@ -131,11 +127,6 @@ const OString& SvMetaSlot::GetStateMethod() const
if( !aStateMethod.getString().isEmpty() || !GetRef() ) return aStateMethod.getString();
return static_cast<SvMetaSlot *>(GetRef())->GetStateMethod();
}
bool SvMetaSlot::GetPseudoSlots() const
{
if( aPseudoSlots.IsSet() || !GetRef() ) return aPseudoSlots;
return static_cast<SvMetaSlot *>(GetRef())->GetPseudoSlots();
}
bool SvMetaSlot::GetToggle() const
{
if( aToggle.IsSet() || !GetRef() ) return aToggle;
......@@ -183,11 +174,6 @@ bool SvMetaSlot::GetRecordAbsolute() const
return aRecordAbsolute;
return static_cast<SvMetaSlot *>(GetRef())->GetRecordAbsolute();
}
const OString& SvMetaSlot::GetPseudoPrefix() const
{
if( !aPseudoPrefix.getString().isEmpty() || !GetRef() ) return aPseudoPrefix.getString();
return static_cast<SvMetaSlot *>(GetRef())->GetPseudoPrefix();
}
bool SvMetaSlot::GetMenuConfig() const
{
if( aMenuConfig.IsSet() || !GetRef() ) return aMenuConfig;
......@@ -220,7 +206,6 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase,
SvMetaAttribute::ReadAttributesSvIdl( rBase, rInStm );
bool bOk = false;
bOk |= aPseudoSlots.ReadSvIdl( SvHash_PseudoSlots(), rInStm );
bOk |= aGroupId.ReadSvIdl( SvHash_GroupId(), rInStm );
bOk |= aExecMethod.ReadSvIdl( SvHash_ExecMethod(), rInStm );
bOk |= aStateMethod.ReadSvIdl( SvHash_StateMethod(), rInStm );
......@@ -260,7 +245,6 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase,
bOk = true;
}
bOk |= aPseudoPrefix.ReadSvIdl( SvHash_PseudoPrefix(), rInStm );
bOk |= aMenuConfig.ReadSvIdl( SvHash_MenuConfig(), rInStm );
bOk |= aToolBoxConfig.ReadSvIdl( SvHash_ToolBoxConfig(), rInStm );
bOk |= aAccelConfig.ReadSvIdl( SvHash_AccelConfig(), rInStm );
......@@ -376,14 +360,12 @@ bool SvMetaSlot::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm )
return bOk;
}
void SvMetaSlot::Insert( SvSlotElementList& rList, const OString& rPrefix,
SvIdlDataBase& rBase)
void SvMetaSlot::Insert( SvSlotElementList& rList)
{
// get insert position through binary search in slotlist
sal_uInt16 nId = (sal_uInt16) GetSlotId().GetValue();
sal_uInt16 nListCount = (sal_uInt16) rList.size();
sal_uInt16 nPos;
sal_uLong m; // for inner "for" loop
if ( !nListCount )
nPos = 0;
......@@ -441,90 +423,6 @@ void SvMetaSlot::Insert( SvSlotElementList& rList, const OString& rPrefix,
{
rList.push_back( this );
}
// iron out EnumSlots
SvMetaTypeEnum * pEnum = nullptr;
SvMetaType * pBType = GetType()->GetBaseType();
pEnum = dynamic_cast<SvMetaTypeEnum*>( pBType );
if( GetPseudoSlots() && pEnum && pEnum->Count() )
{
// clone the MasterSlot
tools::SvRef<SvMetaSlot> xEnumSlot;
SvMetaSlot *pFirstEnumSlot = nullptr;
for( sal_uLong n = 0; n < pEnum->Count(); n++ )
{
// create SlotId
SvMetaEnumValue *enumValue = pEnum->GetObject(n);
OString aValName = enumValue->GetName();
OStringBuffer aBuf;
if( !GetPseudoPrefix().isEmpty() )
aBuf.append(GetPseudoPrefix());
else
aBuf.append(GetSlotId().getString());
aBuf.append('_');
aBuf.append(aValName.copy(pEnum->GetPrefix().getLength()));
OString aSId = aBuf.makeStringAndClear();
xEnumSlot = nullptr;
for( m=0; m<rBase.GetSlotList().size(); m++ )
{
SvMetaSlot * pAttr = rBase.GetSlotList()[m];
if (aSId.equals(pAttr->GetSlotId().getString()))
{
SvMetaSlot& rSlot = dynamic_cast<SvMetaSlot&>(*pAttr);
xEnumSlot = new SvMetaSlot( rSlot );
break;
}
}
if ( m == rBase.GetSlotList().size() )
{
OSL_FAIL(OString("Invalid EnumSlot! " + aSId).getStr());
xEnumSlot = new SvMetaSlot( *this );
sal_uLong nValue;
if ( rBase.FindId(aSId , &nValue) )
{
SvIdentifier aId;
aId.setString(aSId);
aId.SetValue(nValue);
xEnumSlot->SetSlotId(aId);
}
}
// The slaves are no master!
xEnumSlot->aPseudoSlots = false;
xEnumSlot->SetEnumValue(enumValue);
if ( !pFirstEnumSlot || xEnumSlot->GetSlotId().GetValue() < pFirstEnumSlot->GetSlotId().GetValue() )
pFirstEnumSlot = xEnumSlot.get();
// insert the created slave as well
xEnumSlot->Insert( rList, rPrefix, rBase);
// concatenate the EnumSlots with the master
xEnumSlot->pLinkedSlot = this;
}
// master points to the first slave
pLinkedSlot = pFirstEnumSlot;
// concatenate slaves among themselves
xEnumSlot = pFirstEnumSlot;
size_t i = 0;
SvMetaSlot* pEle;
do
{
pEle = ( ++i < rList.size() ) ? rList[ i ] : nullptr;
if ( pEle && pEle->pLinkedSlot == this )
{
xEnumSlot->pNextSlot = pEle;
xEnumSlot = pEle;
}
}
while ( pEle );
xEnumSlot->pNextSlot = pFirstEnumSlot;
}
}
......@@ -600,18 +498,13 @@ void SvMetaSlot::WriteSlot( const OString& rShellName, sal_uInt16 nCount,
if ( !GetExport() && !GetHidden() )
return;
bool bIsEnumSlot = nullptr != pEnumValue;
rOutStm.WriteCharPtr( "// Slot Nr. " )
.WriteOString( OString::number(nListPos) )
.WriteCharPtr( " : " );
OString aSlotIdValue(OString::number(GetSlotId().GetValue()));
rOutStm.WriteOString( aSlotIdValue ) << endl;
WriteTab( rOutStm, 1 );
if( bIsEnumSlot )
rOutStm.WriteCharPtr( "SFX_NEW_SLOT_ENUM( " );
else
rOutStm.WriteCharPtr( "SFX_NEW_SLOT_ARG( " ).WriteOString( rShellName ).WriteChar( ',' ) ;
rOutStm.WriteCharPtr( "SFX_NEW_SLOT_ARG( " ).WriteOString( rShellName ).WriteChar( ',' ) ;
rOutStm.WriteOString( rSlotId ).WriteChar( ',' );
......@@ -623,100 +516,68 @@ void SvMetaSlot::WriteSlot( const OString& rShellName, sal_uInt16 nCount,
rOutStm.WriteChar( ',' ) << endl;
WriteTab( rOutStm, 4 );
if( bIsEnumSlot )
// look for the next slot with the same StateMethod like me
// the slotlist is set to the current slot
size_t i = nStart;
SvMetaSlot* pEle = ( ++i < rSlotList.size() ) ? rSlotList[ i ] : nullptr;
pNextSlot = pEle;
while ( pNextSlot )
{
rOutStm.WriteCharPtr( "&a" ).WriteOString( rShellName ).WriteCharPtr( "Slots_Impl[" )
.WriteOString( OString::number(pLinkedSlot->GetListPos()) )
.WriteCharPtr( "] /*Offset Master*/, " ) << endl;
WriteTab( rOutStm, 4 );
rOutStm.WriteCharPtr( "&a" ).WriteOString( rShellName ).WriteCharPtr( "Slots_Impl[" )
.WriteOString( OString::number(pNextSlot->GetListPos()) )
.WriteCharPtr( "] /*Offset Next*/, " ) << endl;
WriteTab( rOutStm, 4 );
// SlotId
if( !GetSlotId().getString().isEmpty() )
rOutStm.WriteOString( pLinkedSlot->GetSlotId().getString() );
else
rOutStm.WriteChar( '0' );
rOutStm.WriteChar( ',' );
rOutStm.WriteOString( pEnumValue->GetName() );
if ( !pNextSlot->pNextSlot &&
pNextSlot->GetStateMethod() == GetStateMethod()
) {
break;
}
pEle = ( ++i < rSlotList.size() ) ? rSlotList[ i ] : nullptr;
pNextSlot = pEle;
}
else
if ( !pNextSlot )
{
// look for the next slot with the same StateMethod like me
// the slotlist is set to the current slot
size_t i = nStart;
SvMetaSlot* pEle = ( ++i < rSlotList.size() ) ? rSlotList[ i ] : nullptr;
// There is no slot behind me that has the same ExecMethod.
// So I search for the first slot with it (could be myself).
i = 0;
pEle = rSlotList.empty() ? nullptr : rSlotList[ i ];
pNextSlot = pEle;
while ( pNextSlot )
while ( pNextSlot != this )
{
if ( !pNextSlot->pNextSlot &&
pNextSlot->GetStateMethod() == GetStateMethod()
) {
if ( pNextSlot->GetStateMethod() == GetStateMethod() )
break;
}
pEle = ( ++i < rSlotList.size() ) ? rSlotList[ i ] : nullptr;
pNextSlot = pEle;
}
}
if ( !pNextSlot )
{
// There is no slot behind me that has the same ExecMethod.
// So I search for the first slot with it (could be myself).
i = 0;
pEle = rSlotList.empty() ? nullptr : rSlotList[ i ];
pNextSlot = pEle;
while ( pNextSlot != this )
{
if ( !pNextSlot->pEnumValue &&
pNextSlot->GetStateMethod() == GetStateMethod() )
break;
pEle = ( ++i < rSlotList.size() ) ? rSlotList[ i ] : nullptr;
pNextSlot = pEle;
}
}
if ( !pLinkedSlot )
{
rOutStm.WriteCharPtr( "0 ," );
}
else
{
rOutStm.WriteCharPtr( "&a" ).WriteOString( rShellName ).WriteCharPtr( "Slots_Impl[" )
.WriteOString( OString::number(pLinkedSlot->GetListPos()) )
.WriteCharPtr( "] /*Offset Linked*/, " ) << endl;
WriteTab( rOutStm, 4 );
}
rOutStm.WriteCharPtr( "0 ," );
rOutStm.WriteCharPtr( "&a" ).WriteOString( rShellName ).WriteCharPtr( "Slots_Impl[" )
.WriteOString( OString::number(pNextSlot->GetListPos()) )
.WriteCharPtr( "] /*Offset Next*/, " ) << endl;
rOutStm.WriteCharPtr( "&a" ).WriteOString( rShellName ).WriteCharPtr( "Slots_Impl[" )
.WriteOString( OString::number(pNextSlot->GetListPos()) )
.WriteCharPtr( "] /*Offset Next*/, " ) << endl;
WriteTab( rOutStm, 4 );
WriteTab( rOutStm, 4 );
// write ExecMethod, with standard name if not specified
if( !GetExecMethod().isEmpty() &&
GetExecMethod() != "NoExec")
{
rOutStm.WriteCharPtr( "SFX_STUB_PTR(" ).WriteOString( rShellName ).WriteChar( ',' )
.WriteOString( GetExecMethod() ).WriteChar( ')' );
}
else
rOutStm.WriteCharPtr( "SFX_STUB_PTR_EXEC_NONE" );
rOutStm.WriteChar( ',' );
// write ExecMethod, with standard name if not specified
if( !GetExecMethod().isEmpty() &&
GetExecMethod() != "NoExec")
{
rOutStm.WriteCharPtr( "SFX_STUB_PTR(" ).WriteOString( rShellName ).WriteChar( ',' )
.WriteOString( GetExecMethod() ).WriteChar( ')' );
}
else
rOutStm.WriteCharPtr( "SFX_STUB_PTR_EXEC_NONE" );
rOutStm.WriteChar( ',' );
// write StateMethod, with standard name if not specified
if( !GetStateMethod().isEmpty() &&
GetStateMethod() != "NoState")
{
rOutStm.WriteCharPtr( "SFX_STUB_PTR(" ).WriteOString( rShellName ).WriteChar( ',' )
.WriteOString( GetStateMethod() ).WriteChar( ')' );
}
else
rOutStm.WriteCharPtr( "SFX_STUB_PTR_STATE_NONE" );
// write StateMethod, with standard name if not specified
if( !GetStateMethod().isEmpty() &&
GetStateMethod() != "NoState")
{
rOutStm.WriteCharPtr( "SFX_STUB_PTR(" ).WriteOString( rShellName ).WriteChar( ',' )
.WriteOString( GetStateMethod() ).WriteChar( ')' );
}
else
rOutStm.WriteCharPtr( "SFX_STUB_PTR_STATE_NONE" );
rOutStm.WriteChar( ',' ) << endl;
WriteTab( rOutStm, 4 );
......@@ -757,36 +618,26 @@ void SvMetaSlot::WriteSlot( const OString& rShellName, sal_uInt16 nCount,
rOutStm.WriteOString( GetDisableFlags() );
// write attribute type
if( !bIsEnumSlot )
{
rOutStm.WriteChar( ',' ) << endl;
WriteTab( rOutStm, 4 );
rOutStm.WriteChar( ',' ) << endl;
WriteTab( rOutStm, 4 );
SvMetaType * pT = GetSlotType();
if( !pT )
{
if( !IsVariable() )
pT = rBase.FindType( "SfxVoidItem" );
else
pT = GetType();
}
if( pT )
{
rOutStm.WriteOString( pT->GetName() );
if( !SvIdlDataBase::FindType( pT, rBase.aUsedTypes ) )
rBase.aUsedTypes.push_back( pT );
}
SvMetaType * pT = GetSlotType();
if( !pT )
{
if( !IsVariable() )
pT = rBase.FindType( "SfxVoidItem" );
else
rOutStm.WriteCharPtr( "SfxVoidItem not defined" );
pT = GetType();
}
else
if( pT )
{
SvMetaType *pT = rBase.FindType( "SfxBoolItem" );
if ( pT && !SvIdlDataBase::FindType( pT, rBase.aUsedTypes ) )
rOutStm.WriteOString( pT->GetName() );
if( !SvIdlDataBase::FindType( pT, rBase.aUsedTypes ) )
rBase.aUsedTypes.push_back( pT );
}
else
rOutStm.WriteCharPtr( "SfxVoidItem not defined" );
if( !bIsEnumSlot )
{
rOutStm.WriteChar( ',' ) << endl;
WriteTab( rOutStm, 4 );
......
......@@ -115,7 +115,7 @@ sal_uLong SvMetaAttribute::MakeSfx( OStringBuffer& rAttrArray )
}
}
void SvMetaAttribute::Insert (SvSlotElementList&, const OString&, SvIdlDataBase&)
void SvMetaAttribute::Insert(SvSlotElementList&)
{
}
......
......@@ -83,8 +83,6 @@ char const * const SyntaxStrings[] = {
"\t\tFastCall",
"\t\tGet, Set",
"\t\tGroupId = Identifier",
"\t\tPseudoPrefix = Identifier",
"\t\tPseudoSlots",
"\t\tReadOnlyDoc*",
"\t\tRecordPerSet*, RecordPerItem, NoRecord",
"\t\tRecordAbsolute",
......
......@@ -74,7 +74,6 @@ SvGlobalHashNames::SvGlobalHashNames()
A_ENTRY(float)
A_ENTRY(double)
A_ENTRY(item)
A_ENTRY(PseudoSlots)
A_ENTRY(import)
A_ENTRY(SlotIdFile)
A_ENTRY(include)
......@@ -82,7 +81,6 @@ SvGlobalHashNames::SvGlobalHashNames()
A_ENTRY(StateMethod)
A_ENTRY(GroupId)
A_ENTRY(Export)
A_ENTRY(PseudoPrefix)
A_ENTRY(define)
A_ENTRY(MenuConfig)
A_ENTRY(ToolBoxConfig)
......
......@@ -382,7 +382,6 @@ bool SvIdlParser::ReadSlot(SvMetaSlot& rSlot)
void SvIdlParser::ReadSlotAttribute( SvMetaSlot& rSlot )
{
bool bOk = false;
bOk |= ReadIfBoolAttribute(rSlot.aPseudoSlots, SvHash_PseudoSlots() );
bOk |= ReadIfIdAttribute(rSlot.aGroupId, SvHash_GroupId() );
bOk |= ReadIfIdAttribute(rSlot.aExecMethod, SvHash_ExecMethod() );
bOk |= ReadIfIdAttribute(rSlot.aStateMethod, SvHash_StateMethod() );
......@@ -417,7 +416,6 @@ void SvIdlParser::ReadSlotAttribute( SvMetaSlot& rSlot )
bOk = true;
}
bOk |= ReadIfIdAttribute(rSlot.aPseudoPrefix, SvHash_PseudoPrefix() );
bOk |= ReadIfBoolAttribute(rSlot.aMenuConfig, SvHash_MenuConfig() );
bOk |= ReadIfBoolAttribute(rSlot.aToolBoxConfig, SvHash_ToolBoxConfig() );
bOk |= ReadIfBoolAttribute(rSlot.aAccelConfig, SvHash_AccelConfig() );
......
......@@ -178,17 +178,6 @@ SFX_DECL_TYPE(23); // for SvxSearchItem
&a##aShellClass##Args_Impl[nArg0], nArgs, DisableFlags, UnoName \
}
#define SFX_NEW_SLOT_ENUM( SlaveId, GroupId, pMaster, pNext, MasterId, Value, Flags, DisableFlags, UnoName ) \
{ SlaveId, GroupId, Flags, \
MasterId, Value, \
0, \
0, \
(const SfxType*) &aSfxBoolItem_Impl, \
pMaster, \
pNext, \
0, 0, DisableFlags, UnoName \
}
struct SfxFormalArgument
{
const SfxType* pType; // Type of the parameter (SfxPoolItem subclass)
......
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