diff options
author | Oliver Günther <mail@oliverguenther.de> | 2012-08-11 23:01:00 +0000 |
---|---|---|
committer | Philipp Riemer <ruderphilipp@gmail.com> | 2012-08-19 21:26:59 +0200 |
commit | 9cadf9bdf3c9210d9b79eaaed32282d6b7bf9e12 (patch) | |
tree | bf2a2f36a9ba8e57f34d4ad4636819d014c338e2 /tools/source/string | |
parent | c55a340a992199c5eb2d8b9cbe2fea539c6f83aa (diff) |
fdo#39468: Translated German comments in core/tools/source
Change-Id: I28ec097a70a8d71312d9e8382c3cf71a1eabde88
Diffstat (limited to 'tools/source/string')
-rw-r--r-- | tools/source/string/strascii.cxx | 82 | ||||
-rw-r--r-- | tools/source/string/strimp.cxx | 102 | ||||
-rw-r--r-- | tools/source/string/tustring.cxx | 122 |
3 files changed, 139 insertions, 167 deletions
diff --git a/tools/source/string/strascii.cxx b/tools/source/string/strascii.cxx index 2a080e6e5d4a..e057c03fc655 100644 --- a/tools/source/string/strascii.cxx +++ b/tools/source/string/strascii.cxx @@ -98,7 +98,7 @@ static sal_Int32 ImplStringICompareAscii( const sal_Unicode* pStr1, const sal_Ch sal_Char c2; do { - // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln + // Convert if char is between 'A' and 'Z' c1 = *pStr1; c2 = *pStr2; if ( (c1 >= 65) && (c1 <= 90) ) @@ -128,7 +128,7 @@ static sal_Int32 ImplStringICompareAscii( const sal_Unicode* pStr1, const sal_Ch if ( !nCount ) break; - // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln + // Convert if char is between 'A' and 'Z' c1 = *pStr1; c2 = *pStr2; if ( (c1 >= 65) && (c1 <= 90) ) @@ -153,7 +153,7 @@ UniString& UniString::AssignAscii( const sal_Char* pAsciiStr ) DBG_CHKTHIS( UniString, DbgCheckUniString ); DBG_ASSERT( pAsciiStr, "UniString::AssignAscii() - pAsciiStr is NULL" ); - // Stringlaenge ermitteln + // Determine string length xub_StrLen nLen = ImplStringLen( pAsciiStr ); if ( !nLen ) @@ -162,15 +162,15 @@ UniString& UniString::AssignAscii( const sal_Char* pAsciiStr ) } else { - // Wenn String genauso lang ist, wie der String, dann direkt kopieren + // Replace string in-place if new size is equal if ( (nLen == mpData->mnLen) && (mpData->mnRefCount == 1) ) ImplCopyAsciiStr( mpData->maStr, pAsciiStr, nLen ); else { - // Alte Daten loeschen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); - // Daten initialisieren und String kopieren + // copy new string mpData = ImplAllocData( nLen ); ImplCopyAsciiStr( mpData->maStr, pAsciiStr, nLen ); } @@ -206,15 +206,15 @@ UniString& UniString::AssignAscii( const sal_Char* pAsciiStr, xub_StrLen nLen ) } else { - // Wenn String genauso lang ist, wie der String, dann direkt kopieren + // Replace string in-place if new size is equal if ( (nLen == mpData->mnLen) && (mpData->mnRefCount == 1) ) ImplCopyAsciiStr( mpData->maStr, pAsciiStr, nLen ); else { - // Alte Daten loeschen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); - // Daten initialisieren und String kopieren + // copy new string mpData = ImplAllocData( nLen ); ImplCopyAsciiStr( mpData->maStr, pAsciiStr, nLen ); } @@ -228,23 +228,23 @@ UniString& UniString::AppendAscii( const sal_Char* pAsciiStr ) DBG_CHKTHIS( UniString, DbgCheckUniString ); DBG_ASSERT( pAsciiStr, "UniString::AppendAscii() - pAsciiStr is NULL" ); - // Stringlaenge ermitteln + // determine string length sal_Int32 nCopyLen = ImplStringLen( pAsciiStr ); - // Ueberlauf abfangen + // detect overflow nCopyLen = ImplGetCopyLen( mpData->mnLen, nCopyLen ); - // Ist es kein leerer String + // If appended string is not empty if ( nCopyLen ) { - // Neue Datenstruktur und neuen String erzeugen + // Allocate new string UniStringData* pNewData = ImplAllocData( mpData->mnLen+nCopyLen ); - // String kopieren + // copy string data memcpy( pNewData->maStr, mpData->maStr, mpData->mnLen*sizeof( sal_Unicode ) ); ImplCopyAsciiStr( pNewData->maStr+mpData->mnLen, pAsciiStr, nCopyLen ); - // Alte Daten loeschen und Neue zuweisen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -273,20 +273,20 @@ UniString& UniString::AppendAscii( const sal_Char* pAsciiStr, xub_StrLen nLen ) } #endif - // Ueberlauf abfangen + // detect overflow sal_Int32 nCopyLen = ImplGetCopyLen( mpData->mnLen, nLen ); - // Ist es kein leerer String + // If appended string is not empty if ( nCopyLen ) { - // Neue Datenstruktur und neuen String erzeugen + // Allocate new string UniStringData* pNewData = ImplAllocData( mpData->mnLen+nCopyLen ); - // String kopieren + // copy string data memcpy( pNewData->maStr, mpData->maStr, mpData->mnLen*sizeof( sal_Unicode ) ); ImplCopyAsciiStr( pNewData->maStr+mpData->mnLen, pAsciiStr, nCopyLen ); - // Alte Daten loeschen und Neue zuweisen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -299,30 +299,30 @@ UniString& UniString::InsertAscii( const char* pAsciiStr, xub_StrLen nIndex ) DBG_CHKTHIS( UniString, DbgCheckUniString ); DBG_ASSERT( pAsciiStr, "UniString::InsertAscii() - pAsciiStr is NULL" ); - // Stringlaenge ermitteln + // Determine string length sal_Int32 nCopyLen = ImplStringLen( pAsciiStr ); - // Ueberlauf abfangen + // detect overflow nCopyLen = ImplGetCopyLen( mpData->mnLen, nCopyLen ); - // Ist der einzufuegende String ein Leerstring + // If appended string is not empty if ( !nCopyLen ) return *this; - // Index groesser als Laenge + // Adjust index if exceeds length if ( nIndex > mpData->mnLen ) nIndex = static_cast< xub_StrLen >(mpData->mnLen); - // Neue Laenge ermitteln und neuen String anlegen + // Allocate new string UniStringData* pNewData = ImplAllocData( mpData->mnLen+nCopyLen ); - // String kopieren + // copy string data memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( sal_Unicode ) ); ImplCopyAsciiStr( pNewData->maStr+nIndex, pAsciiStr, nCopyLen ); memcpy( pNewData->maStr+nIndex+nCopyLen, mpData->maStr+nIndex, (mpData->mnLen-nIndex)*sizeof( sal_Unicode ) ); - // Alte Daten loeschen und Neue zuweisen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -335,31 +335,31 @@ UniString& UniString::ReplaceAscii( xub_StrLen nIndex, xub_StrLen nCount, DBG_CHKTHIS( UniString, DbgCheckUniString ); DBG_ASSERT( pAsciiStr, "UniString::ReplaceAscii() - pAsciiStr is NULL" ); - // Wenn Index groessergleich Laenge ist, dann ist es ein Append + // Use append if index >= length if ( nIndex >= mpData->mnLen ) { AppendAscii( pAsciiStr, nStrLen ); return *this; } - // Ist es eine Zuweisung + // Use assign if index = 0 and count >= length if ( (nIndex == 0) && (nCount >= mpData->mnLen) ) { AssignAscii( pAsciiStr, nStrLen ); return *this; } - // Reicht ein Erase + // Use erase if length is equal if ( nStrLen == STRING_LEN ) nStrLen = ImplStringLen( pAsciiStr ); if ( !nStrLen ) return Erase( nIndex, nCount ); - // nCount darf nicht ueber das Stringende hinnausgehen + // nCount must not exceed string length if ( nCount > mpData->mnLen - nIndex ) nCount = static_cast< xub_StrLen >(mpData->mnLen-nIndex); - // Reicht eine zeichenweise Zuweisung + // Use assign if length matches if ( nCount == nStrLen ) { ImplCopyData(); @@ -367,19 +367,19 @@ UniString& UniString::ReplaceAscii( xub_StrLen nIndex, xub_StrLen nCount, return *this; } - // Ueberlauf abfangen + // detect overflow sal_Int32 n = ImplGetCopyLen( mpData->mnLen-nCount, nStrLen ); - // Neue Daten anlegen + // allocate new string STRINGDATA* pNewData = ImplAllocData( mpData->mnLen-nCount+n ); - // String kopieren + // copy string data memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) ); ImplCopyAsciiStr( pNewData->maStr+nIndex, pAsciiStr, n ); memcpy( pNewData->maStr+nIndex+n, mpData->maStr+nIndex+nCount, (mpData->mnLen-nIndex-nCount+1)*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // release old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -412,10 +412,9 @@ StringCompare UniString::CompareIgnoreCaseToAscii( const sal_Char* pAsciiStr, DBG_ASSERT( ImplDbgCheckAsciiStr( pAsciiStr, nLen ), "UniString::CompareIgnoreCaseToAscii() - pAsciiStr include characters > 127" ); - // String vergleichen + // compare strings sal_Int32 nCompare = ImplStringICompareAscii( mpData->maStr, pAsciiStr, nLen ); - // Rueckgabewert anpassen if ( nCompare == 0 ) return COMPARE_EQUAL; else if ( nCompare < 0 ) @@ -479,8 +478,7 @@ xub_StrLen UniString::SearchAscii( const sal_Char* pAsciiStr, xub_StrLen nIndex sal_Int32 nLen = mpData->mnLen; xub_StrLen nStrLen = ImplStringLen( pAsciiStr ); - // Falls die Laenge des uebergebenen Strings 0 ist oder der Index - // hinter dem String liegt, dann wurde der String nicht gefunden + // If length of pAsciiStr is 0 or index exceeds length, it was not found if ( !nStrLen || (nIndex >= nLen) ) return STRING_NOTFOUND; @@ -500,10 +498,10 @@ xub_StrLen UniString::SearchAscii( const sal_Char* pAsciiStr, xub_StrLen nIndex } else { - // Nur innerhalb des Strings suchen + // Only search within string while ( nLen - nIndex >= nStrLen ) { - // Stimmt der String ueberein + // Check if string matches if ( ImplStringCompareWithoutZeroAscii( pStr, pAsciiStr, nStrLen ) == 0 ) return nIndex; ++pStr, diff --git a/tools/source/string/strimp.cxx b/tools/source/string/strimp.cxx index 5c36af8d53f2..3c47dabfbeb6 100644 --- a/tools/source/string/strimp.cxx +++ b/tools/source/string/strimp.cxx @@ -62,7 +62,6 @@ const char* DBGCHECKSTRING( const void* pString ) static STRINGDATA* ImplAllocData( sal_Int32 nLen ) { - // Dann kopiere die Daten STRINGDATA* pData = (STRINGDATA*)rtl_allocateMemory( sizeof(STRINGDATA)+(nLen*sizeof( STRCODE )) ); pData->mnRefCount = 1; pData->mnLen = nLen; @@ -84,14 +83,13 @@ inline void STRING::ImplCopyData() { DBG_ASSERT( (mpData->mnRefCount != 0), "String::ImplCopyData() - RefCount == 0" ); - // ist es ein referenzierter String, dann die Daten abkoppeln + // Dereference data if this string is referenced if ( mpData->mnRefCount != 1 ) mpData = _ImplCopyData( mpData ); } inline STRCODE* STRING::ImplCopyStringData( STRCODE* pStr ) { - // Ist der Referenzzaehler groesser 0 if ( mpData->mnRefCount != 1 ) { DBG_ASSERT( (pStr >= mpData->maStr) && ((pStr-mpData->maStr) < mpData->mnLen), @@ -124,8 +122,7 @@ STRING::STRING( const STRING& rStr ) DBG_CTOR( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Pointer auf die Daten des uebergebenen Strings setzen und - // Referenzzaehler erhoehen + // Set pointer to argument string and increase reference counter STRING_ACQUIRE((STRING_TYPE *)rStr.mpData); mpData = rStr.mpData; } @@ -136,21 +133,19 @@ STRING::STRING( const STRING& rStr, xub_StrLen nPos, xub_StrLen nLen ) DBG_CTOR( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Stringlaenge ermitteln if ( nPos > rStr.mpData->mnLen ) nLen = 0; else { - // Laenge korrigieren, wenn noetig + // correct length if necessary sal_Int32 nMaxLen = rStr.mpData->mnLen-nPos; if ( nLen > nMaxLen ) nLen = static_cast< xub_StrLen >(nMaxLen); } - // Ist es kein leerer String if ( nLen ) { - // Reicht ein einfaches erhoehen des Referenzcounters + // Increase reference counter if it suffices if ( (nPos == 0) && (nLen == rStr.mpData->mnLen) ) { STRING_ACQUIRE((STRING_TYPE *)rStr.mpData); @@ -158,7 +153,7 @@ STRING::STRING( const STRING& rStr, xub_StrLen nPos, xub_StrLen nLen ) } else { - // Verwaltungsdaten anlegen und String kopieren + // otherwise, copy string mpData = ImplAllocData( nLen ); memcpy( mpData->maStr, rStr.mpData->maStr+nPos, nLen*sizeof( STRCODE ) ); } @@ -173,7 +168,7 @@ STRING::~STRING() { DBG_DTOR( STRING, DBGCHECKSTRING ); - // Daten loeschen + // free string data STRING_RELEASE((STRING_TYPE *)mpData); } @@ -193,7 +188,7 @@ STRING& STRING::Append( const STRING& rStr ) DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Wenn String leer, dann reicht eine Zuweisung + // Assignment is sufficient if string is empty sal_Int32 nLen = mpData->mnLen; if ( !nLen ) { @@ -203,20 +198,19 @@ STRING& STRING::Append( const STRING& rStr ) } else { - // Ueberlauf abfangen + // Detect overflow sal_Int32 nCopyLen = ImplGetCopyLen( nLen, rStr.mpData->mnLen ); - // Ist der uebergebene String kein Leerstring if ( nCopyLen ) { - // Neue Datenstruktur und neuen String erzeugen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( nLen+nCopyLen ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nLen, rStr.mpData->maStr, nCopyLen*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -230,24 +224,23 @@ STRING& STRING::Append( const STRCODE* pCharStr ) DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_ASSERT( pCharStr, "String::Append() - pCharStr is NULL" ); - // Stringlaenge ermitteln + // determine string length sal_Int32 nLen = mpData->mnLen; sal_Int32 nCopyLen = ImplStringLen( pCharStr ); - // Ueberlauf abfangen + // detect overflow nCopyLen = ImplGetCopyLen( nLen, nCopyLen ); - // Ist es kein leerer String if ( nCopyLen ) { - // Neue Datenstruktur und neuen String erzeugen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( nLen+nCopyLen ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nLen, pCharStr, nCopyLen*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -260,7 +253,7 @@ 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 + // copy data if necessary ImplCopyData(); mpData->maStr[nIndex] = c; } @@ -270,27 +263,26 @@ STRING& STRING::Insert( const STRING& rStr, xub_StrLen nIndex ) DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Ueberlauf abfangen + // detect overflow sal_Int32 nCopyLen = ImplGetCopyLen( mpData->mnLen, rStr.mpData->mnLen ); - // Ist der einzufuegende String ein Leerstring if ( !nCopyLen ) return *this; - // Index groesser als Laenge + // adjust index if necessary if ( nIndex > mpData->mnLen ) nIndex = static_cast< xub_StrLen >(mpData->mnLen); - // Neue Laenge ermitteln und neuen String anlegen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( mpData->mnLen+nCopyLen ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nIndex, rStr.mpData->maStr, nCopyLen*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nIndex+nCopyLen, mpData->maStr+nIndex, (mpData->mnLen-nIndex)*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -302,34 +294,33 @@ STRING& STRING::Replace( xub_StrLen nIndex, xub_StrLen nCount, const STRING& rSt DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Wenn Index groessergleich Laenge ist, dann ist es ein Append + // Append if index > current length if ( nIndex >= mpData->mnLen ) { Append( rStr ); return *this; } - // Ist es eine Zuweisung + // assign if index = 0 and length >= stringlen if ( (nIndex == 0) && (nCount >= mpData->mnLen) ) { Assign( rStr ); return *this; } - // Reicht ein Erase + // Use erase if replacestring is empty sal_Int32 nStrLen = rStr.mpData->mnLen; if ( !nStrLen ) return Erase( nIndex, nCount ); - // nCount darf nicht ueber das Stringende hinnausgehen + // Adjust nCount if it's larger than the string 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 + // Use character-based assignment if length is equal if ( nCount == nStrLen ) { ImplCopyData(); @@ -337,19 +328,19 @@ STRING& STRING::Replace( xub_StrLen nIndex, xub_StrLen nCount, const STRING& rSt return *this; } - // Ueberlauf abfangen + // detect overflow nStrLen = ImplGetCopyLen( mpData->mnLen-nCount, nStrLen ); - // Neue Daten anlegen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( mpData->mnLen-nCount+nStrLen ); - // String kopieren + // copy string 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 + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -360,26 +351,25 @@ STRING& STRING::Erase( xub_StrLen nIndex, xub_StrLen nCount ) { DBG_CHKTHIS( STRING, DBGCHECKSTRING ); - // Ist der Index ausserhalb des Strings oder ist nCount == 0 + // Return if index outside string or count = 0 if ( (nIndex >= mpData->mnLen) || !nCount ) return *this; - // nCount darf nicht ueber das Stringende hinnausgehen + // Adjust nCount if it's larger than the string if ( nCount > mpData->mnLen - nIndex ) nCount = static_cast< xub_StrLen >(mpData->mnLen-nIndex); - // Ist das Ergebnis kein Leerstring if ( mpData->mnLen - nCount ) { - // Neue Daten anlegen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( mpData->mnLen-nCount ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nIndex, mpData->maStr+nIndex+nCount, (mpData->mnLen-nIndex-nCount+1)*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -400,10 +390,10 @@ STRING& STRING::ToLowerAscii() STRCODE* pStr = mpData->maStr; while ( nIndex < nLen ) { - // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln + // Convert if char is between 'A' and 'Z' if ( (*pStr >= 65) && (*pStr <= 90) ) { - // Daten kopieren, wenn noetig + // allocate string of new size pStr = ImplCopyStringData( pStr ); *pStr += 32; } @@ -441,8 +431,8 @@ xub_StrLen STRING::Search( const STRING& rStr, xub_StrLen nIndex ) const 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 + // rStr was not found if its length is zero + // or index is larger than searched string if ( !nStrLen || (nIndex >= nLen) ) return STRING_NOTFOUND; @@ -464,10 +454,10 @@ xub_StrLen STRING::Search( const STRING& rStr, xub_StrLen nIndex ) const { const STRCODE* pStr2 = rStr.mpData->maStr; - // Nur innerhalb des Strings suchen + // search only within string while ( nLen - nIndex >= nStrLen ) { - // Stimmt der String ueberein + // increase match if found if ( ImplStringCompareWithoutZero( pStr1, pStr2, nStrLen ) == 0 ) return nIndex; ++pStr1, @@ -485,8 +475,8 @@ xub_StrLen STRING::Search( const STRCODE* pCharStr, xub_StrLen nIndex ) const sal_Int32 nLen = mpData->mnLen; xub_StrLen nStrLen = ImplStringLen( pCharStr ); - // Falls die Laenge des uebergebenen Strings 0 ist oder der Index - // hinter dem String liegt, dann wurde der String nicht gefunden + // rStr was not found if its length is zero + // or index is larger than searched string if ( !nStrLen || (nIndex >= nLen) ) return STRING_NOTFOUND; @@ -506,10 +496,10 @@ xub_StrLen STRING::Search( const STRCODE* pCharStr, xub_StrLen nIndex ) const } else { - // Nur innerhalb des Strings suchen + // search only within string while ( nLen - nIndex >= nStrLen ) { - // Stimmt der String ueberein + // increase match if found if ( ImplStringCompareWithoutZero( pStr, pCharStr, nStrLen ) == 0 ) return nIndex; ++pStr, diff --git a/tools/source/string/tustring.cxx b/tools/source/string/tustring.cxx index eb04784e474f..58217be7c270 100644 --- a/tools/source/string/tustring.cxx +++ b/tools/source/string/tustring.cxx @@ -128,38 +128,37 @@ STRING& STRING::Insert( const STRING& rStr, xub_StrLen nPos, xub_StrLen nLen, DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Stringlaenge ermitteln + // Determine string length if ( nPos > rStr.mpData->mnLen ) nLen = 0; else { - // Laenge korrigieren, wenn noetig + // Correct length if necessary sal_Int32 nMaxLen = rStr.mpData->mnLen-nPos; if ( nLen > nMaxLen ) nLen = static_cast< xub_StrLen >(nMaxLen); } - // Ueberlauf abfangen + // Detect overflow sal_Int32 nCopyLen = ImplGetCopyLen( mpData->mnLen, nLen ); - // Ist der einzufuegende String ein Leerstring if ( !nCopyLen ) return *this; - // Index groesser als Laenge + // Correct index if necessary if ( nIndex > mpData->mnLen ) nIndex = static_cast< xub_StrLen >(mpData->mnLen); - // Neue Laenge ermitteln und neuen String anlegen + // Determine new length and allocate string STRINGDATA* pNewData = ImplAllocData( mpData->mnLen+nCopyLen ); - // String kopieren + // copy string to newdata memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nIndex, rStr.mpData->maStr+nPos, nCopyLen*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nIndex+nCopyLen, mpData->maStr+nIndex, (mpData->mnLen-nIndex)*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // release old data STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -177,7 +176,7 @@ static sal_Int32 ImplStringICompareWithoutZero( const STRCODE* pStr1, const STRC if ( !nCount ) break; - // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln + // convert if char is between 'A' and 'Z' c1 = *pStr1; c2 = *pStr2; if ( (c1 >= 65) && (c1 <= 90) ) @@ -211,7 +210,6 @@ sal_Bool STRING::EqualsIgnoreCaseAscii( const STRING& rStr, xub_StrLen nIndex, x nLen = static_cast< xub_StrLen >(nMaxLen); } - // String vergleichen return (ImplStringICompareWithoutZero( mpData->maStr+nIndex, rStr.mpData->maStr, nLen ) == 0); } @@ -221,20 +219,17 @@ StringCompare STRING::CompareIgnoreCaseToAscii( const STRING& rStr, DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Auf Gleichheit der Pointer testen if ( mpData == rStr.mpData ) return COMPARE_EQUAL; - // Maximale Laenge ermitteln + // determine maximal length 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 = ImplStringICompareWithoutZero( mpData->maStr, rStr.mpData->maStr, nLen ); - // Rueckgabewert anpassen if ( nCompare == 0 ) return COMPARE_EQUAL; else if ( nCompare < 0 ) @@ -250,10 +245,10 @@ STRING& STRING::Fill( xub_StrLen nCount, STRCODE cFillChar ) if ( !nCount ) return *this; - // Ist nCount groesser wie der jetzige String, dann verlaengern + // extend string if fill length is larger if ( nCount > mpData->mnLen ) { - // dann neuen String mit der neuen Laenge anlegen + // allocate string of new length STRINGDATA* pNewData = ImplAllocData( nCount ); STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -277,25 +272,25 @@ STRING& STRING::Expand( xub_StrLen nCount, STRCODE cExpandChar ) { DBG_CHKTHIS( STRING, DBGCHECKSTRING ); - // Muss der String erweitert werden + // return if string doesn't need expanding sal_Int32 nLen = mpData->mnLen; if ( nCount <= nLen ) return *this; - // Neuen String anlegen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( nCount ); - // Alten String kopieren + // copy from old string memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); - // und initialisieren + // and expand using the given character STRCODE* pStr = pNewData->maStr; pStr += nLen; for (sal_Int32 i = nCount - nLen; i > 0; --i) { *pStr++ = cExpandChar; } - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -306,17 +301,17 @@ STRCODE* STRING::GetBufferAccess() { DBG_CHKTHIS( STRING, DBGCHECKSTRING ); - // Daten kopieren, wenn noetig + // Copy data if necessary if ( mpData->mnLen ) ImplCopyData(); - // Pointer auf den String zurueckgeben + // return pointer to string data return mpData->maStr; } void STRING::ReleaseBufferAccess( xub_StrLen nLen ) { - // Hier ohne Funktionstest, da String nicht konsistent + // String not consinstent, thus no functionality test DBG_CHKTHIS( STRING, NULL ); DBG_ASSERT( mpData->mnRefCount == 1, "String::ReleaseCharStr() called for String with RefCount" ); @@ -327,7 +322,7 @@ void STRING::ReleaseBufferAccess( xub_StrLen nLen ) { STRING_NEW((STRING_TYPE **)&mpData); } - // Bei mehr als 8 Zeichen unterschied, kuerzen wir den Buffer + // shorten buffer is difference > 8 chars else if ( mpData->mnLen - nLen > 8 ) { STRINGDATA* pNewData = ImplAllocData( nLen ); @@ -360,7 +355,7 @@ STRING::STRING( STRCODE c ) DBG_CTOR( STRING, DBGCHECKSTRING ); DBG_ASSERT( c, "String::String() - c is 0" ); - // Verwaltungsdaten anlegen und initialisieren + // Initalize maintenance data mpData = ImplAllocData( 1 ); mpData->maStr[0] = c; } @@ -369,24 +364,24 @@ STRING& STRING::Insert( STRCODE c, xub_StrLen nIndex ) { DBG_CHKTHIS( STRING, DBGCHECKSTRING ); - // Ist es kein 0-Character + // Don't insert 0 char or string size is maximum if ( !c || (mpData->mnLen == STRING_MAXLEN) ) return *this; - // Index groesser als Laenge + // Adjust string index if ( nIndex > mpData->mnLen ) nIndex = static_cast< xub_StrLen >(mpData->mnLen); - // Neue Laenge ermitteln und neuen String anlegen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( mpData->mnLen+1 ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) ); pNewData->maStr[nIndex] = c; memcpy( pNewData->maStr+nIndex+1, mpData->maStr+nIndex, (mpData->mnLen-nIndex)*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old data STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; @@ -402,10 +397,10 @@ STRING& STRING::ToUpperAscii() STRCODE* pStr = mpData->maStr; while ( nIndex < nLen ) { - // Ist das Zeichen zwischen 'a' und 'z' dann umwandeln + // convert char if between 'a' and 'z' if ( (*pStr >= 97) && (*pStr <= 122) ) { - // Daten kopieren, wenn noetig + // allocate string of new size pStr = ImplCopyStringData( pStr ); *pStr -= 32; } @@ -422,20 +417,17 @@ 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 + // determine maximal length 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 ) @@ -449,15 +441,12 @@ sal_Bool STRING::Equals( 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 (ImplStringCompareWithoutZero( mpData->maStr, rStr.mpData->maStr, mpData->mnLen ) == 0); } @@ -466,15 +455,13 @@ 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 + // compare string while ignoring case return (ImplStringICompareWithoutZero( mpData->maStr, rStr.mpData->maStr, mpData->mnLen ) == 0); } @@ -494,7 +481,6 @@ sal_Bool STRING::Equals( const STRING& rStr, xub_StrLen nIndex, xub_StrLen nLen nLen = static_cast< xub_StrLen >(nMaxLen); } - // String vergleichen return (ImplStringCompareWithoutZero( mpData->maStr+nIndex, rStr.mpData->maStr, nLen ) == 0); } @@ -514,17 +500,17 @@ xub_StrLen STRING::Match( const STRING& rStr ) const DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_CHKOBJ( &rStr, STRING, DBGCHECKSTRING ); - // Ist dieser String leer + // return if string is empty if ( !mpData->mnLen ) return STRING_MATCH; - // Suche bis Stringende nach dem ersten nicht uebereinstimmenden Zeichen + // Search the string for unmatching chars 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 + // Abort on the first unmatching char if ( *pStr1 != *pStr2 ) return i; ++pStr1, @@ -583,11 +569,11 @@ void STRING::SetToken( xub_StrLen nToken, STRCODE cTok, const STRING& rStr, xub_StrLen nFirstChar = nIndex; xub_StrLen i = nFirstChar; - // Bestimme die Token-Position und Laenge + // Determine token position and length pStr += i; while ( i < nLen ) { - // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount + // Increase token count if match if ( *pStr == cTok ) { ++nTok; @@ -619,11 +605,11 @@ STRING STRING::GetToken( xub_StrLen nToken, STRCODE cTok, xub_StrLen& rIndex ) c xub_StrLen nFirstChar = rIndex; xub_StrLen i = nFirstChar; - // Bestimme die Token-Position und Laenge + // Determine token position and length pStr += i; while ( i < nLen ) { - // Stimmt das Tokenzeichen ueberein, dann erhoehe TokCount + // Increase token count if match if ( *pStr == cTok ) { ++nTok; @@ -677,21 +663,20 @@ STRING& STRING::Append( const STRCODE* pCharStr, xub_StrLen nCharLen ) } #endif - // Ueberlauf abfangen + // Catch overflow sal_Int32 nLen = mpData->mnLen; sal_Int32 nCopyLen = ImplGetCopyLen( nLen, nCharLen ); - // Ist es kein leerer String if ( nCopyLen ) { - // Neue Datenstruktur und neuen String erzeugen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( nLen+nCopyLen ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); memcpy( pNewData->maStr+nLen, pCharStr, nCopyLen*sizeof( STRCODE ) ); - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -703,18 +688,18 @@ STRING& STRING::Append( STRCODE c ) { DBG_CHKTHIS( STRING, DBGCHECKSTRING ); - // kein 0-Character und maximale Stringlaenge nicht ueberschreiten + // don't append null characters and keep string length < maxlen sal_Int32 nLen = mpData->mnLen; if ( c && (nLen < STRING_MAXLEN) ) { - // Neue Datenstruktur und neuen String erzeugen + // allocate string of new size STRINGDATA* pNewData = ImplAllocData( nLen+1 ); - // String kopieren + // copy string memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); pNewData->maStr[nLen] = c; - // Alte Daten loeschen und Neue zuweisen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); mpData = pNewData; } @@ -749,15 +734,15 @@ STRING& STRING::Assign( const STRCODE* pCharStr, xub_StrLen nLen ) } else { - // Wenn String genauso lang ist, wie der String, dann direkt kopieren + // copy without allocation if string length is identical if ( (nLen == mpData->mnLen) && (mpData->mnRefCount == 1) ) memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) ); else { - // Alte Daten loeschen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); - // Daten initialisieren und String kopieren + // allocate string of new size and copy mpData = ImplAllocData( nLen ); memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) ); } @@ -771,7 +756,7 @@ STRING& STRING::Assign( STRCODE c ) DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_ASSERT( c, "String::Assign() - c is 0" ); - // Verwaltungsdaten anlegen und initialisieren + // initialize maintenance data STRING_RELEASE((STRING_TYPE *)mpData); mpData = ImplAllocData( 1 ); mpData->maStr[0] = c; @@ -799,7 +784,7 @@ static sal_Int32 ImplStringICompare( const STRCODE* pStr1, const STRCODE* pStr2 STRCODE c2; do { - // Ist das Zeichen zwischen 'A' und 'Z' dann umwandeln + // Convert char if between 'A' and 'Z' c1 = *pStr1; c2 = *pStr2; if ( (c1 >= 65) && (c1 <= 90) ) @@ -830,7 +815,6 @@ STRING& STRING::Assign( const STRCODE* pCharStr ) DBG_CHKTHIS( STRING, DBGCHECKSTRING ); DBG_ASSERT( pCharStr, "String::Assign() - pCharStr is NULL" ); - // Stringlaenge ermitteln xub_StrLen nLen = ImplStringLen( pCharStr ); if ( !nLen ) @@ -839,15 +823,15 @@ STRING& STRING::Assign( const STRCODE* pCharStr ) } else { - // Wenn String genauso lang ist, wie der String, dann direkt kopieren + // copy without allocation if string length is identical if ( (nLen == mpData->mnLen) && (mpData->mnRefCount == 1) ) memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) ); else { - // Alte Daten loeschen + // free old string STRING_RELEASE((STRING_TYPE *)mpData); - // Daten initialisieren und String kopieren + // allocate string of new size and copy mpData = ImplAllocData( nLen ); memcpy( mpData->maStr, pCharStr, nLen*sizeof( STRCODE ) ); } |