[Libreoffice-commits] core.git: 2 commits - include/svx svx/source sw/source

Caolán McNamara caolanm at redhat.com
Tue Sep 3 06:08:47 PDT 2013


 include/svx/svdxcgv.hxx           |    2 
 include/svx/xtable.hxx            |    2 
 svx/source/form/fmpgeimp.cxx      |    5 -
 svx/source/form/tbxform.cxx       |    4 
 svx/source/svdraw/svdxcgv.cxx     |    4 
 svx/source/xoutdev/xtable.cxx     |    4 
 sw/source/filter/ww8/ww8graf.cxx  |  116 ++++++++++++---------------
 sw/source/filter/ww8/ww8par.cxx   |    2 
 sw/source/filter/ww8/ww8par.hxx   |   73 ++++++++---------
 sw/source/filter/ww8/ww8par3.cxx  |   27 +++---
 sw/source/filter/ww8/ww8par5.cxx  |  160 +++++++++++++++++++-------------------
 sw/source/filter/ww8/ww8scan.cxx  |   16 +--
 sw/source/filter/ww8/ww8scan.hxx  |    2 
 sw/source/filter/ww8/ww8struc.hxx |    1 
 14 files changed, 204 insertions(+), 214 deletions(-)

New commits:
commit f46f23a109a18d0e89d3fab7fed65b50d1c00751
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Sep 3 13:30:35 2013 +0100

    XubString->OUString
    
    Change-Id: I86515dde1c6169531e687701a5ae067de1b6f114
    Reviewed-on: https://gerrit.libreoffice.org/5782
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/include/svx/svdxcgv.hxx b/include/svx/svdxcgv.hxx
index 1817576..b61456a 100644
--- a/include/svx/svdxcgv.hxx
+++ b/include/svx/svdxcgv.hxx
@@ -104,7 +104,7 @@ public:
     // Gueltige Werte fuer nOptions sind SDRINSERT_DONTMARK und
     // SDRINSERT_ADDMARK (siehe svdedtv.hxx).
     virtual sal_Bool    Paste(const SdrModel& rMod, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
-    sal_Bool            Paste(const String& rStr, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
+    sal_Bool            Paste(const OUString& rStr, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
     sal_Bool            Paste(SvStream& rInput, const String& rBaseURL, sal_uInt16 eFormat, const Point& rPos, SdrObjList* pLst=NULL, sal_uInt32 nOptions=0);
 
     sal_Bool            Cut( sal_uIntPtr nFormat = SDR_ANYFORMAT );
diff --git a/include/svx/xtable.hxx b/include/svx/xtable.hxx
index 194547a..e3aff13 100644
--- a/include/svx/xtable.hxx
+++ b/include/svx/xtable.hxx
@@ -222,7 +222,7 @@ public:
     XPropertyEntry* Remove(long nIndex);
 
     XPropertyEntry* Get(long nIndex) const;
-    long GetIndex(const String& rName) const;
+    long GetIndex(const OUString& rName) const;
     Bitmap GetUiBitmap(long nIndex) const;
 
     const String& GetName() const { return maName; }
diff --git a/svx/source/form/fmpgeimp.cxx b/svx/source/form/fmpgeimp.cxx
index 42a01e6..7331739 100644
--- a/svx/source/form/fmpgeimp.cxx
+++ b/svx/source/form/fmpgeimp.cxx
@@ -417,9 +417,8 @@ Reference< XForm >  FmFormPageImpl::getDefaultForm()
         if( pModel->IsUndoEnabled() )
         {
             OUString aStr(SVX_RESSTR(RID_STR_FORM));
-            XubString aUndoStr(SVX_RESSTR(RID_STR_UNDO_CONTAINER_INSERT));
-            aUndoStr.SearchAndReplace(OUString('#'), aStr);
-            pModel->BegUndo(aUndoStr);
+            OUString aUndoStr(SVX_RESSTR(RID_STR_UNDO_CONTAINER_INSERT));
+            pModel->BegUndo(aUndoStr.replaceFirst("'#'", aStr));
         }
 
         try
diff --git a/svx/source/form/tbxform.cxx b/svx/source/form/tbxform.cxx
index c3c1b0b..36763c1 100644
--- a/svx/source/form/tbxform.cxx
+++ b/svx/source/form/tbxform.cxx
@@ -407,11 +407,11 @@ void SvxFmTbxCtlRecTotal::StateChanged( sal_uInt16 nSID, SfxItemState eState, co
     if (GetSlotId() != SID_FM_RECORD_TOTAL)
         return;
 
-    XubString aText;
+    OUString aText;
     if (pState)
         aText = ((SfxStringItem*)pState)->GetValue();
     else
-        aText = '?';
+        aText = "?";
 
     pFixedText->SetText( aText );
     pFixedText->Update();
diff --git a/svx/source/svdraw/svdxcgv.cxx b/svx/source/svdraw/svdxcgv.cxx
index 5359d57..e690c20 100644
--- a/svx/source/svdraw/svdxcgv.cxx
+++ b/svx/source/svdraw/svdxcgv.cxx
@@ -125,9 +125,9 @@ sal_Bool SdrExchangeView::ImpGetPasteLayer(const SdrObjList* pObjList, SdrLayerI
     return bRet;
 }
 
-sal_Bool SdrExchangeView::Paste(const XubString& rStr, const Point& rPos, SdrObjList* pLst, sal_uInt32 nOptions)
+sal_Bool SdrExchangeView::Paste(const OUString& rStr, const Point& rPos, SdrObjList* pLst, sal_uInt32 nOptions)
 {
-    if(!rStr.Len())
+    if (rStr.isEmpty())
         return sal_False;
 
     Point aPos(rPos);
diff --git a/svx/source/xoutdev/xtable.cxx b/svx/source/xoutdev/xtable.cxx
index d020410..eca37ed 100644
--- a/svx/source/xoutdev/xtable.cxx
+++ b/svx/source/xoutdev/xtable.cxx
@@ -161,7 +161,7 @@ XPropertyEntry* XPropertyList::Get( long nIndex ) const
     return ( (size_t)nIndex < maList.size() ) ? maList[ nIndex ] : NULL;
 }
 
-long XPropertyList::GetIndex(const XubString& rName) const
+long XPropertyList::GetIndex(const OUString& rName) const
 {
     if( mbListDirty )
     {
@@ -170,7 +170,7 @@ long XPropertyList::GetIndex(const XubString& rName) const
     }
 
     for( long i = 0, n = maList.size(); i < n; ++i ) {
-        if ( maList[ i ]->GetName() == rName ) {
+        if (rName.equals(maList[ i ]->GetName())) {
             return i;
         }
     }
commit 2564c5bbe4acd3f29530b056cef3f6e8ecb6194c
Author: Matteo Casalin <matteo.casalin at yahoo.com>
Date:   Tue Sep 3 10:13:07 2013 +0200

    String to OUString
    
    Change-Id: I41bda1a4d37bff782a51d07e36d471df2d6b421b
    Reviewed-on: https://gerrit.libreoffice.org/5776
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/sw/source/filter/ww8/ww8graf.cxx b/sw/source/filter/ww8/ww8graf.cxx
index a74e9f5..294dd95 100644
--- a/sw/source/filter/ww8/ww8graf.cxx
+++ b/sw/source/filter/ww8/ww8graf.cxx
@@ -525,40 +525,35 @@ void SwWW8ImplReader::InsertTxbxStyAttrs( SfxItemSet& rS, sal_uInt16 nColl )
 
 }
 
-static void lcl_StripFields(String &rString, long &rNewStartCp)
+static void lcl_StripFields(OUString &rString, long &rNewStartCp)
 {
-    for(sal_uInt16 i=0; i < rString.Len(); i++)
+    sal_Int32 nStartPos = 0;
+    for (;;)
     {
-        if( 0x13 == rString.GetChar( i ) )
+        nStartPos = rString.indexOf(0x13, nStartPos);
+        if (nStartPos<0)
+            return;
+
+        const sal_Unicode cStops[] = {0x14, 0x15, 0};
+        const sal_Int32 nStopPos = comphelper::string::indexOfAny(rString, cStops, nStartPos);
+        if (nStopPos<0)
         {
-            do
-            {
-                rString.Erase( i, 1 );
-                rNewStartCp++;
-            }
-            while(              rString.Len()
-                    && (   i  < rString.Len())
-                    && (0x14 != rString.GetChar( i ) )
-                    && (0x15 != rString.GetChar( i ) ) );
-            if( rString.Len() )
-            {
-                if( 0x14 == rString.GetChar( i ) )
-                {
-                    rString.Erase( i, 1 );
-                    rNewStartCp++;
-                    do
-                    {
-                        i++;
-                    }
-                    while(              rString.Len()
-                            && (   i  < rString.Len())
-                            && (0x15 != rString.GetChar( i ) ) );
-                    if( i < rString.Len() )
-                        rString.Erase( i, 1 );
-                }
-                else if( 0x15 == rString.GetChar( i ) )
-                    rString.Erase( i, 1 );
-            }
+            rNewStartCp += rString.getLength()-nStartPos;
+            rString = rString.copy(0, nStartPos);
+            return;
+        }
+
+        const bool was0x14 = rString[nStopPos]==0x14;
+        rString = rString.replaceAt(nStartPos, nStopPos+1-nStartPos, "");
+        rNewStartCp += nStopPos-nStartPos;
+
+        if (was0x14)
+        {
+            ++rNewStartCp;
+            nStartPos = rString.indexOf(0x15, nStartPos);
+            if (nStartPos<0)
+                return;
+            rString = rString.replaceAt(nStartPos, 1, "");
         }
     }
 }
@@ -586,7 +581,7 @@ public:
     long GetStartPos() const {return mnStartPos;}
     long GetEndPos() const {return mnEndPos;}
     const String &GetURL() const {return msURL;}
-    void Adjust(xub_StrLen nAdjust)
+    void Adjust(sal_Int32 nAdjust)
     {
         mnStartPos-=nAdjust;
         mnEndPos-=nAdjust;
@@ -767,12 +762,12 @@ void SwWW8ImplReader::InsertAttrsAsDrawingAttrs(long nStartCp, long nEndCp,
     {
         ESelection aSel(GetESelection(aIter->GetStartPos()-nStartCp,
             aIter->GetEndPos()-nStartCp));
-        String aString(mpDrawEditEngine->GetText(aSel));
-        xub_StrLen nOrigLen = aString.Len();
+        OUString aString(mpDrawEditEngine->GetText(aSel));
+        const sal_Int32 nOrigLen = aString.getLength();
         long nDummy(0);
         lcl_StripFields(aString, nDummy);
 
-        xub_StrLen nChanged;
+        sal_Int32 nChanged;
         if (aIter->GetURL().Len())
         {
             SvxURLField aURL(aIter->GetURL(), aString,
@@ -783,7 +778,7 @@ void SwWW8ImplReader::InsertAttrsAsDrawingAttrs(long nStartCp, long nEndCp,
         else
         {
             mpDrawEditEngine->QuickInsertText(aString, aSel);
-            nChanged = nOrigLen - aString.Len();
+            nChanged = nOrigLen - aString.getLength();
         }
         for (myIter aIter2 = aIter+1; aIter2 != aEnd; ++aIter2)
             aIter2->Adjust(nChanged);
@@ -894,33 +889,32 @@ bool SwWW8ImplReader::GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp,
 
 // TxbxText() holt aus WW-File den Text und gibt diesen und den Anfangs- und
 // den um -2 (bzw. -1 bei Ver8) korrigierten End-Cp zurueck
-bool SwWW8ImplReader::GetRangeAsDrawingString(String& rString, long nStartCp, long nEndCp, ManTypes eType)
+bool SwWW8ImplReader::GetRangeAsDrawingString(OUString& rString, long nStartCp, long nEndCp, ManTypes eType)
 {
     WW8_CP nOffset = pWwFib->GetBaseCp(eType);
 
-    bool bOk = false;
     OSL_ENSURE(nStartCp <= nEndCp, "+Wo ist der Grafik-Text (7) ?");
     if (nStartCp == nEndCp)
-        rString.Erase();      // leerer String: durchaus denkbar!
+        rString = OUString();      // leerer String: durchaus denkbar!
     else if (nStartCp < nEndCp)
     {
         // den Text einlesen: kann sich ueber mehrere Pieces erstrecken!!!
-        sal_uInt16 nLen = pSBase->WW8ReadString(*pStrm, rString,
+        const sal_Int32 nLen = pSBase->WW8ReadString(*pStrm, rString,
             nStartCp + nOffset, nEndCp - nStartCp, GetCurrentCharSet());
         OSL_ENSURE(nLen, "+Wo ist der Grafik-Text (8) ?");
-        if (nLen)
+        if (nLen>0)
         {
-            bOk = true;
-            if( 0x0d == rString.GetChar(nLen - 1) )
-                rString.Erase(nLen - 1);
+            if( rString[nLen-1]==0x0d )
+                rString = rString.copy(0, nLen-1);
 
-            rString.SearchAndReplaceAll( 0xb, 0xa );
+            rString = rString.replace( 0xb, 0xa );
+            return true;
         }
     }
-    return bOk;
+    return false;
 }
 
-OutlinerParaObject* SwWW8ImplReader::ImportAsOutliner(String &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType)
+OutlinerParaObject* SwWW8ImplReader::ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType)
 {
     OutlinerParaObject* pRet = 0;
 
@@ -951,14 +945,12 @@ OutlinerParaObject* SwWW8ImplReader::ImportAsOutliner(String &rString, WW8_CP nS
         //Strip out fields, leaving the result
         long nDummy(0);
         lcl_StripFields(rString, nDummy);
-        OUString aString(rString);
         //Strip out word's special characters for the simple string
-        aString = comphelper::string::remove(aString, 0x1);
-        aString = comphelper::string::remove(aString, 0x5);
-        aString = comphelper::string::remove(aString, 0x8);
-        aString = aString.replaceAll(OUString("\007\007"), OUString("\007\012"));
-        aString = aString.replace(0x7, ' ');
-        rString = aString;
+        rString = rString.replaceAll(OUString(0x1), "");
+        rString = rString.replaceAll(OUString(0x5), "");
+        rString = rString.replaceAll(OUString(0x8), "");
+        rString = rString.replaceAll("\007\007", "\007\012");
+        rString = rString.replace(0x7, ' ');
     }
 
     return pRet;
@@ -979,7 +971,7 @@ SwFrmFmt* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
 
     rbEraseTextObj = false;
 
-    String aString;
+    OUString aString;
     WW8_CP nStartCp, nEndCp;
     bool bContainsGraphics = false;
     bool bTextWasRead = GetTxbxTextSttEndCp( nStartCp, nEndCp, nTxBxS,
@@ -990,24 +982,20 @@ SwFrmFmt* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
     if( pObjSiz )
         mpDrawEditEngine->SetPaperSize( *pObjSiz );
 
-    String aOrigString(aString);
+    const OUString aOrigString(aString);
     if( bTextWasRead )
     {
         long nNewStartCp = nStartCp;
         lcl_StripFields(aString, nNewStartCp);
 
-        if (1 != aString.Len())
+        if (aString.getLength()!=1)
         {
-            if ( (STRING_NOTFOUND != aString.Search(0x1)) ||
-                (STRING_NOTFOUND != aString.Search(0x8)) )
-            {
-                bContainsGraphics = true;
-            }
+            bContainsGraphics = aString.indexOf(0x1)<0 || aString.indexOf(0x8)<0;
         }
         else        // May be a single graphic or object
         {
             bool bDone = true;
-            switch( aString.GetChar(0) )
+            switch( aString[0] )
             {
                 case 0x1:
                     if (!pbTestTxbxContainsText)
@@ -1133,7 +1121,7 @@ SwFrmFmt* SwWW8ImplReader::InsertTxbxText(SdrTextObj* pTextObj,
                         MapWrapIntoFlyFmt(pRecord, pFlyFmt);
                     }
                 }
-                aString.Erase();
+                aString = OUString();
                 rbEraseTextObj = (0 != pFlyFmt);
             }
         }
diff --git a/sw/source/filter/ww8/ww8par.cxx b/sw/source/filter/ww8/ww8par.cxx
index 729ad84..108bbcc 100644
--- a/sw/source/filter/ww8/ww8par.cxx
+++ b/sw/source/filter/ww8/ww8par.cxx
@@ -1862,7 +1862,7 @@ long SwWW8ImplReader::Read_And(WW8PLCFManResult* pRes)
 
     DateTime aDate = msfilter::util::DTTM2DateTime(nDateTime);
 
-    String sTxt;
+    OUString sTxt;
     OutlinerParaObject *pOutliner = ImportAsOutliner( sTxt, pRes->nCp2OrIdx,
         pRes->nCp2OrIdx + pRes->nMemLen, MAN_AND );
 
diff --git a/sw/source/filter/ww8/ww8par.hxx b/sw/source/filter/ww8/ww8par.hxx
index 4409fdb..5c74252 100644
--- a/sw/source/filter/ww8/ww8par.hxx
+++ b/sw/source/filter/ww8/ww8par.hxx
@@ -21,6 +21,7 @@
 #define _WW8PAR_HXX
 
 #include <tools/string.hxx>
+#include "rtl/ustring.hxx"
 #include <filter/msfilter/msdffimp.hxx>
 #include <editeng/frmdir.hxx>
 #include <fltshell.hxx>
@@ -1493,8 +1494,8 @@ private:
 
     bool GetTxbxTextSttEndCp(WW8_CP& rStartCp, WW8_CP& rEndCp, sal_uInt16 nTxBxS,
         sal_uInt16 nSequence);
-    bool GetRangeAsDrawingString(String& rString, long StartCp, long nEndCp, ManTypes eType);
-    OutlinerParaObject* ImportAsOutliner(String &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType);
+    bool GetRangeAsDrawingString(OUString& rString, long StartCp, long nEndCp, ManTypes eType);
+    OutlinerParaObject* ImportAsOutliner(OUString &rString, WW8_CP nStartCp, WW8_CP nEndCp, ManTypes eType);
     SwFrmFmt* InsertTxbxText(SdrTextObj* pTextObj, Size* pObjSiz,
         sal_uInt16 nTxBxS, sal_uInt16 nSequence, long nPosCp, SwFrmFmt* pFlyFmt,
         bool bMakeSdrGrafObj, bool& rbEraseTextObj,
@@ -1733,51 +1734,51 @@ public:     // eigentlich private, geht aber leider nur public
     String GetMappedBookmark(const String &rOrigName);
 
     // Felder
-    eF_ResT Read_F_Input(WW8FieldDesc*, String& rStr);
-    eF_ResT Read_F_InputVar(WW8FieldDesc*, String& rStr);
-    eF_ResT Read_F_ANumber( WW8FieldDesc*, String& );
-    eF_ResT Read_F_DocInfo( WW8FieldDesc* pF, String& rStr );
-    eF_ResT Read_F_Author( WW8FieldDesc*, String& );
-    eF_ResT Read_F_TemplName( WW8FieldDesc*, String& );
-    short GetTimeDatePara(String& rStr, sal_uInt32& rFormat, sal_uInt16 &rLang,
+    eF_ResT Read_F_Input(WW8FieldDesc*, OUString& rStr);
+    eF_ResT Read_F_InputVar(WW8FieldDesc*, OUString& rStr);
+    eF_ResT Read_F_ANumber( WW8FieldDesc*, OUString& );
+    eF_ResT Read_F_DocInfo( WW8FieldDesc* pF, OUString& rStr );
+    eF_ResT Read_F_Author( WW8FieldDesc*, OUString& );
+    eF_ResT Read_F_TemplName( WW8FieldDesc*, OUString& );
+    short GetTimeDatePara(OUString& rStr, sal_uInt32& rFormat, sal_uInt16 &rLang,
         int nWhichDefault, bool bHijri = false);
     bool ForceFieldLanguage(SwField &rFld, sal_uInt16 nLang);
-    eF_ResT Read_F_DateTime( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_FileName( WW8FieldDesc*, String& rStr);
-    eF_ResT Read_F_Anz( WW8FieldDesc* pF, String& );
-    eF_ResT Read_F_CurPage( WW8FieldDesc*, String& );
-    eF_ResT Read_F_Ref( WW8FieldDesc* pF, String& );
+    eF_ResT Read_F_DateTime( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_FileName( WW8FieldDesc*, OUString& rStr);
+    eF_ResT Read_F_Anz( WW8FieldDesc* pF, OUString& );
+    eF_ResT Read_F_CurPage( WW8FieldDesc*, OUString& );
+    eF_ResT Read_F_Ref( WW8FieldDesc* pF, OUString& );
 
-    eF_ResT Read_F_Set( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_PgRef( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_NoteReference( WW8FieldDesc* pF, String& rStr );
+    eF_ResT Read_F_Set( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_PgRef( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_NoteReference( WW8FieldDesc* pF, OUString& rStr );
 
-    eF_ResT Read_F_Tox( WW8FieldDesc* pF, String& rStr );
+    eF_ResT Read_F_Tox( WW8FieldDesc* pF, OUString& rStr );
     bool AddExtraOutlinesAsExtraStyles(SwTOXBase& rBase);
-    eF_ResT Read_F_Symbol( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_Embedd( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr);
-    eF_ResT Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr );
-    eF_ResT Read_F_FormListBox( WW8FieldDesc* pF, String& rStr);
+    eF_ResT Read_F_Symbol( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_Embedd( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_FormTextBox( WW8FieldDesc* pF, OUString& rStr);
+    eF_ResT Read_F_FormCheckBox( WW8FieldDesc* pF, OUString& rStr );
+    eF_ResT Read_F_FormListBox( WW8FieldDesc* pF, OUString& rStr);
     com::sun::star::awt::Size MiserableDropDownFormHack(const String &rString,
         com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet>&
         rPropSet);
 
-    eF_ResT Read_F_Macro( WW8FieldDesc*, String& rStr);
-    eF_ResT Read_F_DBField( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_DBNext( WW8FieldDesc*, String& );
-    eF_ResT Read_F_DBNum( WW8FieldDesc*, String& );
-    eF_ResT Read_F_Equation( WW8FieldDesc*, String& );
+    eF_ResT Read_F_Macro( WW8FieldDesc*, OUString& rStr);
+    eF_ResT Read_F_DBField( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_DBNext( WW8FieldDesc*, OUString& );
+    eF_ResT Read_F_DBNum( WW8FieldDesc*, OUString& );
+    eF_ResT Read_F_Equation( WW8FieldDesc*, OUString& );
     void Read_SubF_Ruby( WW8ReadFieldParams& rReadParam);
     void Read_SubF_Combined( WW8ReadFieldParams& rReadParam);
-    eF_ResT Read_F_IncludePicture( WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_IncludeText(    WW8FieldDesc*, String& rStr );
-    eF_ResT Read_F_Seq( WW8FieldDesc*, String& rStr );
-
-    eF_ResT Read_F_OCX(WW8FieldDesc*, String&);
-    eF_ResT Read_F_Hyperlink(WW8FieldDesc*, String& rStr);
-        eF_ResT Read_F_Shape(WW8FieldDesc* pF, String& rStr);
-    eF_ResT Read_F_HTMLControl( WW8FieldDesc* pF, String& rStr);
+    eF_ResT Read_F_IncludePicture( WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_IncludeText(    WW8FieldDesc*, OUString& rStr );
+    eF_ResT Read_F_Seq( WW8FieldDesc*, OUString& rStr );
+
+    eF_ResT Read_F_OCX(WW8FieldDesc*, OUString&);
+    eF_ResT Read_F_Hyperlink(WW8FieldDesc*, OUString& rStr);
+        eF_ResT Read_F_Shape(WW8FieldDesc* pF, OUString& rStr);
+    eF_ResT Read_F_HTMLControl( WW8FieldDesc* pF, OUString& rStr);
 
 
     void DeleteFormImpl();
diff --git a/sw/source/filter/ww8/ww8par3.cxx b/sw/source/filter/ww8/ww8par3.cxx
index 068bca9..fea72bf 100644
--- a/sw/source/filter/ww8/ww8par3.cxx
+++ b/sw/source/filter/ww8/ww8par3.cxx
@@ -94,7 +94,7 @@ using namespace sw::mark;
 //-----------------------------------------
 
 //cmc, OCX i.e. word 97 form controls
-eF_ResT SwWW8ImplReader::Read_F_OCX( WW8FieldDesc*, String& )
+eF_ResT SwWW8ImplReader::Read_F_OCX( WW8FieldDesc*, OUString& )
 {
     if( bObj && nPicLocFc )
         nObjLocFc = nPicLocFc;
@@ -102,11 +102,11 @@ eF_ResT SwWW8ImplReader::Read_F_OCX( WW8FieldDesc*, String& )
     return FLD_TEXT;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_FormTextBox( WW8FieldDesc* pF, OUString& rStr )
 {
     WW8FormulaEditBox aFormula(*this);
 
-    if (0x01 == rStr.GetChar(writer_cast<xub_StrLen>(pF->nLCode-1))) {
+    if (rStr[pF->nLCode-1]==0x01) {
         ImportFormulaControl(aFormula,pF->nSCode+pF->nLCode-1, WW8_CT_EDIT);
     }
 
@@ -167,22 +167,24 @@ eF_ResT SwWW8ImplReader::Read_F_FormTextBox( WW8FieldDesc* pF, String& rStr )
     }
 }
 
-eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, OUString& rStr )
 {
     WW8FormulaCheckBox aFormula(*this);
 
     if (!pFormImpl)
         pFormImpl = new SwMSConvertControls(mpDocShell, pPaM);
 
-    if (0x01 == rStr.GetChar(writer_cast<xub_StrLen>(pF->nLCode-1)))
+    if (rStr[pF->nLCode-1]==0x01)
         ImportFormulaControl(aFormula,pF->nSCode+pF->nLCode-1, WW8_CT_CHECKBOX);
     const SvtFilterOptions& rOpt = SvtFilterOptions::Get();
     sal_Bool bUseEnhFields = rOpt.IsUseEnhancedFields();
 
-    if (!bUseEnhFields) {
-    pFormImpl->InsertFormula(aFormula);
-    return FLD_OK;
-    } else {
+    if (!bUseEnhFields)
+    {
+        pFormImpl->InsertFormula(aFormula);
+        return FLD_OK;
+    }
+
     String aBookmarkName;
     WW8PLCFx_Book* pB = pPlcxMan->GetBook();
     if (pB!=NULL) {
@@ -222,14 +224,13 @@ eF_ResT SwWW8ImplReader::Read_F_FormCheckBox( WW8FieldDesc* pF, String& rStr )
         }
     }
     return FLD_OK;
-    }
 }
 
-eF_ResT SwWW8ImplReader::Read_F_FormListBox( WW8FieldDesc* pF, String& rStr)
+eF_ResT SwWW8ImplReader::Read_F_FormListBox( WW8FieldDesc* pF, OUString& rStr)
 {
     WW8FormulaListBox aFormula(*this);
 
-    if (0x01 == rStr.GetChar(writer_cast<xub_StrLen>(pF->nLCode-1)))
+    if (rStr[pF->nLCode-1]==0x01)
         ImportFormulaControl(aFormula,pF->nSCode+pF->nLCode-1, WW8_CT_DROPDOWN);
 
     const SvtFilterOptions& rOpt = SvtFilterOptions::Get();
@@ -298,7 +299,7 @@ eF_ResT SwWW8ImplReader::Read_F_FormListBox( WW8FieldDesc* pF, String& rStr)
     }
 }
 
-eF_ResT SwWW8ImplReader::Read_F_HTMLControl(WW8FieldDesc*, String&)
+eF_ResT SwWW8ImplReader::Read_F_HTMLControl(WW8FieldDesc*, OUString&)
 {
     if( bObj && nPicLocFc )
         nObjLocFc = nPicLocFc;
diff --git a/sw/source/filter/ww8/ww8par5.cxx b/sw/source/filter/ww8/ww8par5.cxx
index c4383ed..8734aee 100644
--- a/sw/source/filter/ww8/ww8par5.cxx
+++ b/sw/source/filter/ww8/ww8par5.cxx
@@ -323,7 +323,7 @@ long SwWW8ImplReader::Read_Book(WW8PLCFManResult*)
 
     //ToUpper darf auf keinen Fall gemacht werden, weil der Bookmark- name ein Hyperlink-Ziel sein kann!
 
-    String aVal;
+    OUString aVal;
     if( SwFltGetFlag( nFieldFlags, SwFltControlStack::BOOK_TO_VAR_REF ) )
     {
         // Fuer UEbersetzung Bookmark -> Variable setzen
@@ -346,18 +346,18 @@ long SwWW8ImplReader::Read_Book(WW8PLCFManResult*)
         bool bAllowCr = SwFltGetFlag(nFieldFlags,
             SwFltControlStack::ALLOW_FLD_CR) ? true : false;
 
-        sal_Unicode cChar;
-
-        for( xub_StrLen nI = 0;
-                nI < aVal.Len() && aVal.Len() < (MAX_FIELDLEN - 4); ++nI )
+        for( sal_Int32 nI = 0;
+             nI < aVal.getLength() && aVal.getLength() < (MAX_FIELDLEN - 4);
+             ++nI )
         {
-            switch( cChar = aVal.GetChar( nI ) )
+            const sal_Unicode cChar = aVal[nI];
+            switch( cChar )
             {
             case 0x0b:
             case 0x0c:
             case 0x0d:
                 if( bAllowCr )
-                    aVal.SetChar( nI, '\n' ), bSetAsHex = false;
+                    aVal = aVal.replaceAt( nI, 1, "\n" ), bSetAsHex = false;
                 else
                     bSetAsHex = true;
                 break;
@@ -375,17 +375,17 @@ long SwWW8ImplReader::Read_Book(WW8PLCFManResult*)
             if( bSetAsHex )
             {
                 //all Hex-Numbers with \x before
-                String sTmp( sHex );
+                OUString sTmp( sHex );
                 if( cChar < 0x10 )
-                    sTmp += '0';
+                    sTmp += "0";
                 sTmp += OUString::number( cChar, 16 );
-                aVal.Replace( nI, 1 , sTmp );
-                nI += sTmp.Len() - 1;
+                aVal = aVal.replaceAt( nI, 1 , sTmp );
+                nI += sTmp.getLength() - 1;
             }
         }
 
-        if( aVal.Len() > (MAX_FIELDLEN - 4))
-            aVal.Erase( MAX_FIELDLEN - 4 );
+        if ( aVal.getLength() > (MAX_FIELDLEN - 4))
+            aVal = aVal.copy( 0, MAX_FIELDLEN - 4 );
     }
 
     //e.g. inserting bookmark around field result, so we need to put
@@ -525,9 +525,9 @@ static SvxExtNumType GetNumTypeFromName(const String& rStr,
     return eTyp;
 }
 
-static SvxExtNumType GetNumberPara(String& rStr, bool bAllowPageDesc = false)
+static SvxExtNumType GetNumberPara(OUString& rStr, bool bAllowPageDesc = false)
 {
-    String s( FindPara( rStr, '*', '*' ) );     // Ziffernart
+    OUString s( FindPara( rStr, '*', '*' ) );     // Ziffernart
     SvxExtNumType aType = GetNumTypeFromName( s, bAllowPageDesc );
     return aType;
 }
@@ -577,7 +577,7 @@ String GetWordDefaultDateStringAsUS(SvNumberFormatter* pFormatter, sal_uInt16 nL
     return sParams;
 }
 
-short SwWW8ImplReader::GetTimeDatePara(String& rStr, sal_uInt32& rFormat,
+short SwWW8ImplReader::GetTimeDatePara(OUString& rStr, sal_uInt32& rFormat,
     sal_uInt16 &rLang, int nWhichDefault, bool bHijri)
 {
     bool bRTL = false;
@@ -870,7 +870,7 @@ void WW8FieldEntry::SetBookmarkCode(OUString bookmarkCode)
 // Returnwert: Gesamtlaenge des Feldes ( zum UEberlesen )
 long SwWW8ImplReader::Read_Field(WW8PLCFManResult* pRes)
 {
-    typedef eF_ResT (SwWW8ImplReader:: *FNReadField)( WW8FieldDesc*, String& );
+    typedef eF_ResT (SwWW8ImplReader:: *FNReadField)( WW8FieldDesc*, OUString& );
     enum Limits {eMax = 96};
     static const FNReadField aWW8FieldTab[eMax+1] =
     {
@@ -1048,22 +1048,22 @@ long SwWW8ImplReader::Read_Field(WW8PLCFManResult* pRes)
             return aF.nLen;                 // Result nested -> nicht brauchbar
 
         long nOldPos = pStrm->Tell();
-        String aStr;
+        OUString aStr;
         aF.nLCode = pSBase->WW8ReadString( *pStrm, aStr, pPlcxMan->GetCpOfs()+
             aF.nSCode, aF.nLCode, eTextCharSet );
         pStrm->Seek( nOldPos );
 
         // field codes which contain '/' or '.' are not displayed in WinWord
         // skip if it is formula field or found space before. see #i119446, #i119585.
-        const xub_StrLen nDotPos = aStr.Search('.');
-        const xub_StrLen nSlashPos = aStr.Search('/');
-        xub_StrLen nSpacePos = aStr.Search( ' ', 1 );
-        if ( nSpacePos == STRING_NOTFOUND )
-            nSpacePos = aStr.Len();
-
-        if ( !( aStr.EqualsAscii( "=", 1, 1 ) ) &&
-            ((( nDotPos != STRING_NOTFOUND ) && ( nDotPos < nSpacePos )) ||
-            (( nSlashPos != STRING_NOTFOUND ) && ( nSlashPos < nSpacePos ))))
+        const sal_Int32 nDotPos = aStr.indexOf('.');
+        const sal_Int32 nSlashPos = aStr.indexOf('/');
+        sal_Int32 nSpacePos = aStr.indexOf( ' ', 1 );
+        if ( nSpacePos<0 )
+            nSpacePos = aStr.getLength();
+
+        if ( !( aStr.getLength()>1 && aStr[1]=='=') &&
+            (( nDotPos>=0 && nDotPos < nSpacePos ) ||
+             ( nSlashPos>=0 && nSlashPos < nSpacePos )))
             return aF.nLen;
         else
         {
@@ -1080,7 +1080,7 @@ long SwWW8ImplReader::Read_Field(WW8PLCFManResult* pRes)
     else
     {                                   // Lies Feld
         long nOldPos = pStrm->Tell();
-        String aStr;
+        OUString aStr;
         if ( aF.nId == 6 && aF.bCodeNest )
         {
             // TODO Extract the whole code string using the nested codes
@@ -1097,7 +1097,7 @@ long SwWW8ImplReader::Read_Field(WW8PLCFManResult* pRes)
         // Thus, delete character 0x01, which stands for such a graphic.
         if (aF.nId==51) //#i56768# only do it for the MACROBUTTON field, since DropListFields need the 0x01.
         {
-            aStr = comphelper::string::remove(aStr, 0x01);
+            aStr.replaceAll(OUString(0x01), "");
         }
 
         eF_ResT eRes = (this->*aWW8FieldTab[aF.nId])( &aF, aStr );
@@ -1241,7 +1241,7 @@ long SwWW8ImplReader::Read_F_Tag( WW8FieldDesc* pF )
     if( nL > MAX_FIELDLEN )
         nL = MAX_FIELDLEN;                  // MaxLaenge, durch Quoten
                                             // max. 4* so gross
-    String sFTxt;
+    OUString sFTxt;
     nL = pSBase->WW8ReadString( *pStrm, sFTxt,
                                 pPlcxMan->GetCpOfs() + nStart, nL, eStructCharSet);
 
@@ -1259,7 +1259,7 @@ long SwWW8ImplReader::Read_F_Tag( WW8FieldDesc* pF )
 //        normale Felder
 //-----------------------------------------
 
-eF_ResT SwWW8ImplReader::Read_F_Input( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Input( WW8FieldDesc* pF, OUString& rStr )
 {
     String aDef;
     String aQ;
@@ -1309,17 +1309,14 @@ String SwWW8ImplReader::GetFieldResult( WW8FieldDesc* pF )
         nL = MAX_FIELDLEN;                  // MaxLaenge, durch Quoten
                                             // max. 4* so gross
 
-    String sRes;
+    OUString sRes;
     nL = pSBase->WW8ReadString( *pStrm, sRes, pPlcxMan->GetCpOfs() + nStart,
                                 nL, eStructCharSet );
 
     pStrm->Seek( nOldPos );
 
-    //replace CR 0x0D with LF 0x0A
-    sRes.SearchAndReplaceAll(0x0D, 0x0A);
-    //replace VT 0x0B with LF 0x0A
-    sRes.SearchAndReplaceAll(0x0B, 0x0A);
-    return sRes;
+    //replace both CR 0x0D and VT 0x0B with LF 0x0A
+    return sRes.replace(0x0D, 0x0A).replace(0x0B, 0x0A);
 }
 
 /*
@@ -1444,7 +1441,7 @@ String SwWW8ImplReader::GetMappedBookmark(const String &rOrigName)
 }
 
 // "ASK"
-eF_ResT SwWW8ImplReader::Read_F_InputVar( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_InputVar( WW8FieldDesc* pF, OUString& rStr )
 {
     String sOrigName;
     String aQ;
@@ -1501,7 +1498,7 @@ eF_ResT SwWW8ImplReader::Read_F_InputVar( WW8FieldDesc* pF, String& rStr )
 }
 
 // "AUTONR"
-eF_ResT SwWW8ImplReader::Read_F_ANumber( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_ANumber( WW8FieldDesc*, OUString& rStr )
 {
     if( !pNumFldType ){     // 1. Mal
         SwSetExpFieldType aT( &rDoc, OUString("AutoNr"), nsSwGetSetExpType::GSE_SEQ );
@@ -1515,7 +1512,7 @@ eF_ResT SwWW8ImplReader::Read_F_ANumber( WW8FieldDesc*, String& rStr )
 }
 
 // "SEQ"
-eF_ResT SwWW8ImplReader::Read_F_Seq( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Seq( WW8FieldDesc*, OUString& rStr )
 {
     String aSequenceName;
     String aBook;
@@ -1591,7 +1588,7 @@ eF_ResT SwWW8ImplReader::Read_F_Seq( WW8FieldDesc*, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_DocInfo( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_DocInfo( WW8FieldDesc* pF, OUString& rStr )
 {
     sal_uInt16 nSub=0;
     // RegInfoFormat, DefaultFormat fuer DocInfoFelder
@@ -1822,7 +1819,7 @@ eF_ResT SwWW8ImplReader::Read_F_DocInfo( WW8FieldDesc* pF, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_Author( WW8FieldDesc*, String& )
+eF_ResT SwWW8ImplReader::Read_F_Author( WW8FieldDesc*, OUString& )
 {
         // SH: Das SwAuthorField bezeichnet nicht den urspruenglichen
         // Autor, sondern den aktuellen Benutzer, also besser ueber DocInfo
@@ -1833,7 +1830,7 @@ eF_ResT SwWW8ImplReader::Read_F_Author( WW8FieldDesc*, String& )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_TemplName( WW8FieldDesc*, String& )
+eF_ResT SwWW8ImplReader::Read_F_TemplName( WW8FieldDesc*, OUString& )
 {
     SwTemplNameField aFld( (SwTemplNameFieldType*)
                      rDoc.GetSysFldType( RES_TEMPLNAMEFLD ), FF_NAME );
@@ -1843,7 +1840,7 @@ eF_ResT SwWW8ImplReader::Read_F_TemplName( WW8FieldDesc*, String& )
 
 // Sowohl das Datum- wie auch das Uhrzeit-Feld kann fuer Datum, fuer Uhrzeit
 // oder fuer beides benutzt werden.
-eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, OUString& rStr )
 {
     bool bHijri = false;
     WW8ReadFieldParams aReadParam(rStr);
@@ -1906,7 +1903,7 @@ eF_ResT SwWW8ImplReader::Read_F_DateTime( WW8FieldDesc*pF, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_FileName(WW8FieldDesc*, String &rStr)
+eF_ResT SwWW8ImplReader::Read_F_FileName(WW8FieldDesc*, OUString &rStr)
 {
     SwFileNameFormat eType = FF_NAME;
     WW8ReadFieldParams aReadParam(rStr);
@@ -1936,7 +1933,7 @@ eF_ResT SwWW8ImplReader::Read_F_FileName(WW8FieldDesc*, String &rStr)
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_Anz( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Anz( WW8FieldDesc* pF, OUString& rStr )
 {                                               // SeitenZahl - Feld
     sal_uInt16 nSub = DS_PAGE;
     switch ( pF->nId ){
@@ -1950,7 +1947,7 @@ eF_ResT SwWW8ImplReader::Read_F_Anz( WW8FieldDesc* pF, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_CurPage( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_CurPage( WW8FieldDesc*, OUString& rStr )
 {
     // Seitennummer
     SwPageNumberField aFld( (SwPageNumberFieldType*)
@@ -1961,7 +1958,7 @@ eF_ResT SwWW8ImplReader::Read_F_CurPage( WW8FieldDesc*, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_Symbol( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Symbol( WW8FieldDesc*, OUString& rStr )
 {
     //e.g. #i20118#
     String aQ;
@@ -2029,7 +2026,7 @@ eF_ResT SwWW8ImplReader::Read_F_Symbol( WW8FieldDesc*, String& rStr )
 }
 
 // "EINBETTEN"
-eF_ResT SwWW8ImplReader::Read_F_Embedd( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Embedd( WW8FieldDesc*, OUString& rStr )
 {
     String sHost;
 
@@ -2059,7 +2056,7 @@ eF_ResT SwWW8ImplReader::Read_F_Embedd( WW8FieldDesc*, String& rStr )
 
 
 // "SET"
-eF_ResT SwWW8ImplReader::Read_F_Set( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Set( WW8FieldDesc* pF, OUString& rStr )
 {
     String sOrigName;
     String sVal;
@@ -2095,7 +2092,7 @@ eF_ResT SwWW8ImplReader::Read_F_Set( WW8FieldDesc* pF, String& rStr )
 }
 
 // "REF"
-eF_ResT SwWW8ImplReader::Read_F_Ref( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Ref( WW8FieldDesc*, OUString& rStr )
 {                                                       // Reference - Field
     String sOrigBkmName;
     REFERENCEMARK eFormat = REF_CONTENT;
@@ -2169,7 +2166,7 @@ eF_ResT SwWW8ImplReader::Read_F_Ref( WW8FieldDesc*, String& rStr )
 }
 
 // Note Reference - Field
-eF_ResT SwWW8ImplReader::Read_F_NoteReference( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_NoteReference( WW8FieldDesc*, OUString& rStr )
 {
     String aBkmName;
     bool bAboveBelow = false;
@@ -2219,7 +2216,7 @@ eF_ResT SwWW8ImplReader::Read_F_NoteReference( WW8FieldDesc*, String& rStr )
 }
 
 // "SEITENREF"
-eF_ResT SwWW8ImplReader::Read_F_PgRef( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_PgRef( WW8FieldDesc*, OUString& rStr )
 {
     String sOrigName;
     WW8ReadFieldParams aReadParam( rStr );
@@ -2285,7 +2282,7 @@ bool ConvertMacroSymbol( const String& rName, String& rReference )
 //end
 
 // "MACROSCHALTFL"ACHE"
-eF_ResT SwWW8ImplReader::Read_F_Macro( WW8FieldDesc*, String& rStr)
+eF_ResT SwWW8ImplReader::Read_F_Macro( WW8FieldDesc*, OUString& rStr)
 {
     String aName;
     String aVText;
@@ -2410,7 +2407,7 @@ bool CanUseRemoteLink(const String &rGrfName)
 }
 
 // "EINF"UGENGRAFIK"
-eF_ResT SwWW8ImplReader::Read_F_IncludePicture( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_IncludePicture( WW8FieldDesc*, OUString& rStr )
 {
     String aGrfName;
     bool bEmbedded = true;
@@ -2478,7 +2475,7 @@ String wwSectionNamer::UniqueName()
 }
 
 // "EINFUEGENTEXT"
-eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc* /*pF*/, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc* /*pF*/, OUString& rStr )
 {
     String aPara;
     String aBook;
@@ -2547,7 +2544,7 @@ eF_ResT SwWW8ImplReader::Read_F_IncludeText( WW8FieldDesc* /*pF*/, String& rStr
 }
 
 // "SERIENDRUCKFELD"
-eF_ResT SwWW8ImplReader::Read_F_DBField( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_DBField( WW8FieldDesc* pF, OUString& rStr )
 {
     String aName;
     WW8ReadFieldParams aReadParam( rStr );
@@ -2570,7 +2567,7 @@ eF_ResT SwWW8ImplReader::Read_F_DBField( WW8FieldDesc* pF, String& rStr )
     SwDBField aFld( (SwDBFieldType*)pFT );
     aFld.SetFieldCode( rStr );
 
-    String aResult;
+    OUString aResult;
     pSBase->WW8ReadString( *pStrm, aResult, pPlcxMan->GetCpOfs()+
                            pF->nSRes, pF->nLRes, eTextCharSet );
 
@@ -2582,7 +2579,7 @@ eF_ResT SwWW8ImplReader::Read_F_DBField( WW8FieldDesc* pF, String& rStr )
 }
 
 // "N"ACHSTER"
-eF_ResT SwWW8ImplReader::Read_F_DBNext( WW8FieldDesc*, String& )
+eF_ResT SwWW8ImplReader::Read_F_DBNext( WW8FieldDesc*, OUString& )
 {
     SwDBNextSetFieldType aN;
     SwFieldType* pFT = rDoc.InsertFldType( aN );
@@ -2593,7 +2590,7 @@ eF_ResT SwWW8ImplReader::Read_F_DBNext( WW8FieldDesc*, String& )
 }
 
 // "DATENSATZ"
-eF_ResT SwWW8ImplReader::Read_F_DBNum( WW8FieldDesc*, String& )
+eF_ResT SwWW8ImplReader::Read_F_DBNum( WW8FieldDesc*, OUString& )
 {
     SwDBSetNumberFieldType aN;
     SwFieldType* pFT = rDoc.InsertFldType( aN );
@@ -2612,7 +2609,7 @@ eF_ResT SwWW8ImplReader::Read_F_DBNum( WW8FieldDesc*, String& )
     ruby text
     ...
 */
-eF_ResT SwWW8ImplReader::Read_F_Equation( WW8FieldDesc*, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Equation( WW8FieldDesc*, OUString& rStr )
 {
     WW8ReadFieldParams aReadParam( rStr );
     const sal_Int32 cChar = aReadParam.SkipToNextToken();
@@ -3059,7 +3056,7 @@ static sal_uInt16 lcl_GetMaxValidWordTOCLevel(const SwForm &rForm)
     return nRet;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, OUString& rStr )
 {
 #if defined(WW_NATIVE_TOC)
     if (1) {
@@ -3568,7 +3565,7 @@ eF_ResT SwWW8ImplReader::Read_F_Tox( WW8FieldDesc* pF, String& rStr )
     return FLD_OK;
 }
 
-eF_ResT SwWW8ImplReader::Read_F_Shape(WW8FieldDesc* /*pF*/, String& /*rStr*/)
+eF_ResT SwWW8ImplReader::Read_F_Shape(WW8FieldDesc* /*pF*/, OUString& /*rStr*/)
 {
     /*
     #i3958# 0x8 followed by 0x1 where the shape is the 0x8 and its anchoring
@@ -3578,7 +3575,7 @@ eF_ResT SwWW8ImplReader::Read_F_Shape(WW8FieldDesc* /*pF*/, String& /*rStr*/)
     return FLD_TEXT;
  }
 
-eF_ResT SwWW8ImplReader::Read_F_Hyperlink( WW8FieldDesc* /*pF*/, String& rStr )
+eF_ResT SwWW8ImplReader::Read_F_Hyperlink( WW8FieldDesc* /*pF*/, OUString& rStr )
 {
 #if defined(WW_NATIVE_TOC)
     if (1) {
@@ -3774,31 +3771,34 @@ void SwWW8ImplReader::Read_FldVanish( sal_uInt16, const sal_uInt8*, short nLen )
 
     WW8_CP nStartCp = pPlcxMan->Where() + pPlcxMan->GetCpOfs();
 
-    String sFieldName;
-    sal_uInt16 nFieldLen = pSBase->WW8ReadString( *pStrm, sFieldName, nStartCp,
+    OUString sFieldName;
+    sal_Int32 nFieldLen = pSBase->WW8ReadString( *pStrm, sFieldName, nStartCp,
         nChunk, eStructCharSet );
     nStartCp+=nFieldLen;
 
-    xub_StrLen nC = 0;
+    sal_Int32 nC = 0;
     //If the first chunk did not start with a field start then
     //reset the stream position and give up
-    if( !nFieldLen || (0x13 != sFieldName.GetChar( nC ))) // Field Start Mark
+    if( !nFieldLen || sFieldName[nC]!=0x13 ) // Field Start Mark
     {
         // If Field End Mark found
-        if( nFieldLen && (0x15 == sFieldName.GetChar( nC )))
+        if( nFieldLen && sFieldName[nC]==0x15 )
             bIgnoreText = false;
         pStrm->Seek( nOldPos );
         return;                 // kein Feld zu finden
     }
 
-    xub_StrLen nFnd;
+    sal_Int32 nFnd;
     //If this chunk does not contain a field end, keep reading chunks
     //until we find one, or we run out of text,
-    while (STRING_NOTFOUND == (nFnd = sFieldName.Search(0x15)))
+    for (;;)
     {
-        String sTemp;
+        nFnd = sFieldName.indexOf(0x15);
+        if (nFnd<0)
+            break;
+        OUString sTemp;
         nFieldLen = pSBase->WW8ReadString( *pStrm, sTemp,
-        nStartCp, nChunk, eStructCharSet );
+                                           nStartCp, nChunk, eStructCharSet );
         sFieldName+=sTemp;
         nStartCp+=nFieldLen;
         if (!nFieldLen)
@@ -3809,22 +3809,22 @@ void SwWW8ImplReader::Read_FldVanish( sal_uInt16, const sal_uInt8*, short nLen )
 
     //if we have no 0x15 give up, otherwise erase everything from the 0x15
     //onwards
-    if (STRING_NOTFOUND == nFnd)
+    if (nFnd<0)
         return;
-    else
-        sFieldName.Erase(nFnd);
+
+    sFieldName = sFieldName.copy(0, nFnd);
 
     nC++;
-    while( ' '  == sFieldName.GetChar( nC ))
+    while ( sFieldName[nC]==' ' )
         nC++;
 
     for( int i = 0; i < 3; i++ )
     {
         const sal_Char* pName = aFldNames[i];
-        sal_uInt16 nNameLen = *pName++;
-        if( sFieldName.EqualsIgnoreCaseAscii( pName, nC, nNameLen ) )
+        const sal_Int32 nNameLen = static_cast<sal_Int32>(*pName++);
+        if( sFieldName.matchIgnoreAsciiCaseAsciiL( pName, nNameLen, nC ) )
         {
-            ImportTox( aFldId[i], sFieldName.Copy( nC + nNameLen ) );
+            ImportTox( aFldId[i], sFieldName.copy( nC + nNameLen ) );
             break;                  // keine Mehrfachnennungen moeglich
         }
     }
diff --git a/sw/source/filter/ww8/ww8scan.cxx b/sw/source/filter/ww8/ww8scan.cxx
index f050025..5962e9c 100644
--- a/sw/source/filter/ww8/ww8scan.cxx
+++ b/sw/source/filter/ww8/ww8scan.cxx
@@ -1902,11 +1902,11 @@ String read_uInt16_BeltAndBracesString(SvStream& rStrm)
     return aRet;
 }
 
-xub_StrLen WW8ScannerBase::WW8ReadString( SvStream& rStrm, String& rStr,
+sal_Int32 WW8ScannerBase::WW8ReadString( SvStream& rStrm, OUString& rStr,
     WW8_CP nAktStartCp, long nTotalLen, rtl_TextEncoding eEnc ) const
 {
     // Read in plain text, which can extend over several pieces
-    rStr.Erase();
+    rStr = OUString();
 
     long nTotalRead = 0;
     WW8_CP nBehindTextCp = nAktStartCp + nTotalLen;
@@ -1931,18 +1931,18 @@ xub_StrLen WW8ScannerBase::WW8ReadString( SvStream& rStrm, String& rStr,
         if( nLen > USHRT_MAX - 1 )
             nLen = USHRT_MAX - 1;
 
-        if( bIsUnicode )
-            rStr.Append(String(read_uInt16s_ToOUString(rStrm, nLen)));
-        else
-            rStr.Append(String(read_uInt8s_ToOUString(rStrm, nLen, eEnc)));
+        rStr += bIsUnicode
+             ? read_uInt16s_ToOUString(rStrm, nLen)
+             : read_uInt8s_ToOUString(rStrm, nLen, eEnc);
+
         nTotalRead  += nLen;
         nAktStartCp += nLen;
-        if ( nTotalRead != rStr.Len() )
+        if ( nTotalRead != rStr.getLength() )
             break;
     }
     while( nTotalRead < nTotalLen );
 
-    return rStr.Len();
+    return rStr.getLength();
 }
 
 WW8PLCFspecial::WW8PLCFspecial(SvStream* pSt, sal_uInt32 nFilePos,
diff --git a/sw/source/filter/ww8/ww8scan.hxx b/sw/source/filter/ww8/ww8scan.hxx
index cd1fefe..795ca8c 100644
--- a/sw/source/filter/ww8/ww8scan.hxx
+++ b/sw/source/filter/ww8/ww8scan.hxx
@@ -975,7 +975,7 @@ public:
     WW8_FC WW8Cp2Fc(WW8_CP nCpPos, bool* pIsUnicode = 0,
         WW8_CP* pNextPieceCp = 0, bool* pTestFlag = 0) const;
 
-    xub_StrLen WW8ReadString(SvStream& rStrm, String& rStr, WW8_CP nAktStartCp,
+    sal_Int32 WW8ReadString(SvStream& rStrm, OUString& rStr, WW8_CP nAktStartCp,
         long nTotalLen, rtl_TextEncoding eEnc ) const;
 
 };
diff --git a/sw/source/filter/ww8/ww8struc.hxx b/sw/source/filter/ww8/ww8struc.hxx
index eec8ae2..eb6948c 100644
--- a/sw/source/filter/ww8/ww8struc.hxx
+++ b/sw/source/filter/ww8/ww8struc.hxx
@@ -22,6 +22,7 @@
 
 #include <osl/endian.h>
 #include <tools/string.hxx>
+#include "rtl/ustring.hxx"
 #include <sal/config.h>
 
 #include <editeng/borderline.hxx>


More information about the Libreoffice-commits mailing list