| author | Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> | 
| Thu, 17 Dec 2009 09:29:21 +0200 | |
| changeset 0 | e35f40988205 | 
| permissions | -rw-r--r-- | 
| 0 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 1 | // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 2 | // All rights reserved. | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 3 | // This component and the accompanying materials are made available | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 4 | // under the terms of "Eclipse Public License v1.0" | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 5 | // which accompanies this distribution, and is available | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 6 | // at the URL "http://www.eclipse.org/legal/epl-v10.html". | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 7 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 8 | // Initial Contributors: | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 9 | // Nokia Corporation - initial contribution. | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 10 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 11 | // Contributors: | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 12 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 13 | // Description: | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 14 | // Methods for all kind of text nodes | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 15 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 16 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 17 | #include <xml/dom/xmlengcharacterdata.h> | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 18 | #include <stdapis/libxml2/libxml2_tree.h> | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 19 | #include "xmlengdomdefs.h" | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 20 | #include <stdapis/libxml2/libxml2_globals.h> | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 21 | #include <xml/utils/xmlengxestrings.h> //pjj18 new | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 22 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 23 | #define CHARACTER_DATA (static_cast<xmlNodePtr>(iInternal)) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 24 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 25 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 26 | // @return Character contents of the node | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 27 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 28 | // This method applies to TXmlEngCDATASection, TXmlEngComment and TXmlEngTextNode nodes. | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 29 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 30 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 31 | EXPORT_C TPtrC8 TXmlEngCharacterData::Contents() const | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 32 |     {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 33 | return ((TXmlEngConstString)CAST_XMLCHAR_TO_DOMSTRING(LIBXML_NODE ? LIBXML_NODE->content : NULL)).PtrC8(); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 34 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 35 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 36 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 37 | // Sets contents of basic character nodes: TXmlEngTextNode, TXmlEngComment, TXmlEngCDATASection | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 38 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 39 | // @param aNewContents The actual value to store | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 40 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 41 | // The input is taken as non-escaped: for example, | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 42 | // aNewContents = "123 > 34 && P" will be serialized as "123 > 34 && P" | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 43 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 44 | // Escaped contents may be set only for TXmlEngElement and TXmlEngAttr nodes. | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 45 | // @see TXmlEngAttr::SetRawValueL(), TXmlEngElement::SetRawTextL() | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 46 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 47 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 48 | EXPORT_C void TXmlEngCharacterData::SetContentsL( | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 49 | const TDesC8& aNewContents ) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 50 |     {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 51 | char* newContent = (char*)new(ELeave) TUint8[aNewContents.Length() + 1]; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 52 | *(Mem::Copy((TAny*)newContent, aNewContents.Ptr(), aNewContents.Length())) = 0; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 53 | if (LIBXML_NODE->content | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 54 | && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 55 | !(LIBXML_NODE->doc && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 56 | LIBXML_NODE->doc->dict && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 57 | xmlDictOwns(LIBXML_NODE->doc->dict, LIBXML_NODE->content))) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 58 |         {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 59 | xmlFree(LIBXML_NODE->content); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 60 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 61 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 62 | LIBXML_NODE->content = (unsigned char *)newContent; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 63 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 64 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 65 | // ----------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 66 | // Extends the contents of the node by appending aString | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 67 | // ----------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 68 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 69 | EXPORT_C void TXmlEngCharacterData::AppendContentsL( | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 70 | const TDesC8& aString) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 71 |     {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 72 | if (!LIBXML_NODE) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 73 |     	{
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 74 | User::Leave(KXmlEngErrNullNode); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 75 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 76 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 77 | TPtrC8 prevContent = Contents(); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 78 | TInt len = prevContent.Length() + aString.Length() + 1; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 79 | char* newContent = (char*)new(ELeave) TUint8[len]; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 80 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 81 | TAny* last = Mem::Copy((TAny*)newContent, prevContent.Ptr(), prevContent.Length()); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 82 | *(Mem::Copy(last, aString.Ptr(), aString.Length())) = 0; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 83 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 84 | if (LIBXML_NODE->content | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 85 | && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 86 | !(LIBXML_NODE->doc && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 87 | LIBXML_NODE->doc->dict && | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 88 | xmlDictOwns(LIBXML_NODE->doc->dict, LIBXML_NODE->content))) | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 89 |         {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 90 | xmlFree(LIBXML_NODE->content); | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 91 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 92 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 93 | LIBXML_NODE->content = (unsigned char *)newContent; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 94 | } | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 95 | |
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 96 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 97 | // @return Number of characters in the contents | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 98 | // ------------------------------------------------------------------------------- | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 99 | // | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 100 | EXPORT_C TUint TXmlEngCharacterData::Length() const | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 101 |     {
 | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 102 | return CHARACTER_DATA && CHARACTER_DATA->content ? | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 103 | xmlUTF8Strlen(CHARACTER_DATA->content) : 0; | 
| 
e35f40988205
Revision: 200947
 Dremov Kirill (Nokia-D-MSW/Tampere) <kirill.dremov@nokia.com> parents: diff
changeset | 104 | } |