idl/inc/basobj.hxx | 2 idl/inc/database.hxx | 15 ++- idl/inc/lex.hxx | 13 +- idl/inc/parser.hxx | 5 - idl/inc/slot.hxx | 2 idl/inc/types.hxx | 2 idl/source/cmptools/lex.cxx | 8 - idl/source/objects/basobj.cxx | 8 - idl/source/objects/bastype.cxx | 47 ++++----- idl/source/objects/module.cxx | 82 +++++++---------- idl/source/objects/object.cxx | 55 +++-------- idl/source/objects/slot.cxx | 69 +++++--------- idl/source/objects/types.cxx | 35 ++----- idl/source/prj/command.cxx | 21 +--- idl/source/prj/database.cxx | 197 ++++++++++++++++++----------------------- idl/source/prj/parser.cxx | 27 ++--- 16 files changed, 254 insertions(+), 334 deletions(-)
New commits: commit 4e13a6911259d3d7d23b61cb76614263608bbd95 Author: Noel Grandin <[email protected]> Date: Thu Feb 11 14:33:36 2016 +0200 use exceptions for error handling in .SDI parsing to simplify the normal control flow Change-Id: If325ec0507a51d8e2d3340fc5b628bb75a078a44 diff --git a/idl/inc/basobj.hxx b/idl/inc/basobj.hxx index 8b30126..12a1dc7 100644 --- a/idl/inc/basobj.hxx +++ b/idl/inc/basobj.hxx @@ -103,7 +103,7 @@ public: void SetName( const OString& rName ); virtual const OString & GetName() const { return aName; } - virtual bool Test( SvIdlDataBase &, SvTokenStream & rInStm ); + virtual bool Test( SvTokenStream & rInStm ); virtual bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ); }; diff --git a/idl/inc/database.hxx b/idl/inc/database.hxx index 3b7f15f..22d6b78 100644 --- a/idl/inc/database.hxx +++ b/idl/inc/database.hxx @@ -28,6 +28,7 @@ #include <rtl/ustring.hxx> #include <set> +#include <exception> class SvCommand; @@ -53,6 +54,16 @@ public: } }; +class SvParseException : public std::exception +{ +public: + SvIdlError aError; + SvParseException( SvTokenStream & rInStm, const OString& rError ); + SvParseException( const OString& rError, SvToken& rTok ); +}; + + + class SvIdlDataBase { bool bExport; @@ -106,10 +117,6 @@ public: SvRefMemberList<SvMetaObject *>& GetStack() { return aContextStack; } void Write(const OString& rText); - static void WriteError(const OString& rErrWrn, - const OString& rFileName, - const OString& rErrorText, - sal_uLong nRow = 0, sal_uLong nColumn = 0 ); void WriteError( SvTokenStream & rInStm ); void SetError( const OString& rError, SvToken& rTok ); void SetAndWriteError( SvTokenStream & rInStm, const OString& rError ); diff --git a/idl/inc/slot.hxx b/idl/inc/slot.hxx index 8c838ad..93f127d 100644 --- a/idl/inc/slot.hxx +++ b/idl/inc/slot.hxx @@ -136,7 +136,7 @@ public: void ResetSlotPointer() { pNextSlot = pLinkedSlot = nullptr; } - virtual bool Test( SvIdlDataBase &, SvTokenStream & rInStm ) override; + virtual bool Test( SvTokenStream & rInStm ) override; virtual void ReadAttributesSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) override; virtual bool ReadSvIdl( SvIdlDataBase &, SvTokenStream & rInStm ) override; diff --git a/idl/inc/types.hxx b/idl/inc/types.hxx index 34f12d7..748dc6e 100644 --- a/idl/inc/types.hxx +++ b/idl/inc/types.hxx @@ -45,7 +45,7 @@ public: const SvIdentifier& GetSlotId() const; SvMetaType * GetType() const; - virtual bool Test( SvIdlDataBase &, SvTokenStream & rInStm ) override; + 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, diff --git a/idl/source/objects/basobj.cxx b/idl/source/objects/basobj.cxx index 797b849..62632a7 100644 --- a/idl/source/objects/basobj.cxx +++ b/idl/source/objects/basobj.cxx @@ -108,7 +108,7 @@ void SvMetaObject::ReadContextSvIdl( SvIdlDataBase &, SvTokenStream & ) { } -bool SvMetaObject::Test( SvIdlDataBase &, SvTokenStream & ) +bool SvMetaObject::Test( SvTokenStream & ) { return true; } diff --git a/idl/source/objects/bastype.cxx b/idl/source/objects/bastype.cxx index ce1d8f3..d200f68 100644 --- a/idl/source/objects/bastype.cxx +++ b/idl/source/objects/bastype.cxx @@ -94,16 +94,11 @@ void SvIdentifier::ReadSvIdl( SvIdlDataBase & rBase, if( rTok.IsIdentifier() ) { sal_uLong n; - if( rBase.FindId( rTok.GetString(), &n ) ) - { - setString(rTok.GetString()); - nValue = n; - return; - } - else - { + if( !rBase.FindId( rTok.GetString(), &n ) ) rBase.SetAndWriteError( rInStm, "no value for identifier <" + getString() + "> " ); - } + setString(rTok.GetString()); + nValue = n; + return; } rInStm.Seek( nTokPos ); } diff --git a/idl/source/objects/module.cxx b/idl/source/objects/module.cxx index 29ce9721..2062f05 100644 --- a/idl/source/objects/module.cxx +++ b/idl/source/objects/module.cxx @@ -40,12 +40,9 @@ void SvMetaModule::ReadAttributesSvIdl( SvIdlDataBase & rBase, if( ReadStringSvIdl( SvHash_SlotIdFile(), rInStm, aSlotIdFile ) ) { - sal_uInt32 nTokPos = rInStm.Tell(); if( !rBase.ReadIdFile( OStringToOUString(aSlotIdFile, RTL_TEXTENCODING_ASCII_US)) ) { - rBase.SetAndWriteError( rInStm, "cannot read file: " + aSlotIdFile ); - - rInStm.Seek( nTokPos ); + throw SvParseException( rInStm, "cannot read file: " + aSlotIdFile ); } } } @@ -96,48 +93,41 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase, OUString aFullName(OStringToOUString(rTok.GetString(), RTL_TEXTENCODING_ASCII_US)); rBase.StartNewFile( aFullName ); osl::FileBase::RC searchError = osl::File::searchFileURL(aFullName, rBase.GetPath(), aFullName); + if( osl::FileBase::E_None != searchError ) + { + OStringBuffer aStr("cannot find file:"); + aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); + throw SvParseException(aStr.makeStringAndClear(), rTok); + } osl::FileBase::getSystemPathFromFileURL( aFullName, aFullName ); + rBase.AddDepFile( aFullName ); + SvTokenStream aTokStm( aFullName ); - if( osl::FileBase::E_None == searchError ) + if( SVSTREAM_OK != aTokStm.GetStream().GetError() ) { - rBase.AddDepFile( aFullName ); - SvTokenStream aTokStm( aFullName ); - - if( SVSTREAM_OK == aTokStm.GetStream().GetError() ) - { - // rescue error from old file - SvIdlError aOldErr = rBase.GetError(); - // reset error - rBase.SetError( SvIdlError() ); - - sal_uInt32 nBeginPos = 0xFFFFFFFF; // can not happen with Tell - while( nBeginPos != aTokStm.Tell() ) - { - nBeginPos = aTokStm.Tell(); - ReadContextSvIdl( rBase, aTokStm ); - aTokStm.ReadDelimiter(); - } - bOk = aTokStm.GetToken().IsEof(); - if( !bOk ) - { - rBase.WriteError( aTokStm ); - } - // recover error from old file - rBase.SetError( aOldErr ); - } - else - { - OStringBuffer aStr("cannot open file: "); - aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); - rBase.SetError(aStr.makeStringAndClear(), rTok); - } + OStringBuffer aStr("cannot open file: "); + aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); + throw SvParseException(aStr.makeStringAndClear(), rTok); } - else + // rescue error from old file + SvIdlError aOldErr = rBase.GetError(); + // reset error + rBase.SetError( SvIdlError() ); + + sal_uInt32 nBeginPos = 0xFFFFFFFF; // can not happen with Tell + while( nBeginPos != aTokStm.Tell() ) { - OStringBuffer aStr("cannot find file:"); - aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); - rBase.SetError(aStr.makeStringAndClear(), rTok); + nBeginPos = aTokStm.Tell(); + ReadContextSvIdl( rBase, aTokStm ); + aTokStm.ReadDelimiter(); + } + bOk = aTokStm.GetToken().IsEof(); + if( !bOk ) + { + rBase.WriteError( aTokStm ); } + // recover error from old file + rBase.SetError( aOldErr ); } if( !bOk ) rInStm.Seek( nTokPos ); @@ -148,7 +138,7 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase, if( xSlot->ReadSvIdl( rBase, rInStm ) ) { - if( xSlot->Test( rBase, rInStm ) ) + if( xSlot->Test( rInStm ) ) { // announce globally rBase.AppendSlot( xSlot ); diff --git a/idl/source/objects/object.cxx b/idl/source/objects/object.cxx index 697fe9f..396eeda 100644 --- a/idl/source/objects/object.cxx +++ b/idl/source/objects/object.cxx @@ -48,25 +48,19 @@ void SvMetaClass::ReadContextSvIdl( SvIdlDataBase & rBase, if( rTok.Is( SvHash_import() ) ) { SvMetaClass * pClass = rBase.ReadKnownClass( rInStm ); - if( pClass ) + if( !pClass ) + throw SvParseException( rInStm, "unknown imported interface" ); + SvClassElement xEle; + xEle.SetClass( pClass ); + aClassElementList.push_back( xEle ); + + rTok = rInStm.GetToken(); + if( rTok.IsString() ) { - SvClassElement xEle; - xEle.SetClass( pClass ); - aClassElementList.push_back( xEle ); - - rTok = rInStm.GetToken(); - if( rTok.IsString() ) - { - xEle.SetPrefix( rTok.GetString() ); - rInStm.GetToken_Next(); - } - return; - } - else - { - // set error - rBase.SetAndWriteError( rInStm, "unknown imported interface" ); + xEle.SetPrefix( rTok.GetString() ); + rInStm.GetToken_Next(); } + return; } else { @@ -79,13 +73,13 @@ void SvMetaClass::ReadContextSvIdl( SvIdlDataBase & rBase, { xAttr = new SvMetaSlot( pType ); if( xAttr->ReadSvIdl( rBase, rInStm ) ) - bOk = xAttr->Test( rBase, rInStm ); + bOk = xAttr->Test( rInStm ); } else { xAttr = new SvMetaAttribute( pType ); if( xAttr->ReadSvIdl( rBase, rInStm ) ) - bOk = xAttr->Test( rBase, rInStm ); + bOk = xAttr->Test( rInStm ); } if( bOk ) @@ -118,8 +112,7 @@ bool SvMetaClass::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) bOk = aSuperClass.Is(); if( !bOk ) { - // set error - rBase.SetAndWriteError( rInStm, "unknown super class" ); + throw SvParseException( rInStm, "unknown super class" ); } } if( bOk ) @@ -151,13 +144,7 @@ bool SvMetaClass::TestAttribute( SvIdlDataBase & rBase, SvTokenStream & rInStm, // values have to match if( pS->GetSlotId().GetValue() != rAttr.GetSlotId().GetValue() ) { - OSL_FAIL( "Same Name in MetaClass : " ); - OSL_FAIL( pS->GetName().getStr() ); - OSL_FAIL( pS->GetSlotId().getString().getStr() ); - OSL_FAIL( rAttr.GetSlotId().getString().getStr() ); - - rBase.SetAndWriteError(rInStm, "Attribute's " + pS->GetName() + " with different id's"); - return false; + throw SvParseException( rInStm, "Attribute's " + pS->GetName() + " with different id's"); } } else @@ -166,14 +153,8 @@ bool SvMetaClass::TestAttribute( SvIdlDataBase & rBase, SvTokenStream & rInStm, sal_uInt32 nId2 = rAttr.GetSlotId().GetValue(); if( nId1 == nId2 && nId1 != 0 ) { - OSL_FAIL( "Gleiche Id in MetaClass : " ); - OSL_FAIL(OString::number(pS->GetSlotId().GetValue()).getStr()); - OSL_FAIL( pS->GetSlotId().getString().getStr() ); - OSL_FAIL( rAttr.GetSlotId().getString().getStr() ); - OString aStr = "Attribute " + pS->GetName() + " and Attribute " + rAttr.GetName() + " with equal id's"; - rBase.SetAndWriteError(rInStm, aStr); - return false; + throw SvParseException(rInStm, aStr); } } } diff --git a/idl/source/objects/slot.cxx b/idl/source/objects/slot.cxx index 7246369..60960d2 100644 --- a/idl/source/objects/slot.cxx +++ b/idl/source/objects/slot.cxx @@ -286,15 +286,11 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase, if( rInStm.Read( '=' ) ) { aSlotType = rBase.ReadKnownType( rInStm ); - if( aSlotType.Is() ) - { - if( aSlotType->IsItem() ) - { - return; - } - rBase.SetAndWriteError( rInStm, "the SlotType is not a item" ); - } - rBase.SetAndWriteError( rInStm, "SlotType with unknown item type" ); + if( !aSlotType.Is() ) + throw SvParseException( rInStm, "SlotType with unknown item type" ); + if( !aSlotType->IsItem() ) + throw SvParseException( rInStm, "the SlotType is not a item" ); + return; } } rInStm.Seek( nTokPos ); @@ -312,7 +308,7 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase, if( aMethod->IsMethod() ) { aMethod->SetSlotId( GetSlotId() ); - if( aMethod->Test( rBase, rInStm ) ) + if( aMethod->Test( rInStm ) ) return; } rInStm.Seek( nTokPos ); @@ -323,9 +319,9 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase, } } -bool SvMetaSlot::Test( SvIdlDataBase & rBase, SvTokenStream & rInStm ) +bool SvMetaSlot::Test( SvTokenStream & rInStm ) { - bool bOk = SvMetaAttribute::Test( rBase, rInStm ); + bool bOk = SvMetaAttribute::Test( rInStm ); if( bOk ) { SvMetaType * pType = GetType(); @@ -333,8 +329,7 @@ bool SvMetaSlot::Test( SvIdlDataBase & rBase, SvTokenStream & rInStm ) pType = pType->GetReturnType(); if( !pType->IsItem() ) { - rBase.SetAndWriteError( rInStm, "this attribute is not a slot" ); - bOk = false; + throw SvParseException( rInStm, "this attribute is not a slot" ); } } @@ -351,17 +346,11 @@ bool SvMetaSlot::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) { // c SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr ); - if( pKnownSlot ) - { - SetRef( pKnownSlot ); - SetName( pKnownSlot->GetName() ); - bOk = SvMetaObject::ReadSvIdl( rBase, rInStm ); - } - else - { - rBase.SetAndWriteError( rInStm, "attribute " + pAttr->GetName() + " is method or variable but not a slot" ); - bOk = false; - } + if( !pKnownSlot ) + throw SvParseException( rInStm, "attribute " + pAttr->GetName() + " is method or variable but not a slot" ); + SetRef( pKnownSlot ); + SetName( pKnownSlot->GetName() ); + bOk = SvMetaObject::ReadSvIdl( rBase, rInStm ); } else { @@ -372,25 +361,19 @@ bool SvMetaSlot::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) { // for testing purposes: reference in case of complete definition SvMetaSlot * pKnownSlot = dynamic_cast<SvMetaSlot*>( pAttr2 ); - if( pKnownSlot ) - { - SetRef( pKnownSlot ); - - // names may differ, because explicitly given - if ( pKnownSlot->GetName() != GetName() ) - { - OSL_FAIL("Illegal definition!"); - rInStm.Seek( nTokPos ); - return false; - } + if( !pKnownSlot ) + throw SvParseException( rInStm, "attribute " + pAttr2->GetName() + " is method or variable but not a slot" ); + SetRef( pKnownSlot ); - SetName( pKnownSlot->GetName() ); - } - else + // names may differ, because explicitly given + if ( pKnownSlot->GetName() != GetName() ) { - rBase.SetAndWriteError( rInStm, "attribute " + pAttr2->GetName() + " is method or variable but not a slot" ); - bOk = false; + OSL_FAIL("Illegal definition!"); + rInStm.Seek( nTokPos ); + return false; } + + SetName( pKnownSlot->GetName() ); } } diff --git a/idl/source/objects/types.cxx b/idl/source/objects/types.cxx index 393eb42..f0bf9d6 100644 --- a/idl/source/objects/types.cxx +++ b/idl/source/objects/types.cxx @@ -50,13 +50,12 @@ const SvIdentifier & SvMetaAttribute::GetSlotId() const return static_cast<SvMetaAttribute *>(GetRef())->GetSlotId(); } -bool SvMetaAttribute::Test( SvIdlDataBase & rBase, - SvTokenStream & rInStm ) +bool SvMetaAttribute::Test( SvTokenStream & rInStm ) { bool bOk = true; if( GetType()->IsItem() && !GetSlotId().IsSet() ) { - rBase.SetAndWriteError( rInStm, "slot without id declared" ); + throw SvParseException( rInStm, "slot without id declared" ); bOk = false; } return bOk; @@ -199,15 +198,10 @@ bool SvMetaType::ReadHeaderSvIdl( SvIdlDataBase & rBase, bIsItem = true; SvMetaType * pType = rBase.ReadKnownType( rInStm ); - if( pType ) - { - SetRef( pType ); - bOk = ReadNameSvIdl( rInStm ); - } - else - { - rBase.SetAndWriteError( rInStm, "wrong typedef: "); - } + if( !pType ) + throw SvParseException( rInStm, "wrong typedef: "); + SetRef( pType ); + bOk = ReadNameSvIdl( rInStm ); } if( !bOk ) rInStm.Seek( nTokPos ); @@ -236,7 +230,7 @@ void SvMetaType::ReadContextSvIdl( SvIdlDataBase & rBase, tools::SvRef<SvMetaAttribute> xAttr( new SvMetaAttribute() ); if( xAttr->ReadSvIdl( rBase, rInStm ) ) { - if( xAttr->Test( rBase, rInStm ) ) + if( xAttr->Test( rInStm ) ) GetAttrList().push_back( xAttr ); } } diff --git a/idl/source/prj/command.cxx b/idl/source/prj/command.cxx index 4ad62f9..2095ad2 100644 --- a/idl/source/prj/command.cxx +++ b/idl/source/prj/command.cxx @@ -124,9 +124,15 @@ bool ReadIdl( SvIdlWorkingBase * pDataBase, const SvCommand & rCommand ) OUString aFileName ( rCommand.aInFileList[ n ] ); pDataBase->AddDepFile(aFileName); SvTokenStream aTokStm( aFileName ); - SvIdlParser aParser(*pDataBase, aTokStm); - if( !aParser.ReadSvIdl( false, rCommand.aPath ) ) - return false; + try { + SvIdlParser aParser(*pDataBase, aTokStm); + if( !aParser.ReadSvIdl( false, rCommand.aPath ) ) + return false; + } catch (const SvParseException& ex) { + pDataBase->SetError(ex.aError); + pDataBase->WriteError(aTokStm); + return false; + } } return true; } diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx index ee5a072..96c4e3a 100644 --- a/idl/source/prj/database.cxx +++ b/idl/source/prj/database.cxx @@ -29,6 +29,21 @@ #include <rtl/strbuf.hxx> #include <osl/file.hxx> + +SvParseException::SvParseException( SvTokenStream & rInStm, const OString& rError ) +{ + SvToken& rTok = rInStm.GetToken(); + aError = SvIdlError( rTok.GetLine(), rTok.GetColumn() ); + aError.SetText( rError ); +}; + +SvParseException::SvParseException( const OString& rError, SvToken& rTok ) +{ + aError = SvIdlError( rTok.GetLine(), rTok.GetColumn() ); + aError.SetText( rError ); +}; + + SvIdlDataBase::SvIdlDataBase( const SvCommand& rCmd ) : bExport( false ) , nUniqueId( 0 ) @@ -150,16 +165,9 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) { rTok = aTokStm.GetToken_Next(); OString aDefName; - if( rTok.IsIdentifier() ) - aDefName = rTok.GetString(); - else - { - OString aStr("unexpected token after define"); - // set error - SetError( aStr, rTok ); - WriteError( aTokStm ); - return false; - } + if( !rTok.IsIdentifier() ) + throw SvParseException( "unexpected token after define", rTok ); + aDefName = rTok.GetString(); sal_uLong nVal = 0; bool bOk = true; @@ -184,11 +192,7 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) || rTok.GetChar() == '^' || rTok.GetChar() == '~' ) { - OString aStr = "unknown operator '" + OString(rTok.GetChar()) + "'in define"; - // set error - SetError( aStr, rTok ); - WriteError( aTokStm ); - return false; + throw SvParseException( "unknown operator '" + OString(rTok.GetChar()) + "'in define", rTok ); } if( rTok.GetChar() != '+' && rTok.GetChar() != '(' @@ -208,10 +212,7 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) { if( !InsertId( aDefName, nVal ) ) { - OString aStr("hash table overflow: "); - SetError( aStr, rTok ); - WriteError( aTokStm ); - return false; + throw SvParseException( "hash table overflow: ", rTok ); } } } @@ -232,19 +233,13 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) } if( rTok.IsEof() ) { - OString aStr("unexpected eof in #include"); - // set error - SetError(aStr, rTok); - WriteError( aTokStm ); - return false; + throw SvParseException("unexpected eof in #include", rTok); } } if (!ReadIdFile(OStringToOUString(aName.toString(), RTL_TEXTENCODING_ASCII_US))) { - SetError("cannot read file: " + aName, rTok); - WriteError( aTokStm ); - return false; + throw SvParseException("cannot read file: " + aName, rTok); } } } @@ -394,21 +389,6 @@ void SvIdlDataBase::Write(const OString& rText) fprintf( stdout, "%s", rText.getStr() ); } -void SvIdlDataBase::WriteError( const OString& rErrWrn, - const OString& rFileName, - const OString& rErrorText, - sal_uLong nRow, sal_uLong nColumn ) -{ - // error treatment - fprintf( stderr, "\n%s --- %s: ( %" SAL_PRIuUINTPTR ", %" SAL_PRIuUINTPTR " )\n", - rFileName.getStr(), rErrWrn.getStr(), nRow, nColumn ); - - if( !rErrorText.isEmpty() ) - { // error set - fprintf( stderr, "\t%s\n", rErrorText.getStr() ); - } -} - void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) { // error treatment @@ -453,8 +433,15 @@ void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) aError = SvIdlError(); } - WriteError("error", OUStringToOString(aFileName, - RTL_TEXTENCODING_UTF8), aErrorText.makeStringAndClear(), nRow, nColumn); + // error treatment + fprintf( stderr, "\n%s --- %s: ( %" SAL_PRIuUINTPTR ", %" SAL_PRIuUINTPTR " )\n", + OUStringToOString(aFileName, RTL_TEXTENCODING_UTF8).getStr(), + "error", nRow, nColumn ); + + if( !aErrorText.isEmpty() ) + { // error set + fprintf( stderr, "\t%s\n", aErrorText.getStr() ); + } // look for identifier close by if( !rTok.IsIdentifier() ) commit 489dd9027f53e6328f281bf087bb5a59246f9500 Author: Noel Grandin <[email protected]> Date: Thu Feb 11 12:31:03 2016 +0200 rename SeekEnd()->SeekToMax() Change-Id: I3274106d4459532145aaa9222df0e9d715cf59fc diff --git a/idl/inc/lex.hxx b/idl/inc/lex.hxx index 0bfe491..bc0feea 100644 --- a/idl/inc/lex.hxx +++ b/idl/inc/lex.hxx @@ -216,7 +216,7 @@ public: SetMax(); } - void SeekEnd() + void SeekToMax() { pCurToken = aTokList.begin()+nMaxPos; } diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx index bb6318f..ee5a072 100644 --- a/idl/source/prj/database.cxx +++ b/idl/source/prj/database.cxx @@ -416,7 +416,7 @@ void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) OStringBuffer aErrorText; sal_uLong nRow = 0, nColumn = 0; - rInStm.SeekEnd(); + rInStm.SeekToMax(); SvToken& rTok = rInStm.GetToken(); // error position commit 33e128b816300d552ae9ad3c611c8464fff08e68 Author: Noel Grandin <[email protected]> Date: Thu Feb 11 11:41:21 2016 +0200 simplify SvTokenStream handling Change-Id: Ic8d8c7df54bd9debea3b9601d9c8d67b0412b5ab diff --git a/idl/inc/lex.hxx b/idl/inc/lex.hxx index e2e5bc3..0bfe491 100644 --- a/idl/inc/lex.hxx +++ b/idl/inc/lex.hxx @@ -150,7 +150,6 @@ class SvTokenStream } public: SvTokenStream( const OUString & rFileName ); - SvTokenStream( SvStream & rInStream, const OUString & rFileName ); ~SvTokenStream(); const OUString & GetFileName() const { return aFileName; } diff --git a/idl/inc/parser.hxx b/idl/inc/parser.hxx index c06287b..8a15bb4 100644 --- a/idl/inc/parser.hxx +++ b/idl/inc/parser.hxx @@ -27,8 +27,11 @@ class SvIdlDataBase; class SvIdlParser { + SvIdlDataBase& rBase; + SvTokenStream & rInStm; public: - bool ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream &, bool bImported, const OUString & rPath ); + SvIdlParser( SvIdlDataBase& rBase_, SvTokenStream & rInStrm_) : rBase(rBase_), rInStm(rInStrm_) {} + bool ReadSvIdl( bool bImported, const OUString & rPath ); }; diff --git a/idl/source/cmptools/lex.cxx b/idl/source/cmptools/lex.cxx index 67c2cf1..e243302 100644 --- a/idl/source/cmptools/lex.cxx +++ b/idl/source/cmptools/lex.cxx @@ -91,14 +91,6 @@ SvTokenStream::SvTokenStream( const OUString & rFileName ) InitCtor(); } -SvTokenStream::SvTokenStream( SvStream & rStream, const OUString & rFileName ) - : pInStream( nullptr ) - , rInStream( rStream ) - , aFileName( rFileName ) -{ - InitCtor(); -} - SvTokenStream::~SvTokenStream() { delete pInStream; diff --git a/idl/source/prj/command.cxx b/idl/source/prj/command.cxx index 2967e05..4ad62f9 100644 --- a/idl/source/prj/command.cxx +++ b/idl/source/prj/command.cxx @@ -123,21 +123,10 @@ bool ReadIdl( SvIdlWorkingBase * pDataBase, const SvCommand & rCommand ) { OUString aFileName ( rCommand.aInFileList[ n ] ); pDataBase->AddDepFile(aFileName); - SvFileStream aStm( aFileName, STREAM_STD_READ | StreamMode::NOCREATE ); - if( aStm.GetError() == SVSTREAM_OK ) - { - SvTokenStream aTokStm( aStm, aFileName ); - SvIdlParser aParser; - if( !aParser.ReadSvIdl( *pDataBase, aTokStm, false, rCommand.aPath ) ) - return false; - } - else - { - const OString aStr(OUStringToOString(aFileName, - RTL_TEXTENCODING_UTF8)); - fprintf( stderr, "unable to read input file: %s\n", aStr.getStr() ); + SvTokenStream aTokStm( aFileName ); + SvIdlParser aParser(*pDataBase, aTokStm); + if( !aParser.ReadSvIdl( false, rCommand.aPath ) ) return false; - } } return true; } diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx index 7a48c6f..34820f2 100644 --- a/idl/source/prj/parser.cxx +++ b/idl/source/prj/parser.cxx @@ -24,7 +24,7 @@ #include <globals.hxx> #include <osl/file.hxx> -bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool bImported, const OUString & rPath ) +bool SvIdlParser::ReadSvIdl( bool bImported, const OUString & rPath ) { rBase.SetPath(rPath); // only valid for this iteration bool bOk = true; @@ -32,7 +32,6 @@ bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool // only one import at the very beginning if( rTok.Is( SvHash_import() ) ) { - rInStm.GetToken_Next(); rTok = rInStm.GetToken_Next(); if( rTok.IsString() ) { @@ -44,9 +43,9 @@ bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool { osl::FileBase::getSystemPathFromFileURL( aFullName, aFullName ); rBase.AddDepFile(aFullName); - SvFileStream aStm( aFullName, STREAM_STD_READ | StreamMode::NOCREATE ); - SvTokenStream aTokStm( aStm, aFullName ); - bOk = ReadSvIdl( rBase, aTokStm, true, rPath ); + SvTokenStream aTokStm( aFullName ); + SvIdlParser aInputParser(rBase, aTokStm); + bOk = aInputParser.ReadSvIdl( true, rPath ); } else bOk = false; commit 09d58f7be8802c7e3f60ced1b428195b4d6bb7fa Author: Noel Grandin <[email protected]> Date: Thu Feb 11 10:37:29 2016 +0200 GetToken never returns null, so use a reference Change-Id: I0164e546b0ee0b40acc7b9253d3c0ecded97280c diff --git a/idl/inc/lex.hxx b/idl/inc/lex.hxx index 14b91cd..e2e5bc3 100644 --- a/idl/inc/lex.hxx +++ b/idl/inc/lex.hxx @@ -156,7 +156,7 @@ public: const OUString & GetFileName() const { return aFileName; } SvStream & GetStream() { return rInStream; } - SvToken* GetToken_PrevAll() + SvToken& GetToken_PrevAll() { std::vector<std::unique_ptr<SvToken> >::iterator pRetToken = pCurToken; @@ -164,10 +164,10 @@ public: if(pCurToken != aTokList.begin()) --pCurToken; - return (*pRetToken).get(); + return *(*pRetToken).get(); } - SvToken* GetToken_NextAll() + SvToken& GetToken_NextAll() { std::vector<std::unique_ptr<SvToken> >::iterator pRetToken = pCurToken++; @@ -176,10 +176,10 @@ public: SetMax(); - return (*pRetToken).get(); + return *(*pRetToken).get(); } - SvToken* GetToken_Next() + SvToken& GetToken_Next() { // comments get removed initially return GetToken_NextAll(); diff --git a/idl/source/objects/basobj.cxx b/idl/source/objects/basobj.cxx index 5812626..797b849 100644 --- a/idl/source/objects/basobj.cxx +++ b/idl/source/objects/basobj.cxx @@ -74,12 +74,12 @@ void SvMetaObject::SetName( const OString& rName ) bool SvMetaObject::ReadNameSvIdl( SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); // read module name - if( pTok->IsIdentifier() ) + if( rTok.IsIdentifier() ) { - SetName( pTok->GetString() ); + SetName( rTok.GetString() ); return true; } diff --git a/idl/source/objects/bastype.cxx b/idl/source/objects/bastype.cxx index 26877f8..ce1d8f3 100644 --- a/idl/source/objects/bastype.cxx +++ b/idl/source/objects/bastype.cxx @@ -31,18 +31,18 @@ bool SvBOOL::ReadSvIdl( SvStringHashEntry * pName, SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->Is( pName ) ) + if( rTok.Is( pName ) ) { bool bOk = true; bool bBracket = rInStm.Read( '(' ); if( bBracket || rInStm.Read( '=' ) ) { - pTok = &rInStm.GetToken(); - if( pTok->IsBool() ) + rTok = rInStm.GetToken(); + if( rTok.IsBool() ) { - *this = pTok->GetBool(); + *this = rTok.GetBool(); rInStm.GetToken_Next(); } @@ -61,18 +61,18 @@ bool SvBOOL::ReadSvIdl( SvStringHashEntry * pName, SvTokenStream & rInStm ) bool SvIdentifier::ReadSvIdl( SvStringHashEntry * pName, SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->Is( pName ) ) + if( rTok.Is( pName ) ) { bool bOk = true; bool bBracket = rInStm.Read( '(' ); if( bBracket || rInStm.Read( '=' ) ) { - pTok = &rInStm.GetToken(); - if( pTok->IsIdentifier() ) + rTok = rInStm.GetToken(); + if( rTok.IsIdentifier() ) { - setString(pTok->GetString()); + setString(rTok.GetString()); rInStm.GetToken_Next(); } if( bOk && bBracket ) @@ -89,14 +89,14 @@ void SvIdentifier::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->IsIdentifier() ) + if( rTok.IsIdentifier() ) { sal_uLong n; - if( rBase.FindId( pTok->GetString(), &n ) ) + if( rBase.FindId( rTok.GetString(), &n ) ) { - setString(pTok->GetString()); + setString(rTok.GetString()); nValue = n; return; } @@ -111,18 +111,18 @@ void SvIdentifier::ReadSvIdl( SvIdlDataBase & rBase, bool ReadStringSvIdl( SvStringHashEntry * pName, SvTokenStream & rInStm, OString& aRetString ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->Is( pName ) ) + if( rTok.Is( pName ) ) { bool bOk = true; bool bBracket = rInStm.Read( '(' ); if( bBracket || rInStm.Read( '=' ) ) { - pTok = &rInStm.GetToken(); - if( pTok->IsString() ) + rTok = rInStm.GetToken(); + if( rTok.IsString() ) { - aRetString = pTok->GetString(); + aRetString = rTok.GetString(); rInStm.GetToken_Next(); } if( bOk && bBracket ) diff --git a/idl/source/objects/module.cxx b/idl/source/objects/module.cxx index ea040f5..29ce9721 100644 --- a/idl/source/objects/module.cxx +++ b/idl/source/objects/module.cxx @@ -90,10 +90,10 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase, { bool bOk = false; rInStm.GetToken_Next(); - SvToken * pTok = rInStm.GetToken_Next(); - if( pTok->IsString() ) + SvToken& rTok = rInStm.GetToken_Next(); + if( rTok.IsString() ) { - OUString aFullName(OStringToOUString(pTok->GetString(), RTL_TEXTENCODING_ASCII_US)); + OUString aFullName(OStringToOUString(rTok.GetString(), RTL_TEXTENCODING_ASCII_US)); rBase.StartNewFile( aFullName ); osl::FileBase::RC searchError = osl::File::searchFileURL(aFullName, rBase.GetPath(), aFullName); osl::FileBase::getSystemPathFromFileURL( aFullName, aFullName ); @@ -129,14 +129,14 @@ void SvMetaModule::ReadContextSvIdl( SvIdlDataBase & rBase, { OStringBuffer aStr("cannot open file: "); aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); - rBase.SetError(aStr.makeStringAndClear(), *pTok); + rBase.SetError(aStr.makeStringAndClear(), rTok); } } else { OStringBuffer aStr("cannot find file:"); aStr.append(OUStringToOString(aFullName, RTL_TEXTENCODING_UTF8)); - rBase.SetError(aStr.makeStringAndClear(), *pTok); + rBase.SetError(aStr.makeStringAndClear(), rTok); } } if( !bOk ) @@ -162,8 +162,8 @@ bool SvMetaModule::ReadSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) bIsModified = true; // up to now always when compiler running sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); - bool bOk = pTok->Is( SvHash_module() ); + SvToken& rTok = rInStm.GetToken_Next(); + bool bOk = rTok.Is( SvHash_module() ); rInStm.ReadDelimiter(); if( bOk ) { diff --git a/idl/source/objects/object.cxx b/idl/source/objects/object.cxx index 38cfe6b..697fe9f 100644 --- a/idl/source/objects/object.cxx +++ b/idl/source/objects/object.cxx @@ -43,9 +43,9 @@ void SvMetaClass::ReadContextSvIdl( SvIdlDataBase & rBase, SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->Is( SvHash_import() ) ) + if( rTok.Is( SvHash_import() ) ) { SvMetaClass * pClass = rBase.ReadKnownClass( rInStm ); if( pClass ) @@ -54,10 +54,10 @@ void SvMetaClass::ReadContextSvIdl( SvIdlDataBase & rBase, xEle.SetClass( pClass ); aClassElementList.push_back( xEle ); - pTok = &rInStm.GetToken(); - if( pTok->IsString() ) + rTok = rInStm.GetToken(); + if( rTok.IsString() ) { - xEle.SetPrefix( pTok->GetString() ); + xEle.SetPrefix( rTok.GetString() ); rInStm.GetToken_Next(); } return; diff --git a/idl/source/objects/slot.cxx b/idl/source/objects/slot.cxx index 6cdeea7..7246369 100644 --- a/idl/source/objects/slot.cxx +++ b/idl/source/objects/slot.cxx @@ -280,8 +280,8 @@ void SvMetaSlot::ReadAttributesSvIdl( SvIdlDataBase & rBase, if( !aSlotType.Is() ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); - if( pTok->Is( SvHash_SlotType() ) ) + SvToken& rTok = rInStm.GetToken_Next(); + if( rTok.Is( SvHash_SlotType() ) ) { if( rInStm.Read( '=' ) ) { diff --git a/idl/source/objects/types.cxx b/idl/source/objects/types.cxx index 50fe11b..393eb42 100644 --- a/idl/source/objects/types.cxx +++ b/idl/source/objects/types.cxx @@ -172,32 +172,31 @@ bool SvMetaType::ReadHeaderSvIdl( SvIdlDataBase & rBase, { bool bOk = false; sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->Is( SvHash_interface() ) ) + if( rTok.Is( SvHash_interface() ) ) { SetType( MetaTypeType::Interface ); bOk = ReadNamesSvIdl( rInStm ); } - else if( pTok->Is( SvHash_shell() ) ) + else if( rTok.Is( SvHash_shell() ) ) { SetType( MetaTypeType::Shell ); bOk = ReadNamesSvIdl( rInStm ); } - else if( pTok->Is( SvHash_struct() ) ) + else if( rTok.Is( SvHash_struct() ) ) { SetType( MetaTypeType::Struct ); bOk = ReadNamesSvIdl( rInStm ); } - else if( pTok->Is( SvHash_enum() ) ) + else if( rTok.Is( SvHash_enum() ) ) { SetType( MetaTypeType::Enum ); bOk = ReadNameSvIdl( rInStm ); } - else if( pTok->Is( SvHash_item() ) ) + else if( rTok.Is( SvHash_item() ) ) { - if( pTok->Is( SvHash_item() ) ) - bIsItem = true; + bIsItem = true; SvMetaType * pType = rBase.ReadKnownType( rInStm ); if( pType ) diff --git a/idl/source/prj/database.cxx b/idl/source/prj/database.cxx index 0a15351..bb6318f 100644 --- a/idl/source/prj/database.cxx +++ b/idl/source/prj/database.cxx @@ -139,24 +139,24 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) SvTokenStream aTokStm( aFullName ); if( aTokStm.GetStream().GetError() == SVSTREAM_OK ) { - SvToken * pTok = aTokStm.GetToken_Next(); + SvToken& rTok = aTokStm.GetToken_Next(); - while( !pTok->IsEof() ) + while( !rTok.IsEof() ) { - if( pTok->IsChar() && pTok->GetChar() == '#' ) + if( rTok.IsChar() && rTok.GetChar() == '#' ) { - pTok = aTokStm.GetToken_Next(); - if( pTok->Is( SvHash_define() ) ) + rTok = aTokStm.GetToken_Next(); + if( rTok.Is( SvHash_define() ) ) { - pTok = aTokStm.GetToken_Next(); + rTok = aTokStm.GetToken_Next(); OString aDefName; - if( pTok->IsIdentifier() ) - aDefName = pTok->GetString(); + if( rTok.IsIdentifier() ) + aDefName = rTok.GetString(); else { OString aStr("unexpected token after define"); // set error - SetError( aStr, *pTok ); + SetError( aStr, rTok ); WriteError( aTokStm ); return false; } @@ -165,41 +165,41 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) bool bOk = true; while( bOk ) { - pTok = aTokStm.GetToken_Next(); - if( pTok->IsIdentifier() ) + rTok = aTokStm.GetToken_Next(); + if( rTok.IsIdentifier() ) { sal_uLong n; - if( FindId( pTok->GetString(), &n ) ) + if( FindId( rTok.GetString(), &n ) ) nVal += n; else bOk = false; } - else if( pTok->IsChar() ) + else if( rTok.IsChar() ) { - if( pTok->GetChar() == '-' - || pTok->GetChar() == '/' - || pTok->GetChar() == '*' - || pTok->GetChar() == '&' - || pTok->GetChar() == '|' - || pTok->GetChar() == '^' - || pTok->GetChar() == '~' ) + if( rTok.GetChar() == '-' + || rTok.GetChar() == '/' + || rTok.GetChar() == '*' + || rTok.GetChar() == '&' + || rTok.GetChar() == '|' + || rTok.GetChar() == '^' + || rTok.GetChar() == '~' ) { - OString aStr = "unknown operator '" + OString(pTok->GetChar()) + "'in define"; + OString aStr = "unknown operator '" + OString(rTok.GetChar()) + "'in define"; // set error - SetError( aStr, *pTok ); + SetError( aStr, rTok ); WriteError( aTokStm ); return false; } - if( pTok->GetChar() != '+' - && pTok->GetChar() != '(' - && pTok->GetChar() != ')' ) + if( rTok.GetChar() != '+' + && rTok.GetChar() != '(' + && rTok.GetChar() != ')' ) // only + is allowed, parentheses are immaterial // because + is commutative break; } - else if( pTok->IsInteger() ) + else if( rTok.IsInteger() ) { - nVal += pTok->GetNumber(); + nVal += rTok.GetNumber(); } else break; @@ -209,32 +209,32 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) if( !InsertId( aDefName, nVal ) ) { OString aStr("hash table overflow: "); - SetError( aStr, *pTok ); + SetError( aStr, rTok ); WriteError( aTokStm ); return false; } } } - else if( pTok->Is( SvHash_include() ) ) + else if( rTok.Is( SvHash_include() ) ) { - pTok = aTokStm.GetToken_Next(); + rTok = aTokStm.GetToken_Next(); OStringBuffer aName; - if( pTok->IsString() ) - aName.append(pTok->GetString()); - else if( pTok->IsChar() && pTok->GetChar() == '<' ) + if( rTok.IsString() ) + aName.append(rTok.GetString()); + else if( rTok.IsChar() && rTok.GetChar() == '<' ) { - pTok = aTokStm.GetToken_Next(); - while( !pTok->IsEof() - && !(pTok->IsChar() && pTok->GetChar() == '>') ) + rTok = aTokStm.GetToken_Next(); + while( !rTok.IsEof() + && !(rTok.IsChar() && rTok.GetChar() == '>') ) { - aName.append(pTok->GetTokenAsString()); - pTok = aTokStm.GetToken_Next(); + aName.append(rTok.GetTokenAsString()); + rTok = aTokStm.GetToken_Next(); } - if( pTok->IsEof() ) + if( rTok.IsEof() ) { OString aStr("unexpected eof in #include"); // set error - SetError(aStr, *pTok); + SetError(aStr, rTok); WriteError( aTokStm ); return false; } @@ -242,14 +242,14 @@ bool SvIdlDataBase::ReadIdFile( const OUString & rFileName ) if (!ReadIdFile(OStringToOUString(aName.toString(), RTL_TEXTENCODING_ASCII_US))) { - SetError("cannot read file: " + aName, *pTok); + SetError("cannot read file: " + aName, rTok); WriteError( aTokStm ); return false; } } } else - pTok = aTokStm.GetToken_Next(); + rTok = aTokStm.GetToken_Next(); } } else @@ -277,9 +277,9 @@ SvMetaType * SvIdlDataBase::FindType( const OString& rName ) SvMetaType * SvIdlDataBase::ReadKnownType( SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->HasHash() ) + if( rTok.HasHash() ) { sal_uInt32 nBeginPos = 0; // can not happen with Tell while( nBeginPos != rInStm.Tell() ) @@ -288,9 +288,9 @@ SvMetaType * SvIdlDataBase::ReadKnownType( SvTokenStream & rInStm ) } } - if( pTok->IsIdentifier() ) + if( rTok.IsIdentifier() ) { - OString aName = pTok->GetString(); + OString aName = rTok.GetString(); SvRefMemberList<SvMetaType *> & rList = GetTypeList(); SvRefMemberList<SvMetaType *>::const_iterator it = rList.begin(); SvMetaType * pType = nullptr; @@ -328,22 +328,22 @@ SvMetaAttribute * SvIdlDataBase::ReadKnownAttr if( !pType ) { // otherwise SlotId? - SvToken * pTok = rInStm.GetToken_Next(); - if( pTok->IsIdentifier() ) + SvToken& rTok = rInStm.GetToken_Next(); + if( rTok.IsIdentifier() ) { sal_uLong n; - if( FindId( pTok->GetString(), &n ) ) + if( FindId( rTok.GetString(), &n ) ) { for( sal_uLong i = 0; i < aSlotList.size(); i++ ) { SvMetaSlot * pSlot = aSlotList[i]; - if( pSlot->GetSlotId().getString().equals(pTok->GetString()) ) + if( pSlot->GetSlotId().getString().equals(rTok.GetString()) ) return pSlot; } } OStringBuffer aStr("Not found : "); - aStr.append(pTok->GetString()); + aStr.append(rTok.GetString()); OSL_FAIL(aStr.getStr()); } } @@ -374,13 +374,13 @@ SvMetaAttribute* SvIdlDataBase::SearchKnownAttr SvMetaClass * SvIdlDataBase::ReadKnownClass( SvTokenStream & rInStm ) { sal_uInt32 nTokPos = rInStm.Tell(); - SvToken * pTok = rInStm.GetToken_Next(); + SvToken& rTok = rInStm.GetToken_Next(); - if( pTok->IsIdentifier() ) + if( rTok.IsIdentifier() ) for( sal_uLong n = 0; n < aClassList.size(); n++ ) { SvMetaClass * pClass = aClassList[n]; - if( pClass->GetName().equals(pTok->GetString()) ) + if( pClass->GetName().equals(rTok.GetString()) ) return pClass; } @@ -417,11 +417,11 @@ void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) sal_uLong nRow = 0, nColumn = 0; rInStm.SeekEnd(); - SvToken *pTok = &rInStm.GetToken(); + SvToken& rTok = rInStm.GetToken(); // error position - nRow = pTok->GetLine(); - nColumn = pTok->GetColumn(); + nRow = rTok.GetLine(); + nColumn = rTok.GetColumn(); if( aError.IsError() ) { // error set @@ -433,13 +433,13 @@ void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) aErrorText.append(aError.GetText()); } SvToken * pPrevTok = nullptr; - while( pTok != pPrevTok ) + while( &rTok != pPrevTok ) { - pPrevTok = pTok; - if( pTok->GetLine() == aError.nLine - && pTok->GetColumn() == aError.nColumn ) + pPrevTok = &rTok; + if( rTok.GetLine() == aError.nLine + && rTok.GetColumn() == aError.nColumn ) break; - pTok = rInStm.GetToken_PrevAll(); + rTok = rInStm.GetToken_PrevAll(); } // error position @@ -456,21 +456,17 @@ void SvIdlDataBase::WriteError( SvTokenStream & rInStm ) WriteError("error", OUStringToOString(aFileName, RTL_TEXTENCODING_UTF8), aErrorText.makeStringAndClear(), nRow, nColumn); - DBG_ASSERT( pTok, "token must be found" ); - if( !pTok ) - return; - // look for identifier close by - if( !pTok->IsIdentifier() ) + if( !rTok.IsIdentifier() ) { rInStm.GetToken_PrevAll(); - pTok = &rInStm.GetToken(); + rTok = rInStm.GetToken(); } - if( pTok && pTok->IsIdentifier() ) + if( rTok.IsIdentifier() ) { - OString aN = GetIdlApp().pHashTable->GetNearString( pTok->GetString() ); + OString aN = GetIdlApp().pHashTable->GetNearString( rTok.GetString() ); if( !aN.isEmpty() ) - fprintf( stderr, "%s versus %s\n", pTok->GetString().getStr(), aN.getStr() ); + fprintf( stderr, "%s versus %s\n", rTok.GetString().getStr(), aN.getStr() ); } } diff --git a/idl/source/prj/parser.cxx b/idl/source/prj/parser.cxx index db594ab..7a48c6f 100644 --- a/idl/source/prj/parser.cxx +++ b/idl/source/prj/parser.cxx @@ -28,17 +28,17 @@ bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool { rBase.SetPath(rPath); // only valid for this iteration bool bOk = true; - SvToken * pTok = &rInStm.GetToken(); + SvToken& rTok = rInStm.GetToken(); // only one import at the very beginning - if( pTok->Is( SvHash_import() ) ) + if( rTok.Is( SvHash_import() ) ) { rInStm.GetToken_Next(); - pTok = rInStm.GetToken_Next(); - if( pTok && pTok->IsString() ) + rTok = rInStm.GetToken_Next(); + if( rTok.IsString() ) { OUString aFullName; if( osl::FileBase::E_None == osl::File::searchFileURL( - OStringToOUString(pTok->GetString(), RTL_TEXTENCODING_ASCII_US), + OStringToOUString(rTok.GetString(), RTL_TEXTENCODING_ASCII_US), rPath, aFullName) ) { @@ -57,11 +57,11 @@ bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool while( bOk ) { - pTok = &rInStm.GetToken(); - if( pTok->IsEof() ) + rTok = rInStm.GetToken(); + if( rTok.IsEof() ) return true; - if( pTok->Is( SvHash_module() ) ) + if( rTok.Is( SvHash_module() ) ) { tools::SvRef<SvMetaModule> aModule = new SvMetaModule( bImported ); if( aModule->ReadSvIdl( rBase, rInStm ) ) @@ -72,7 +72,7 @@ bool SvIdlParser::ReadSvIdl( SvIdlDataBase& rBase, SvTokenStream & rInStm, bool else bOk = false; } - if( !bOk || !pTok->IsEof() ) + if( !bOk || !rTok.IsEof() ) { // error treatment rBase.WriteError( rInStm ); _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
