diff options
Diffstat (limited to 'l10ntools/source/tagtest.cxx')
-rw-r--r-- | l10ntools/source/tagtest.cxx | 129 |
1 files changed, 55 insertions, 74 deletions
diff --git a/l10ntools/source/tagtest.cxx b/l10ntools/source/tagtest.cxx index f60785343c91..65bd70a32ef4 100644 --- a/l10ntools/source/tagtest.cxx +++ b/l10ntools/source/tagtest.cxx @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -550,23 +551,29 @@ String TokenInfo::MakeTag() const void ParserMessageList::AddError( sal_uInt16 nErrorNr, ByteString aErrorText, const TokenInfo &rTag ) { - Insert( new ParserError( nErrorNr, aErrorText, rTag ), LIST_APPEND ); + maList.push_back( new ParserError( nErrorNr, aErrorText, rTag ) ); } void ParserMessageList::AddWarning( sal_uInt16 nErrorNr, ByteString aErrorText, const TokenInfo &rTag ) { - Insert( new ParserWarning( nErrorNr, aErrorText, rTag ), LIST_APPEND ); + maList.push_back( new ParserWarning( nErrorNr, aErrorText, rTag ) ); } sal_Bool ParserMessageList::HasErrors() { - sal_uInt16 i; - for ( i=0 ; i < Count() ; i++ ) - if ( GetObject( i )->IsError() ) + for ( size_t i = 0, n = maList.size(); i < n; ++i ) + if ( maList[ i ]->IsError() ) return sal_True; return sal_False; } +void ParserMessageList::clear() +{ + for ( size_t i = 0, n = maList.size(); i < n; ++i ) + delete maList[ i ]; + maList.clear(); +} + struct Tag { String GetName() const { return String::CreateFromAscii( pName ); }; @@ -663,7 +670,7 @@ void SimpleParser::Parse( String PaSource ) nPos = 0; aLastToken.Erase(); aNextTag = TokenInfo( TAG_NOMORETAGS, TOK_INVALIDPOS ); - aTokenList.Clear(); + aTokenList.clear(); }; TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList ) @@ -735,24 +742,18 @@ TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList ) if ( aResult.nId == TAG_UNKNOWN_TAG ) aResult = TokenInfo( TAG_UNKNOWN_TAG, nTokenStartPos, aLastToken ); - aTokenList.Insert( aResult, LIST_APPEND ); + aTokenList.insert( aResult ); return aResult; } String SimpleParser::GetNextTokenString( ParserMessageList &rErrorList, sal_uInt16 &rTagStartPos ) { -// sal_uInt16 nStyle1StartPos = aSource.SearchAscii( "<#", nPos ); sal_uInt16 nStyle2StartPos = aSource.SearchAscii( "$[", nPos ); sal_uInt16 nStyle3StartPos = aSource.SearchAscii( "\\<", nPos ); sal_uInt16 nStyle4StartPos = aSource.SearchAscii( "\\\\", nPos ); // this is only to kick out quoted backslashes rTagStartPos = 0; -/* removing since a \<... is not likely - // check if the tag starts with a letter to avoid things like <> <= ... > - while ( STRING_NOTFOUND != nStyle3StartPos && !( aSource.Copy( nStyle3StartPos+2, 1 ).IsAlphaAscii() || aSource.GetChar( nStyle3StartPos+2 ) == '/' ) ) - nStyle3StartPos = aSource.SearchAscii( "\\<", nStyle3StartPos+1 ); -*/ if ( STRING_NOTFOUND == nStyle2StartPos && STRING_NOTFOUND == nStyle3StartPos ) return String(); // no more tokens @@ -762,19 +763,7 @@ String SimpleParser::GetNextTokenString( ParserMessageList &rErrorList, sal_uInt return GetNextTokenString( rErrorList, rTagStartPos ); } -/* if ( nStyle1StartPos < nStyle2StartPos && nStyle1StartPos <= nStyle3StartPos ) // <= to make sure our spechial tags are recognized before all others - { // test for <# ... > style tokens - sal_uInt16 nEndPos = aSource.SearchAscii( ">", nStyle1StartPos ); - if ( nEndPos == STRING_NOTFOUND ) - { // Token is incomplete. Skip start and search for better ones - nPos = nStyle1StartPos +2; - return GetNextTokenString( rErrorList, rTagStartPos ); - } - nPos = nEndPos; - rTagStartPos = nStyle1StartPos; - return aSource.Copy( nStyle1StartPos, nEndPos-nStyle1StartPos +1 ).ToUpperAscii(); - } - else*/ if ( nStyle2StartPos < nStyle3StartPos ) + if ( nStyle2StartPos < nStyle3StartPos ) { // test for $[ ... ] style tokens sal_uInt16 nEndPos = aSource.SearchAscii( "]", nStyle2StartPos); if ( nEndPos == STRING_NOTFOUND ) @@ -876,11 +865,6 @@ void TokenParser::Parse( const String &aCode, ParserMessageList* pList ) ParseError( 17, "<#UNDER> expected before <#/UNDER>.", aTag ); } break; -/* case TAG_MISSPARENTHESIS: - { - ParseError( 14, "missing closing parenthesis '>'", aTag ); - } - break;*/ case TAG_AEND: { ParseError( 5, "Extra Tag <#AEND>. <#AVIS> or <#AHID> expected.", aTag ); @@ -1421,13 +1405,9 @@ sal_Bool LingTest::IsTagMandatory( TokenInfo const &aToken, TokenId &aMetaTokens void LingTest::CheckTags( TokenList &aReference, TokenList &aTestee, sal_Bool bFixTags ) { - sal_uLong i=0,j=0; + size_t i=0,j=0; // Clean old Warnings - while ( aCompareWarningList.Count() ) - { - delete aCompareWarningList.GetCurObject(); - aCompareWarningList.Remove(); - } + aCompareWarningList.clear(); /* in xml tags, do not require the following tags comment @@ -1439,35 +1419,35 @@ void LingTest::CheckTags( TokenList &aReference, TokenList &aTestee, sal_Bool bF // filter uninteresting Tags TokenId aMetaTokens = 0; - for ( i=0 ; i < aReference.Count() ; i++ ) + for ( i=0 ; i < aReference.size() ; i++ ) { - if ( !IsTagMandatory( aReference.GetObject( i ), aMetaTokens ) ) - aReference.GetObject( i ).SetDone(); + if ( !IsTagMandatory( aReference[ i ], aMetaTokens ) ) + aReference[ i ].SetDone(); } aMetaTokens = 0; - for ( i=0 ; i < aTestee.Count() ; i++ ) + for ( i=0 ; i < aTestee.size() ; i++ ) { - if ( !IsTagMandatory( aTestee.GetObject( i ), aMetaTokens ) ) - aTestee.GetObject( i ).SetDone(); + if ( !IsTagMandatory( aTestee[ i ], aMetaTokens ) ) + aTestee[ i ].SetDone(); } // remove all matching tags - for ( i=0 ; i < aReference.Count() ; i++ ) + for ( i=0 ; i < aReference.size() ; i++ ) { - if ( aReference.GetObject( i ).IsDone() ) + if ( aReference[ i ].IsDone() ) continue; sal_Bool bTagFound = sal_False; - for ( j=0 ; j < aTestee.Count() && !bTagFound ; j++ ) + for ( j=0 ; j < aTestee.size() && !bTagFound ; j++ ) { - if ( aTestee.GetObject( j ).IsDone() ) + if ( aTestee[ j ].IsDone() ) continue; - if ( aReference.GetObject( i ).MatchesTranslation( aTestee.GetObject( j ), sal_False, aCompareWarningList ) ) + if ( aReference[ i ].MatchesTranslation( aTestee[ j ], sal_False, aCompareWarningList ) ) { - aReference.GetObject( i ).SetDone(); - aTestee.GetObject( j ).SetDone(); + aReference[ i ].SetDone(); + aTestee[ j ].SetDone(); bTagFound = sal_True; } } @@ -1479,62 +1459,62 @@ void LingTest::CheckTags( TokenList &aReference, TokenList &aTestee, sal_Bool bF { // we fix only if its a really simple case sal_uInt16 nTagCount = 0; - for ( i=0 ; i < aReference.Count() ; i++ ) - if ( !aReference.GetObject( i ).IsDone() ) + for ( i=0 ; i < aReference.size() ; i++ ) + if ( !aReference[ i ].IsDone() ) nTagCount++; if ( nTagCount > 1 ) bCanFix = sal_False; nTagCount = 0; - for ( i=0 ; i < aTestee.Count() ; i++ ) - if ( !aTestee.GetObject( i ).IsDone() ) + for ( i=0 ; i < aTestee.size() ; i++ ) + if ( !aTestee[ i ].IsDone() ) nTagCount++; if ( nTagCount > 1 ) bCanFix = sal_False; } // generate errors for tags that have differing attributes - for ( i=0 ; i < aReference.Count() ; i++ ) + for ( i=0 ; i < aReference.size() ; i++ ) { - if ( aReference.GetObject( i ).IsDone() ) + if ( aReference[ i ].IsDone() ) continue; sal_Bool bTagFound = sal_False; - for ( j=0 ; j < aTestee.Count() && !bTagFound ; j++ ) + for ( j=0 ; j < aTestee.size() && !bTagFound ; j++ ) { - if ( aTestee.GetObject( j ).IsDone() ) + if ( aTestee[ j ].IsDone() ) continue; - if ( aReference.GetObject( i ).MatchesTranslation( aTestee.GetObject( j ), sal_True, aCompareWarningList, bCanFix && bFixTags ) ) + if ( aReference[ i ].MatchesTranslation( aTestee[ j ], sal_True, aCompareWarningList, bCanFix && bFixTags ) ) { - aReference.GetObject( i ).SetDone(); - aTestee.GetObject( j ).SetDone(); + aReference[ i ].SetDone(); + aTestee[ j ].SetDone(); bTagFound = sal_True; } } } // list remaining tags as errors - for ( i=0 ; i < aReference.Count() ; i++ ) + for ( i=0 ; i < aReference.size() ; i++ ) { - if ( aReference.GetObject( i ).IsDone() ) + if ( aReference[ i ].IsDone() ) continue; - aCompareWarningList.AddError( 20, "Missing Tag in Translation", aReference.GetObject( i ) ); + aCompareWarningList.AddError( 20, "Missing Tag in Translation", aReference[ i ] ); } - for ( i=0 ; i < aTestee.Count() ; i++ ) + for ( i=0 ; i < aTestee.size() ; i++ ) { - if ( aTestee.GetObject( i ).IsDone() ) + if ( aTestee[ i ].IsDone() ) continue; - aCompareWarningList.AddError( 21, "Extra Tag in Translation", aTestee.GetObject( i ) ); + aCompareWarningList.AddError( 21, "Extra Tag in Translation", aTestee[ i ] ); } - for ( i=0 ; i < aReference.Count() ; i++ ) - aReference.GetObject( i ).SetDone( sal_False ); + for ( i=0 ; i < aReference.size() ; i++ ) + aReference[ i ].SetDone( sal_False ); - for ( i=0 ; i < aTestee.Count() ; i++ ) - aTestee.GetObject( i ).SetDone( sal_False ); + for ( i=0 ; i < aTestee.size() ; i++ ) + aTestee[ i ].SetDone( sal_False ); } void LingTest::CheckReference( GSILine *aReference ) @@ -1556,12 +1536,12 @@ void LingTest::CheckTestee( GSILine *aTestee, sal_Bool bHasSourceLine, sal_Bool sal_Bool bFixesDone = sal_False; // count backwards to allow replacing from right to left int i; - for ( i=aTesteeTokens.Count()-1 ; i>=0 ; i-- ) + for ( i = aTesteeTokens.size() ; i > 0 ; ) { - if ( aTesteeTokens.GetObject( i ).HasBeenFixed() ) + if ( aTesteeTokens[ --i ].HasBeenFixed() ) { bFixesDone = sal_True; - aFixedTestee.Replace( aTesteeTokens.GetObject( i ).nPos, aTesteeTokens.GetObject( i ).aTokenString.Len(), aTesteeTokens.GetObject( i ).MakeTag() ); + aFixedTestee.Replace( aTesteeTokens[ i ].nPos, aTesteeTokens[ i ].aTokenString.Len(), aTesteeTokens[ i ].MakeTag() ); } } if ( bFixesDone ) @@ -1572,3 +1552,4 @@ void LingTest::CheckTestee( GSILine *aTestee, sal_Bool bHasSourceLine, sal_Bool } } +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |