[Libreoffice-commits] .: 2 commits - binfilter/bf_svtools
Caolán McNamara
caolan at kemper.freedesktop.org
Tue Aug 2 04:32:02 PDT 2011
binfilter/bf_svtools/source/misc/tl_tstring.cxx | 46 ++++++++++++++++++++++++
1 file changed, 46 insertions(+)
New commits:
commit cafe84f026ad0a45a308e9a86dd680e0e91dee03
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Aug 2 12:31:32 2011 +0100
add correct missing file
diff --git a/binfilter/bf_svtools/source/misc/tl_tstring.cxx b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
index 7a469d6..8829373 100644
--- a/binfilter/bf_svtools/source/misc/tl_tstring.cxx
+++ b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
@@ -2,7 +2,7 @@
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
+ *
* Copyright 2000, 2010 Oracle and/or its affiliates.
*
* OpenOffice.org - a multi-platform office productivity suite
diff --git a/binfilter/bf_svtools/source/misc/tstring.cxx b/binfilter/bf_svtools/source/misc/tstring.cxx
deleted file mode 100644
index 5911705..0000000
--- a/binfilter/bf_svtools/source/misc/tstring.cxx
+++ /dev/null
@@ -1,368 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_tools.hxx"
-
-#include <string.h>
-
-#include "boost/static_assert.hpp"
-
-#include "osl/diagnose.h"
-#include <osl/interlck.h>
-#include <rtl/alloc.h>
-#include <rtl/memory.h>
-#include <rtl/tencinfo.h>
-
-#include <tools/string.hxx>
-#include <impstrg.hxx>
-
-// For shared byte convert tables
-#include <toolsin.hxx>
-
-#include <tools/debug.hxx>
-
-// =======================================================================
-
-DBG_NAME( ByteString )
-DBG_NAMEEX( UniString )
-
-// -----------------------------------------------------------------------
-
-#define STRCODE sal_Char
-#define STRCODEU unsigned char
-#define STRING ByteString
-#define STRINGDATA ByteStringData
-#define DBGCHECKSTRING DbgCheckByteString
-#define STRING_TYPE rtl_String
-#define STRING_ACQUIRE rtl_string_acquire
-#define STRING_RELEASE rtl_string_release
-#define STRING_NEW rtl_string_new
-
-
-// -----------------------------------------------------------------------
-
-xub_StrLen ImplStringLen( const sal_Char* pStr )
-{
- const sal_Char* pTempStr = pStr;
- while( *pTempStr )
- ++pTempStr;
- return (xub_StrLen)(pTempStr-pStr);
-}
-
-// -----------------------------------------------------------------------
-
-xub_StrLen ImplStringLen( const sal_Unicode* pStr )
-{
- const sal_Unicode* pTempStr = pStr;
- while( *pTempStr )
- ++pTempStr;
- return (xub_StrLen)(pTempStr-pStr);
-}
-
-// -----------------------------------------------------------------------
-
-#include <strimp.cxx>
-#include <strcvt.cxx>
-
-// -----------------------------------------------------------------------
-
-sal_Int32 ByteString::ToInt32() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- return atoi( mpData->maStr );
-}
-
-// -----------------------------------------------------------------------
-
-sal_Int64 ByteString::ToInt64() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- return atoi( mpData->maStr );
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool ByteString::IsLowerAscii() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- sal_Int32 nIndex = 0;
- sal_Int32 nLen = mpData->mnLen;
- const sal_Char* pStr = mpData->maStr;
- while ( nIndex < nLen )
- {
- if ( (*pStr >= 65) && (*pStr <= 90) )
- return sal_False;
-
- ++pStr,
- ++nIndex;
- }
-
- return sal_True;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool ByteString::IsUpperAscii() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- sal_Int32 nIndex = 0;
- sal_Int32 nLen = mpData->mnLen;
- const sal_Char* pStr = mpData->maStr;
- while ( nIndex < nLen )
- {
- if ( (*pStr >= 97) && (*pStr <= 122) )
- return sal_False;
-
- ++pStr,
- ++nIndex;
- }
-
- return sal_True;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool ByteString::IsAlphaAscii() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- sal_Int32 nIndex = 0;
- sal_Int32 nLen = mpData->mnLen;
- const sal_Char* pStr = mpData->maStr;
- while ( nIndex < nLen )
- {
- if ( !(((*pStr >= 97) && (*pStr <= 122)) ||
- ((*pStr >= 65) && (*pStr <= 90))) )
- return sal_False;
-
- ++pStr,
- ++nIndex;
- }
-
- return sal_True;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool ByteString::IsNumericAscii() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- sal_Int32 nIndex = 0;
- sal_Int32 nLen = mpData->mnLen;
- const sal_Char* pStr = mpData->maStr;
- while ( nIndex < nLen )
- {
- if ( !((*pStr >= 48) && (*pStr <= 57)) )
- return sal_False;
-
- ++pStr,
- ++nIndex;
- }
-
- return sal_True;
-}
-
-// -----------------------------------------------------------------------
-
-sal_Bool ByteString::IsAlphaNumericAscii() const
-{
- DBG_CHKTHIS( ByteString, DbgCheckByteString );
-
- sal_Int32 nIndex = 0;
- sal_Int32 nLen = mpData->mnLen;
- const sal_Char* pStr = mpData->maStr;
- while ( nIndex < nLen )
- {
- if ( !(((*pStr >= 97) && (*pStr <= 122)) ||
- ((*pStr >= 65) && (*pStr <= 90)) ||
- ((*pStr >= 48) && (*pStr <= 57))) )
- return sal_False;
-
- ++pStr,
- ++nIndex;
- }
-
- return sal_True;
-}
-
-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;
- while ( ((nRet = ((sal_Int32)((STRCODEU)*pStr1))-((sal_Int32)((STRCODEU)*pStr2))) == 0) &&
- *pStr2 )
- {
- ++pStr1,
- ++pStr2;
- }
-
- return nRet;
-}
-
-sal_Bool STRING::Equals( const STRCODE* pCharStr ) const
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
-
- return (ImplStringCompare( mpData->maStr, pCharStr ) == 0);
-}
-
-STRING& STRING::Insert( const STRCODE* pCharStr, xub_StrLen nIndex )
-{
- DBG_CHKTHIS( STRING, DBGCHECKSTRING );
- DBG_ASSERT( pCharStr, "String::Insert() - pCharStr is NULL" );
-
- // Stringlaenge ermitteln
- sal_Int32 nCopyLen = ImplStringLen( pCharStr );
-
- // Ueberlauf abfangen
- nCopyLen = ImplGetCopyLen( mpData->mnLen, nCopyLen );
-
- // Ist der einzufuegende String ein Leerstring
- if ( !nCopyLen )
- return *this;
-
- // Index groesser als Laenge
- if ( nIndex > mpData->mnLen )
- nIndex = static_cast< xub_StrLen >(mpData->mnLen);
-
- // Neue Laenge ermitteln und neuen String anlegen
- STRINGDATA* pNewData = ImplAllocData( mpData->mnLen+nCopyLen );
-
- // String kopieren
- memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) );
- memcpy( pNewData->maStr+nIndex, pCharStr, nCopyLen*sizeof( STRCODE ) );
- memcpy( pNewData->maStr+nIndex+nCopyLen, mpData->maStr+nIndex,
- (mpData->mnLen-nIndex)*sizeof( STRCODE ) );
-
- // Alte Daten loeschen und Neue zuweisen
- STRING_RELEASE((STRING_TYPE *)mpData);
- mpData = pNewData;
-
- return *this;
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 8910230513a4e7448521cf49d5ffe9fc0f68ae73
Author: Caolán McNamara <caolanm at redhat.com>
Date: Tue Aug 2 12:30:52 2011 +0100
add missing file
diff --git a/binfilter/bf_svtools/source/misc/tl_tstring.cxx b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
new file mode 100644
index 0000000..7a469d6
--- /dev/null
+++ b/binfilter/bf_svtools/source/misc/tl_tstring.cxx
@@ -0,0 +1,46 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+
+#include <bf_tools/string.hxx>
+#include "boost/static_assert.hpp"
+
+namespace binfilter
+{
+ ByteString ByteString_CreateFromInt32(sal_Int32 n, sal_Int16 nRadix)
+ {
+ sal_Char aBuf[RTL_STR_MAX_VALUEOFINT32];
+ BOOST_STATIC_ASSERT(RTL_STR_MAX_VALUEOFINT32 <= STRING_MAXLEN);
+ return ByteString(
+ aBuf,
+ static_cast< xub_StrLen >(rtl_str_valueOfInt32( aBuf, n, nRadix )) );
+ }
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/binfilter/bf_svtools/source/misc/tstring.cxx b/binfilter/bf_svtools/source/misc/tstring.cxx
new file mode 100644
index 0000000..5911705
--- /dev/null
+++ b/binfilter/bf_svtools/source/misc/tstring.cxx
@@ -0,0 +1,368 @@
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+// MARKER(update_precomp.py): autogen include statement, do not remove
+#include "precompiled_tools.hxx"
+
+#include <string.h>
+
+#include "boost/static_assert.hpp"
+
+#include "osl/diagnose.h"
+#include <osl/interlck.h>
+#include <rtl/alloc.h>
+#include <rtl/memory.h>
+#include <rtl/tencinfo.h>
+
+#include <tools/string.hxx>
+#include <impstrg.hxx>
+
+// For shared byte convert tables
+#include <toolsin.hxx>
+
+#include <tools/debug.hxx>
+
+// =======================================================================
+
+DBG_NAME( ByteString )
+DBG_NAMEEX( UniString )
+
+// -----------------------------------------------------------------------
+
+#define STRCODE sal_Char
+#define STRCODEU unsigned char
+#define STRING ByteString
+#define STRINGDATA ByteStringData
+#define DBGCHECKSTRING DbgCheckByteString
+#define STRING_TYPE rtl_String
+#define STRING_ACQUIRE rtl_string_acquire
+#define STRING_RELEASE rtl_string_release
+#define STRING_NEW rtl_string_new
+
+
+// -----------------------------------------------------------------------
+
+xub_StrLen ImplStringLen( const sal_Char* pStr )
+{
+ const sal_Char* pTempStr = pStr;
+ while( *pTempStr )
+ ++pTempStr;
+ return (xub_StrLen)(pTempStr-pStr);
+}
+
+// -----------------------------------------------------------------------
+
+xub_StrLen ImplStringLen( const sal_Unicode* pStr )
+{
+ const sal_Unicode* pTempStr = pStr;
+ while( *pTempStr )
+ ++pTempStr;
+ return (xub_StrLen)(pTempStr-pStr);
+}
+
+// -----------------------------------------------------------------------
+
+#include <strimp.cxx>
+#include <strcvt.cxx>
+
+// -----------------------------------------------------------------------
+
+sal_Int32 ByteString::ToInt32() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ return atoi( mpData->maStr );
+}
+
+// -----------------------------------------------------------------------
+
+sal_Int64 ByteString::ToInt64() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ return atoi( mpData->maStr );
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool ByteString::IsLowerAscii() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ sal_Int32 nIndex = 0;
+ sal_Int32 nLen = mpData->mnLen;
+ const sal_Char* pStr = mpData->maStr;
+ while ( nIndex < nLen )
+ {
+ if ( (*pStr >= 65) && (*pStr <= 90) )
+ return sal_False;
+
+ ++pStr,
+ ++nIndex;
+ }
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool ByteString::IsUpperAscii() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ sal_Int32 nIndex = 0;
+ sal_Int32 nLen = mpData->mnLen;
+ const sal_Char* pStr = mpData->maStr;
+ while ( nIndex < nLen )
+ {
+ if ( (*pStr >= 97) && (*pStr <= 122) )
+ return sal_False;
+
+ ++pStr,
+ ++nIndex;
+ }
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool ByteString::IsAlphaAscii() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ sal_Int32 nIndex = 0;
+ sal_Int32 nLen = mpData->mnLen;
+ const sal_Char* pStr = mpData->maStr;
+ while ( nIndex < nLen )
+ {
+ if ( !(((*pStr >= 97) && (*pStr <= 122)) ||
+ ((*pStr >= 65) && (*pStr <= 90))) )
+ return sal_False;
+
+ ++pStr,
+ ++nIndex;
+ }
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool ByteString::IsNumericAscii() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ sal_Int32 nIndex = 0;
+ sal_Int32 nLen = mpData->mnLen;
+ const sal_Char* pStr = mpData->maStr;
+ while ( nIndex < nLen )
+ {
+ if ( !((*pStr >= 48) && (*pStr <= 57)) )
+ return sal_False;
+
+ ++pStr,
+ ++nIndex;
+ }
+
+ return sal_True;
+}
+
+// -----------------------------------------------------------------------
+
+sal_Bool ByteString::IsAlphaNumericAscii() const
+{
+ DBG_CHKTHIS( ByteString, DbgCheckByteString );
+
+ sal_Int32 nIndex = 0;
+ sal_Int32 nLen = mpData->mnLen;
+ const sal_Char* pStr = mpData->maStr;
+ while ( nIndex < nLen )
+ {
+ if ( !(((*pStr >= 97) && (*pStr <= 122)) ||
+ ((*pStr >= 65) && (*pStr <= 90)) ||
+ ((*pStr >= 48) && (*pStr <= 57))) )
+ return sal_False;
+
+ ++pStr,
+ ++nIndex;
+ }
+
+ return sal_True;
+}
+
+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;
+ while ( ((nRet = ((sal_Int32)((STRCODEU)*pStr1))-((sal_Int32)((STRCODEU)*pStr2))) == 0) &&
+ *pStr2 )
+ {
+ ++pStr1,
+ ++pStr2;
+ }
+
+ return nRet;
+}
+
+sal_Bool STRING::Equals( const STRCODE* pCharStr ) const
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+
+ return (ImplStringCompare( mpData->maStr, pCharStr ) == 0);
+}
+
+STRING& STRING::Insert( const STRCODE* pCharStr, xub_StrLen nIndex )
+{
+ DBG_CHKTHIS( STRING, DBGCHECKSTRING );
+ DBG_ASSERT( pCharStr, "String::Insert() - pCharStr is NULL" );
+
+ // Stringlaenge ermitteln
+ sal_Int32 nCopyLen = ImplStringLen( pCharStr );
+
+ // Ueberlauf abfangen
+ nCopyLen = ImplGetCopyLen( mpData->mnLen, nCopyLen );
+
+ // Ist der einzufuegende String ein Leerstring
+ if ( !nCopyLen )
+ return *this;
+
+ // Index groesser als Laenge
+ if ( nIndex > mpData->mnLen )
+ nIndex = static_cast< xub_StrLen >(mpData->mnLen);
+
+ // Neue Laenge ermitteln und neuen String anlegen
+ STRINGDATA* pNewData = ImplAllocData( mpData->mnLen+nCopyLen );
+
+ // String kopieren
+ memcpy( pNewData->maStr, mpData->maStr, nIndex*sizeof( STRCODE ) );
+ memcpy( pNewData->maStr+nIndex, pCharStr, nCopyLen*sizeof( STRCODE ) );
+ memcpy( pNewData->maStr+nIndex+nCopyLen, mpData->maStr+nIndex,
+ (mpData->mnLen-nIndex)*sizeof( STRCODE ) );
+
+ // Alte Daten loeschen und Neue zuweisen
+ STRING_RELEASE((STRING_TYPE *)mpData);
+ mpData = pNewData;
+
+ return *this;
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
More information about the Libreoffice-commits
mailing list