summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-04-11 10:09:05 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-04-11 10:09:05 +0100
commit61eb8ffd6f6e47f4c539b1cfbefba12cf5e650a9 (patch)
tree0ad4da3c0a694477254752518362aab3e22bcf91
parentWaE: msvc potentially used uninitialized (diff)
downloadbinfilter-61eb8ffd6f6e47f4c539b1cfbefba12cf5e650a9.tar.gz
binfilter-61eb8ffd6f6e47f4c539b1cfbefba12cf5e650a9.zip
callcatcher: reduce ByteString
-rw-r--r--binfilter/bf_svtools/source/misc/tl_strimp.cxx108
-rw-r--r--binfilter/bf_svtools/source/misc/tl_tustring.cxx104
-rw-r--r--binfilter/inc/bf_tools/string.hxx2
3 files changed, 104 insertions, 110 deletions
diff --git a/binfilter/bf_svtools/source/misc/tl_strimp.cxx b/binfilter/bf_svtools/source/misc/tl_strimp.cxx
index 7b82b64bc..36111fd92 100644
--- a/binfilter/bf_svtools/source/misc/tl_strimp.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_strimp.cxx
@@ -451,67 +451,6 @@ STRING& STRING::Insert( STRCODE c, xub_StrLen nIndex )
// -----------------------------------------------------------------------
-STRING& STRING::Replace( xub_StrLen nIndex, xub_StrLen nCount, const STRING& rStr )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- // Wenn Index groessergleich Laenge ist, dann ist es ein Append
- if ( nIndex >= mpData->mnLen )
- {
- Append( rStr );
- return *this;
- }
-
- // Ist es eine Zuweisung
- if ( (nIndex == 0) && (nCount >= mpData->mnLen) )
- {
- Assign( rStr );
- return *this;
- }
-
- // Reicht ein Erase
- sal_Int32 nStrLen = rStr.mpData->mnLen;
- if ( !nStrLen )
- return Erase( nIndex, nCount );
-
- // nCount darf nicht ueber das Stringende hinnausgehen
- if ( nCount > mpData->mnLen - nIndex )
- nCount = static_cast< xub_StrLen >(mpData->mnLen-nIndex);
-
- // Reicht ein Insert
- if ( !nCount )
- return Insert( rStr, nIndex );
-
- // Reicht eine zeichenweise Zuweisung
- if ( nCount == nStrLen )
- {
- ImplCopyData();
- memcpy( mpData->maStr+nIndex, rStr.mpData->maStr, nCount*sizeof( STRCODE ) );
- return *this;
- }
-
- // Ueberlauf abfangen
- nStrLen = ImplGetCopyLen( mpData->mnLen-nCount, nStrLen );
-
- // Neue Daten anlegen
- STRINGDATA* pNewData = ImplAllocData( mpData->mnLen-nCount+nStrLen );
-
- // String kopieren
- memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) );
- memcpy( pNewData->maStr+nIndex, rStr.mpData->maStr, nStrLen*sizeof( STRCODE ) );
- memcpy( pNewData->maStr+nIndex+nStrLen, mpData->maStr+nIndex+nCount,
- (mpData->mnLen-nIndex-nCount+1)*sizeof( STRCODE ) );
-
- // Alte Daten loeschen und Neue zuweisen
- STRING_RELEASE((STRING_TYPE *)mpData);
- mpData = pNewData;
-
- return *this;
-}
-
-// -----------------------------------------------------------------------
-
STRING& STRING::Erase( xub_StrLen nIndex, xub_StrLen nCount )
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -614,53 +553,6 @@ xub_StrLen STRING::Search( STRCODE c, xub_StrLen nIndex ) const
// -----------------------------------------------------------------------
-xub_StrLen STRING::Search( const STRING& rStr, xub_StrLen nIndex ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- sal_Int32 nLen = mpData->mnLen;
- sal_Int32 nStrLen = rStr.mpData->mnLen;
-
- // Falls die Laenge des uebergebenen Strings 0 ist oder der Index
- // hinter dem String liegt, dann wurde der String nicht gefunden
- if ( !nStrLen || (nIndex >= nLen) )
- return STRING_NOTFOUND;
-
- const STRCODE* pStr1 = mpData->maStr;
- pStr1 += nIndex;
-
- if ( nStrLen == 1 )
- {
- STRCODE cSearch = rStr.mpData->maStr[0];
- while ( nIndex < nLen )
- {
- if ( *pStr1 == cSearch )
- return nIndex;
- ++pStr1,
- ++nIndex;
- }
- }
- else
- {
- const STRCODE* pStr2 = rStr.mpData->maStr;
-
- // Nur innerhalb des Strings suchen
- while ( nLen - nIndex >= nStrLen )
- {
- // Stimmt der String ueberein
- if ( ImplStringCompareWithoutZero( pStr1, pStr2, nStrLen ) == 0 )
- return nIndex;
- ++pStr1,
- ++nIndex;
- }
- }
-
- return STRING_NOTFOUND;
-}
-
-// -----------------------------------------------------------------------
-
xub_StrLen STRING::Search( const STRCODE* pCharStr, xub_StrLen nIndex ) const
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
diff --git a/binfilter/bf_svtools/source/misc/tl_tustring.cxx b/binfilter/bf_svtools/source/misc/tl_tustring.cxx
index eb29ea141..0e60670c8 100644
--- a/binfilter/bf_svtools/source/misc/tl_tustring.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_tustring.cxx
@@ -1139,6 +1139,110 @@ xub_StrLen STRING::SearchAndReplace( const STRING& rStr, const STRING& rRepStr,
return nSPos;
}
+STRING& STRING::Replace( xub_StrLen nIndex, xub_StrLen nCount, const STRING& rStr )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ // Wenn Index groessergleich Laenge ist, dann ist es ein Append
+ if ( nIndex >= mpData->mnLen )
+ {
+ Append( rStr );
+ return *this;
+ }
+
+ // Ist es eine Zuweisung
+ if ( (nIndex == 0) && (nCount >= mpData->mnLen) )
+ {
+ Assign( rStr );
+ return *this;
+ }
+
+ // Reicht ein Erase
+ sal_Int32 nStrLen = rStr.mpData->mnLen;
+ if ( !nStrLen )
+ return Erase( nIndex, nCount );
+
+ // nCount darf nicht ueber das Stringende hinnausgehen
+ if ( nCount > mpData->mnLen - nIndex )
+ nCount = static_cast< xub_StrLen >(mpData->mnLen-nIndex);
+
+ // Reicht ein Insert
+ if ( !nCount )
+ return Insert( rStr, nIndex );
+
+ // Reicht eine zeichenweise Zuweisung
+ if ( nCount == nStrLen )
+ {
+ ImplCopyData();
+ memcpy( mpData->maStr+nIndex, rStr.mpData->maStr, nCount*sizeof( STRCODE ) );
+ return *this;
+ }
+
+ // Ueberlauf abfangen
+ nStrLen = ImplGetCopyLen( mpData->mnLen-nCount, nStrLen );
+
+ // Neue Daten anlegen
+ STRINGDATA* pNewData = ImplAllocData( mpData->mnLen-nCount+nStrLen );
+
+ // String kopieren
+ memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) );
+ memcpy( pNewData->maStr+nIndex, rStr.mpData->maStr, nStrLen*sizeof( STRCODE ) );
+ memcpy( pNewData->maStr+nIndex+nStrLen, mpData->maStr+nIndex+nCount,
+ (mpData->mnLen-nIndex-nCount+1)*sizeof( STRCODE ) );
+
+ // Alte Daten loeschen und Neue zuweisen
+ STRING_RELEASE((STRING_TYPE *)mpData);
+ mpData = pNewData;
+
+ return *this;
+}
+
+xub_StrLen STRING::Search( const STRING& rStr, xub_StrLen nIndex ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ sal_Int32 nLen = mpData->mnLen;
+ sal_Int32 nStrLen = rStr.mpData->mnLen;
+
+ // Falls die Laenge des uebergebenen Strings 0 ist oder der Index
+ // hinter dem String liegt, dann wurde der String nicht gefunden
+ if ( !nStrLen || (nIndex >= nLen) )
+ return STRING_NOTFOUND;
+
+ const STRCODE* pStr1 = mpData->maStr;
+ pStr1 += nIndex;
+
+ if ( nStrLen == 1 )
+ {
+ STRCODE cSearch = rStr.mpData->maStr[0];
+ while ( nIndex < nLen )
+ {
+ if ( *pStr1 == cSearch )
+ return nIndex;
+ ++pStr1,
+ ++nIndex;
+ }
+ }
+ else
+ {
+ const STRCODE* pStr2 = rStr.mpData->maStr;
+
+ // Nur innerhalb des Strings suchen
+ while ( nLen - nIndex >= nStrLen )
+ {
+ // Stimmt der String ueberein
+ if ( ImplStringCompareWithoutZero( pStr1, pStr2, nStrLen ) == 0 )
+ return nIndex;
+ ++pStr1,
+ ++nIndex;
+ }
+ }
+
+ return STRING_NOTFOUND;
+}
+
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/inc/bf_tools/string.hxx b/binfilter/inc/bf_tools/string.hxx
index d81a51c1d..9237c9e70 100644
--- a/binfilter/inc/bf_tools/string.hxx
+++ b/binfilter/inc/bf_tools/string.hxx
@@ -184,7 +184,6 @@ public:
ByteString& Insert( const ByteString& rStr, xub_StrLen nIndex = STRING_LEN );
ByteString& Insert( const sal_Char* pCharStr, xub_StrLen nIndex = STRING_LEN );
ByteString& Insert( sal_Char c, xub_StrLen nIndex = STRING_LEN );
- ByteString& Replace( xub_StrLen nIndex, xub_StrLen nCount, const ByteString& rStr );
ByteString& Erase( xub_StrLen nIndex = 0, xub_StrLen nCount = STRING_LEN );
ByteString Copy( xub_StrLen nIndex = 0, xub_StrLen nCount = STRING_LEN ) const;
@@ -202,7 +201,6 @@ public:
sal_Bool Equals( const sal_Char* pCharStr ) const;
xub_StrLen Search( sal_Char c, xub_StrLen nIndex = 0 ) const;
- xub_StrLen Search( const ByteString& rStr, xub_StrLen nIndex = 0 ) const;
xub_StrLen Search( const sal_Char* pCharStr, xub_StrLen nIndex = 0 ) const;
xub_StrLen GetTokenCount( sal_Char cTok = ';' ) const;