summaryrefslogtreecommitdiff
path: root/idl/source
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2016-02-16 13:15:43 +0200
committerNoel Grandin <noel@peralex.com>2016-02-17 11:22:26 +0200
commit0f8f733eaf54c00f79d086c2b2867c7a8b1bcc6c (patch)
tree42dbab67e739afe303532df4b6377ff1ad2bfda6 /idl/source
parent291a10ec557a765a4d3090330964fd1cb7a82f6b (diff)
move parsing of method ags into SvIdlParser
Change-Id: I2fb969529c0670ae93c3cba69bf207d2c87887dc
Diffstat (limited to 'idl/source')
-rw-r--r--idl/source/prj/parser.cxx24
1 files changed, 20 insertions, 4 deletions
diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx
index 9d77a3682c5a..d1793c89de2b 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( ']' );