diff -r 4526337fb576 -r 3eca7e70b1b8 osncore/osncore/src/alfstringdata.cpp --- a/osncore/osncore/src/alfstringdata.cpp Tue Feb 02 00:28:09 2010 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,226 +0,0 @@ -/* -* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: OSN string data implementation. -* -*/ - - -#include -#include - -#if defined(__GNUC__) -#include -#else -#include -#endif - -#include - -#include "alfstringdata.h" -//#include "osn/char.h" -#include - -using namespace std; - -namespace osncore - { - - - -// ------------------------------------------------------------------------- -// stringData -// ------------------------------------------------------------------------- -SAlfStringData::SAlfStringData() : refCount(1), /*_unicode(0),*/ _ascii(0), _maxAscii(QS_INTERNAL_BUFFER_CHARS), _isAsciiValid(1) -{ -//#ifdef QSTRING_DEBUG_ALLOCATIONS - // stringDataInstances++; -//#endif - refCount = 1; - _length=0; -// _unicode = 0; - _isUnicodeValid=0; - _isAsciiValid = 1; - _isHeapAllocated=0; - _ascii = _internalBuffer; - _internalBuffer[0] = 0; -} - -SAlfStringData::~SAlfStringData() -{ - // ASSERT(refCount == 0); - /* if (_unicode && !isUnicodeInternal()) - { - DELETE_QCHAR(_unicode); - } - */ - if (_ascii && !isAsciiInternal()) - { - DELETE_CHAR(_ascii); - } - -} - - -// Copy data -void SAlfStringData::initialize(const char *a, int l) -{ - refCount = 1; - _length = l; - // _unicode = 0; - _isUnicodeValid = 0; - _maxUnicode = 0; - _isAsciiValid = 1; - _isHeapAllocated = 0; - - if (l > QS_INTERNAL_BUFFER_CHARS) - { - _maxAscii = ALLOC_CHAR_GOOD_SIZE(l+1); - _ascii = ALLOC_CHAR(_maxAscii); - //Make sure we have memory before doing data copy. - if(_ascii) - { - if (a) - { - memcpy(_ascii, a, l); - } - _ascii[l] = 0; - } - else{ - _length = 0; - refCount = 0; - _length = 0; - // _unicode = 0; - _isUnicodeValid = 0; - _maxUnicode = 0; - _isAsciiValid = 1; - _isHeapAllocated = 0; - throw bad_alloc(); - } - } - else { - _maxAscii = QS_INTERNAL_BUFFER_CHARS; - _ascii = _internalBuffer; - if (a) - memcpy(_internalBuffer, a, l); - _internalBuffer[l] = 0; - } - - -} - - -bool SAlfStringData::increaseAsciiSize(uint size) -{ - //ASSERT(this != QString::shared_null); - - uint newSize = (uint)ALLOC_CHAR_GOOD_SIZE((size * 3 + 1) / 2); - - /* - if (!_isAsciiValid) - return false; - */ - // ASSERT(_isAsciiValid); - - if (isAsciiInternal()) { - char *newAscii = ALLOC_CHAR(newSize); - if( !newAscii ) return false; - - if (_length) - memcpy(newAscii, _ascii, _length); - _ascii = newAscii; - } else { - char* ap = _ascii; - _ascii = REALLOC_CHAR( _ascii, newSize ); - - if( !_ascii ) - { - // memory manager won't delete the original pointer if realloc failed - _ascii = ap; - return false; - } - } - - _maxAscii = newSize; - _isAsciiValid = 1; - _isUnicodeValid = 0; - return true; -} - - - - - -char* SAlfStringData::ascii() -{ -// return _isAsciiValid ? _ascii :0; -return _ascii; -} - - -/* -AlfChar *SAlfStringData::makeUnicode() -{ - //ASSERT(this != QString::shared_null); - - if (_isAsciiValid){ - char copyBuf[QS_INTERNAL_BUFFER_CHARS]; - // char *str; - - if (_unicode && !isUnicodeInternal()) - DELETE_QCHAR(_unicode); - - if (_length <= QS_INTERNAL_BUFFER_UCHARS){ - if (isAsciiInternal()) { - uint i = _length; - char *tp = ©Buf[0], *fp = _ascii; - while (i--) - *tp++ = *fp++; - // str = ©Buf[0]; - _isAsciiValid = 0; - } - else - { - // str = _ascii; - - } - _unicode = (AlfChar *)_internalBuffer; - _maxUnicode = QS_INTERNAL_BUFFER_UCHARS; - } - else { - uint newSize = ALLOC_QCHAR_GOOD_SIZE(_length); - _unicode = ALLOC_QCHAR(newSize); - if( !_unicode ) - { - _maxUnicode = 0; - return 0; - } - _maxUnicode = newSize; - // str = _ascii; - } - // uint i = _length; - // AlfChar *cp = _unicode; - // while ( i-- ) - // *cp++ = *str++; - - _isUnicodeValid = 1; - } - // else if (!_isUnicodeValid) - // FATAL("invalid character cache",0); - - return _unicode; -} - -*/ -} // osncore -