diff -r 000000000000 -r e35f40988205 xml/libxml2libs/src/xmlengineutils/xmlengutils.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/xml/libxml2libs/src/xmlengineutils/xmlengutils.cpp Thu Dec 17 09:29:21 2009 +0200 @@ -0,0 +1,76 @@ +// Copyright (c) 2006-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: +// This file contains methods allow to change XmlChar to TDesC +// and TDesC to XmlChar +// + +#include +#include + +#include + +#include +#include + +EXPORT_C char* XmlEngEscapeForXmlValueL( + const char* aUnescapedString ) + { + xmlChar* res = xmlEncodeSpecialChars(NULL, (const xmlChar*)aUnescapedString); + if(aUnescapedString && !res) + { + OOM_HAPPENED; + } + return (char*)res; + } + +EXPORT_C char* XmlEngXmlCharFromDesL( + const TDesC& aDes ) // UTF-16 descriptor to convert into UTF-8 zero-terminated string + { + TUint len = ((aDes.Length() + 4) | 0x1F); + char* str = new(ELeave) char[len + 1]; + TPtr8 utf8buf((TUint8*)str, 0, len); + TInt res = CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8buf, aDes); + if (res == 0) + { + str[utf8buf.Size()] = 0; + return str; + } + //the buffer size was not large enough: + //reallocate the larger buffer + const TInt maxSizeOfSymbol = 4; + len = len + res*maxSizeOfSymbol; // res contains number of non-converted UTF-16 characters + delete str; + str = new(ELeave) char[len + 1]; + TPtr8 utf8buf2((TUint8*)str, 0, len); + res = CnvUtfConverter::ConvertFromUnicodeToUtf8(utf8buf2, aDes); + if (res == 0) + { + str[utf8buf2.Size()] = 0; + return str; + } + delete str; + str = NULL; + User::Leave(KErrGeneral); // this should never happen; + return NULL; + } + +EXPORT_C char* XmlEngXmlCharFromDes8L( + const TDesC8& aDes ) + { + TUint len = aDes.Length(); + char* str = new(ELeave) char[len + 1]; + memcpy(str, aDes.Ptr(), len); + str[len] = 0; + return str; + }