summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2012-04-10 09:41:03 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-04-10 09:41:03 +0100
commit167dd1197d5189736045a714ccc3ec328e8e8fe5 (patch)
tree45a06848f440b7b102db119c5504878a40bc5a12
parentfix clang compile (diff)
downloadbinfilter-167dd1197d5189736045a714ccc3ec328e8e8fe5.tar.gz
binfilter-167dd1197d5189736045a714ccc3ec328e8e8fe5.zip
reduce binfilter ByteString to used parts
-rw-r--r--binfilter/bf_sch/source/core/sch_SchAddInCollection.cxx5
-rw-r--r--binfilter/bf_svtools/source/misc/tl_strimp.cxx426
-rw-r--r--binfilter/bf_svtools/source/misc/tl_tstring.cxx94
-rw-r--r--binfilter/bf_svtools/source/misc/tl_tustring.cxx426
-rw-r--r--binfilter/inc/bf_tools/string.hxx64
5 files changed, 432 insertions, 583 deletions
diff --git a/binfilter/bf_sch/source/core/sch_SchAddInCollection.cxx b/binfilter/bf_sch/source/core/sch_SchAddInCollection.cxx
index e7be10099..8ef403b9c 100644
--- a/binfilter/bf_sch/source/core/sch_SchAddInCollection.cxx
+++ b/binfilter/bf_sch/source/core/sch_SchAddInCollection.cxx
@@ -91,14 +91,15 @@ using namespace ::com::sun::star;
/*N*/ }
/*N*/ mbInitialized = sal_True;
/*N*/ }
-/*N*/ catch( const uno::Exception& aEx )
+/*N*/ catch( const uno::Exception& rEx )
/*N*/ {
/*N*/ OSL_FAIL( ::rtl::OUStringToOString(
/*N*/ ::rtl::OUString(
/*N*/ RTL_CONSTASCII_USTRINGPARAM(
/*N*/ "Couldn't initialize add-in collection: " )) +
-/*N*/ aEx.Message,
+/*N*/ rEx.Message,
/*N*/ RTL_TEXTENCODING_ASCII_US ).getStr() );
+/*N*/ (void)rEx;
/*N*/ }
/*N*/ }
diff --git a/binfilter/bf_svtools/source/misc/tl_strimp.cxx b/binfilter/bf_svtools/source/misc/tl_strimp.cxx
index 5ced5bc71..7b82b64bc 100644
--- a/binfilter/bf_svtools/source/misc/tl_strimp.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_strimp.cxx
@@ -29,22 +29,6 @@
namespace binfilter
{
-static sal_Int32 ImplStringCompare( const STRCODE* pStr1, const STRCODE* pStr2,
- xub_StrLen nCount )
-{
- sal_Int32 nRet = 0;
- while ( nCount &&
- ((nRet = ((sal_Int32)((STRCODEU)*pStr1))-((sal_Int32)((STRCODEU)*pStr2))) == 0) &&
- *pStr2 )
- {
- ++pStr1,
- ++pStr2,
- --nCount;
- }
-
- return nRet;
-}
-
// -----------------------------------------------------------------------
static sal_Int32 ImplStringCompareWithoutZero( const STRCODE* pStr1, const STRCODE* pStr2,
@@ -62,65 +46,6 @@ static sal_Int32 ImplStringCompareWithoutZero( const STRCODE* pStr1, const STRCO
return nRet;
}
-// -----------------------------------------------------------------------
-
-static sal_Int32 ImplStringICompare( const STRCODE* pStr1, const STRCODE* pStr2 )
-{
- sal_Int32 nRet;
- STRCODE c1;
- STRCODE c2;
- do
- {
- // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln
- c1 = *pStr1;
- c2 = *pStr2;
- if ( (c1 >= 65) && (c1 <= 90) )
- c1 += 32;
- if ( (c2 >= 65) && (c2 <= 90) )
- c2 += 32;
- nRet = ((sal_Int32)((STRCODEU)c1))-((sal_Int32)((STRCODEU)c2));
- if ( nRet != 0 )
- break;
-
- ++pStr1,
- ++pStr2;
- }
- while ( c2 );
-
- return nRet;
-}
-
-// -----------------------------------------------------------------------
-
-static sal_Int32 ImplStringICompareWithoutZero( const STRCODE* pStr1, const STRCODE* pStr2,
- sal_Int32 nCount )
-{
- sal_Int32 nRet = 0;
- STRCODE c1;
- STRCODE c2;
- do
- {
- if ( !nCount )
- break;
-
- // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln
- c1 = *pStr1;
- c2 = *pStr2;
- if ( (c1 >= 65) && (c1 <= 90) )
- c1 += 32;
- if ( (c2 >= 65) && (c2 <= 90) )
- c2 += 32;
- nRet = ((sal_Int32)((STRCODEU)c1))-((sal_Int32)((STRCODEU)c2));
-
- ++pStr1,
- ++pStr2,
- --nCount;
- }
- while ( nRet == 0 );
-
- return nRet;
-}
-
// =======================================================================
#ifdef DBG_UTIL
@@ -290,43 +215,6 @@ STRING::STRING( const STRCODE* pCharStr )
// -----------------------------------------------------------------------
-STRING::STRING( const STRCODE* pCharStr, xub_StrLen nLen )
-: mpData(NULL)
-{
- DBG_CTOR( STRING, DBGCHECKSTRING );
- DBG_ASSERT( pCharStr, "String::String() - pCharStr is NULL" );
-
- if ( nLen == STRING_LEN )
- nLen = ImplStringLen( pCharStr );
-
-#ifdef DBG_UTIL
- if ( DbgIsAssert() )
- {
- for ( xub_StrLen i = 0; i < nLen; i++ )
- {
- if ( !pCharStr[i] )
- {
- OSL_FAIL( "String::String() : nLen is wrong" );
- }
- }
- }
-#endif
-
- // Ist es kein leerer String
- if ( nLen )
- {
- // Verwaltungsdaten anlegen und String kopieren
- mpData = ImplAllocData( nLen );
- memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) );
- }
- else
- {
- STRING_NEW((STRING_TYPE **)&mpData);
- }
-}
-
-// -----------------------------------------------------------------------
-
STRING::~STRING()
{
DBG_DTOR( STRING, DBGCHECKSTRING );
@@ -383,20 +271,6 @@ STRING& STRING::Assign( const STRCODE* pCharStr )
// -----------------------------------------------------------------------
-STRING& STRING::Assign( STRCODE c )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_ASSERT( c, "String::Assign() - c is 0" );
-
- // Verwaltungsdaten anlegen und initialisieren
- STRING_RELEASE((STRING_TYPE *)mpData);
- mpData = ImplAllocData( 1 );
- mpData->maStr[0] = c;
- return *this;
-}
-
-// -----------------------------------------------------------------------
-
STRING& STRING::Append( const STRING& rStr )
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -513,43 +387,6 @@ STRING& STRING::Append( const STRCODE* pCharStr, xub_StrLen nCharLen )
// -----------------------------------------------------------------------
-STRING& STRING::Append( STRCODE c )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- // kein 0-Character und maximale Stringlaenge nicht ueberschreiten
- sal_Int32 nLen = mpData->mnLen;
- if ( c && (nLen < STRING_MAXLEN) )
- {
- // Neue Datenstruktur und neuen String erzeugen
- STRINGDATA* pNewData = ImplAllocData( nLen+1 );
-
- // String kopieren
- memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) );
- pNewData->maStr[nLen] = c;
-
- // Alte Daten loeschen und Neue zuweisen
- STRING_RELEASE((STRING_TYPE *)mpData);
- mpData = pNewData;
- }
-
- return *this;
-}
-
-// -----------------------------------------------------------------------
-
-void STRING::SetChar( xub_StrLen nIndex, STRCODE c )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_ASSERT( nIndex < mpData->mnLen, "String::SetChar() - nIndex > String.Len()" );
-
- // Daten kopieren, wenn noetig und Character zuweisen
- ImplCopyData();
- mpData->maStr[nIndex] = c;
-}
-
-// -----------------------------------------------------------------------
-
STRING& STRING::Insert( const STRING& rStr, xub_StrLen nIndex )
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -738,35 +575,6 @@ STRING& STRING::ToLowerAscii()
// -----------------------------------------------------------------------
-StringCompare STRING::CompareTo( const STRING& rStr, xub_StrLen nLen ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- // Auf Gleichheit der Pointer testen
- if ( mpData == rStr.mpData )
- return COMPARE_EQUAL;
-
- // Maximale Laenge ermitteln
- if ( mpData->mnLen < nLen )
- nLen = static_cast< xub_StrLen >(mpData->mnLen+1);
- if ( rStr.mpData->mnLen < nLen )
- nLen = static_cast< xub_StrLen >(rStr.mpData->mnLen+1);
-
- // String vergleichen
- sal_Int32 nCompare = ImplStringCompareWithoutZero( mpData->maStr, rStr.mpData->maStr, nLen );
-
- // Rueckgabewert anpassen
- if ( nCompare == 0 )
- return COMPARE_EQUAL;
- else if ( nCompare < 0 )
- return COMPARE_LESS;
- else
- return COMPARE_GREATER;
-}
-
-// -----------------------------------------------------------------------
-
sal_Bool STRING::Equals( const STRING& rStr ) const
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -786,97 +594,6 @@ sal_Bool STRING::Equals( const STRING& rStr ) const
// -----------------------------------------------------------------------
-sal_Bool STRING::EqualsIgnoreCaseAscii( const STRING& rStr ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- // Sind die Daten gleich
- if ( mpData == rStr.mpData )
- return sal_True;
-
- // Gleiche Laenge
- if ( mpData->mnLen != rStr.mpData->mnLen )
- return sal_False;
-
- // String vergleichen
- return (ImplStringICompareWithoutZero( mpData->maStr, rStr.mpData->maStr, mpData->mnLen ) == 0);
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool STRING::EqualsIgnoreCaseAscii( const STRCODE* pCharStr ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- return (ImplStringICompare( mpData->maStr, pCharStr ) == 0);
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool STRING::Equals( const STRING& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- // Are there enough codes for comparing?
- if ( nIndex > mpData->mnLen )
- return (rStr.mpData->mnLen == 0);
- sal_Int32 nMaxLen = mpData->mnLen-nIndex;
- if ( nMaxLen < nLen )
- {
- if ( rStr.mpData->mnLen != nMaxLen )
- return sal_False;
- nLen = static_cast< xub_StrLen >(nMaxLen);
- }
-
- // String vergleichen
- return (ImplStringCompareWithoutZero( mpData->maStr+nIndex, rStr.mpData->maStr, nLen ) == 0);
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool STRING::Equals( const STRCODE* pCharStr, xub_StrLen nIndex, xub_StrLen nLen ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- // Are there enough codes for comparing?
- if ( nIndex > mpData->mnLen )
- return (*pCharStr == 0);
-
- return (ImplStringCompare( mpData->maStr+nIndex, pCharStr, nLen ) == 0);
-}
-
-// -----------------------------------------------------------------------
-
-xub_StrLen STRING::Match( const STRING& rStr ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- // Ist dieser String leer
- if ( !mpData->mnLen )
- return STRING_MATCH;
-
- // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
- const STRCODE* pStr1 = mpData->maStr;
- const STRCODE* pStr2 = rStr.mpData->maStr;
- xub_StrLen i = 0;
- while ( i < mpData->mnLen )
- {
- // Stimmt das Zeichen nicht ueberein, dann abbrechen
- if ( *pStr1 != *pStr2 )
- return i;
- ++pStr1,
- ++pStr2,
- ++i;
- }
-
- return STRING_MATCH;
-}
-
-// -----------------------------------------------------------------------
-
xub_StrLen STRING::Search( STRCODE c, xub_StrLen nIndex ) const
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -988,60 +705,6 @@ xub_StrLen STRING::Search( const STRCODE* pCharStr, xub_StrLen nIndex ) const
// -----------------------------------------------------------------------
-xub_StrLen STRING::SearchAndReplace( const STRING& rStr, const STRING& rRepStr,
- xub_StrLen nIndex )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
-
- xub_StrLen nSPos = Search( rStr, nIndex );
- if ( nSPos != STRING_NOTFOUND )
- Replace( nSPos, rStr.Len(), rRepStr );
-
- return nSPos;
-}
-
-// -----------------------------------------------------------------------
-
-void STRING::SearchAndReplaceAll( STRCODE c, STRCODE cRep )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- sal_Int32 nLen = mpData->mnLen;
- const STRCODE* pStr = mpData->maStr;
- sal_Int32 nIndex = 0;
- while ( nIndex < nLen )
- {
- if ( *pStr == c )
- {
- ImplCopyData();
- mpData->maStr[nIndex] = cRep;
- }
- ++pStr,
- ++nIndex;
- }
-}
-
-// -----------------------------------------------------------------------
-
-void STRING::SearchAndReplaceAll( const STRING& rStr, const STRING& rRepStr )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
-
- xub_StrLen nSPos = Search( rStr, 0 );
- while ( nSPos != STRING_NOTFOUND )
- {
- Replace( nSPos, rStr.Len(), rRepStr );
- nSPos = nSPos + rRepStr.Len();
- nSPos = Search( rStr, nSPos );
- }
-}
-
-// -----------------------------------------------------------------------
-
xub_StrLen STRING::GetTokenCount( STRCODE cTok ) const
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -1066,95 +729,6 @@ xub_StrLen STRING::GetTokenCount( STRCODE cTok ) const
return nTokCount;
}
-// -----------------------------------------------------------------------
-
-void STRING::SetToken( xub_StrLen nToken, STRCODE cTok, const STRING& rStr,
- xub_StrLen nIndex )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
-
- const STRCODE* pStr = mpData->maStr;
- xub_StrLen nLen = (xub_StrLen)mpData->mnLen;
- xub_StrLen nTok = 0;
- xub_StrLen nFirstChar = nIndex;
- xub_StrLen i = nFirstChar;
-
- // Bestimme die Token-Position und Laenge
- pStr += i;
- while ( i < nLen )
- {
- // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
- if ( *pStr == cTok )
- {
- ++nTok;
-
- if ( nTok == nToken )
- nFirstChar = i+1;
- else
- {
- if ( nTok > nToken )
- break;
- }
- }
-
- ++pStr,
- ++i;
- }
-
- if ( nTok >= nToken )
- Replace( nFirstChar, i-nFirstChar, rStr );
-}
-
-// -----------------------------------------------------------------------
-
-STRING STRING::GetToken( xub_StrLen nToken, STRCODE cTok, xub_StrLen& rIndex ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- const STRCODE* pStr = mpData->maStr;
- xub_StrLen nLen = (xub_StrLen)mpData->mnLen;
- xub_StrLen nTok = 0;
- xub_StrLen nFirstChar = rIndex;
- xub_StrLen i = nFirstChar;
-
- // Bestimme die Token-Position und Laenge
- pStr += i;
- while ( i < nLen )
- {
- // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
- if ( *pStr == cTok )
- {
- ++nTok;
-
- if ( nTok == nToken )
- nFirstChar = i+1;
- else
- {
- if ( nTok > nToken )
- break;
- }
- }
-
- ++pStr,
- ++i;
- }
-
- if ( nTok >= nToken )
- {
- if ( i < nLen )
- rIndex = i+1;
- else
- rIndex = STRING_NOTFOUND;
- return Copy( nFirstChar, i-nFirstChar );
- }
- else
- {
- rIndex = STRING_NOTFOUND;
- return STRING();
- }
-}
-
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/bf_svtools/source/misc/tl_tstring.cxx b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
index 816177728..168a9ae12 100644
--- a/binfilter/bf_svtools/source/misc/tl_tstring.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
@@ -90,100 +90,6 @@ xub_StrLen ImplStringLen( const sal_Unicode* pStr )
namespace binfilter
{
-void STRING::SearchAndReplaceAll( const STRCODE* pCharStr, const STRING& rRepStr )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
-
- xub_StrLen nCharLen = ImplStringLen( pCharStr );
- xub_StrLen nSPos = Search( pCharStr, 0 );
- while ( nSPos != STRING_NOTFOUND )
- {
- Replace( nSPos, nCharLen, rRepStr );
- nSPos = nSPos + rRepStr.Len();
- nSPos = Search( pCharStr, nSPos );
- }
-}
-
-xub_StrLen STRING::SearchAndReplace( const STRCODE* pCharStr, const STRING& rRepStr,
- xub_StrLen nIndex )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
-
- xub_StrLen nSPos = Search( pCharStr, nIndex );
- if ( nSPos != STRING_NOTFOUND )
- Replace( nSPos, ImplStringLen( pCharStr ), rRepStr );
-
- return nSPos;
-}
-
-static sal_Int32 ImplStringICompare( const STRCODE* pStr1, const STRCODE* pStr2,
- xub_StrLen nCount )
-{
- sal_Int32 nRet = 0;
- STRCODE c1;
- STRCODE c2;
- do
- {
- if ( !nCount )
- break;
-
- // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln
- c1 = *pStr1;
- c2 = *pStr2;
- if ( (c1 >= 65) && (c1 <= 90) )
- c1 += 32;
- if ( (c2 >= 65) && (c2 <= 90) )
- c2 += 32;
- nRet = ((sal_Int32)((STRCODEU)c1))-((sal_Int32)((STRCODEU)c2));
- if ( nRet != 0 )
- break;
-
- ++pStr1,
- ++pStr2,
- --nCount;
- }
- while ( c2 );
-
- return nRet;
-}
-
-StringCompare STRING::CompareIgnoreCaseToAscii( const STRCODE* pCharStr,
- xub_StrLen nLen ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- // String vergleichen
- sal_Int32 nCompare = ImplStringICompare( mpData->maStr, pCharStr, nLen );
-
- // Rueckgabewert anpassen
- if ( nCompare == 0 )
- return COMPARE_EQUAL;
- else if ( nCompare < 0 )
- return COMPARE_LESS;
- else
- return COMPARE_GREATER;
-}
-
-StringCompare STRING::CompareTo( const STRCODE* pCharStr, xub_StrLen nLen ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- // String vergleichen
- sal_Int32 nCompare = ImplStringCompare( mpData->maStr, pCharStr, nLen );
-
- // Rueckgabewert anpassen
- if ( nCompare == 0 )
- return COMPARE_EQUAL;
- else if ( nCompare < 0 )
- return COMPARE_LESS;
- else
- return COMPARE_GREATER;
-}
-
-// =======================================================================
-
static sal_Int32 ImplStringCompare( const STRCODE* pStr1, const STRCODE* pStr2 )
{
sal_Int32 nRet;
diff --git a/binfilter/bf_svtools/source/misc/tl_tustring.cxx b/binfilter/bf_svtools/source/misc/tl_tustring.cxx
index 58036d5d8..eb29ea141 100644
--- a/binfilter/bf_svtools/source/misc/tl_tustring.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_tustring.cxx
@@ -389,6 +389,37 @@ STRING STRING::GetQuotedToken( xub_StrLen nToken, const STRING& rQuotedPairs,
// -----------------------------------------------------------------------
+static sal_Int32 ImplStringICompareWithoutZero( const STRCODE* pStr1, const STRCODE* pStr2,
+ sal_Int32 nCount )
+{
+ sal_Int32 nRet = 0;
+ STRCODE c1;
+ STRCODE c2;
+ do
+ {
+ if ( !nCount )
+ break;
+
+ // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln
+ c1 = *pStr1;
+ c2 = *pStr2;
+ if ( (c1 >= 65) && (c1 <= 90) )
+ c1 += 32;
+ if ( (c2 >= 65) && (c2 <= 90) )
+ c2 += 32;
+ nRet = ((sal_Int32)((STRCODEU)c1))-((sal_Int32)((STRCODEU)c2));
+
+ ++pStr1,
+ ++pStr2,
+ --nCount;
+ }
+ while ( nRet == 0 );
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------
+
sal_Bool STRING::EqualsIgnoreCaseAscii( const STRING& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const
{
DBG_CHKTHIS( STRING, DBGCHECKSTRING );
@@ -713,6 +744,401 @@ STRING& STRING::ToUpperAscii()
return *this;
}
+// -----------------------------------------------------------------------
+
+STRING& STRING::Append( STRCODE c )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ // kein 0-Character und maximale Stringlaenge nicht ueberschreiten
+ sal_Int32 nLen = mpData->mnLen;
+ if ( c && (nLen < STRING_MAXLEN) )
+ {
+ // Neue Datenstruktur und neuen String erzeugen
+ STRINGDATA* pNewData = ImplAllocData( nLen+1 );
+
+ // String kopieren
+ memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) );
+ pNewData->maStr[nLen] = c;
+
+ // Alte Daten loeschen und Neue zuweisen
+ STRING_RELEASE((STRING_TYPE *)mpData);
+ mpData = pNewData;
+ }
+
+ return *this;
+}
+
+// -----------------------------------------------------------------------
+
+STRING& STRING::Assign( STRCODE c )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_ASSERT( c, "String::Assign() - c is 0" );
+
+ // Verwaltungsdaten anlegen und initialisieren
+ STRING_RELEASE((STRING_TYPE *)mpData);
+ mpData = ImplAllocData( 1 );
+ mpData->maStr[0] = c;
+ return *this;
+}
+
+// -----------------------------------------------------------------------
+
+StringCompare STRING::CompareTo( const STRING& rStr, xub_StrLen nLen ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ // Auf Gleichheit der Pointer testen
+ if ( mpData == rStr.mpData )
+ return COMPARE_EQUAL;
+
+ // Maximale Laenge ermitteln
+ if ( mpData->mnLen < nLen )
+ nLen = static_cast< xub_StrLen >(mpData->mnLen+1);
+ if ( rStr.mpData->mnLen < nLen )
+ nLen = static_cast< xub_StrLen >(rStr.mpData->mnLen+1);
+
+ // String vergleichen
+ sal_Int32 nCompare = ImplStringCompareWithoutZero( mpData->maStr, rStr.mpData->maStr, nLen );
+
+ // Rueckgabewert anpassen
+ if ( nCompare == 0 )
+ return COMPARE_EQUAL;
+ else if ( nCompare < 0 )
+ return COMPARE_LESS;
+ else
+ return COMPARE_GREATER;
+}
+
+// -----------------------------------------------------------------------
+
+STRING::STRING( const STRCODE* pCharStr, xub_StrLen nLen )
+: mpData(NULL)
+{
+ DBG_CTOR( STRING, DBGCHECKSTRING );
+ DBG_ASSERT( pCharStr, "String::String() - pCharStr is NULL" );
+
+ if ( nLen == STRING_LEN )
+ nLen = ImplStringLen( pCharStr );
+
+#ifdef DBG_UTIL
+ if ( DbgIsAssert() )
+ {
+ for ( xub_StrLen i = 0; i < nLen; i++ )
+ {
+ if ( !pCharStr[i] )
+ {
+ OSL_FAIL( "String::String() : nLen is wrong" );
+ }
+ }
+ }
+#endif
+
+ // Ist es kein leerer String
+ if ( nLen )
+ {
+ // Verwaltungsdaten anlegen und String kopieren
+ mpData = ImplAllocData( nLen );
+ memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) );
+ }
+ else
+ {
+ STRING_NEW((STRING_TYPE **)&mpData);
+ }
+}
+
+// -----------------------------------------------------------------------
+
+STRING STRING::GetToken( xub_StrLen nToken, STRCODE cTok, xub_StrLen& rIndex ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ const STRCODE* pStr = mpData->maStr;
+ xub_StrLen nLen = (xub_StrLen)mpData->mnLen;
+ xub_StrLen nTok = 0;
+ xub_StrLen nFirstChar = rIndex;
+ xub_StrLen i = nFirstChar;
+
+ // Bestimme die Token-Position und Laenge
+ pStr += i;
+ while ( i < nLen )
+ {
+ // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
+ if ( *pStr == cTok )
+ {
+ ++nTok;
+
+ if ( nTok == nToken )
+ nFirstChar = i+1;
+ else
+ {
+ if ( nTok > nToken )
+ break;
+ }
+ }
+
+ ++pStr,
+ ++i;
+ }
+
+ if ( nTok >= nToken )
+ {
+ if ( i < nLen )
+ rIndex = i+1;
+ else
+ rIndex = STRING_NOTFOUND;
+ return Copy( nFirstChar, i-nFirstChar );
+ }
+ else
+ {
+ rIndex = STRING_NOTFOUND;
+ return STRING();
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void STRING::SetToken( xub_StrLen nToken, STRCODE cTok, const STRING& rStr,
+ xub_StrLen nIndex )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ const STRCODE* pStr = mpData->maStr;
+ xub_StrLen nLen = (xub_StrLen)mpData->mnLen;
+ xub_StrLen nTok = 0;
+ xub_StrLen nFirstChar = nIndex;
+ xub_StrLen i = nFirstChar;
+
+ // Bestimme die Token-Position und Laenge
+ pStr += i;
+ while ( i < nLen )
+ {
+ // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount
+ if ( *pStr == cTok )
+ {
+ ++nTok;
+
+ if ( nTok == nToken )
+ nFirstChar = i+1;
+ else
+ {
+ if ( nTok > nToken )
+ break;
+ }
+ }
+
+ ++pStr,
+ ++i;
+ }
+
+ if ( nTok >= nToken )
+ Replace( nFirstChar, i-nFirstChar, rStr );
+}
+
+// -----------------------------------------------------------------------
+
+void STRING::SetChar( xub_StrLen nIndex, STRCODE c )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_ASSERT( nIndex < mpData->mnLen, "String::SetChar() - nIndex > String.Len()" );
+
+ // Daten kopieren, wenn noetig und Character zuweisen
+ ImplCopyData();
+ mpData->maStr[nIndex] = c;
+}
+
+// -----------------------------------------------------------------------
+
+xub_StrLen STRING::Match( const STRING& rStr ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ // Ist dieser String leer
+ if ( !mpData->mnLen )
+ return STRING_MATCH;
+
+ // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen
+ const STRCODE* pStr1 = mpData->maStr;
+ const STRCODE* pStr2 = rStr.mpData->maStr;
+ xub_StrLen i = 0;
+ while ( i < mpData->mnLen )
+ {
+ // Stimmt das Zeichen nicht ueberein, dann abbrechen
+ if ( *pStr1 != *pStr2 )
+ return i;
+ ++pStr1,
+ ++pStr2,
+ ++i;
+ }
+
+ return STRING_MATCH;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool STRING::EqualsIgnoreCaseAscii( const STRING& rStr ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ // Sind die Daten gleich
+ if ( mpData == rStr.mpData )
+ return sal_True;
+
+ // Gleiche Laenge
+ if ( mpData->mnLen != rStr.mpData->mnLen )
+ return sal_False;
+
+ // String vergleichen
+ return (ImplStringICompareWithoutZero( mpData->maStr, rStr.mpData->maStr, mpData->mnLen ) == 0);
+}
+
+// -----------------------------------------------------------------------
+
+static sal_Int32 ImplStringICompare( const STRCODE* pStr1, const STRCODE* pStr2 )
+{
+ sal_Int32 nRet;
+ STRCODE c1;
+ STRCODE c2;
+ do
+ {
+ // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln
+ c1 = *pStr1;
+ c2 = *pStr2;
+ if ( (c1 >= 65) && (c1 <= 90) )
+ c1 += 32;
+ if ( (c2 >= 65) && (c2 <= 90) )
+ c2 += 32;
+ nRet = ((sal_Int32)((STRCODEU)c1))-((sal_Int32)((STRCODEU)c2));
+ if ( nRet != 0 )
+ break;
+
+ ++pStr1,
+ ++pStr2;
+ }
+ while ( c2 );
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool STRING::EqualsIgnoreCaseAscii( const STRCODE* pCharStr ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ return (ImplStringICompare( mpData->maStr, pCharStr ) == 0);
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool STRING::Equals( const STRING& rStr, xub_StrLen nIndex, xub_StrLen nLen ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+
+ // Are there enough codes for comparing?
+ if ( nIndex > mpData->mnLen )
+ return (rStr.mpData->mnLen == 0);
+ sal_Int32 nMaxLen = mpData->mnLen-nIndex;
+ if ( nMaxLen < nLen )
+ {
+ if ( rStr.mpData->mnLen != nMaxLen )
+ return sal_False;
+ nLen = static_cast< xub_StrLen >(nMaxLen);
+ }
+
+ // String vergleichen
+ return (ImplStringCompareWithoutZero( mpData->maStr+nIndex, rStr.mpData->maStr, nLen ) == 0);
+}
+
+static sal_Int32 ImplStringCompare( const STRCODE* pStr1, const STRCODE* pStr2,
+ xub_StrLen nCount )
+{
+ sal_Int32 nRet = 0;
+ while ( nCount &&
+ ((nRet = ((sal_Int32)((STRCODEU)*pStr1))-((sal_Int32)((STRCODEU)*pStr2))) == 0) &&
+ *pStr2 )
+ {
+ ++pStr1,
+ ++pStr2,
+ --nCount;
+ }
+
+ return nRet;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool STRING::Equals( const STRCODE* pCharStr, xub_StrLen nIndex, xub_StrLen nLen ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ // Are there enough codes for comparing?
+ if ( nIndex > mpData->mnLen )
+ return (*pCharStr == 0);
+
+ return (ImplStringCompare( mpData->maStr+nIndex, pCharStr, nLen ) == 0);
+}
+
+// -----------------------------------------------------------------------
+
+void STRING::SearchAndReplaceAll( STRCODE c, STRCODE cRep )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ sal_Int32 nLen = mpData->mnLen;
+ const STRCODE* pStr = mpData->maStr;
+ sal_Int32 nIndex = 0;
+ while ( nIndex < nLen )
+ {
+ if ( *pStr == c )
+ {
+ ImplCopyData();
+ mpData->maStr[nIndex] = cRep;
+ }
+ ++pStr,
+ ++nIndex;
+ }
+}
+
+// -----------------------------------------------------------------------
+
+void STRING::SearchAndReplaceAll( const STRING& rStr, const STRING& rRepStr )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
+
+ xub_StrLen nSPos = Search( rStr, 0 );
+ while ( nSPos != STRING_NOTFOUND )
+ {
+ Replace( nSPos, rStr.Len(), rRepStr );
+ nSPos = nSPos + rRepStr.Len();
+ nSPos = Search( rStr, nSPos );
+ }
+}
+
+// -----------------------------------------------------------------------
+
+xub_StrLen STRING::SearchAndReplace( const STRING& rStr, const STRING& rRepStr,
+ xub_StrLen nIndex )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING );
+ DBG_CHKOBJ( &rRepStr, STRING, DBGCHECKSTRING );
+
+ xub_StrLen nSPos = Search( rStr, nIndex );
+ if ( nSPos != STRING_NOTFOUND )
+ Replace( nSPos, rStr.Len(), rRepStr );
+
+ return nSPos;
+}
+
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/inc/bf_tools/string.hxx b/binfilter/inc/bf_tools/string.hxx
index b421f5b4f..d81a51c1d 100644
--- a/binfilter/inc/bf_tools/string.hxx
+++ b/binfilter/inc/bf_tools/string.hxx
@@ -129,23 +129,24 @@ private:
ByteString( const UniString& rUniStr,
rtl_TextEncoding eTextEncoding,
sal_uInt32 nCvtFlags = UNISTRING_TO_BYTESTRING_CVTFLAGS ); //not implemented, to detect use of removed methods without compiler making something to fit
+ ByteString( const sal_Char* pCharStr, xub_StrLen nLen ); //not implemented
ByteString& Assign( const sal_Char* pCharStr, xub_StrLen nLen ); //not implemented, to detect use of removed methods without compiler making something to fit
void Assign(int); // not implemented; to detect misuses of
// Assign(sal_Char)
+ ByteString& Assign( sal_Char c ); //not implemented
void operator =(int); // not implemented; to detect misuses
// of operator =(sal_Char)
void Append(int); // not implemented; to detect misuses of
// Append(char)
+ ByteString& Append( char c ); //not implemented
void operator +=(int); // not implemented; to detect misuses
// of operator +=(sal_Char)
-
public:
ByteString();
ByteString( const ByteString& rStr );
ByteString( const ByteString& rStr, xub_StrLen nPos, xub_StrLen nLen );
ByteString( const rtl::OString& rStr );
ByteString( const sal_Char* pCharStr );
- ByteString( const sal_Char* pCharStr, xub_StrLen nLen );
~ByteString();
operator rtl::OString () const
@@ -156,7 +157,6 @@ public:
ByteString& Assign( const ByteString& rStr );
ByteString& Assign( const rtl::OString& rStr );
ByteString& Assign( const sal_Char* pCharStr );
- ByteString& Assign( sal_Char c );
ByteString& operator =( const ByteString& rStr )
{ return Assign( rStr ); }
ByteString& operator =( const rtl::OString& rStr )
@@ -169,7 +169,6 @@ public:
ByteString& Append( const ByteString& rStr );
ByteString& Append( const sal_Char* pCharStr );
ByteString& Append( const sal_Char* pCharStr, xub_StrLen nLen );
- ByteString& Append( char c );
ByteString& operator +=( const ByteString& rStr )
{ return Append( rStr ); }
ByteString& operator +=( const sal_Char* pCharStr )
@@ -177,7 +176,6 @@ public:
ByteString& operator +=( sal_Char c )
{ return Append( c ); }
- void SetChar( xub_StrLen nIndex, sal_Char c );
sal_Char GetChar( xub_StrLen nIndex ) const
{ return mpData->maStr[nIndex]; }
@@ -200,40 +198,14 @@ public:
ByteString& ToLowerAscii();
- StringCompare CompareTo( const ByteString& rStr,
- xub_StrLen nLen = STRING_LEN ) const;
- StringCompare CompareTo( const sal_Char* pCharStr,
- xub_StrLen nLen = STRING_LEN ) const;
- StringCompare CompareIgnoreCaseToAscii( const sal_Char* pCharStr,
- xub_StrLen nLen = STRING_LEN ) const;
sal_Bool Equals( const ByteString& rStr ) const;
sal_Bool Equals( const sal_Char* pCharStr ) const;
- sal_Bool EqualsIgnoreCaseAscii( const ByteString& rStr ) const;
- sal_Bool EqualsIgnoreCaseAscii( const sal_Char* pCharStr ) const;
- sal_Bool Equals( const ByteString& rStr,
- xub_StrLen nIndex, xub_StrLen nLen ) const;
- sal_Bool Equals( const sal_Char* pCharStr,
- xub_StrLen nIndex, xub_StrLen nLen ) const;
-
- xub_StrLen Match( const ByteString& rStr ) 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 SearchAndReplace( const ByteString& rStr, const ByteString& rRepStr,
- xub_StrLen nIndex = 0 );
- xub_StrLen SearchAndReplace( const sal_Char* pCharStr, const ByteString& rRepStr,
- xub_StrLen nIndex = 0 );
- void SearchAndReplaceAll( sal_Char c, sal_Char cRep );
- void SearchAndReplaceAll( const ByteString& rStr, const ByteString& rRepStr );
- void SearchAndReplaceAll( const sal_Char* pCharStr, const ByteString& rRepStr );
-
xub_StrLen GetTokenCount( sal_Char cTok = ';' ) const;
- void SetToken( xub_StrLen nToken, sal_Char cTok, const ByteString& rStr,
- xub_StrLen nIndex = 0 );
- ByteString GetToken( xub_StrLen nToken, sal_Char cTok, xub_StrLen& rIndex ) const;
- ByteString GetToken( xub_StrLen nToken, sal_Char cTok = ';' ) const;
const sal_Char* GetBuffer() const { return mpData->maStr; }
@@ -249,30 +221,6 @@ public:
{ return !(operator == ( rStr, pCharStr )); }
friend sal_Bool operator != ( const sal_Char* pCharStr, const ByteString& rStr )
{ return !(operator == ( pCharStr, rStr )); }
- friend sal_Bool operator < ( const ByteString& rStr1, const ByteString& rStr2 )
- { return (rStr1.CompareTo( rStr2 ) == COMPARE_LESS); }
- friend sal_Bool operator < ( const ByteString& rStr, const sal_Char* pCharStr )
- { return (rStr.CompareTo( pCharStr ) == COMPARE_LESS); }
- friend sal_Bool operator < ( const sal_Char* pCharStr, const ByteString& rStr )
- { return (rStr.CompareTo( pCharStr ) >= COMPARE_EQUAL); }
- friend sal_Bool operator > ( const ByteString& rStr1, const ByteString& rStr2 )
- { return (rStr1.CompareTo( rStr2 ) == COMPARE_GREATER); }
- friend sal_Bool operator > ( const ByteString& rStr, const sal_Char* pCharStr )
- { return (rStr.CompareTo( pCharStr ) == COMPARE_GREATER); }
- friend sal_Bool operator > ( const sal_Char* pCharStr, const ByteString& rStr )
- { return (rStr.CompareTo( pCharStr ) <= COMPARE_EQUAL); }
- friend sal_Bool operator <= ( const ByteString& rStr1, const ByteString& rStr2 )
- { return !(operator > ( rStr1, rStr2 )); }
- friend sal_Bool operator <= ( const ByteString& rStr, const sal_Char* pCharStr )
- { return !(operator > ( rStr, pCharStr )); }
- friend sal_Bool operator <= ( const sal_Char* pCharStr, const ByteString& rStr )
- { return !(operator > ( pCharStr, rStr )); }
- friend sal_Bool operator >= ( const ByteString& rStr1, const ByteString& rStr2 )
- { return !(operator < ( rStr1, rStr2 )); }
- friend sal_Bool operator >= ( const ByteString& rStr, const sal_Char* pCharStr )
- { return !(operator < ( rStr, pCharStr )); }
- friend sal_Bool operator >= ( const sal_Char* pCharStr, const ByteString& rStr )
- { return !(operator < ( pCharStr, rStr )); }
};
inline ByteString ByteString::Copy( xub_StrLen nIndex, xub_StrLen nCount ) const
@@ -280,12 +228,6 @@ inline ByteString ByteString::Copy( xub_StrLen nIndex, xub_StrLen nCount ) const
return ByteString( *this, nIndex, nCount );
}
-inline ByteString ByteString::GetToken( xub_StrLen nToken, sal_Char cTok ) const
-{
- xub_StrLen nTempPos = 0;
- return GetToken( nToken, cTok, nTempPos );
-}
-
// -----------------------------------------------------------------------
// ------------------------