[Libreoffice-commits] .: l10ntools/inc l10ntools/source

Stephan Bergmann sbergmann at kemper.freedesktop.org
Thu Feb 2 12:47:29 PST 2012


 l10ntools/inc/gsicheck.hxx     |    4 
 l10ntools/inc/tagtest.hxx      |   37 ++--
 l10ntools/inc/xmlparse.hxx     |   61 +++----
 l10ntools/inc/xrmmerge.hxx     |   87 +++++-----
 l10ntools/source/export.cxx    |  327 ++++++++++++++++++-----------------------
 l10ntools/source/export2.cxx   |   22 +-
 l10ntools/source/gsicheck.cxx  |  168 +++++++++++----------
 l10ntools/source/helper.hxx    |   32 ++++
 l10ntools/source/helpmerge.cxx |   21 +-
 l10ntools/source/tagtest.cxx   |  178 ++++++++++++----------
 l10ntools/source/xmlparse.cxx  |  162 ++++++++------------
 l10ntools/source/xrmmerge.cxx  |   75 ++++-----
 12 files changed, 579 insertions(+), 595 deletions(-)

New commits:
commit a4cbcf2fc567393cd954d0fcc8ea0ce7d859b59f
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Thu Feb 2 21:36:11 2012 +0100

    Reduced tools/string usage further

diff --git a/l10ntools/inc/gsicheck.hxx b/l10ntools/inc/gsicheck.hxx
index 3a6fc54..eaab600 100644
--- a/l10ntools/inc/gsicheck.hxx
+++ b/l10ntools/inc/gsicheck.hxx
@@ -71,7 +71,7 @@ public:
     rtl::OString  const GetQuickHelpText() const { return aQuickHelpText; }
     rtl::OString  const GetTitle()      const    { return aTitle; }
 
-    void SetUText( String &aNew ) { aText = rtl::OUStringToOString(aNew, RTL_TEXTENCODING_UTF8); ReassembleLine(); }
+    void SetUText( rtl::OUString const &aNew ) { aText = rtl::OUStringToOString(aNew, RTL_TEXTENCODING_UTF8); ReassembleLine(); }
     void        SetText( rtl::OString const &aNew ) { aText = aNew; ReassembleLine(); }
     void        SetQuickHelpText( rtl::OString const &aNew ) { aQuickHelpText = aNew; ReassembleLine(); }
     void        SetTitle( rtl::OString const &aNew ) { aTitle = aNew; ReassembleLine(); }
@@ -109,7 +109,7 @@ private:
 
     sal_Bool bHasBlockError;
 
-    sal_Bool IsUTF8( const rtl::OString &aTestee, sal_Bool bFixTags, sal_uInt16 &nErrorPos, rtl::OString &aErrorMsg, sal_Bool &bHasBeenFixed, rtl::OString &aFixed ) const;
+    sal_Bool IsUTF8( const rtl::OString &aTestee, sal_Bool bFixTags, sal_Int32 &nErrorPos, rtl::OString &aErrorMsg, sal_Bool &bHasBeenFixed, rtl::OString &aFixed ) const;
     sal_Bool TestUTF8( GSILine* pTestee, sal_Bool bFixTags );
     sal_Bool HasSuspiciousChars( GSILine* pTestee, GSILine* pSource );
 
diff --git a/l10ntools/inc/tagtest.hxx b/l10ntools/inc/tagtest.hxx
index a3d9165..b77e260 100644
--- a/l10ntools/inc/tagtest.hxx
+++ b/l10ntools/inc/tagtest.hxx
@@ -29,7 +29,6 @@
 #ifndef _TAGTEST_HXX_
 #define _TAGTEST_HXX_
 
-#include <tools/string.hxx>
 #include <boost/unordered_map.hpp>
 #include <vector>
 
@@ -44,14 +43,14 @@ typedef ::std::vector< ParserMessage* > Impl_ParserMessageList;
 
 class ParserMessageList;
 
-typedef boost::unordered_map<rtl::OString, String, rtl::OStringHash> StringHashMap;
+typedef boost::unordered_map<rtl::OString, rtl::OUString, rtl::OStringHash> StringHashMap;
 
 class TokenInfo
 {
 private:
     void SplitTag( ParserMessageList &rErrorList );
 
-    String aTagName;
+    rtl::OUString aTagName;
     StringHashMap aProperties;
     sal_Bool bClosed;    // tag is closed  <sdnf/>
     sal_Bool bCloseTag;  // tag is close Tag  </sdnf>
@@ -63,29 +62,29 @@ private:
 
 public:
 
-    String aTokenString;
+    rtl::OUString aTokenString;
     TokenId nId;
     sal_uInt16 nPos;            // Position in String
 
     TokenInfo():bClosed(sal_False),bCloseTag(sal_False),bIsBroken(sal_False),bHasBeenFixed(sal_False),bDone(sal_False),nId( 0 ){;}
 explicit    TokenInfo( TokenId pnId, sal_uInt16 nP ):bClosed(sal_False),bCloseTag(sal_False),bIsBroken(sal_False),bHasBeenFixed(sal_False),bDone(sal_False),nId( pnId ),nPos(nP){;}
-explicit    TokenInfo( TokenId pnId, sal_uInt16 nP, String paStr ):bClosed(sal_False),bCloseTag(sal_False),bIsBroken(sal_False),bHasBeenFixed(sal_False),bDone(sal_False),aTokenString( paStr ),nId( pnId ),nPos(nP) {;}
-explicit    TokenInfo( TokenId pnId, sal_uInt16 nP, String paStr, ParserMessageList &rErrorList );
+    explicit    TokenInfo( TokenId pnId, sal_uInt16 nP, rtl::OUString const & paStr ):bClosed(sal_False),bCloseTag(sal_False),bIsBroken(sal_False),bHasBeenFixed(sal_False),bDone(sal_False),aTokenString( paStr ),nId( pnId ),nPos(nP) {;}
+    explicit    TokenInfo( TokenId pnId, sal_uInt16 nP, rtl::OUString const & paStr, ParserMessageList &rErrorList );
 
-    String GetTagName() const;
+    rtl::OUString GetTagName() const;
 
-    String MakeTag() const;
+    rtl::OUString MakeTag() const;
 
     /**
         Is the property to be ignored or does it have the default value anyways
     **/
-    sal_Bool IsPropertyRelevant( const rtl::OString &rName, const String &rValue ) const;
-    sal_Bool IsPropertyValueValid( const rtl::OString &rName, const String &rValue ) const;
+    sal_Bool IsPropertyRelevant( const rtl::OString &rName, const rtl::OUString &rValue ) const;
+    sal_Bool IsPropertyValueValid( const rtl::OString &rName, const rtl::OUString &rValue ) const;
     /**
         Does the property contain the same value for all languages
         e.g.: the href in a link tag
     **/
-    sal_Bool IsPropertyInvariant( const rtl::OString &rName, const String &rValue ) const;
+    sal_Bool IsPropertyInvariant( const rtl::OString &rName, const rtl::OUString &rValue ) const;
     /**
         a subset of IsPropertyInvariant but containing only those that are fixable
         we dont wat to fix e.g.: ahelp :: visibility
@@ -284,19 +283,19 @@ class SimpleParser
 {
 private:
     sal_uInt16 nPos;
-    String aSource;
-    String aLastToken;
+    rtl::OUString aSource;
+    rtl::OUString aLastToken;
     TokenList aTokenList;
 
     TokenInfo aNextTag;     // to store closetag in case of combined tags like <br/>
 
-    String GetNextTokenString( ParserMessageList &rErrorList, sal_uInt16 &rTokeStartPos );
+    rtl::OUString GetNextTokenString( ParserMessageList &rErrorList, sal_uInt16 &rTokeStartPos );
 
 public:
     SimpleParser();
-    void Parse( String PaSource );
+    void Parse( rtl::OUString const & PaSource );
     TokenInfo GetNextToken( ParserMessageList &rErrorList );
-    static String GetLexem( TokenInfo const &aToken );
+    static rtl::OUString GetLexem( TokenInfo const &aToken );
     TokenList& GetTokenList(){ return aTokenList; }
 };
 
@@ -328,7 +327,7 @@ class TokenParser
 
 public:
     TokenParser();
-    void Parse( const String &aCode, ParserMessageList* pList );
+    void Parse( const rtl::OUString &aCode, ParserMessageList* pList );
     TokenList& GetTokenList(){ return aParser.GetTokenList(); }
 };
 
@@ -340,7 +339,7 @@ private:
     ParserMessageList aCompareWarningList;
     void CheckTags( TokenList &aReference, TokenList &aTestee, sal_Bool bFixTags );
     sal_Bool IsTagMandatory( TokenInfo const &aToken, TokenId &aMetaTokens );
-    String aFixedTestee;
+    rtl::OUString aFixedTestee;
 public:
     void CheckReference( GSILine *aReference );
     void CheckTestee( GSILine *aTestee, sal_Bool bHasSourceLine, sal_Bool bFixTags );
@@ -348,7 +347,7 @@ public:
     ParserMessageList& GetCompareWarnings(){ return aCompareWarningList; }
     sal_Bool HasCompareWarnings(){ return ( !aCompareWarningList.empty() ); }
 
-    String GetFixedTestee(){ return aFixedTestee; }
+    rtl::OUString GetFixedTestee(){ return aFixedTestee; }
 };
 
 #endif
diff --git a/l10ntools/inc/xmlparse.hxx b/l10ntools/inc/xmlparse.hxx
index 3b3e4ba..e24f8e6 100644
--- a/l10ntools/inc/xmlparse.hxx
+++ b/l10ntools/inc/xmlparse.hxx
@@ -33,7 +33,6 @@
 #include <expat.h>
 #include <rtl/ustring.hxx>
 #include <rtl/ustrbuf.hxx>
-#include <tools/string.hxx>
 #include <tools/stream.hxx>
 #include "export.hxx"
 #include "xmlutil.hxx"
@@ -224,23 +223,20 @@ public:
     virtual sal_uInt16  GetNodeType();
 
     /// returns file name
-    const String &GetName() { return sFileName; }
-    void          SetName( const String &rFilename ) { sFileName = rFilename; }
-    void          SetFullName( const String &rFullFilename ) { sFullName = rFullFilename; }
+    rtl::OUString GetName() { return sFileName; }
+    void          SetName( const rtl::OUString &rFilename ) { sFileName = rFilename; }
+    void          SetFullName( const rtl::OUString &rFullFilename ) { sFullName = rFullFilename; }
     const std::vector<rtl::OString> getOrder(){ return order; }
 
 protected:
     // writes a string as UTF8 with dos line ends to a given stream
-    void        WriteString( ofstream &rStream, const String &sString );
-
-    // quotes the given text for writing to a file
-    void        QuotHTML( String &rString );
+    void        WriteString( ofstream &rStream, const rtl::OUString &sString );
 
     void        InsertL10NElement( XMLElement* pElement);
 
     // DATA
-    String      sFileName;
-    String      sFullName;
+    rtl::OUString      sFileName;
+    rtl::OUString      sFullName;
 
     const rtl::OString ID, OLDREF, XML_LANG;
 
@@ -256,13 +252,10 @@ class XMLUtil{
 
 public:
     /// Quot the XML characters and replace \n \t
-    static void         QuotHTML( String &rString );
+    static void         QuotHTML( rtl::OUString &rString );
 
     /// UnQuot the XML characters and restore \n \t
-    static void         UnQuotHTML  ( String &rString );
-private:
-    static void UnQuotData( String &rString );
-    static void UnQuotTags( String &rString );
+    static void         UnQuotHTML  ( rtl::OUString &rString );
 };
 
 
@@ -274,7 +267,7 @@ private:
 class XMLElement : public XMLParentNode
 {
 private:
-    String sElementName;
+    rtl::OUString sElementName;
     XMLAttributeList *pAttributes;
     rtl::OString   project,
                  filename,
@@ -290,7 +283,7 @@ public:
     /// create a element node
     XMLElement(){}
     XMLElement(
-        const String &rName,    // the element name
+        const rtl::OUString &rName,    // the element name
         XMLParentNode *Parent   // parent node of this element
     ):          XMLParentNode( Parent ),
                 sElementName( rName ),
@@ -312,15 +305,15 @@ public:
     virtual sal_uInt16 GetNodeType();
 
     /// returns element name
-    const String &GetName() { return sElementName; }
+    rtl::OUString GetName() { return sElementName; }
 
     /// returns list of attributes of this element
     XMLAttributeList *GetAttributeList() { return pAttributes; }
 
     /// adds a new attribute to this element, typically used by parser
-    void AddAttribute( const String &rAttribute, const String &rValue );
+    void AddAttribute( const rtl::OUString &rAttribute, const rtl::OUString &rValue );
 
-    void ChangeLanguageTag( const String &rValue );
+    void ChangeLanguageTag( const rtl::OUString &rValue );
     // Return a ASCII String representation of this object
     OString ToOString();
 
@@ -359,18 +352,18 @@ public:
 class XMLData : public XMLChildNode
 {
 private:
-    String sData;
+    rtl::OUString sData;
     bool   isNewCreated;
 
 public:
     /// create a data node
     XMLData(
-        const String &rData,    // the initial data
+        const rtl::OUString &rData,    // the initial data
         XMLParentNode *Parent   // the parent node of this data, typically a element node
     )
                 : XMLChildNode( Parent ), sData( rData ) , isNewCreated ( false ){}
     XMLData(
-        const String &rData,    // the initial data
+        const rtl::OUString &rData,    // the initial data
         XMLParentNode *Parent,  // the parent node of this data, typically a element node
         bool newCreated
     )
@@ -382,12 +375,12 @@ public:
     virtual sal_uInt16 GetNodeType();
 
     /// returns the data
-    const String &GetData() { return sData; }
+    rtl::OUString GetData() { return sData; }
 
     bool isNew() { return isNewCreated; }
     /// adds new character data to the existing one
     void AddData(
-        const String &rData // the new data
+        const rtl::OUString &rData // the new data
     );
 
 
@@ -401,12 +394,12 @@ public:
 class XMLComment : public XMLChildNode
 {
 private:
-    String sComment;
+    rtl::OUString sComment;
 
 public:
     /// create a comment node
     XMLComment(
-        const String &rComment, // the comment
+        const rtl::OUString &rComment, // the comment
         XMLParentNode *Parent   // the parent node of this comemnt, typically a element node
     )
                 : XMLChildNode( Parent ), sComment( rComment ) {}
@@ -418,7 +411,7 @@ public:
     XMLComment& operator=(const XMLComment& obj);
 
     /// returns the comment
-    const String &GetComment()  { return sComment; }
+    rtl::OUString GetComment()  { return sComment; }
 };
 
 //-------------------------------------------------------------------------
@@ -428,12 +421,12 @@ public:
 class XMLDefault : public XMLChildNode
 {
 private:
-    String sDefault;
+    rtl::OUString sDefault;
 
 public:
     /// create a comment node
     XMLDefault(
-        const String &rDefault, // the comment
+        const rtl::OUString &rDefault, // the comment
         XMLParentNode *Parent   // the parent node of this comemnt, typically a element node
     )
                 : XMLChildNode( Parent ), sDefault( rDefault ) {}
@@ -446,7 +439,7 @@ public:
     virtual sal_uInt16 GetNodeType();
 
     /// returns the comment
-    const String &GetDefault()  { return sDefault; }
+    rtl::OUString GetDefault()  { return sDefault; }
 };
 
 //-------------------------------------------------------------------------
@@ -457,7 +450,7 @@ struct XMLError {
     XML_Error eCode;    // the error code
     sal_uLong nLine;        // error line number
     sal_uLong nColumn;      // error column number
-    String sMessage;    // readable error message
+    rtl::OUString sMessage;    // readable error message
 };
 
 //-------------------------------------------------------------------------
@@ -498,8 +491,8 @@ public:
 
     /// parse a file, returns NULL on criticall errors
     XMLFile *Execute(
-        const String &rFullFileName,
-        const String &rFileName,    // the file name
+        const rtl::OUString &rFullFileName,
+        const rtl::OUString &rFileName,    // the file name
         XMLFile *pXMLFileIn         // the XMLFile
     );
 
diff --git a/l10ntools/inc/xrmmerge.hxx b/l10ntools/inc/xrmmerge.hxx
index 17233b3..bcf82e4 100644
--- a/l10ntools/inc/xrmmerge.hxx
+++ b/l10ntools/inc/xrmmerge.hxx
@@ -26,9 +26,6 @@
  *
  ************************************************************************/
 
-// global includes
-#include <tools/string.hxx>
-
 //
 // XRMResParser
 //
@@ -36,42 +33,42 @@
 class XRMResParser
 {
 private:
-    ByteString sGID;
-    ByteString sLID;
+    rtl::OString sGID;
+    rtl::OString sLID;
 
     sal_Bool bError;
     sal_Bool bText;
 
     bool sLocalized;
 
-    ByteString sCurrentOpenTag;
-    ByteString sCurrentCloseTag;
-    ByteString sCurrentText;
+    rtl::OString sCurrentOpenTag;
+    rtl::OString sCurrentCloseTag;
+    rtl::OString sCurrentText;
     std::vector<rtl::OString> aLanguages;
 
 protected:
-    ByteString GetAttribute( const ByteString &rToken, const ByteString &rAttribute );
-    void Error( const ByteString &rError );
+    rtl::OString GetAttribute( const rtl::OString &rToken, const rtl::OString &rAttribute );
+    void Error( const rtl::OString &rError );
 
-    virtual void Output( const ByteString& rOutput )=0;
+    virtual void Output( const rtl::OString& rOutput )=0;
     virtual void WorkOnDesc(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     )=0;
     virtual void WorkOnText(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     )=0;
     virtual void EndOfText(
-        const ByteString &rOpenTag,
-        const ByteString &rCloseTag
+        const rtl::OString &rOpenTag,
+        const rtl::OString &rCloseTag
     )=0;
 
-    ByteString GetGID() { return sGID; }
-    ByteString GetLID() { return sLID; }
+    rtl::OString GetGID() { return sGID; }
+    rtl::OString GetLID() { return sLID; }
 
-    void ConvertStringToDBFormat( ByteString &rString );
-    void ConvertStringToXMLFormat( ByteString &rString );
+    void ConvertStringToDBFormat( rtl::OString &rString );
+    void ConvertStringToXMLFormat( rtl::OString &rString );
 
 public:
     XRMResParser();
@@ -94,7 +91,7 @@ private:
 protected:
     SvFileStream *pOutputStream;
 public:
-    XRMResOutputParser ( const ByteString &rOutputFile );
+    XRMResOutputParser ( const rtl::OString &rOutputFile );
     virtual ~XRMResOutputParser();
 };
 
@@ -106,30 +103,30 @@ class XRMResExport : public XRMResOutputParser
 {
 private:
     ResData *pResData;
-    ByteString sPrj;
-    ByteString sPath;
+    rtl::OString sPrj;
+    rtl::OString sPath;
     std::vector<rtl::OString> aLanguages;
 
 protected:
     void WorkOnDesc(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     );
     void WorkOnText(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     );
     void EndOfText(
-        const ByteString &rOpenTag,
-        const ByteString &rCloseTag
+        const rtl::OString &rOpenTag,
+        const rtl::OString &rCloseTag
     );
-    void Output( const ByteString& rOutput );
+    void Output( const rtl::OString& rOutput );
 
 public:
     XRMResExport(
-        const ByteString &rOutputFile,
-        const ByteString &rProject,
-        const ByteString &rFilePath
+        const rtl::OString &rOutputFile,
+        const rtl::OString &rProject,
+        const rtl::OString &rFilePath
     );
     virtual ~XRMResExport();
 };
@@ -142,29 +139,29 @@ class XRMResMerge : public XRMResOutputParser
 {
 private:
     MergeDataFile *pMergeDataFile;
-    ByteString sFilename;
+    rtl::OString sFilename;
     ResData *pResData;
     std::vector<rtl::OString> aLanguages;
 
 protected:
     void WorkOnDesc(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     );
     void WorkOnText(
-        const ByteString &rOpenTag,
-        ByteString &rText
+        const rtl::OString &rOpenTag,
+        rtl::OString &rText
     );
     void EndOfText(
-        const ByteString &rOpenTag,
-        const ByteString &rCloseTag
+        const rtl::OString &rOpenTag,
+        const rtl::OString &rCloseTag
     );
-    void Output( const ByteString& rOutput );
+    void Output( const rtl::OString& rOutput );
 public:
     XRMResMerge(
-        const ByteString &rMergeSource,
-        const ByteString &rOutputFile,
-        ByteString &rFilename
+        const rtl::OString &rMergeSource,
+        const rtl::OString &rOutputFile,
+        const rtl::OString &rFilename
     );
     virtual ~XRMResMerge();
 };
diff --git a/l10ntools/source/export.cxx b/l10ntools/source/export.cxx
index eacba78..204214f 100644
--- a/l10ntools/source/export.cxx
+++ b/l10ntools/source/export.cxx
@@ -58,7 +58,7 @@ Export *pExport = 0L;
 #define STATE_LANGUAGES 0X000A
 
 // set of global variables
-typedef ::std::vector< ByteString* > FileList;
+typedef ::std::vector< rtl::OString > FileList;
 FileList aInputFileList;
 sal_Bool bEnableExport;
 sal_Bool bMergeMode;
@@ -102,7 +102,7 @@ extern char *GetOutputFile( int argc, char* argv[])
 
     // parse command line
     for( int i = 1; i < argc; i++ ) {
-        ByteString sSwitch( argv[ i ] );
+        rtl::OString sSwitch( argv[ i ] );
 
         if (sSwitch == "-i"  || sSwitch == "-I" ) {
             nState = STATE_INPUT; // next tokens specifies source files
@@ -142,7 +142,7 @@ extern char *GetOutputFile( int argc, char* argv[])
                     return NULL;    // no valid command line
                 }
                 case STATE_INPUT: {
-                    aInputFileList.push_back( new ByteString( argv[ i ] ) );
+                    aInputFileList.push_back( argv[ i ] );
                     bInput = sal_True; // min. one source file found
                 }
                 break;
@@ -216,7 +216,7 @@ int EndExport()
 
 extern const char* getFilename()
 {
-    return (*(aInputFileList[ 0 ])).GetBuffer();
+    return aInputFileList[0].getStr();
 }
 /*****************************************************************************/
 extern FILE *GetNextFile()
@@ -226,7 +226,7 @@ extern FILE *GetNextFile()
     if ( !sTempFile.isEmpty())
     {
         fclose( pTempFile );
-        String sTemp(rtl::OStringToOUString(sTempFile,
+        rtl::OUString sTemp(rtl::OStringToOUString(sTempFile,
             RTL_TEXTENCODING_ASCII_US));
         DirEntry aTemp( sTemp );
         aTemp.Kill();
@@ -234,15 +234,14 @@ extern FILE *GetNextFile()
 
     while ( !aInputFileList.empty() )
     {
-        ByteString sFileName( *(aInputFileList[ 0 ]) );
+        rtl::OString sFileName(aInputFileList[0]);
 
         rtl::OString sOrigFile( sFileName );
 
         sFileName = Export::GetNativeFile( sFileName );
-        delete aInputFileList[ 0 ];
         aInputFileList.erase( aInputFileList.begin() );
 
-        if ( sFileName == "" ) {
+        if ( sFileName.isEmpty() ) {
             fprintf( stderr, "ERROR: Could not precompile File %s\n",
                 sOrigFile.getStr());
             return GetNextFile();
@@ -252,10 +251,10 @@ extern FILE *GetNextFile()
         Export::RemoveUTF8ByteOrderMarkerFromFile( sFileName );
 
         // able to open file?
-        FILE *pFile = fopen( sFileName.GetBuffer(), "r" );
+        FILE *pFile = fopen( sFileName.getStr(), "r" );
         if ( !pFile )
             fprintf( stderr, "Error: Could not open File %s\n",
-                sFileName.GetBuffer());
+                sFileName.getStr());
         else {
             pTempFile = pFile;
 
@@ -266,7 +265,7 @@ extern FILE *GetNextFile()
             aEntry.ToAbs();
             rtl::OString sFullEntry(rtl::OUStringToOString(aEntry.GetFull(),
                 RTL_TEXTENCODING_ASCII_US));
-            aEntry += DirEntry( String( "..", RTL_TEXTENCODING_ASCII_US ));
+            aEntry += DirEntry(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("..")));
             aEntry += DirEntry( sPrjRoot );
             rtl::OString sPrjEntry(rtl::OUStringToOString(aEntry.GetFull(),
                 RTL_TEXTENCODING_ASCII_US));
@@ -423,7 +422,7 @@ Export::Export(const rtl::OString &rOutput, sal_Bool bWrite,
 
     // open output stream
     if ( bEnableExport ) {
-        aOutput.Open( String( rOutput, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_WRITE | STREAM_TRUNC );
+        aOutput.Open( rtl::OStringToOUString( rOutput, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_WRITE | STREAM_TRUNC );
         if( !aOutput.IsOpen() ) {
             fprintf(stderr, "ERROR : Can't open file %s\n", rOutput.getStr());
             exit ( -1 );
@@ -465,7 +464,7 @@ Export::Export(const rtl::OString &rOutput, sal_Bool bWrite,
 
     // open output stream
     if ( bEnableExport ) {
-        aOutput.Open( String( rOutput, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_WRITE | STREAM_TRUNC );
+        aOutput.Open( rtl::OStringToOUString( rOutput, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_WRITE | STREAM_TRUNC );
         aOutput.SetStreamCharSet( RTL_TEXTENCODING_UTF8 );
         aOutput.SetLineDelimiter( LINEEND_CRLF );
     }
@@ -647,7 +646,6 @@ int Export::Execute( int nToken, const char * pToken )
 
             pResData = new ResData( sActPForm, FullId() , sFilename );
             aResStack.push_back( pResData );
-            ByteString sBackup( sToken );
             sToken = comphelper::string::remove(sToken, '\n');
             sToken = comphelper::string::remove(sToken, '\r');
             sToken = comphelper::string::remove(sToken, '{');
@@ -656,19 +654,19 @@ int Export::Execute( int nToken, const char * pToken )
             rtl::OString sTLower = getToken(sToken, 0, ' ').toAsciiLowerCase();
             pResData->sResTyp = sTLower;
             rtl::OString sId( sToken.copy( pResData->sResTyp.getLength() + 1 ));
-            ByteString sCondition;
+            rtl::OString sCondition;
             if ( sId.indexOf( '#' ) != -1 )
             {
                 // between ResTyp, Id and paranthes is a precomp. condition
                 sCondition = "#";
-                sCondition += ByteString(getToken(sId, 1, '#'));
+                sCondition += getToken(sId, 1, '#');
                 sId = getToken(sId, 0, '#');
             }
             sId = getToken(sId, 0, '/');
             CleanValue( sId );
             sId = comphelper::string::remove(sId, '\t');
             pResData->SetId( sId, ID_LEVEL_IDENTIFIER );
-            if ( sCondition.Len())
+            if (!sCondition.isEmpty())
             {
                 Execute( CONDITION, "");  // execute the precomp. condition
             }
@@ -705,7 +703,7 @@ int Export::Execute( int nToken, const char * pToken )
                 break;
 
             bDontWriteOutput = sal_False;
-            ByteString sLowerTyp;
+            rtl::OString sLowerTyp;
             if ( pResData )
                 sLowerTyp = "unknown";
             nLevel++;
@@ -803,11 +801,11 @@ int Export::Execute( int nToken, const char * pToken )
         case LISTASSIGNMENT:
         {
             bDontWriteOutput = sal_False;
-            ByteString sTmpToken(comphelper::string::remove(sToken, ' '));
-            sal_uInt16 nPos = 0;
-            nPos = sTmpToken.ToLowerAscii().Search("[en-us]=");
-            if( nPos != STRING_NOTFOUND ) {
-                rtl::OString sKey = sTmpToken.Copy( 0 , nPos );
+            rtl::OString sTmpToken(
+                comphelper::string::remove(sToken, ' ').toAsciiLowerCase());
+            sal_Int32 nPos = sTmpToken.indexOf("[en-us]=");
+            if (nPos != -1) {
+                rtl::OString sKey(sTmpToken.copy(0 , nPos));
                 sKey = comphelper::string::remove(sKey, ' ');
                 sKey = comphelper::string::remove(sKey, '\t');
                 rtl::OString sValue = getToken(sToken, 1, '=');
@@ -888,7 +886,7 @@ int Export::Execute( int nToken, const char * pToken )
             // this is an entry for a String- or FilterList
             if ( nList ) {
                 SetChildWithText();
-                ByteString sEntry(getToken(sToken, 1, '\"'));
+                rtl::OString sEntry(getToken(sToken, 1, '\"'));
                 if ( getTokenCount(sToken, '\"') > 3 )
                     sEntry += "\"";
                 if ( sEntry == "\\\"" )
@@ -912,7 +910,7 @@ int Export::Execute( int nToken, const char * pToken )
                 rtl::OString sKey = getToken(getToken(sToken, 0, '='), 0, '[');
                 sKey = comphelper::string::remove(sKey, ' ');
                 sKey = comphelper::string::remove(sKey, '\t');
-                ByteString sText( GetText( sToken, nToken ));
+                rtl::OString sText( GetText( sToken, nToken ));
                 rtl::OString sLang;
                 if ( getToken(sToken, 0, '=').indexOf('[') != -1 )
                 {
@@ -920,8 +918,8 @@ int Export::Execute( int nToken, const char * pToken )
                     CleanValue( sLang );
                 }
                 rtl::OString sLangIndex = sLang;
-                ByteString sOrigKey = sKey;
-                if ( sText.Len() && !sLang.isEmpty() )
+                rtl::OString sOrigKey = sKey;
+                if ( !sText.isEmpty() && !sLang.isEmpty() )
                 {
                     sKey = sKey.toAsciiUpperCase();
                     if (sKey.equalsL(RTL_CONSTASCII_STRINGPARAM("TEXT")) ||
@@ -1050,14 +1048,14 @@ int Export::Execute( int nToken, const char * pToken )
             while( helper::searchAndReplace(&sToken, "\r", " " ) != -1 ) {};
             while( helper::searchAndReplace(&sToken, "\t", " " ) != -1 ) {};
             while( helper::searchAndReplace(&sToken, "  ", " " ) != -1 ) {};
-            ByteString sCondition = getToken(sToken, 0, ' ');
+            rtl::OString sCondition(getToken(sToken, 0, ' '));
             if ( sCondition == "#ifndef" ) {
                 sActPForm = "!defined ";
-                sActPForm += ByteString(getToken(sToken, 1, ' '));
+                sActPForm += getToken(sToken, 1, ' ');
             }
             else if ( sCondition == "#ifdef" ) {
                 sActPForm = "defined ";
-                sActPForm += ByteString(getToken(sToken, 1, ' '));
+                sActPForm += getToken(sToken, 1, ' ');
             }
             else if ( sCondition == "#if" ) {
                 sActPForm = sToken.copy( 4 );
@@ -1124,24 +1122,17 @@ int Export::Execute( int nToken, const char * pToken )
 void Export::CutComment( rtl::OString &rText )
 /*****************************************************************************/
 {
-    if ( rText.indexOf( "//" ) != -1 ) {
-        ByteString sWork( rText );
-        sWork.SearchAndReplaceAll( "\\\"", "XX" );
-        sal_uInt16 i = 0;
-        sal_Bool bInner = sal_False;
-
-        while ( i < sWork.Len() - 1 ) {
-            if ( sWork.GetChar( i ) == '\"' )
+    if (rText.indexOf("//") != -1) {
+        rtl::OString sWork(rText);
+        helper::searchAndReplaceAll(&sWork, "\\\"", "XX");
+        bool bInner = false;
+        for (sal_Int32 i = 0; i < sWork.getLength() - 1; ++i) {
+            if (sWork[i] == '"') {
                 bInner = !bInner;
-            else if
-                (( sWork.GetChar( i ) == '/' ) &&
-                ( !bInner ) &&
-                ( sWork.GetChar( i + 1 ) == '/' ))
-            {
+            } else if (sWork[i] == '/' && !bInner && sWork[i + 1] == '/' ) {
                 rText = rText.copy(0, i);
-                return;
+                break;
             }
-            i++;
         }
     }
 }
@@ -1169,24 +1160,24 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
         (  !pResData->sTitle[ SOURCE_LANGUAGE ].isEmpty()))
 
        {
-        ByteString sGID = pResData->sGId;
-        ByteString sLID;
-        if ( !sGID.Len())
+        rtl::OString sGID = pResData->sGId;
+        rtl::OString sLID;
+        if (sGID.isEmpty())
             sGID = pResData->sId;
         else
             sLID = pResData->sId;
 
-        ByteString sXText;
-        ByteString sXHText;
-        ByteString sXQHText;
-        ByteString sXTitle;
+        rtl::OString sXText;
+        rtl::OString sXHText;
+        rtl::OString sXQHText;
+        rtl::OString sXTitle;
 
-        ByteString sTimeStamp( Export::GetTimeStamp());
-        ByteString sCur;
+        rtl::OString sTimeStamp(Export::GetTimeStamp());
+        rtl::OString sCur;
 
         for( unsigned int n = 0; n < aLanguages.size(); n++ ){
             sCur = aLanguages[ n ];
-                if ( !sCur.EqualsIgnoreCaseAscii("x-comment") ){
+                if (!sCur.equalsIgnoreAsciiCase("x-comment") ){
                     if (!pResData->sText[ sCur ].isEmpty())
                         sXText = pResData->sText[ sCur ];
                     else {
@@ -1210,10 +1201,10 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
                     else
                         sXTitle = pResData->sTitle[ SOURCE_LANGUAGE ];
 
-                    if ( !sXText.Len())
+                    if (sXText.isEmpty())
                         sXText = "-";
 
-                    if ( !sXHText.Len())
+                    if (sXHText.isEmpty())
                     {
                         if (!pResData->sHelpText[ SOURCE_LANGUAGE ].isEmpty())
                             sXHText = pResData->sHelpText[ SOURCE_LANGUAGE ];
@@ -1223,7 +1214,7 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
                     sXText = pResData->sText[ sCur ];
 
                 if ( bEnableExport ) {
-                    ByteString sOutput( sProject ); sOutput += "\t";
+                    rtl::OString sOutput( sProject ); sOutput += "\t";
                     if ( !sRoot.isEmpty())
                         sOutput += sActFileName;
                     sOutput += "\t0\t";
@@ -1232,7 +1223,7 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
                     sOutput += sLID; sOutput += "\t";
                     sOutput += pResData->sHelpId; sOutput   += "\t";
                     sOutput += pResData->sPForm; sOutput    += "\t";
-                    sOutput += ByteString(rtl::OString::valueOf(static_cast<sal_Int64>(pResData->nWidth))); sOutput += "\t";
+                    sOutput += rtl::OString::valueOf(static_cast<sal_Int64>(pResData->nWidth)); sOutput += "\t";
                     sOutput += sCur; sOutput += "\t";
 
 
@@ -1254,31 +1245,31 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
             }
     }
     if ( pResData->pStringList ) {
-        ByteString sList( "stringlist" );
+        rtl::OString sList( "stringlist" );
         WriteExportList( pResData, pResData->pStringList, sList, bCreateNew );
         if ( bCreateNew )
             pResData->pStringList = 0;
     }
     if ( pResData->pFilterList ) {
-        ByteString sList( "filterlist" );
+        rtl::OString sList( "filterlist" );
         WriteExportList( pResData, pResData->pFilterList, sList, bCreateNew );
         if ( bCreateNew )
             pResData->pFilterList = 0;
     }
     if ( pResData->pItemList ) {
-        ByteString sList( "itemlist" );
+        rtl::OString sList( "itemlist" );
         WriteExportList( pResData, pResData->pItemList, sList, bCreateNew );
         if ( bCreateNew )
             pResData->pItemList = 0;
     }
     if ( pResData->pPairedList ) {
-        ByteString sList( "pairedlist" );
+        rtl::OString sList( "pairedlist" );
         WriteExportList( pResData, pResData->pPairedList, sList, bCreateNew );
         if ( bCreateNew )
             pResData->pItemList = 0;
     }
     if ( pResData->pUIEntries ) {
-        ByteString sList( "uientries" );
+        rtl::OString sList( "uientries" );
         WriteExportList( pResData, pResData->pUIEntries, sList, bCreateNew );
         if ( bCreateNew )
             pResData->pUIEntries = 0;
@@ -1289,9 +1280,8 @@ sal_Bool Export::WriteData( ResData *pResData, sal_Bool bCreateNew )
 rtl::OString Export::GetPairedListID(const rtl::OString& rText)
 {
 // < "STRING" ; IDENTIFIER ; > ;
-    ByteString sIdent = getToken(rText, 1, ';');
-    sIdent.ToUpperAscii();
-    while( sIdent.SearchAndReplace( "\t", " " ) != STRING_NOTFOUND ) {};
+    rtl::OString sIdent(
+        getToken(rText, 1, ';').toAsciiUpperCase().replace('\t', ' '));
     sIdent = comphelper::string::stripEnd(sIdent, ' ');
     sIdent = comphelper::string::stripStart(sIdent, ' ');
     return sIdent;
@@ -1300,11 +1290,10 @@ rtl::OString Export::GetPairedListID(const rtl::OString& rText)
 rtl::OString Export::GetPairedListString(const rtl::OString& rText)
 {
 // < "STRING" ; IDENTIFIER ; > ;
-    ByteString sString = getToken(rText, 0, ';');
-    while( sString.SearchAndReplace( "\t", " " ) != STRING_NOTFOUND ) {};
+    rtl::OString sString(getToken(rText, 0, ';').replace('\t', ' '));
     sString = comphelper::string::stripEnd(sString, ' ');
-    ByteString s1 = sString.Copy( sString.Search( '\"' )+1 );
-    sString = s1.Copy( 0 , s1.SearchBackward( '\"' ) );
+    rtl::OString s1(sString.copy(sString.indexOf('"') + 1));
+    sString = s1.copy(0, s1.lastIndexOf('"'));
     sString = comphelper::string::stripEnd(sString, ' ');
     sString = comphelper::string::stripStart(sString, ' ');
     return sString;
@@ -1319,8 +1308,8 @@ rtl::OString Export::StripList(const rtl::OString & rText)
 sal_Bool Export::WriteExportList(ResData *pResData, ExportList *pExportList,
     const rtl::OString &rTyp, sal_Bool bCreateNew)
 {
-    ByteString sGID = pResData->sGId;
-    if ( !sGID.Len())
+    rtl::OString sGID(pResData->sGId);
+    if (sGID.isEmpty())
         sGID = pResData->sId;
     else {
         sGID += ".";
@@ -1328,13 +1317,13 @@ sal_Bool Export::WriteExportList(ResData *pResData, ExportList *pExportList,
         sGID = comphelper::string::stripEnd(sGID, '.');
     }
 
-    ByteString sTimeStamp( Export::GetTimeStamp());
-    ByteString sCur;
+    rtl::OString sTimeStamp(Export::GetTimeStamp());
+    rtl::OString sCur;
     for ( size_t i = 0; pExportList != NULL && i < pExportList->size(); i++ )
     {
         ExportListEntry *pEntry = (*pExportList)[  i ];
 
-        ByteString sLID(rtl::OString::valueOf(static_cast<sal_Int64>(i + 1)));
+        rtl::OString sLID(rtl::OString::valueOf(static_cast<sal_Int64>(i + 1)));
         for (unsigned int n = 0; n < aLanguages.size(); ++n)
         {
             sCur = aLanguages[ n ];
@@ -1342,7 +1331,7 @@ sal_Bool Export::WriteExportList(ResData *pResData, ExportList *pExportList,
             {
                 if ( bEnableExport )
                 {
-                    ByteString sText((*pEntry)[ SOURCE_LANGUAGE ] );
+                    rtl::OString sText((*pEntry)[ SOURCE_LANGUAGE ] );
 
                     // Strip PairList Line String
                     if (rTyp.equalsIgnoreAsciiCaseL(RTL_CONSTASCII_STRINGPARAM("pairedlist")))
@@ -1515,7 +1504,7 @@ void Export::CleanValue( rtl::OString &rValue )
 
 rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
 {
-    ByteString sReturn;
+    rtl::OString sReturn;
     switch ( nToken )
     {
         case TEXTLINE:
@@ -1526,38 +1515,29 @@ rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
             sTmp = comphelper::string::remove(sTmp, '\n');
             sTmp = comphelper::string::remove(sTmp, '\r');
 
-            while ( helper::searchAndReplace(&sTmp, "\\\\\"", "-=<[BSlashBSlashHKom]>=-\"" )
-                != -1 ) {}
-            while ( helper::searchAndReplace(&sTmp, "\\\"", "-=<[Hochkomma]>=-" )
-                != -1 ) {}
-            while ( helper::searchAndReplace(&sTmp, "\\", "-=<[0x7F]>=-" )
-                != -1 ) {}
-            while ( helper::searchAndReplace(&sTmp, "\\0x7F", "-=<[0x7F]>=-" )
-                != -1 ) {}
-
-            sal_uInt16 nStart = 0;
-            sal_uInt16 nState = TXT_STATE_MACRO;
-
-            nState = TXT_STATE_TEXT;
-            nStart = 1;
-
+            helper::searchAndReplaceAll(
+                &sTmp, "\\\\\"", "-=<[BSlashBSlashHKom]>=-\"");
+            helper::searchAndReplaceAll(&sTmp, "\\\"", "-=<[Hochkomma]>=-");
+            helper::searchAndReplaceAll(&sTmp, "\\", "-=<[0x7F]>=-");
+            helper::searchAndReplaceAll(&sTmp, "\\0x7F", "-=<[0x7F]>=-");
 
-            for ( sal_uInt16 i = nStart; i < getTokenCount(sTmp, '\"'); ++i )
+            sal_uInt16 nState = TXT_STATE_TEXT;
+            for (sal_Int32 i = 0; i < getTokenCount(sTmp, '\"'); ++i)
             {
-                ByteString sToken = getToken(sTmp, i, '\"');
-                if ( sToken.Len()) {
+                rtl::OString sToken(getToken(sTmp, i, '"'));
+                if (!sToken.isEmpty()) {
                     if ( nState == TXT_STATE_TEXT ) {
                         sReturn += sToken;
                         nState = TXT_STATE_MACRO;
                     }
                     else {
-                        while( sToken.SearchAndReplace( "\t", " " ) !=
-                            STRING_NOTFOUND ) {};
-                        while( sToken.SearchAndReplace( "  ", " " ) !=
-                            STRING_NOTFOUND ) {};
+                        sToken = sToken.replace('\t', ' ');
+                        while (helper::searchAndReplace(&sToken, "  ", " ")
+                               != -1)
+                        {}
                         sToken = comphelper::string::stripStart(sToken, ' ');
                         sToken = comphelper::string::stripEnd(sToken, ' ');
-                        if ( sToken.Len()) {
+                        if (!sToken.isEmpty()) {
                             sReturn += "\\\" ";
                             sReturn += sToken;
                             sReturn += " \\\"";
@@ -1567,19 +1547,13 @@ rtl::OString Export::GetText(const rtl::OString &rSource, int nToken)
                 }
             }
 
-            while ( sReturn.SearchAndReplace( "-=<[0x7F]>=-", "" )
-                != STRING_NOTFOUND ) {};
-            while ( sReturn.SearchAndReplace( "-=<[Hochkomma]>=-", "\"" )
-                != STRING_NOTFOUND ) {};
-            while ( sReturn.SearchAndReplace( "-=<[BSlashBSlashHKom]>=-", "\\\\" )
-                != STRING_NOTFOUND ) {};
-
-
-            while ( sReturn.SearchAndReplace( "\\\\", "-=<[BSlashBSlash]>=-" )
-                != STRING_NOTFOUND ) {};
-            while ( sReturn.SearchAndReplace( "-=<[BSlashBSlash]>=-", "\\" )
-                != STRING_NOTFOUND ) {};
-
+            helper::searchAndReplaceAll(&sReturn, "-=<[0x7F]>=-", "");
+            helper::searchAndReplaceAll(&sReturn, "-=<[Hochkomma]>=-", "\"");
+            helper::searchAndReplaceAll(
+                &sReturn, "-=<[BSlashBSlashHKom]>=-", "\\\\");
+            helper::searchAndReplaceAll(
+                &sReturn, "\\\\", "-=<[BSlashBSlash]>=-");
+            helper::searchAndReplaceAll(&sReturn, "-=<[BSlashBSlash]>=-", "\\");
         }
         break;
     }
@@ -1590,50 +1564,44 @@ void Export::WriteToMerged(const rtl::OString &rText , bool bSDFContent)
 {
     if ( !bDontWriteOutput || !bUnmerge )
     {
-        ByteString sText( rText );
-        while ( sText.SearchAndReplace( " \n", "\n" ) != STRING_NOTFOUND ) {};
-        if( pParseQueue->bNextIsM && bSDFContent && sText.Len() > 2 ){
-            for( sal_uInt16 n = 0 ; n < sText.Len() ; n++ ){
-                if( sText.GetChar( n ) == '\n' && sText.GetChar( n-1 ) != '\\'){
-                    sText.Insert('\\' , n++ );
-
+        rtl::OString sText(rText);
+        while (helper::searchAndReplace(&sText, " \n", "\n") != -1) {}
+        if (pParseQueue->bNextIsM && bSDFContent && sText.getLength() > 2) {
+            for (sal_Int32 n = 0; n < sText.getLength(); ++n) {
+                if (sText[n] == '\n' && sText[n - 1] != '\\') {
+                    sText = sText.replaceAt(n++, 0, "\\");
                 }
             }
-        }
-        else if( pParseQueue->bLastWasM && sText.Len() > 2 ){
-            for( sal_uInt16 n = 0 ; n < sText.Len() ; n++ ){
-                if( sText.GetChar( n ) == '\n' && sText.GetChar( n-1 ) != '\\'){
-                    sText.Insert('\\' , n++ );
+        } else if (pParseQueue->bLastWasM && sText.getLength() > 2) {
+            for (sal_Int32 n = 0; n < sText.getLength(); ++n) {
+                if (sText[n] == '\n' && sText[n - 1] != '\\') {
+                    sText = sText.replaceAt(n++, 0, "\\");
+                }
+                if (sText[n] == '\n') {
+                    pParseQueue->bMflag = true;
                 }
-                if( sText.GetChar( n ) == '\n' )pParseQueue->bMflag=true;
             }
-        }
-        else if( pParseQueue->bCurrentIsM && bSDFContent && sText.Len() > 2 ){
-            for( sal_uInt16 n = 0 ; n < sText.Len() ; n++ ){
-                if( sText.GetChar( n ) == '\n' && sText.GetChar( n-1 ) != '\\'){
-                    sText.Insert('\\' , n++ );
-                    pParseQueue->bMflag=true;
+        } else if (pParseQueue->bCurrentIsM && bSDFContent
+                   && sText.getLength() > 2)
+        {
+            for (sal_Int32 n = 0; n < sText.getLength(); ++n) {
+                if (sText[n] == '\n' && sText[n - 1] != '\\') {
+                    sText = sText.replaceAt(n++, 0, "\\");
+                    pParseQueue->bMflag = true;
                 }
             }
-        }
-        else if( pParseQueue->bMflag ){
-            for( sal_uInt16 n = 1 ; n < sText.Len() ; n++ ){
-                if( sText.GetChar( n ) == '\n' && sText.GetChar( n-1 ) != '\\'){
-                    sText.Insert('\\' , n++ );
+        } else if (pParseQueue->bMflag) {
+            for (sal_Int32 n = 1; n < sText.getLength(); ++n) {
+                if (sText[n] == '\n' && sText[n - 1] != '\\') {
+                    sText = sText.replaceAt(n++, 0, "\\");
                 }
             }
-        }
-        for (sal_uInt16 i = 0; i < sText.Len(); ++i)
-        {
-            if ( sText.GetChar( i ) != '\n' )
-            {
-                sal_Char cChar = sText.GetChar(i);
+        } for (sal_Int32 i = 0; i < sText.getLength(); ++i) {
+            if (sText[i] == '\n') {
+                aOutput.WriteLine(rtl::OString());
+            } else {
+                char cChar = sText[i];
                 aOutput.Write(&cChar, 1);
-
-            }
-            else
-            {
-                aOutput.WriteLine( ByteString());
             }
         }
     }
@@ -1698,7 +1666,7 @@ void Export::ConvertMergeContent( rtl::OString &rText )
     rText = sNew.makeStringAndClear();
 
     if ( bNoOpen ) {
-        ByteString sTmp( rText );
+        rtl::OString sTmp( rText );
         rText = "\"";
         rText += sTmp;
     }
@@ -1712,11 +1680,11 @@ sal_Bool Export::PrepareTextToMerge(rtl::OString &rText, sal_uInt16 nTyp,
     // position to merge in:
     sal_Int32 nStart = 0;
     sal_Int32 nEnd = 0;
-    ByteString sOldId = pResData->sId;
-    ByteString sOldGId = pResData->sGId;
-    ByteString sOldTyp = pResData->sResTyp;
+    rtl::OString sOldId = pResData->sId;
+    rtl::OString sOldGId = pResData->sGId;
+    rtl::OString sOldTyp = pResData->sResTyp;
 
-    ByteString sOrigText( rText );
+    rtl::OString sOrigText( rText );
 
     switch ( nTyp ) {
         case LIST_STRING :
@@ -1785,7 +1753,7 @@ sal_Bool Export::PrepareTextToMerge(rtl::OString &rText, sal_uInt16 nTyp,
             if (( sLastListLine.indexOf( '>' ) != -1 ) &&
                 ( sLastListLine.indexOf( '<' ) == -1 ))
             {
-                ByteString sTmp = sLastListLine;
+                rtl::OString sTmp = sLastListLine;
                 sLastListLine = "<";
                 sLastListLine += sTmp;
             }
@@ -1850,8 +1818,7 @@ sal_Bool Export::PrepareTextToMerge(rtl::OString &rText, sal_uInt16 nTyp,
         pMergeDataFile = new MergeDataFile( sMergeSrc, sFile, bErrorLog );
 
         // Init Languages
-        ByteString sTmp = Export::sLanguages;
-        if( sTmp.ToUpperAscii().Equals("ALL") )
+        if( Export::sLanguages.equalsIgnoreAsciiCase("ALL") )
             SetLanguages( pMergeDataFile->GetLanguages() );
         else if( !isInitialized )InitLanguages();
 
@@ -1878,7 +1845,7 @@ sal_Bool Export::PrepareTextToMerge(rtl::OString &rText, sal_uInt16 nTyp,
     if (Export::isSourceLanguage(rLangIndex))
         return sal_False;
 
-    ByteString sPostFix( rText.copy( ++nEnd ));
+    rtl::OString sPostFix( rText.copy( ++nEnd ));
     rText = rText.copy(0, nStart);
 
     ConvertMergeContent( sContent );
@@ -1900,8 +1867,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
         pMergeDataFile = new MergeDataFile( sMergeSrc, sFile, bErrorLog );
 
         // Init Languages
-        ByteString sTmp = Export::sLanguages;
-        if( sTmp.ToUpperAscii().Equals("ALL") )
+        if (Export::sLanguages.equalsIgnoreAsciiCase("ALL"))
             SetLanguages( pMergeDataFile->GetLanguages() );
         else if( !isInitialized )InitLanguages();
 
@@ -1915,16 +1881,14 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
 
                 sal_Bool bAddSemikolon = sal_False;
                 sal_Bool bFirst = sal_True;
-                ByteString sCur;
-                ByteString sTmp = Export::sLanguages;
-
+                rtl::OString sCur;
                 for( unsigned int n = 0; n < aLanguages.size(); n++ ){
                     sCur = aLanguages[ n ];
 
                     rtl::OString sText;
                     sal_Bool bText = pEntry->GetTransex3Text( sText, STRING_TYP_TEXT, sCur , sal_True );
                     if ( bText && !sText.isEmpty() && sText != "-" ) {
-                        ByteString sOutput;
+                        rtl::OString sOutput;
                         if ( bNextMustBeDefineEOL)  {
                             if ( bFirst )
                                 sOutput += "\t\\\n";
@@ -1960,7 +1924,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
 
 
                 if ( bAddSemikolon ) {
-                    ByteString sOutput( ";" );
+                    rtl::OString sOutput( ";" );
                     WriteToMerged( sOutput , false );
                 }
             }
@@ -1968,7 +1932,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
             if ( pEntry && pResData->bQuickHelpText ) {
                 sal_Bool bAddSemikolon = sal_False;
                 sal_Bool bFirst = sal_True;
-                ByteString sCur;
+                rtl::OString sCur;
 
                 for( unsigned int n = 0; n < aLanguages.size(); n++ ){
                     sCur = aLanguages[ n ];
@@ -1976,7 +1940,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                     rtl::OString sText;
                     sal_Bool bText = pEntry->GetTransex3Text( sText, STRING_TYP_QUICKHELPTEXT, sCur, sal_True );
                     if ( bText && !sText.isEmpty() && sText != "-" ) {
-                        ByteString sOutput;
+                        rtl::OString sOutput;
                         if ( bNextMustBeDefineEOL)  {
                             if ( bFirst )
                                 sOutput += "\t\\\n";
@@ -2006,7 +1970,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                     }
                 }
                 if ( bAddSemikolon ) {
-                    ByteString sOutput( ";" );
+                    rtl::OString sOutput( ";" );
                     WriteToMerged( sOutput , false );
                 }
             }
@@ -2014,7 +1978,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
             if ( pEntry && pResData->bTitle ) {
                 sal_Bool bAddSemikolon = sal_False;
                 sal_Bool bFirst = sal_True;
-                ByteString sCur;
+                rtl::OString sCur;
 
                 for( unsigned int n = 0; n < aLanguages.size(); n++ ){
                     sCur = aLanguages[ n ];
@@ -2022,7 +1986,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                     rtl::OString sText;
                     sal_Bool bText = pEntry->GetTransex3Text( sText, STRING_TYP_TITLE, sCur, sal_True );
                     if ( bText && !sText.isEmpty() && sText != "-" ) {
-                        ByteString sOutput;
+                        rtl::OString sOutput;
                         if ( bNextMustBeDefineEOL)  {
                             if ( bFirst )
                                 sOutput += "\t\\\n";
@@ -2052,7 +2016,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                     }
                 }
                 if ( bAddSemikolon ) {
-                    ByteString sOutput( ";" );
+                    rtl::OString sOutput( ";" );
                     WriteToMerged( sOutput ,false);
                 }
             }
@@ -2060,13 +2024,13 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
 
             if ( pResData->bList ) {
                 bool bPairedList = false;
-                ByteString sOldId = pResData->sId;
-                ByteString sOldGId = pResData->sGId;
-                ByteString sOldTyp = pResData->sResTyp;
+                rtl::OString sOldId = pResData->sId;
+                rtl::OString sOldGId = pResData->sGId;
+                rtl::OString sOldTyp = pResData->sResTyp;
                 if (!pResData->sGId.isEmpty())
                     pResData->sGId = pResData->sGId + rtl::OString('.');
                 pResData->sGId = pResData->sGId + sOldId;
-                ByteString sSpace;
+                rtl::OString sSpace;
                 for ( sal_uInt16 i = 1; i < nLevel-1; i++ )
                     sSpace += "\t";
                 for ( sal_uInt16 nT = LIST_STRING; nT <= LIST_UIENTRIES; nT++ ) {
@@ -2090,7 +2054,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                             pResData->sId = GetPairedListID ( (*pListE)[ SOURCE_LANGUAGE ] );
                         }
                         else
-                            pResData->sId = ByteString("1");
+                            pResData->sId = "1";
 
                         PFormEntrys *pEntrys;
                         sal_uLong nLIndex = 0;
@@ -2169,7 +2133,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                                 sal_Int32 nStart, nEnd;
                                 nStart = sLine.indexOf( '"' );
 
-                                ByteString sPostFix;
+                                rtl::OString sPostFix;
                                 if( !bPairedList ){
                                     nEnd = sLine.lastIndexOf( '"' );
                                     sPostFix = sLine.copy( ++nEnd );
@@ -2188,7 +2152,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                                     sLine += sPostFix;
                                 }
 
-                                ByteString sText1( "\t" );
+                                rtl::OString sText1( "\t" );
                                 sText1 += sLine;
                                 if ( bDefine || bNextMustBeDefineEOL )
                                     sText1 += " ;\\\n";
@@ -2218,7 +2182,10 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
                                 pEntrys = oldEntry;
                         }
                         if ( nIdx > 1 ) {
-                            ByteString sFooter( sSpace.Copy( 1 ));
+                            rtl::OString sFooter;
+                            if (!sSpace.isEmpty()) {
+                                sFooter = sSpace.copy(1);
+                            }
                             if ( bNextMustBeDefineEOL )
                                 sFooter += "};";
                             else if ( !bDefine )
@@ -2270,7 +2237,7 @@ void Export::MergeRest( ResData *pResData, sal_uInt16 nMode )
             }
 
             while( PrepareTextToMerge( sLine, nList, m_sListLang, pResData ) && ( nListIndex <= nMaxIndex )) {
-                ByteString sText( "\t" );
+                rtl::OString sText( "\t" );
                 sText += sLine;
                 sText += " ;";
                 sText += "\n";
diff --git a/l10ntools/source/export2.cxx b/l10ntools/source/export2.cxx
index ee4cb09..eb4fee8 100644
--- a/l10ntools/source/export2.cxx
+++ b/l10ntools/source/export2.cxx
@@ -114,9 +114,9 @@ void Export::DumpMap(const rtl::OString& rMapName,
         return;
     for(OStringHashMap::const_iterator idbg = aMap.begin(); idbg != aMap.end(); ++idbg)
     {
-        ByteString a( idbg->first );
-        ByteString b( idbg->second );
-        printf("[%s]= %s",a.GetBuffer(),b.GetBuffer());
+        rtl::OString a( idbg->first );
+        rtl::OString b( idbg->second );
+        printf("[%s]= %s",a.getStr(),b.getStr());
         printf("\n");
     }
     printf("\n");
@@ -343,7 +343,7 @@ void Export::InitLanguages( bool bMergeMode ){
 /*****************************************************************************/
     if( !isInitialized )
     {
-        ByteString sTmp;
+        rtl::OString sTmp;
         OStringBoolHashMap aEnvLangs;
 
         sal_Int32 nIndex = 0;
@@ -353,7 +353,7 @@ void Export::InitLanguages( bool bMergeMode ){
             sTmp = getToken(aToken, 0, '=');
             sTmp = comphelper::string::strip(sTmp, ' ');
             if( bMergeMode && !isAllowed( sTmp ) ){}
-            else if( !( (sTmp.GetChar(0)=='x' || sTmp.GetChar(0)=='X') && sTmp.GetChar(1)=='-' ) ){
+            else if( !( (sTmp[0]=='x' || sTmp[0]=='X') && sTmp[1]=='-' ) ){
                 aLanguages.push_back( sTmp );
             }
         }
@@ -366,7 +366,7 @@ void Export::InitLanguages( bool bMergeMode ){
 /*****************************************************************************/
 void Export::InitForcedLanguages( bool bMergeMode ){
 /*****************************************************************************/
-    ByteString sTmp;
+    rtl::OString sTmp;
     OStringBoolHashMap aEnvLangs;
 
     sal_Int32 nIndex = 0;
@@ -377,7 +377,7 @@ void Export::InitForcedLanguages( bool bMergeMode ){
         sTmp = getToken(aToken, 0, '=');
         sTmp = comphelper::string::strip(sTmp, ' ');
         if( bMergeMode && isAllowed( sTmp ) ){}
-        else if( !( (sTmp.GetChar(0)=='x' || sTmp.GetChar(0)=='X') && sTmp.GetChar(1)=='-' ) )
+        else if( !( (sTmp[0]=='x' || sTmp[0]=='X') && sTmp[1]=='-' ) )
             aForcedLanguages.push_back( sTmp );
     }
     while ( nIndex >= 0 );
@@ -399,8 +399,8 @@ sal_Bool Export::ConvertLineEnds(
     rtl::OString const & sSource, rtl::OString const & sDestination )
 /*****************************************************************************/
 {
-    String sSourceFile( sSource, RTL_TEXTENCODING_ASCII_US );
-    String sDestinationFile( sDestination, RTL_TEXTENCODING_ASCII_US );
+    rtl::OUString sSourceFile(rtl::OStringToOUString(sSource, RTL_TEXTENCODING_ASCII_US));
+    rtl::OUString sDestinationFile(rtl::OStringToOUString(sDestination, RTL_TEXTENCODING_ASCII_US));
 
     SvFileStream aSource( sSourceFile, STREAM_READ );
     if ( !aSource.IsOpen())
@@ -512,10 +512,10 @@ DirEntry Export::GetTempFile()
     int nRC = osl::FileBase::createTempFile( 0 , 0 , sTempFilename );
     if( nRC ) printf(" osl::FileBase::createTempFile RC = %d",nRC);
 
-    String strTmp( *sTempFilename  );
+    rtl::OUString strTmp( *sTempFilename  );
 
     INetURLObject::DecodeMechanism eMechanism = INetURLObject::DECODE_TO_IURI;
-    String sDecodedStr = INetURLObject::decode( strTmp , '%' , eMechanism );
+    rtl::OUString sDecodedStr = INetURLObject::decode( strTmp , '%' , eMechanism );
     rtl::OString sTmp(rtl::OUStringToOString(sDecodedStr , RTL_TEXTENCODING_UTF8));
 
 #if defined(WNT)
diff --git a/l10ntools/source/gsicheck.cxx b/l10ntools/source/gsicheck.cxx
index 15ae5c5..2f860ac 100644
--- a/l10ntools/source/gsicheck.cxx
+++ b/l10ntools/source/gsicheck.cxx
@@ -64,9 +64,9 @@ void PrintError( rtl::OString const & aMsg, rtl::OString const & aPrefix,
     PrintMessage( "Error:", aMsg, aPrefix, aContext, bPrintContext, nLine, aUniqueId );
 }
 
-sal_Bool LanguageOK( ByteString aLang )
+sal_Bool LanguageOK( rtl::OString const & aLang )
 {
-    if ( !aLang.Len() )
+    if (aLang.isEmpty())
         return sal_False;
 
     using comphelper::string::isdigitAsciiString;
@@ -80,11 +80,11 @@ sal_Bool LanguageOK( ByteString aLang )
         return islowerAsciiString(aLang);
     else if ( getTokenCount(aLang, '-') == 2 )
     {
-        ByteString aTok0( getToken(aLang, 0, '-') );
-        ByteString aTok1( getToken(aLang, 1, '-') );
-        return  aTok0.Len() && islowerAsciiString(aTok0)
-             && aTok1.Len() && isupperAsciiString(aTok1)
-             && !aTok1.EqualsIgnoreCaseAscii( aTok0 );
+        rtl::OString aTok0( getToken(aLang, 0, '-') );
+        rtl::OString aTok1( getToken(aLang, 1, '-') );
+        return  !aTok0.isEmpty() && islowerAsciiString(aTok0)
+             && !aTok1.isEmpty() && isupperAsciiString(aTok1)
+             && !aTok1.equalsIgnoreAsciiCase( aTok0 );
     }
 
     return sal_False;
@@ -99,7 +99,7 @@ class LazySvFileStream : public SvFileStream
 {
 
 private:
-    String aFileName;
+    rtl::OUString aFileName;
     sal_Bool bOpened;
     StreamMode eOpenMode;
 
@@ -110,7 +110,7 @@ public:
     , eOpenMode( 0 )
     {};
 
-    void SetOpenParams( const String& rFileName, StreamMode eOpenModeP )
+    void SetOpenParams( const rtl::OUString& rFileName, StreamMode eOpenModeP )
     {
         aFileName = rFileName;
         eOpenMode = eOpenModeP;
@@ -207,28 +207,27 @@ void GSILine::NotOK()
 void GSILine::ReassembleLine()
 /*****************************************************************************/
 {
-    ByteString aReassemble;
     if ( GetLineFormat() == FORMAT_SDF )
     {
-        sal_uInt16 i;
-        for ( i = 0 ; i < 10 ; i++ )
+        rtl::OStringBuffer aReassemble;
+        for (sal_Int32 i = 0; i < 10; ++i)
         {
-            aReassemble.Append( helper::getToken( data_, i, '\t' ) );
-            aReassemble.Append( "\t" );
+            aReassemble.append( helper::getToken( data_, i, '\t' ) );
+            aReassemble.append( "\t" );
         }
-        aReassemble.Append( aText );
-        aReassemble.Append( "\t" );
-        aReassemble.Append( helper::getToken( data_, 11, '\t' ) ); // should be empty but there are some places in sc. Not reflected to sources!!
-        aReassemble.Append( "\t" );
-        aReassemble.Append( aQuickHelpText );
-        aReassemble.Append( "\t" );
-        aReassemble.Append( aTitle );
-        for ( i = 14 ; i < 15 ; i++ )
+        aReassemble.append( aText );
+        aReassemble.append( "\t" );
+        aReassemble.append( helper::getToken( data_, 11, '\t' ) ); // should be empty but there are some places in sc. Not reflected to sources!!
+        aReassemble.append( "\t" );
+        aReassemble.append( aQuickHelpText );
+        aReassemble.append( "\t" );
+        aReassemble.append( aTitle );
+        for (sal_Int32 i = 14; i < 15; ++i)
         {
-            aReassemble.Append( "\t" );
-            aReassemble.Append( helper::getToken( data_, i, '\t' ) );
+            aReassemble.append( "\t" );
+            aReassemble.append( helper::getToken( data_, i, '\t' ) );
         }
-        *(ByteString*)this = aReassemble;
+        data_ = aReassemble.makeStringAndClear();
     }
     else
         PrintError( "Cannot reassemble line of unknown type (internal Error).", "Line format", "", sal_False, GetLineNumber(), GetUniqId() );
@@ -329,7 +328,7 @@ void GSIBlock::PrintList( ParserMessageList *pList, rtl::OString const & aPrefix
     for ( size_t i = 0 ; i < pList->size() ; i++ )
     {
         ParserMessage *pMsg = (*pList)[ i ];
-        ByteString aContext;
+        rtl::OString aContext;
         if ( bPrintContext )
         {
             if ( pMsg->GetTagBegin() == STRING_NOTFOUND )
@@ -345,21 +344,28 @@ void GSIBlock::PrintList( ParserMessageList *pList, rtl::OString const & aPrefix
 }
 
 /*****************************************************************************/
-sal_Bool GSIBlock::IsUTF8( const rtl::OString &aTestee, sal_Bool bFixTags, sal_uInt16 &nErrorPos, rtl::OString &aErrorMsg, sal_Bool &bHasBeenFixed, rtl::OString &aFixed ) const
+sal_Bool GSIBlock::IsUTF8( const rtl::OString &aTestee, sal_Bool bFixTags, sal_Int32 &nErrorPos, rtl::OString &aErrorMsg, sal_Bool &bHasBeenFixed, rtl::OString &aFixed ) const
 /*****************************************************************************/
 {
-    String aUTF8Tester(rtl::OStringToOUString(aTestee, RTL_TEXTENCODING_UTF8));
-    if ( STRING_MATCH != (nErrorPos = ByteString(rtl::OUStringToOString(aUTF8Tester, RTL_TEXTENCODING_UTF8)).Match( aTestee )) )
+    rtl::OUString aUTF8Tester(
+        rtl::OStringToOUString(aTestee, RTL_TEXTENCODING_UTF8));
+    nErrorPos = rtl::OUStringToOString(aUTF8Tester, RTL_TEXTENCODING_UTF8).
+        indexOf(aTestee);
+    if (nErrorPos != -1)
     {
-        aUTF8Tester = String( aTestee.getStr(), nErrorPos, RTL_TEXTENCODING_UTF8 );
-        nErrorPos = aUTF8Tester.Len();
+        aUTF8Tester = rtl::OUString(
+            aTestee.getStr(), nErrorPos, RTL_TEXTENCODING_UTF8);
+        nErrorPos = aUTF8Tester.getLength();
         aErrorMsg = "UTF8 Encoding seems to be broken";
         return sal_False;
     }
 
-    nErrorPos = aUTF8Tester.SearchChar( String::CreateFromAscii( "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0e\x0f"
-                "\x10\x11\x12\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f" ).GetBuffer() );
-    if ( nErrorPos != STRING_NOTFOUND )
+    nErrorPos = helper::indexOfAnyAsciiL(
+        aUTF8Tester,
+        RTL_CONSTASCII_STRINGPARAM(
+            "\x01\x02\x03\x04\x05\x06\x07\x08\x09\x0b\x0c\x0e\x0f\x10\x11\x12"
+            "\x13\x14\x15\x16\x17\x18\x19\x1a\x1b\x1c\x1d\x1e\x1f\x7f"));
+    if (nErrorPos != -1)
     {
         aErrorMsg = "String contains illegal character";
         return sal_False;
@@ -378,16 +384,16 @@ sal_Bool GSIBlock::IsUTF8( const rtl::OString &aTestee, sal_Bool bFixTags, sal_u
 sal_Bool GSIBlock::TestUTF8( GSILine* pTestee, sal_Bool bFixTags )
 /*****************************************************************************/
 {
-    sal_uInt16 nErrorPos = 0;
+    sal_Int32 nErrorPos = 0;
     rtl::OString aErrorMsg;
     sal_Bool bError = sal_False;
     rtl::OString aFixed;
     sal_Bool bHasBeenFixed = sal_False;
     if ( !IsUTF8( pTestee->GetText(), bFixTags, nErrorPos, aErrorMsg, bHasBeenFixed, aFixed ) )
     {
-        ByteString aContext( pTestee->GetText().copy( nErrorPos, 20 ) );
+        rtl::OString aContext( pTestee->GetText().copy( nErrorPos, 20 ) );
         PrintError(rtl::OStringBuffer(aErrorMsg).append(RTL_CONSTASCII_STRINGPARAM(" in Text at Position "))
-             .append(static_cast<sal_Int32>(nErrorPos)).getStr(),
+             .append(nErrorPos).getStr(),
             "Text format", aContext, pTestee->GetLineNumber(), pTestee->GetUniqId());
         bError = sal_True;
         if ( bHasBeenFixed )
@@ -400,7 +406,7 @@ sal_Bool GSIBlock::TestUTF8( GSILine* pTestee, sal_Bool bFixTags )
     {
         rtl::OString aContext( pTestee->GetQuickHelpText().copy( nErrorPos, 20 ) );
         PrintError(rtl::OStringBuffer(aErrorMsg).append(RTL_CONSTASCII_STRINGPARAM(" in QuickHelpText at Position "))
-             .append(static_cast<sal_Int32>(nErrorPos)).getStr(),
+             .append(nErrorPos).getStr(),
             "Text format", aContext, pTestee->GetLineNumber(), pTestee->GetUniqId());
         bError = sal_True;
         if ( bHasBeenFixed )
@@ -413,7 +419,7 @@ sal_Bool GSIBlock::TestUTF8( GSILine* pTestee, sal_Bool bFixTags )
     {
         rtl::OString aContext( pTestee->GetTitle().copy( nErrorPos, 20 ) );
         PrintError(rtl::OStringBuffer(aErrorMsg).append(RTL_CONSTASCII_STRINGPARAM(" in Title at Position "))
-             .append(static_cast<sal_Int32>(nErrorPos)).getStr(),
+             .append(nErrorPos).getStr(),
             "Text format", aContext, pTestee->GetLineNumber(), pTestee->GetUniqId());
         bError = sal_True;
         if ( bHasBeenFixed )
@@ -436,11 +442,13 @@ sal_Bool GSIBlock::HasSuspiciousChars( GSILine* pTestee, GSILine* pSource )
     if ( !bAllowSuspicious && ( nPos = pTestee->GetText().indexOf("??")) != -1 )
         if ( pSource->GetText().indexOf("??") == -1 )
         {
-            String aUTF8Tester = String( pTestee->GetText(), 0, nPos, RTL_TEXTENCODING_UTF8 );
-            sal_uInt16 nErrorPos = aUTF8Tester.Len();
+            rtl::OUString aUTF8Tester(
+                rtl::OStringToOUString(
+                    pTestee->GetText().copy(0, nPos), RTL_TEXTENCODING_UTF8));
+            sal_Int32 nErrorPos = aUTF8Tester.getLength();
             rtl::OString aContext( pTestee->GetText().copy( nPos, 20 ) );
             PrintError(rtl::OStringBuffer(RTL_CONSTASCII_STRINGPARAM("Found double questionmark in translation only. Looks like an encoding problem at Position "))
-                 .append(static_cast<sal_Int32>(nErrorPos)).getStr(),
+                 .append(nErrorPos).getStr(),
                 "Text format", aContext, pTestee->GetLineNumber(), pTestee->GetUniqId());
             pTestee->NotOK();
             return sal_True;
@@ -494,10 +502,10 @@ sal_Bool GSIBlock::CheckSyntax( sal_uLong nLine, sal_Bool bRequireSourceLine, sa
         {
             if ( pSourceLine && pSourceLine->data_ != pReferenceLine->data_ )
             {
-                xub_StrLen nPos = ByteString(pSourceLine->data_).Match( pReferenceLine->data_ );
-                ByteString aContext( pReferenceLine->data_.copy( nPos - 5, 15) );
-                aContext.Append( "\" --> \"" ).Append( pSourceLine->data_.copy( nPos - 5, 15) );
-                PrintError( "Source Language Entry has changed.", "File format", aContext, pSourceLine->GetLineNumber(), pSourceLine->GetUniqId() );
+                sal_Int32 nPos = pSourceLine->data_.indexOf( pReferenceLine->data_ );
+                rtl::OStringBuffer aContext( pReferenceLine->data_.copy( nPos - 5, 15) );
+                aContext.append( "\" --> \"" ).append( pSourceLine->data_.copy( nPos - 5, 15) );
+                PrintError( "Source Language Entry has changed.", "File format", aContext.makeStringAndClear(), pSourceLine->GetLineNumber(), pSourceLine->GetUniqId() );
                 pSourceLine->NotOK();
                 bHasError = sal_True;
             }
@@ -662,13 +670,13 @@ int _cdecl main( int argc, char *argv[] )
     sal_Bool bWriteFixed = sal_False;
     sal_Bool bFixTags = sal_False;
     sal_Bool bAllowSuspicious = sal_False;
-    String aErrorFilename;
-    String aCorrectFilename;
-    String aFixedFilename;
+    rtl::OUString aErrorFilename;
+    rtl::OUString aCorrectFilename;
+    rtl::OUString aFixedFilename;
     sal_Bool bFileHasError = sal_False;
     rtl::OString aSourceLang( "en-US" );     // English is default
-    ByteString aFilename;
-    ByteString aReferenceFilename;
+    rtl::OString aFilename;
+    rtl::OString aReferenceFilename;
     sal_Bool bReferenceFile = sal_False;
     for ( sal_uInt16 i = 1 ; i < argc ; i++ )
     {
@@ -685,7 +693,10 @@ int _cdecl main( int argc, char *argv[] )
                             if ( (*(argv[ i ]+3)) == 'f' )
                                 if ( (i+1) < argc )
                                 {
-                                    aErrorFilename = String( argv[ i+1 ], RTL_TEXTENCODING_ASCII_US );
+                                    aErrorFilename = rtl::OUString(
+                                        argv[i + 1],
+                                        rtl_str_getLength(argv[i + 1]),
+                                        RTL_TEXTENCODING_ASCII_US);
                                     bWriteError = sal_True;
                                     i++;
                                 }
@@ -701,7 +712,10 @@ int _cdecl main( int argc, char *argv[] )
                             if ( (*(argv[ i ]+3)) == 'f' )
                                 if ( (i+1) < argc )
                                 {
-                                    aCorrectFilename = String( argv[ i+1 ], RTL_TEXTENCODING_ASCII_US );
+                                    aCorrectFilename = rtl::OUString(
+                                        argv[i + 1],
+                                        rtl_str_getLength(argv[i + 1]),
+                                        RTL_TEXTENCODING_ASCII_US);
                                     bWriteCorrect = sal_True;
                                     i++;
                                 }
@@ -716,7 +730,10 @@ int _cdecl main( int argc, char *argv[] )
                             if ( (*(argv[ i ]+3)) == 'f' )
                                 if ( (i+1) < argc )
                                 {
-                                    aFixedFilename = String( argv[ i+1 ], RTL_TEXTENCODING_ASCII_US );
+                                    aFixedFilename = rtl::OUString(
+                                        argv[i + 1],
+                                        rtl_str_getLength(argv[i + 1]),
+                                        RTL_TEXTENCODING_ASCII_US);
                                     bWriteFixed = sal_True;
                                     bFixTags = sal_True;
                                     i++;
@@ -790,8 +807,8 @@ int _cdecl main( int argc, char *argv[] )
         }
         else
         {
-            if  ( !aFilename.Len())
-                aFilename = ByteString( argv[ i ] );
+            if  (aFilename.isEmpty())
+                aFilename = argv[i];
             else
             {
                 fprintf( stderr, "\nERROR: Only one filename may be specified!\n\n");
@@ -801,7 +818,7 @@ int _cdecl main( int argc, char *argv[] )
     }
 
 
-    if ( !aFilename.Len() || bError )
+    if (aFilename.isEmpty() || bError)
     {
         Help();
         exit ( 0 );
@@ -823,42 +840,42 @@ int _cdecl main( int argc, char *argv[] )
 
 
 
-    DirEntry aSource = DirEntry( String( aFilename, RTL_TEXTENCODING_ASCII_US ));
+    DirEntry aSource = DirEntry( rtl::OStringToOUString( aFilename, RTL_TEXTENCODING_ASCII_US ));
     if ( !aSource.Exists()) {
-        fprintf( stderr, "\nERROR: GSI-File %s not found!\n\n", aFilename.GetBuffer() );
+        fprintf( stderr, "\nERROR: GSI-File %s not found!\n\n", aFilename.getStr() );
         exit ( 2 );
     }
 
-    SvFileStream aGSI( String( aFilename, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_READ );
+    SvFileStream aGSI( rtl::OStringToOUString( aFilename, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_READ );
     if ( !aGSI.IsOpen()) {
-        fprintf( stderr, "\nERROR: Could not open GSI-File %s!\n\n", aFilename.GetBuffer() );
+        fprintf( stderr, "\nERROR: Could not open GSI-File %s!\n\n", aFilename.getStr() );
         exit ( 3 );
     }
 
     SvFileStream aReferenceGSI;
     if ( bReferenceFile )
     {
-        DirEntry aReferenceSource = DirEntry( String( aReferenceFilename, RTL_TEXTENCODING_ASCII_US ));
+        DirEntry aReferenceSource = DirEntry( rtl::OStringToOUString( aReferenceFilename, RTL_TEXTENCODING_ASCII_US ));
         if ( !aReferenceSource.Exists()) {
-            fprintf( stderr, "\nERROR: GSI-File %s not found!\n\n", aFilename.GetBuffer() );
+            fprintf( stderr, "\nERROR: GSI-File %s not found!\n\n", aFilename.getStr() );
             exit ( 2 );
         }
 
-        aReferenceGSI.Open( String( aReferenceFilename, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_READ );
+        aReferenceGSI.Open( rtl::OStringToOUString( aReferenceFilename, RTL_TEXTENCODING_ASCII_US ), STREAM_STD_READ );
         if ( !aReferenceGSI.IsOpen()) {
-            fprintf( stderr, "\nERROR: Could not open Input-File %s!\n\n", aFilename.GetBuffer() );
+            fprintf( stderr, "\nERROR: Could not open Input-File %s!\n\n", aFilename.getStr() );
             exit ( 3 );
         }
     }
 
     LazySvFileStream aOkOut;
-    String aBaseName = aSource.GetBase();
+    rtl::OUString aBaseName(aSource.GetBase());
     if ( bWriteCorrect )
     {
-        if ( !aCorrectFilename.Len() )
+        if (aCorrectFilename.isEmpty())
         {
-            String sTmpBase( aBaseName );
-            sTmpBase += String( "_ok", RTL_TEXTENCODING_ASCII_US );
+            rtl::OUString sTmpBase(aBaseName);
+            sTmpBase += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_ok"));
             aSource.SetBase( sTmpBase );
             aCorrectFilename = aSource.GetFull();
         }
@@ -868,10 +885,10 @@ int _cdecl main( int argc, char *argv[] )
     LazySvFileStream aErrOut;
     if ( bWriteError )
     {
-        if ( !aErrorFilename.Len() )
+        if (aErrorFilename.isEmpty())
         {
-            String sTmpBase( aBaseName );
-            sTmpBase += String( "_err", RTL_TEXTENCODING_ASCII_US );
+            rtl::OUString sTmpBase(aBaseName);
+            sTmpBase += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_err"));
             aSource.SetBase( sTmpBase );
             aErrorFilename = aSource.GetFull();
         }
@@ -881,10 +898,10 @@ int _cdecl main( int argc, char *argv[] )
     LazySvFileStream aFixOut;
     if ( bWriteFixed )
     {
-        if ( !aFixedFilename.Len() )
+        if (aFixedFilename.isEmpty())
         {
-            String sTmpBase( aBaseName );
-            sTmpBase += String( "_fix", RTL_TEXTENCODING_ASCII_US );
+            rtl::OUString sTmpBase(aBaseName);
+            sTmpBase += rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("_fix"));
             aSource.SetBase( sTmpBase );
             aFixedFilename = aSource.GetFull();
         }
@@ -894,7 +911,6 @@ int _cdecl main( int argc, char *argv[] )
 
     rtl::OString sReferenceLine;
     GSILine* pReferenceLine = NULL;
-    ByteString aOldReferenceId("No Valid ID");   // just set to something which can never be an ID
     sal_uLong nReferenceLine = 0;
 
     rtl::OString sGSILine;
diff --git a/l10ntools/source/helper.hxx b/l10ntools/source/helper.hxx
index 5b20595..de70c02 100644
--- a/l10ntools/source/helper.hxx
+++ b/l10ntools/source/helper.hxx
@@ -56,6 +56,21 @@ inline sal_Int32 searchAndReplace(
     return i;
 }
 
+inline void searchAndReplaceAll(
+    rtl::OString * text, rtl::OString const & search,
+    rtl::OString const & replace)
+{
+    assert(text != 0);
+    for (sal_Int32 i = 0;;) {
+        i = text->indexOf(search, i);
+        if (i == -1) {
+            break;
+        }
+        *text = text->replaceAt(i, search.getLength(), replace);
+        i += replace.getLength();
+    }
+}
+
 inline rtl::OString getToken(
     rtl::OString const & text, sal_Int32 token, char separator)
 {
@@ -63,6 +78,23 @@ inline rtl::OString getToken(
     return text.getToken(token, separator, i);
 }
 
+inline sal_Int32 indexOfAnyAsciiL(
+    rtl::OUString const & text, char const * chars, sal_Int32 charsLen,
+    sal_Int32 index = 0)
+{
+    for (; index != text.getLength(); ++index) {
+        sal_Unicode c = text[index];
+        if (c <= 0x7F
+            && (rtl_str_indexOfChar_WithLength(
+                    chars, charsLen, static_cast< char >(c))
+                != -1))
+        {
+            return index;
+        }
+    }
+    return -1;
+}
+
 }
 
 #endif
diff --git a/l10ntools/source/helpmerge.cxx b/l10ntools/source/helpmerge.cxx
index 2c17fd7..125f266 100644
--- a/l10ntools/source/helpmerge.cxx
+++ b/l10ntools/source/helpmerge.cxx
@@ -57,7 +57,7 @@ void HelpParser::Dump(XMLHashMap* rElem_in)
 
 void HelpParser::Dump(LangHashMap* rElem_in,const rtl::OString & sKey_in)
 {
-    ByteString x;
+    rtl::OString x;
     OString y;
     fprintf(stdout,"+------------%s-----------+\n",sKey_in.getStr() );
     for(LangHashMap::iterator posn=rElem_in->begin();posn!=rElem_in->end();++posn)
@@ -111,15 +111,13 @@ bool HelpParser::CreateSDF(
         sXmlFile = String( sHelpFile , RTL_TEXTENCODING_ASCII_US );
     }
 
-//    ByteString fullFilePath;
-    //DirEntry aFile( sXmlFile );
-    //makeAbsolutePath( sHelpFile , rRoot_in);
-    ByteString fullFilePath = rPrj_in;
-    fullFilePath.Append( "\\" );
-    fullFilePath.Append( makeAbsolutePath( sHelpFile , rRoot_in ) );
-    fullFilePath.SearchAndReplaceAll( "\\", "/" );
+    rtl::OString fullFilePath = rPrj_in;
+    fullFilePath += "\\";
+    fullFilePath += makeAbsolutePath( sHelpFile , rRoot_in );
+    fullFilePath = fullFilePath.replace('\\', '/');
 
-    String strFullPath( fullFilePath.GetBuffer() , RTL_TEXTENCODING_ASCII_US );
+    rtl::OUString strFullPath(
+        rtl::OStringToOUString(fullFilePath, RTL_TEXTENCODING_ASCII_US));
 
     //printf( "%s\n", fullFilePath.GetBuffer() );
     std::auto_ptr <XMLFile> file ( aParser.Execute( strFullPath , sXmlFile, pXmlFile ) );
@@ -147,8 +145,9 @@ bool HelpParser::CreateSDF(
     LangHashMap* pElem;
     XMLElement*  pXMLElement  = NULL;
 
-    ByteString sTimeStamp( Export::GetTimeStamp() );
-    OUString sOUTimeStamp( sTimeStamp.GetBuffer() , sTimeStamp.Len() , RTL_TEXTENCODING_ASCII_US );
+    OUString sOUTimeStamp(
+        rtl::OStringToOUString(
+            Export::GetTimeStamp(), RTL_TEXTENCODING_ASCII_US));
 
     OUStringBuffer sBuffer;
     const OUString sOUPrj( rPrj_in.getStr() , rPrj_in.getLength() , RTL_TEXTENCODING_ASCII_US );
diff --git a/l10ntools/source/tagtest.cxx b/l10ntools/source/tagtest.cxx
index 90d8178..5d7f1ab 100644
--- a/l10ntools/source/tagtest.cxx
+++ b/l10ntools/source/tagtest.cxx
@@ -35,6 +35,7 @@
 #endif
 
 #include "gsicheck.hxx"
+#include "helper.hxx"
 
 #define HAS_FLAG( nFlags, nFlag )       ( ( nFlags & nFlag ) != 0 )
 #define SET_FLAG( nFlags, nFlag )       ( nFlags |= nFlag )
@@ -42,7 +43,7 @@
 
 
 
-TokenInfo::TokenInfo( TokenId pnId, sal_uInt16 nP, String paStr, ParserMessageList &rErrorList )
+TokenInfo::TokenInfo( TokenId pnId, sal_uInt16 nP, rtl::OUString const & paStr, ParserMessageList &rErrorList )
 : bClosed(sal_False)
 , bCloseTag(sal_False)
 , bIsBroken(sal_False)
@@ -90,9 +91,9 @@ CLOSETAG_HAS_TAG_NAME  '>' ->  FINISHED
 */
 void TokenInfo::SplitTag( ParserMessageList &rErrorList )
 {
-    sal_uInt16 nLastPos = 2;    // skip initial  \<
-    sal_uInt16 nCheckPos = nLastPos;
-    String aDelims( String::CreateFromAscii( " \\=>/" ) );
+    sal_Int32 nLastPos = 2;    // skip initial  \<
+    sal_Int32 nCheckPos = nLastPos;
+    static char const aDelims[] = " \\=>/";
     String aPortion;
     String aValue;      // store the value of a property
     rtl::OString aName; // store the name of a property/tag
@@ -102,18 +103,19 @@ void TokenInfo::SplitTag( ParserMessageList &rErrorList )
     tagcheck aState = TC_START;
 
     // skip blanks
-    while ( nLastPos < aTokenString.Len() && aTokenString.GetChar( nLastPos ) == ' ')
+    while ( nLastPos < aTokenString.getLength() && aTokenString[nLastPos] == ' ')
         nLastPos++;
 
-    nCheckPos = aTokenString.SearchChar( aDelims.GetBuffer(), nLastPos );
-    while ( nCheckPos != STRING_NOTFOUND && !( aState == TC_FINISHED || aState == TC_ERROR ) )
+    nCheckPos = helper::indexOfAnyAsciiL(
+        aTokenString, RTL_CONSTASCII_STRINGPARAM(aDelims), nLastPos);
+    while ( nCheckPos != -1 && !( aState == TC_FINISHED || aState == TC_ERROR ) )
     {
-        aPortion = aTokenString.Copy( nLastPos, nCheckPos-nLastPos );
+        aPortion = aTokenString.copy( nLastPos, nCheckPos-nLastPos );
 
-        if ( aTokenString.GetChar( nCheckPos ) == '\\' )
+        if ( aTokenString[nCheckPos] == '\\' )
             nCheckPos++;
 
-        cDelim = aTokenString.GetChar( nCheckPos );
+        cDelim = aTokenString[nCheckPos];
         nCheckPos++;
 
         switch ( aState )
@@ -374,10 +376,11 @@ void TokenInfo::SplitTag( ParserMessageList &rErrorList )
 
         // skip further blanks
         if ( cDelim == ' ' && aState != TC_INSIDE_STRING )
-            while ( nLastPos < aTokenString.Len() && aTokenString.GetChar( nLastPos ) == ' ')
+            while ( nLastPos < aTokenString.getLength() && aTokenString[nLastPos] == ' ')
                 nLastPos++;
 
-        nCheckPos = aTokenString.SearchChar( aDelims.GetBuffer(), nLastPos );
+        nCheckPos = helper::indexOfAnyAsciiL(
+            aTokenString, RTL_CONSTASCII_STRINGPARAM(aDelims), nLastPos);
     }
     if ( aState != TC_FINISHED )
     {
@@ -386,19 +389,19 @@ void TokenInfo::SplitTag( ParserMessageList &rErrorList )
     }
 }
 
-sal_Bool TokenInfo::IsPropertyRelevant( const rtl::OString &rName, const String &rValue ) const
+sal_Bool TokenInfo::IsPropertyRelevant( const rtl::OString &rName, const rtl::OUString &rValue ) const
 {
-    if ( aTagName.EqualsAscii( "alt" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("xml-lang")) )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("alt")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("xml-lang")) )
         return sal_False;
-    if ( aTagName.EqualsAscii( "ahelp" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("visibility")) && rValue.EqualsAscii("visible") )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ahelp")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("visibility")) && rValue.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("visible")) )
         return sal_False;
-    if ( aTagName.EqualsAscii( "image" ) && (rName.equalsL(RTL_CONSTASCII_STRINGPARAM("width")) || rName.equalsL(RTL_CONSTASCII_STRINGPARAM("height"))) )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("image")) && (rName.equalsL(RTL_CONSTASCII_STRINGPARAM("width")) || rName.equalsL(RTL_CONSTASCII_STRINGPARAM("height"))) )
         return sal_False;
 
     return sal_True;
 }
 
-sal_Bool TokenInfo::IsPropertyValueValid( const rtl::OString &rName, const String &rValue ) const
+sal_Bool TokenInfo::IsPropertyValueValid( const rtl::OString &rName, const rtl::OUString &rValue ) const
 {
 /*  removed due to i56740
     if ( aTagName.EqualsAscii( "switchinline" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("select")) )
@@ -407,28 +410,28 @@ sal_Bool TokenInfo::IsPropertyValueValid( const rtl::OString &rName, const Strin
                rValue.EqualsAscii("appl") ||
                rValue.EqualsAscii("distrib");
     } */
-    if ( aTagName.EqualsAscii( "caseinline" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("select")) )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("caseinline")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("select")) )
     {
-        return /*!rValue.EqualsAscii("OS2") &&  removed due to i56740 */
-               !rValue.EqualsAscii("");
+        return !rValue.isEmpty();
     }
 
     // we don't know any better so we assume it to be OK
     return sal_True;
 }
 
-sal_Bool TokenInfo::IsPropertyInvariant( const rtl::OString &rName, const String &rValue ) const
+sal_Bool TokenInfo::IsPropertyInvariant( const rtl::OString &rName, const rtl::OUString &rValue ) const
 {
-    if ( aTagName.EqualsAscii( "link" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("name")) )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("link")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("name")) )
         return sal_False;
-    if ( aTagName.EqualsAscii( "link" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("href")) )
+    if ( aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("link")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("href")) )
     {   // check for external reference
-        if (  rValue.Copy( 0, 5 ).EqualsIgnoreCaseAscii( "http:" )
-           || rValue.Copy( 0, 6 ).EqualsIgnoreCaseAscii( "https:" )
-           || rValue.Copy( 0, 4 ).EqualsIgnoreCaseAscii( "ftp:" ) )
-            return sal_False;
-        else
-            return sal_True;
+        return
+            !(rValue.matchIgnoreAsciiCaseAsciiL(
+                  RTL_CONSTASCII_STRINGPARAM("http:"))
+              || rValue.matchIgnoreAsciiCaseAsciiL(
+                  RTL_CONSTASCII_STRINGPARAM("https:"))
+              || rValue.matchIgnoreAsciiCaseAsciiL(
+                  RTL_CONSTASCII_STRINGPARAM("ftp:")));
     }
     return sal_True;
 }
@@ -436,12 +439,12 @@ sal_Bool TokenInfo::IsPropertyInvariant( const rtl::OString &rName, const String
 sal_Bool TokenInfo::IsPropertyFixable( const rtl::OString &rName ) const
 {
     // name everything that is allowed to be fixed automatically here
-    if ( (aTagName.EqualsAscii( "ahelp" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("hid")))
-      || (aTagName.EqualsAscii( "link" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("href")))
-      || (aTagName.EqualsAscii( "alt" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")))
-      || (aTagName.EqualsAscii( "variable" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")))
-      || (aTagName.EqualsAscii( "image" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("src")))
-      || (aTagName.EqualsAscii( "image" ) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")) ))
+    if ( (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("ahelp")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("hid")))
+         || (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("link")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("href")))
+         || (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("alt")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")))
+         || (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("variable")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")))
+         || (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("image")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("src")))
+         || (aTagName.equalsAsciiL(RTL_CONSTASCII_STRINGPARAM("image")) && rName.equalsL(RTL_CONSTASCII_STRINGPARAM("id")) ))
         return sal_True;
     return sal_False;
 }
@@ -455,7 +458,7 @@ sal_Bool TokenInfo::MatchesTranslation( TokenInfo& rInfo, sal_Bool bGenErrors, P
     if ( nId != rInfo.nId )
         return sal_False;
 
-    if ( !aTagName.Equals( rInfo.aTagName ) )
+    if ( aTagName != rInfo.aTagName )
         return sal_False;
 
     // If one of the tags has formating errors already it does make no sense to check here, so return right away
@@ -471,7 +474,7 @@ sal_Bool TokenInfo::MatchesTranslation( TokenInfo& rInfo, sal_Bool bGenErrors, P
             {
                 if ( IsPropertyInvariant( iProp->first, iProp->second ) )
                 {
-                    if ( !rInfo.aProperties.find( iProp->first )->second.Equals( iProp->second ) )
+                    if ( rInfo.aProperties.find( iProp->first )->second != iProp->second )
                     {
                         if ( bGenErrors )
                         {
@@ -518,12 +521,12 @@ sal_Bool TokenInfo::MatchesTranslation( TokenInfo& rInfo, sal_Bool bGenErrors, P
     return sal_True;
 }
 
-String TokenInfo::GetTagName() const
+rtl::OUString TokenInfo::GetTagName() const
 {
     return aTagName;
 }
 
-String TokenInfo::MakeTag() const
+rtl::OUString TokenInfo::MakeTag() const
 {
     String aRet;
     aRet.AppendAscii("\\<");
@@ -574,7 +577,7 @@ void ParserMessageList::clear()
 
 struct Tag
 {
-    String GetName() const { return String::CreateFromAscii( pName ); };
+    rtl::OUString GetName() const { return rtl::OUString::createFromAscii( pName ); };
     const char* pName;
     TokenId nTag;
 };
@@ -662,11 +665,11 @@ SimpleParser::SimpleParser()
 {
 }
 
-void SimpleParser::Parse( String PaSource )
+void SimpleParser::Parse( rtl::OUString const & PaSource )
 {
     aSource = PaSource;
     nPos = 0;
-    aLastToken.Erase();
+    aLastToken = rtl::OUString();
     aNextTag = TokenInfo( TAG_NOMORETAGS, TOK_INVALIDPOS );
     aTokenList.clear();
 };
@@ -683,18 +686,21 @@ TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList )
     else
     {
         aLastToken = GetNextTokenString( rErrorList, nTokenStartPos );
-        if ( aLastToken.Len() == 0 )
+        if ( aLastToken.isEmpty() )
             return TokenInfo( TAG_NOMORETAGS, TOK_INVALIDPOS );
 
         // do we have a \< ... \> style tag?
-        if ( aLastToken.Copy(0,2).EqualsAscii( "\\<" ) )
+        if (aLastToken.matchAsciiL(RTL_CONSTASCII_STRINGPARAM("\\<")))
         {
             // check for paired \" \"
             bool bEven = true;
-            sal_uInt16 nQuotePos = 0;
-            sal_uInt16 nQuotedQuotesPos = aLastToken.SearchAscii( "\\\"" );
-            sal_uInt16 nQuotedBackPos = aLastToken.SearchAscii( "\\\\" );    // this is only to kick out quoted backslashes
-            while ( nQuotedQuotesPos != STRING_NOTFOUND )
+            sal_Int32 nQuotePos = 0;
+            sal_Int32 nQuotedQuotesPos =
+                aLastToken.indexOfAsciiL(RTL_CONSTASCII_STRINGPARAM("\\\""));
+            sal_Int32 nQuotedBackPos = aLastToken.indexOfAsciiL(
+                RTL_CONSTASCII_STRINGPARAM("\\\\"));
+                // this is only to kick out quoted backslashes
+            while (nQuotedQuotesPos != -1)
             {
                 if ( nQuotedBackPos <= nQuotedQuotesPos )
                     nQuotePos = nQuotedBackPos+2;
@@ -703,8 +709,11 @@ TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList )
                     nQuotePos = nQuotedQuotesPos+2;
                     bEven = !bEven;
                 }
-                nQuotedQuotesPos = aLastToken.SearchAscii( "\\\"", nQuotePos );
-                nQuotedBackPos = aLastToken.SearchAscii( "\\\\", nQuotePos );    // this is only to kick out quoted backslashes
+                nQuotedQuotesPos = aLastToken.indexOfAsciiL(
+                    RTL_CONSTASCII_STRINGPARAM("\\\""), nQuotePos);
+                nQuotedBackPos = aLastToken.indexOfAsciiL(
+                    RTL_CONSTASCII_STRINGPARAM("\\\\"), nQuotePos);
+                    // this is only to kick out quoted backslashes
             }
             if ( !bEven )
             {
@@ -712,19 +721,18 @@ TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList )
             }
 
             // check if we have an end-tag or a start-tag
-            sal_uInt16 nNonBlankStartPos,nNonBlankEndPos;
-            nNonBlankStartPos = 2;
-            while ( aLastToken.GetChar(nNonBlankStartPos) == ' ' )
+            sal_Int32 nNonBlankStartPos = 2;
+            while (aLastToken[nNonBlankStartPos] == ' ')
                 nNonBlankStartPos++;
-            if ( aLastToken.GetChar(nNonBlankStartPos) == '/' )
+            if (aLastToken[nNonBlankStartPos] == '/')
                 aResult = TokenInfo( TAG_COMMONEND, nTokenStartPos, aLastToken, rErrorList );
             else
             {
                 aResult = TokenInfo( TAG_COMMONSTART, nTokenStartPos, aLastToken, rErrorList );
-                nNonBlankEndPos = aLastToken.Len() -3;
-                while ( aLastToken.GetChar(nNonBlankEndPos) == ' ' )
+                sal_Int32 nNonBlankEndPos = aLastToken.getLength() - 3;
+                while (aLastToken[nNonBlankEndPos] == ' ')
                     nNonBlankEndPos--;
-                if ( aLastToken.GetChar( nNonBlankEndPos ) == '/' )
+                if (aLastToken[nNonBlankEndPos] == '/')
                     aNextTag = TokenInfo( TAG_COMMONEND, nTokenStartPos, String::CreateFromAscii("\\</").Append(aResult.GetTagName()).AppendAscii("\\>"), rErrorList );
             }
         }
@@ -744,15 +752,19 @@ TokenInfo SimpleParser::GetNextToken( ParserMessageList &rErrorList )
     return aResult;
 }
 
-String SimpleParser::GetNextTokenString( ParserMessageList &rErrorList, sal_uInt16 &rTagStartPos )
+rtl::OUString SimpleParser::GetNextTokenString( ParserMessageList &rErrorList, sal_uInt16 &rTagStartPos )
 {
-    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
+    sal_Int32 nStyle2StartPos = aSource.indexOfAsciiL(
+        RTL_CONSTASCII_STRINGPARAM("$["), nPos );
+    sal_Int32 nStyle3StartPos = aSource.indexOfAsciiL(
+        RTL_CONSTASCII_STRINGPARAM("\\<"), nPos);
+    sal_Int32 nStyle4StartPos = aSource.indexOfAsciiL(
+        RTL_CONSTASCII_STRINGPARAM("\\\\"), nPos);
+        // this is only to kick out quoted backslashes
 
     rTagStartPos = 0;
 
-    if ( STRING_NOTFOUND == nStyle2StartPos && STRING_NOTFOUND == nStyle3StartPos )
+    if (nStyle2StartPos == -1 && nStyle3StartPos == -1)
         return String();  // no more tokens
 
     if ( nStyle4StartPos < nStyle2StartPos && nStyle4StartPos <= nStyle3StartPos )  // <= to make sure \\ is always handled first
@@ -763,42 +775,48 @@ String SimpleParser::GetNextTokenString( ParserMessageList &rErrorList, sal_uInt
 
     if ( nStyle2StartPos < nStyle3StartPos )
     {   // test for $[ ... ] style tokens
-        sal_uInt16 nEndPos = aSource.SearchAscii( "]", nStyle2StartPos);
-        if ( nEndPos == STRING_NOTFOUND )
+        sal_Int32 nEndPos = aSource.indexOf(']', nStyle2StartPos);
+        if (nEndPos == -1)
         {   // Token is incomplete. Skip start and search for better ones
             nPos = nStyle2StartPos +2;
             return GetNextTokenString( rErrorList, rTagStartPos );
         }
         nPos = nEndPos;
         rTagStartPos = nStyle2StartPos;
-        return aSource.Copy( nStyle2StartPos, nEndPos-nStyle2StartPos +1 );
+        return aSource.copy(nStyle2StartPos, nEndPos - nStyle2StartPos + 1);
     }
     else
     {   // test for \< ... \> style tokens
-        sal_uInt16 nEndPos = aSource.SearchAscii( "\\>", nStyle3StartPos);
-        sal_uInt16 nQuotedBackPos = aSource.SearchAscii( "\\\\", nStyle3StartPos );    // this is only to kick out quoted backslashes
-        while ( nQuotedBackPos <= nEndPos && nQuotedBackPos != STRING_NOTFOUND )
+        sal_Int32 nEndPos = aSource.indexOfAsciiL(
+            RTL_CONSTASCII_STRINGPARAM("\\>"), nStyle3StartPos);
+        sal_Int32 nQuotedBackPos = aSource.indexOfAsciiL(
+            RTL_CONSTASCII_STRINGPARAM("\\\\"), nStyle3StartPos);
+            // this is only to kick out quoted backslashes
+        while (nQuotedBackPos <= nEndPos && nQuotedBackPos != -1)
         {
-            nEndPos = aSource.SearchAscii( "\\>", nQuotedBackPos +2);
-            nQuotedBackPos = aSource.SearchAscii( "\\\\", nQuotedBackPos +2 );    // this is only to kick out quoted backslashes
+            nEndPos = aSource.indexOfAsciiL(
+                RTL_CONSTASCII_STRINGPARAM("\\>"), nQuotedBackPos + 2);
+            nQuotedBackPos = aSource.indexOfAsciiL(
+                RTL_CONSTASCII_STRINGPARAM("\\\\"), nQuotedBackPos + 2);
+                // this is only to kick out quoted backslashes
         }
-        if ( nEndPos == STRING_NOTFOUND )
+        if (nEndPos == -1)
         {   // Token is incomplete. Skip start and search for better ones
             nPos = nStyle3StartPos +2;
-            rErrorList.AddError( 24, "Tag Start '\\<' without Tag End '\\>'", TokenInfo( TAG_UNKNOWN_TAG, nStyle3StartPos, aSource.Copy( nStyle3StartPos-10, 20 ) ) );
+            rErrorList.AddError( 24, "Tag Start '\\<' without Tag End '\\>'", TokenInfo( TAG_UNKNOWN_TAG, nStyle3StartPos, aSource.copy(nStyle3StartPos - 10, 20) ) );
             return GetNextTokenString( rErrorList, rTagStartPos );
         }
         // check for paired quoted "    -->   \"sometext\"
 
         nPos = nEndPos;
         rTagStartPos = nStyle3StartPos;
-        return aSource.Copy( nStyle3StartPos, nEndPos-nStyle3StartPos +2 );
+        return aSource.copy(nStyle3StartPos, nEndPos-nStyle3StartPos + 2);
     }
 }
 
-String SimpleParser::GetLexem( TokenInfo const &aToken )
+rtl::OUString SimpleParser::GetLexem( TokenInfo const &aToken )
 {
-    if ( aToken.aTokenString.Len() )
+    if ( !aToken.aTokenString.isEmpty() )
         return aToken.aTokenString;
     else
     {
@@ -815,7 +833,7 @@ TokenParser::TokenParser()
 : pErrorList( NULL )
 {}
 
-void TokenParser::Parse( const String &aCode, ParserMessageList* pList )
+void TokenParser::Parse( const rtl::OUString &aCode, ParserMessageList* pList )
 {
     pErrorList = pList;
 
@@ -1300,7 +1318,7 @@ sal_Bool TokenParser::match( const TokenInfo &aCurrentToken, const TokenInfo &rE
     if ( aCurrentToken.nId == aExpectedToken.nId )
     {
         if ( ( aCurrentToken.nId == TAG_COMMONEND
-               && aCurrentToken.GetTagName().Equals( aExpectedToken.GetTagName() ) )
+               && aCurrentToken.GetTagName() == aExpectedToken.GetTagName() )
              || aCurrentToken.nId != TAG_COMMONEND )
         {
             aTag = aParser.GetNextToken( *pErrorList );
@@ -1310,7 +1328,9 @@ sal_Bool TokenParser::match( const TokenInfo &aCurrentToken, const TokenInfo &rE
 
     if ( aExpectedToken.nId == TAG_COMMONEND )
     {
-        aExpectedToken.aTokenString.Insert( String::CreateFromAscii( "Close tag for " ), 0 );
+        aExpectedToken.aTokenString =
+            rtl::OUString(RTL_CONSTASCII_USTRINGPARAM("Close tag for "))
+            + aExpectedToken.aTokenString;
     }
 
     rtl::OString sTmp(RTL_CONSTASCII_STRINGPARAM("Expected Symbol"));
@@ -1537,7 +1557,7 @@ void LingTest::CheckTestee( GSILine *aTestee, sal_Bool bHasSourceLine, sal_Bool
             if ( aTesteeTokens[ --i ].HasBeenFixed() )
             {
                 bFixesDone = sal_True;
-                aFixedTestee.Replace( aTesteeTokens[ i ].nPos, aTesteeTokens[ i ].aTokenString.Len(), aTesteeTokens[ i ].MakeTag() );
+                aFixedTestee = aFixedTestee.replaceAt( aTesteeTokens[ i ].nPos, aTesteeTokens[ i ].aTokenString.getLength(), aTesteeTokens[ i ].MakeTag() );
             }
         }
         if ( bFixesDone )
diff --git a/l10ntools/source/xmlparse.cxx b/l10ntools/source/xmlparse.cxx
index 3a888b8..7b4fead 100644
--- a/l10ntools/source/xmlparse.cxx
+++ b/l10ntools/source/xmlparse.cxx
@@ -287,7 +287,7 @@ sal_Bool XMLFile::Write( rtl::OString const &aFilename )
     exit( -1 );
 }
 
-void XMLFile::WriteString( ofstream &rStream, const String &sString )
+void XMLFile::WriteString( ofstream &rStream, const rtl::OUString &sString )
 {
     rtl::OString sText(rtl::OUStringToOString(sString, RTL_TEXTENCODING_UTF8));
     rStream << sText.getStr();
@@ -312,7 +312,7 @@ sal_Bool XMLFile::Write( ofstream &rStream , XMLNode *pCur )
                 if ( pElement->GetAttributeList())
                     for ( size_t j = 0; j < pElement->GetAttributeList()->size(); j++ ) {
                         rStream << " ";

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list