diff options
Diffstat (limited to 'tools/source/string/strimp.cxx')
-rw-r--r-- | tools/source/string/strimp.cxx | 136 |
1 files changed, 0 insertions, 136 deletions
diff --git a/tools/source/string/strimp.cxx b/tools/source/string/strimp.cxx deleted file mode 100644 index de479e450669..000000000000 --- a/tools/source/string/strimp.cxx +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ -/* - * This file is part of the LibreOffice project. - * - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. - * - * This file incorporates work covered by the following license notice: - * - * Licensed to the Apache Software Foundation (ASF) under one or more - * contributor license agreements. See the NOTICE file distributed - * with this work for additional information regarding copyright - * ownership. The ASF licenses this file to you under the Apache - * License, Version 2.0 (the "License"); you may not use this file - * except in compliance with the License. You may obtain a copy of - * the License at http://www.apache.org/licenses/LICENSE-2.0 . - */ - -static sal_Int32 ImplStringCompareWithoutZero( const STRCODE* pStr1, const STRCODE* pStr2, - sal_Int32 nCount ) -{ - sal_Int32 nRet = 0; - while ( nCount && - ((nRet = ((sal_Int32)((STRCODEU)*pStr1))-((sal_Int32)((STRCODEU)*pStr2))) == 0) ) - { - ++pStr1, - ++pStr2, - --nCount; - } - - return nRet; -} - -static STRINGDATA* ImplAllocData( sal_Int32 nLen ) -{ - STRINGDATA* pData = (STRINGDATA*)rtl_allocateMemory( sizeof(STRINGDATA)+(nLen*sizeof( STRCODE )) ); - pData->mnRefCount = 1; - pData->mnLen = nLen; - pData->maStr[nLen] = 0; - return pData; -} - -static STRINGDATA* _ImplCopyData( STRINGDATA* pData ) -{ - unsigned int nSize = sizeof(STRINGDATA)+(pData->mnLen*sizeof( STRCODE )); - STRINGDATA* pNewData = (STRINGDATA*)rtl_allocateMemory( nSize ); - memcpy( pNewData, pData, nSize ); - pNewData->mnRefCount = 1; - STRING_RELEASE((STRING_TYPE *)pData); - return pNewData; -} - -inline void STRING::ImplCopyData() -{ - DBG_ASSERT( (mpData->mnRefCount != 0), "String::ImplCopyData() - RefCount == 0" ); - - // Dereference data if this string is referenced - if ( mpData->mnRefCount != 1 ) - mpData = _ImplCopyData( mpData ); -} - -inline STRCODE* STRING::ImplCopyStringData( STRCODE* pStr ) -{ - if ( mpData->mnRefCount != 1 ) { - DBG_ASSERT( (pStr >= mpData->maStr) && - ((pStr-mpData->maStr) < mpData->mnLen), - "ImplCopyStringData - pStr from other String-Instanz" ); - unsigned int nIndex = (unsigned int)(pStr-mpData->maStr); - mpData = _ImplCopyData( mpData ); - pStr = mpData->maStr + nIndex; - } - return pStr; -} - -inline sal_Int32 ImplGetCopyLen( sal_Int32 nStrLen, sal_Int32 nCopyLen ) -{ - OSL_ASSERT(nStrLen <= STRING_MAXLEN && nCopyLen <= STRING_MAXLEN); - if ( nCopyLen > STRING_MAXLEN-nStrLen ) - nCopyLen = STRING_MAXLEN-nStrLen; - return nCopyLen; -} - -STRING::STRING() - : mpData(NULL) -{ - STRING_NEW((STRING_TYPE **)&mpData); -} - -STRING::STRING( const STRING& rStr ) -{ - // Set pointer to argument string and increase reference counter - STRING_ACQUIRE((STRING_TYPE *)rStr.mpData); - mpData = rStr.mpData; -} - -STRING::~STRING() -{ - // free string data - STRING_RELEASE((STRING_TYPE *)mpData); -} - -STRING& STRING::Append( const STRING& rStr ) -{ - // Assignment is sufficient if string is empty - sal_Int32 nLen = mpData->mnLen; - if ( !nLen ) - { - STRING_ACQUIRE((STRING_TYPE *)rStr.mpData); - STRING_RELEASE((STRING_TYPE *)mpData); - mpData = rStr.mpData; - } - else - { - // Detect overflow - sal_Int32 nCopyLen = ImplGetCopyLen( nLen, rStr.mpData->mnLen ); - - if ( nCopyLen ) - { - // allocate string of new size - STRINGDATA* pNewData = ImplAllocData( nLen+nCopyLen ); - - // copy string - memcpy( pNewData->maStr, mpData->maStr, nLen*sizeof( STRCODE ) ); - memcpy( pNewData->maStr+nLen, rStr.mpData->maStr, nCopyLen*sizeof( STRCODE ) ); - - // free old string - STRING_RELEASE((STRING_TYPE *)mpData); - mpData = pNewData; - } - } - - return *this; -} - -/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |