blob: cb2eb529f56fbe6fc83d600d0e83016ba38ab6ef [file] [log] [blame]
/**************************************************************
*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*************************************************************/
#ifndef _GSICHECK_HXX_
#define _GSICHECK_HXX_
#include "tagtest.hxx"
//
// class GSILine
//
enum LineFormat { FORMAT_GSI, FORMAT_SDF, FORMAT_UNKNOWN };
class GSILine : public ByteString
{
private:
ParserMessageList aMessages;
LineFormat aFormat;
sal_uLong nLineNumber;
ByteString aUniqId;
ByteString aLineType;
ByteString aLangId;
ByteString aText;
ByteString aQuickHelpText;
ByteString aTitle;
sal_Bool bOK;
sal_Bool bFixed;
void ReassembleLine();
public:
GSILine( const ByteString &rLine, sal_uLong nLine );
LineFormat GetLineFormat() const { return aFormat; }
sal_uLong GetLineNumber() const { return nLineNumber; }
ByteString const GetUniqId() const { return aUniqId; }
ByteString const GetLineType() const { return aLineType; }
ByteString const GetLanguageId() const { return aLangId; }
ByteString const GetText() const { return aText; }
String const GetUText() const { return String( aText, RTL_TEXTENCODING_UTF8 ); }
ByteString const GetQuickHelpText() const { return aQuickHelpText; }
ByteString const GetTitle() const { return aTitle; }
void SetUText( String &aNew ) { aText = ByteString( aNew, RTL_TEXTENCODING_UTF8 ); ReassembleLine(); }
void SetText( ByteString &aNew ) { aText = aNew; ReassembleLine(); }
void SetQuickHelpText( ByteString &aNew ) { aQuickHelpText = aNew; ReassembleLine(); }
void SetTitle( ByteString &aNew ) { aTitle = aNew; ReassembleLine(); }
ParserMessageList* GetMessageList() { return &aMessages; };
sal_Bool HasMessages(){ return ( aMessages.Count() > 0 ); };
sal_Bool IsOK() const { return bOK; }
void NotOK();
sal_Bool IsFixed() const { return bFixed; }
void SetFixed() { bFixed = sal_True; };
};
//
// class GSIBlock
//
DECLARE_LIST( GSIBlock_Impl, GSILine * )
class LazySvFileStream;
class GSIBlock : public GSIBlock_Impl
{
private:
GSILine *pSourceLine;
GSILine *pReferenceLine;
void PrintList( ParserMessageList *pList, ByteString aPrefix, GSILine *pLine );
sal_Bool bPrintContext;
sal_Bool bCheckSourceLang;
sal_Bool bCheckTranslationLang;
sal_Bool bReference;
sal_Bool bAllowKeyIDs;
sal_Bool bAllowSuspicious;
sal_Bool bHasBlockError;
sal_Bool IsUTF8( const ByteString &aTestee, sal_Bool bFixTags, sal_uInt16 &nErrorPos, ByteString &aErrorMsg, sal_Bool &bHasBeenFixed, ByteString &aFixed ) const;
sal_Bool TestUTF8( GSILine* pTestee, sal_Bool bFixTags );
sal_Bool HasSuspiciousChars( GSILine* pTestee, GSILine* pSource );
public:
GSIBlock( sal_Bool PbPrintContext, sal_Bool bSource, sal_Bool bTrans, sal_Bool bRef, sal_Bool bAllowKID, sal_Bool bAllowSusp );
~GSIBlock();
void PrintMessage( ByteString aType, ByteString aMsg, ByteString aPrefix, ByteString aContext, sal_uLong nLine, ByteString aUniqueId = ByteString() );
void PrintError( ByteString aMsg, ByteString aPrefix, ByteString aContext, sal_uLong nLine, ByteString aUniqueId = ByteString() );
void InsertLine( GSILine* pLine, const ByteString aSourceLang);
void SetReferenceLine( GSILine* pLine );
sal_Bool CheckSyntax( sal_uLong nLine, sal_Bool bRequireSourceLine, sal_Bool bFixTags );
void WriteError( LazySvFileStream &aErrOut, sal_Bool bRequireSourceLine );
void WriteCorrect( LazySvFileStream &aOkOut, sal_Bool bRequireSourceLine );
void WriteFixed( LazySvFileStream &aFixOut, sal_Bool bRequireSourceLine );
};
#endif