idl/inc/lex.hxx | 58 +++++++------- idl/inc/object.hxx | 1 idl/inc/parser.hxx | 42 +++++----- idl/inc/types.hxx | 3 idl/source/prj/parser.cxx | 180 +++++++++++++++++++++++++++++----------------- svx/sdi/svxitems.sdi | 2 6 files changed, 175 insertions(+), 111 deletions(-)
New commits: commit b94272a55ee208b22cf73e8738152d9feaa7916f Author: Noel Grandin <n...@peralex.com> Date: Wed Feb 17 09:01:27 2016 +0200 cleanup the Read*() methods in SvIdlParser to be consistent about when they move to the next token Change-Id: I8f5b1eab497fb4a7cb2a2267e815668c3d363de7 diff --git a/idl/inc/lex.hxx b/idl/inc/lex.hxx index f513e9e..7a71520 100644 --- a/idl/inc/lex.hxx +++ b/idl/inc/lex.hxx @@ -181,28 +181,38 @@ public: SvToken& GetToken() const { return *(*pCurToken).get(); } bool ReadIf( char cChar ) - { - if( (*pCurToken)->IsChar() - && cChar == (*pCurToken)->GetChar() ) - { - GetToken_Next(); - return true; - } - else - return false; - } + { + if( GetToken().IsChar() && cChar == GetToken().GetChar() ) + { + GetToken_Next(); + return true; + } + else + return false; + } + + bool ReadIf( SvStringHashEntry* pEntry ) + { + if( GetToken().Is( pEntry ) ) + { + GetToken_Next(); + return true; + } + else + return false; + } bool ReadIfDelimiter() - { - if( (*pCurToken)->IsChar() - && (';' == (*pCurToken)->GetChar() - || ',' == (*pCurToken)->GetChar()) ) - { - GetToken_Next(); - return true; - } - return false; - } + { + if( GetToken().IsChar() + && (';' == GetToken().GetChar() + || ',' == GetToken().GetChar()) ) + { + GetToken_Next(); + return true; + } + return false; + } sal_uInt32 Tell() const { return pCurToken-aTokList.begin(); } diff --git a/idl/inc/parser.hxx b/idl/inc/parser.hxx index 612fda0..fd1a352 100644 --- a/idl/inc/parser.hxx +++ b/idl/inc/parser.hxx @@ -52,11 +52,14 @@ public: void ReadEnumValue( SvMetaTypeEnum& rEnum ); SvMetaClass* ReadKnownClass(); SvMetaType* ReadKnownType(); - void ReadChar(char cChar); + void Read(char cChar); + bool ReadIf(char cChar); void ReadDelimiter(); + bool ReadIfDelimiter(); OString ReadIdentifier(); OString ReadString(); - void ReadToken(SvStringHashEntry*); + void Read(SvStringHashEntry*); + bool ReadIf(SvStringHashEntry*); }; #endif // INCLUDED_IDL_INC_PARSER_HXX diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx index 01cab62..fe1e2b9 100644 --- a/idl/source/prj/parser.cxx +++ b/idl/source/prj/parser.cxx @@ -37,18 +37,15 @@ void SvIdlParser::ReadSvIdl( bool bImported, const OUString & rPath ) if( rTok.IsEof() ) return; - if( rTok.Is( SvHash_module() ) ) - { - tools::SvRef<SvMetaModule> aModule = new SvMetaModule( bImported ); - ReadModuleHeader(*aModule); - rBase.GetModuleList().push_back( aModule ); - } + Read( SvHash_module() ); + tools::SvRef<SvMetaModule> aModule = new SvMetaModule( bImported ); + ReadModuleHeader(*aModule); + rBase.GetModuleList().push_back( aModule ); } } void SvIdlParser::ReadModuleHeader(SvMetaModule& rModule) { - rInStm.GetToken_Next(); OString aName = ReadIdentifier(); rBase.Push( &rModule ); // onto the context stack rModule.SetName( aName ); @@ -58,7 +55,7 @@ void SvIdlParser::ReadModuleHeader(SvMetaModule& rModule) void SvIdlParser::ReadModuleBody(SvMetaModule& rModule) { - if( rInStm.ReadIf( '[' ) ) + if( ReadIf( '[' ) ) { while( true ) { @@ -69,12 +66,12 @@ void SvIdlParser::ReadModuleBody(SvMetaModule& rModule) { throw SvParseException( rInStm, "cannot read file: " + aSlotIdFile ); } - rInStm.ReadIfDelimiter(); + ReadIfDelimiter(); } - ReadChar( ']' ); + Read( ']' ); } - if( !rInStm.ReadIf( '{' ) ) + if( !ReadIf( '{' ) ) return; sal_uInt32 nBeginPos = 0; @@ -82,34 +79,34 @@ void SvIdlParser::ReadModuleBody(SvMetaModule& rModule) { nBeginPos = rInStm.Tell(); ReadModuleElement( rModule ); - rInStm.ReadIfDelimiter(); + ReadIfDelimiter(); } - ReadChar( '}' ); + Read( '}' ); } void SvIdlParser::ReadModuleElement( SvMetaModule& rModule ) { - if( rInStm.GetToken().Is( SvHash_interface() ) ) + if( ReadIf( SvHash_interface() ) ) { ReadInterfaceOrShell(rModule, MetaTypeType::Interface); } - else if( rInStm.GetToken().Is( SvHash_shell() ) ) + else if( ReadIf( SvHash_shell() ) ) { ReadInterfaceOrShell(rModule, MetaTypeType::Shell); } - else if( rInStm.GetToken().Is( SvHash_enum() ) ) + else if( ReadIf( SvHash_enum() ) ) { ReadEnum(); } - else if( rInStm.GetToken().Is( SvHash_item() ) ) + else if( ReadIf( SvHash_item() ) ) { ReadItem(); } - else if( rInStm.GetToken().Is( SvHash_struct() ) ) + else if( ReadIf( SvHash_struct() ) ) { ReadStruct(); } - else if( rInStm.GetToken().Is( SvHash_include() ) ) + else if( ReadIf( SvHash_include() ) ) { ReadInclude(rModule); } @@ -132,7 +129,6 @@ void SvIdlParser::ReadInclude( SvMetaModule& rModule ) { sal_uInt32 nTokPos = rInStm.Tell(); bool bOk = false; - rInStm.GetToken_Next(); OUString aFullName(OStringToOUString(ReadString(), RTL_TEXTENCODING_ASCII_US)); rBase.StartNewFile( aFullName ); osl::FileBase::RC searchError = osl::File::searchFileURL(aFullName, rBase.GetPath(), aFullName); @@ -182,12 +178,10 @@ void SvIdlParser::ReadInclude( SvMetaModule& rModule ) void SvIdlParser::ReadStruct() { - ReadToken( SvHash_struct() ); - rInStm.GetToken_Next(); tools::SvRef<SvMetaType> xStruct(new SvMetaType() ); xStruct->SetType( MetaTypeType::Struct ); xStruct->SetName( ReadIdentifier() ); - ReadChar( '{' ); + Read( '{' ); sal_uInt32 nBeginPos = 0; // can not happen with Tell while( nBeginPos != rInStm.Tell() ) { @@ -201,19 +195,19 @@ void SvIdlParser::ReadStruct() throw SvParseException( rInStm, "no value for identifier <" + xAttr->aSlotId.getString() + "> " ); xAttr->aSlotId.SetValue(n); xStruct->GetAttrList().push_back( xAttr ); - rInStm.ReadIfDelimiter(); - if ( rInStm.GetToken().IsChar() && rInStm.GetToken().GetChar() == '}') + if( !ReadIfDelimiter() ) + break; + if( rInStm.GetToken().IsChar() && rInStm.GetToken().GetChar() == '}') break; } - ReadChar( '}' ); + Read( '}' ); + ReadDelimiter(); // announce globally rBase.GetTypeList().push_back( xStruct ); } void SvIdlParser::ReadItem() { - ReadToken( SvHash_item() ); - rInStm.GetToken_Next(); tools::SvRef<SvMetaType> xItem(new SvMetaType() ); xItem->SetItem(true); xItem->SetRef( ReadKnownType() ); @@ -224,19 +218,18 @@ void SvIdlParser::ReadItem() void SvIdlParser::ReadEnum() { - rInStm.GetToken_Next(); tools::SvRef<SvMetaTypeEnum> xEnum( new SvMetaTypeEnum() ); xEnum->SetType( MetaTypeType::Enum ); xEnum->SetName( ReadIdentifier() ); - ReadChar('{'); + Read('{'); while( true ) { ReadEnumValue( *xEnum ); - if( !rInStm.ReadIfDelimiter() ) + if( !ReadIfDelimiter() ) break; } - ReadChar( '}' ); + Read( '}' ); // announce globally rBase.GetTypeList().push_back( xEnum ); } @@ -274,26 +267,24 @@ void SvIdlParser::ReadInterfaceOrShell( SvMetaModule& rModule, MetaTypeType aMet { tools::SvRef<SvMetaClass> aClass( new SvMetaClass() ); - rInStm.GetToken_Next(); - aClass->SetType( aMetaTypeType ); aClass->SetName( ReadIdentifier() ); - if( rInStm.ReadIf( ':' ) ) + if( ReadIf( ':' ) ) { aClass->aSuperClass = ReadKnownClass(); } - if( rInStm.ReadIf( '{' ) ) + if( ReadIf( '{' ) ) { sal_uInt32 nBeginPos = 0; // can not happen with Tell while( nBeginPos != rInStm.Tell() ) { nBeginPos = rInStm.Tell(); ReadInterfaceOrShellEntry(*aClass); - rInStm.ReadIfDelimiter(); + ReadIfDelimiter(); } - ReadChar( '}' ); + Read( '}' ); } rModule.aClassList.push_back( aClass ); // announce globally @@ -362,16 +353,16 @@ bool SvIdlParser::ReadInterfaceOrShellSlot(SvMetaSlot& rSlot) throw SvParseException( rInStm, "attribute " + pAttr->GetName() + " is method or variable but not a slot" ); rSlot.SetRef( pKnownSlot ); rSlot.SetName( pKnownSlot->GetName() ); - if( rInStm.ReadIf( '[' ) ) + if( ReadIf( '[' ) ) { sal_uInt32 nBeginPos = 0; // can not happen with Tell while( nBeginPos != rInStm.Tell() ) { nBeginPos = rInStm.Tell(); rSlot.ReadAttributesSvIdl( rBase, rInStm ); - rInStm.ReadIfDelimiter(); + ReadIfDelimiter(); } - bOk = rInStm.ReadIf( ']' ); + bOk = ReadIf( ']' ); } } else @@ -408,7 +399,7 @@ bool SvIdlParser::ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr rAttr.aSlotId.SetValue(n); bOk = true; - if( rInStm.ReadIf( '(' ) ) + if( ReadIf( '(' ) ) { // read method arguments tools::SvRef<SvMetaType> xT(new SvMetaType() ); @@ -424,14 +415,14 @@ bool SvIdlParser::ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr if( xAttr->Test( rInStm ) ) rAttr.aType->GetAttrList().push_back( xAttr ); } - rInStm.ReadIfDelimiter(); + ReadIfDelimiter(); } - ReadChar( ')' ); + Read( ')' ); rAttr.aType->SetType( MetaTypeType::Method ); } - if( bOk && rInStm.ReadIf( '[' ) ) + if( bOk && ReadIf( '[' ) ) { - ReadChar( ']' ); + Read( ']' ); } if( !bOk ) @@ -463,36 +454,71 @@ SvMetaType * SvIdlParser::ReadKnownType() void SvIdlParser::ReadDelimiter() { - if( !rInStm.ReadIfDelimiter() ) + if( !ReadIfDelimiter() ) throw SvParseException(rInStm, "expected delimiter"); } +bool SvIdlParser::ReadIfDelimiter() +{ + if( rInStm.GetToken().IsChar() + && (';' == rInStm.GetToken().GetChar() + || ',' == rInStm.GetToken().GetChar()) ) + { + rInStm.GetToken_Next(); + return true; + } + return false; +} + OString SvIdlParser::ReadIdentifier() { - SvToken& rTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken(); if( !rTok.IsIdentifier() ) throw SvParseException("expected identifier", rTok); + rInStm.GetToken_Next(); return rTok.GetString(); } OString SvIdlParser::ReadString() { - SvToken& rTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken(); if( !rTok.IsString() ) throw SvParseException("expected string", rTok); + rInStm.GetToken_Next(); return rTok.GetString(); } -void SvIdlParser::ReadChar(char cChar) +void SvIdlParser::Read(char cChar) { - if( !rInStm.ReadIf( cChar ) ) + if( !(rInStm.GetToken().IsChar() && rInStm.GetToken().GetChar() == cChar ) ) throw SvParseException(rInStm, "expected char '" + OString(cChar) + "'"); + rInStm.GetToken_Next(); } -void SvIdlParser::ReadToken(SvStringHashEntry* entry) +bool SvIdlParser::ReadIf(char cChar) +{ + if( rInStm.GetToken().IsChar() && rInStm.GetToken().GetChar() == cChar ) + { + rInStm.GetToken_Next(); + return true; + } + return false; +} + +void SvIdlParser::Read(SvStringHashEntry* entry) { if( !rInStm.GetToken().Is(entry) ) throw SvParseException("expected " + entry->GetName(), rInStm.GetToken()); + rInStm.GetToken_Next(); } +bool SvIdlParser::ReadIf(SvStringHashEntry* entry) +{ + if( rInStm.GetToken().Is(entry) ) + { + rInStm.GetToken_Next(); + return true; + } + return false; +} /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/sdi/svxitems.sdi b/svx/sdi/svxitems.sdi index 7680d69..e44ae28 100644 --- a/svx/sdi/svxitems.sdi +++ b/svx/sdi/svxitems.sdi @@ -314,7 +314,7 @@ item SvxLine SvxLineItem; struct SvxLRSpace { INT32 LeftMargin MID_L_MARGIN; // % or direct - INT32 TextLeftMargin MID_TXT_LMARGIN + INT32 TextLeftMargin MID_TXT_LMARGIN; INT32 RightMargin MID_R_MARGIN; // % or direct INT16 LeftRelMargin MID_L_REL_MARGIN; INT16 RightRelMargin MID_R_REL_MARGIN; commit cd3bb3047d3f4c9cc9b4aa0c0eb8a42930b9bb86 Author: Noel Grandin <n...@peralex.com> Date: Tue Feb 16 15:18:33 2016 +0200 move some more slot parsing to SvIdlParser Change-Id: I186e80ed0446585aceaf4d25f32ecca7e8ed396c diff --git a/idl/inc/object.hxx b/idl/inc/object.hxx index 6d56eeb..4c26597 100644 --- a/idl/inc/object.hxx +++ b/idl/inc/object.hxx @@ -33,6 +33,7 @@ class SvClassElement tools::SvRef<SvMetaClass> xClass; public: SvClassElement(); + SvClassElement(SvMetaClass* pClass) { xClass = pClass; } void SetPrefix( const OString& rPrefix ) { aPrefix = rPrefix; } diff --git a/idl/inc/parser.hxx b/idl/inc/parser.hxx index 8059cfd..612fda0 100644 --- a/idl/inc/parser.hxx +++ b/idl/inc/parser.hxx @@ -37,25 +37,26 @@ class SvIdlParser SvTokenStream & rInStm; public: SvIdlParser( SvIdlDataBase& rBase_, SvTokenStream & rInStrm_) : rBase(rBase_), rInStm(rInStrm_) {} - void ReadSvIdl( bool bImported, const OUString & rPath ); - void ReadModuleHeader(SvMetaModule& rModule); - void ReadModuleBody(SvMetaModule& rModule); - void ReadModuleElement( SvMetaModule& rModule ); - void ReadInclude( SvMetaModule& rModule ); - void ReadInterfaceOrShell( SvMetaModule& rModule, MetaTypeType aMetaTypeType ); - void ReadInterfaceOrShellEntry( SvMetaClass& rClass ); - bool ReadInterfaceOrShellSlot( SvMetaSlot& rSlot ); - bool ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr ); - void ReadItem(); - void ReadStruct(); - void ReadEnum(); - void ReadEnumValue( SvMetaTypeEnum& rEnum ); - SvMetaType* ReadKnownType(); - void ReadChar(char cChar); - void ReadDelimiter(); - OString ReadIdentifier(); - OString ReadString(); - void ReadToken(SvStringHashEntry*); + void ReadSvIdl( bool bImported, const OUString & rPath ); + void ReadModuleHeader(SvMetaModule& rModule); + void ReadModuleBody(SvMetaModule& rModule); + void ReadModuleElement( SvMetaModule& rModule ); + void ReadInclude( SvMetaModule& rModule ); + void ReadInterfaceOrShell( SvMetaModule& rModule, MetaTypeType aMetaTypeType ); + void ReadInterfaceOrShellEntry( SvMetaClass& rClass ); + bool ReadInterfaceOrShellSlot( SvMetaSlot& rSlot ); + bool ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr ); + void ReadItem(); + void ReadStruct(); + void ReadEnum(); + void ReadEnumValue( SvMetaTypeEnum& rEnum ); + SvMetaClass* ReadKnownClass(); + SvMetaType* ReadKnownType(); + void ReadChar(char cChar); + void ReadDelimiter(); + OString ReadIdentifier(); + OString ReadString(); + void ReadToken(SvStringHashEntry*); }; #endif // INCLUDED_IDL_INC_PARSER_HXX diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx index d1793c8..01cab62 100644 --- a/idl/source/prj/parser.cxx +++ b/idl/source/prj/parser.cxx @@ -282,9 +282,7 @@ void SvIdlParser::ReadInterfaceOrShell( SvMetaModule& rModule, MetaTypeType aMet if( rInStm.ReadIf( ':' ) ) { - aClass->aSuperClass = rBase.ReadKnownClass( rInStm ); - if( !aClass->aSuperClass.Is() ) - throw SvParseException( rInStm, "unknown super class" ); + aClass->aSuperClass = ReadKnownClass(); } if( rInStm.ReadIf( '{' ) ) { @@ -309,19 +307,15 @@ void SvIdlParser::ReadInterfaceOrShellEntry(SvMetaClass& rClass) if( rTok.Is( SvHash_import() ) ) { - SvMetaClass * pClass = rBase.ReadKnownClass( rInStm ); - if( !pClass ) - throw SvParseException( rInStm, "unknown imported interface" ); - SvClassElement xEle; - xEle.SetClass( pClass ); - rClass.aClassElementList.push_back( xEle ); - + SvMetaClass * pClass = ReadKnownClass(); + SvClassElement xEle(pClass); rTok = rInStm.GetToken(); if( rTok.IsString() ) { xEle.SetPrefix( rTok.GetString() ); rInStm.GetToken_Next(); } + rClass.aClassElementList.push_back( xEle ); return; } else @@ -363,12 +357,22 @@ bool SvIdlParser::ReadInterfaceOrShellSlot(SvMetaSlot& rSlot) SvMetaAttribute * pAttr = rBase.ReadKnownAttr( rInStm, rSlot.GetType() ); if( pAttr ) { - SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr ); + SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr ); if( !pKnownSlot ) throw SvParseException( rInStm, "attribute " + pAttr->GetName() + " is method or variable but not a slot" ); rSlot.SetRef( pKnownSlot ); rSlot.SetName( pKnownSlot->GetName() ); - bOk = rSlot.SvMetaObject::ReadSvIdl( rBase, rInStm ); + if( rInStm.ReadIf( '[' ) ) + { + sal_uInt32 nBeginPos = 0; // can not happen with Tell + while( nBeginPos != rInStm.Tell() ) + { + nBeginPos = rInStm.Tell(); + rSlot.ReadAttributesSvIdl( rBase, rInStm ); + rInStm.ReadIfDelimiter(); + } + bOk = rInStm.ReadIf( ']' ); + } } else { @@ -376,7 +380,7 @@ bool SvIdlParser::ReadInterfaceOrShellSlot(SvMetaSlot& rSlot) SvMetaAttribute *pAttr2 = rBase.SearchKnownAttr( rSlot.GetSlotId() ); if( pAttr2 ) { - SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr2 ); + SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr2 ); if( !pKnownSlot ) throw SvParseException( rInStm, "attribute " + pAttr2->GetName() + " is method or variable but not a slot" ); rSlot.SetRef( pKnownSlot ); @@ -435,6 +439,14 @@ bool SvIdlParser::ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr return bOk; } +SvMetaClass * SvIdlParser::ReadKnownClass() +{ + SvMetaClass* pClass = rBase.ReadKnownClass( rInStm ); + if( !pClass ) + throw SvParseException( rInStm, "unknown class" ); + return pClass; +} + SvMetaType * SvIdlParser::ReadKnownType() { OString aName = ReadIdentifier(); commit 0f8f733eaf54c00f79d086c2b2867c7a8b1bcc6c Author: Noel Grandin <n...@peralex.com> Date: Tue Feb 16 13:15:43 2016 +0200 move parsing of method ags into SvIdlParser Change-Id: I2fb969529c0670ae93c3cba69bf207d2c87887dc diff --git a/idl/inc/lex.hxx b/idl/inc/lex.hxx index 7780a36..f513e9e 100644 --- a/idl/inc/lex.hxx +++ b/idl/inc/lex.hxx @@ -166,7 +166,7 @@ public: return *(*pRetToken).get(); } - SvToken& GetToken_NextAll() + SvToken& GetToken_Next() { std::vector<std::unique_ptr<SvToken> >::iterator pRetToken = pCurToken++; @@ -178,12 +178,6 @@ public: return *(*pRetToken).get(); } - SvToken& GetToken_Next() - { - // comments get removed initially - return GetToken_NextAll(); - } - SvToken& GetToken() const { return *(*pCurToken).get(); } bool ReadIf( char cChar ) diff --git a/idl/inc/types.hxx b/idl/inc/types.hxx index ec7a0de..167e902 100644 --- a/idl/inc/types.hxx +++ b/idl/inc/types.hxx @@ -62,7 +62,6 @@ class SvMetaType : public SvMetaReference SvStream & rOutStm ); protected: bool ReadNamesSvIdl( SvTokenStream & rInStm ); - virtual void ReadContextSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override; bool ReadHeaderSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); public: @@ -71,6 +70,8 @@ public: virtual ~SvMetaType(); + virtual void ReadContextSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override; + SvRefMemberList<SvMetaAttribute *>& GetAttrList() { return aAttrList; } sal_uLong GetAttrCount() const { return aAttrList.size(); } diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx index 9d77a36..d1793c8 100644 --- a/idl/source/prj/parser.cxx +++ b/idl/source/prj/parser.cxx @@ -404,11 +404,27 @@ bool SvIdlParser::ReadInterfaceOrShellMethodOrAttribute( SvMetaAttribute& rAttr rAttr.aSlotId.SetValue(n); bOk = true; - SvToken& rTok = rInStm.GetToken(); - if( rTok.IsChar() && rTok.GetChar() == '(' ) + if( rInStm.ReadIf( '(' ) ) { - bOk = rAttr.aType->ReadMethodArgs( rBase, rInStm ); - } + // read method arguments + tools::SvRef<SvMetaType> xT(new SvMetaType() ); + xT->SetRef(rAttr.GetType() ); + rAttr.aType = xT; + sal_uInt32 nBeginPos = 0; // can not happen with Tell + while( nBeginPos != rInStm.Tell() ) + { + nBeginPos = rInStm.Tell(); + tools::SvRef<SvMetaAttribute> xAttr( new SvMetaAttribute() ); + if( xAttr->ReadSvIdl( rBase, rInStm ) ) + { + if( xAttr->Test( rInStm ) ) + rAttr.aType->GetAttrList().push_back( xAttr ); + } + rInStm.ReadIfDelimiter(); + } + ReadChar( ')' ); + rAttr.aType->SetType( MetaTypeType::Method ); + } if( bOk && rInStm.ReadIf( '[' ) ) { ReadChar( ']' ); _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits