williamr@4: // Copyright (c) 2006-2009 Nokia Corporation and/or its subsidiary(-ies). williamr@4: // All rights reserved. williamr@4: // This component and the accompanying materials are made available williamr@4: // under the terms of "Eclipse Public License v1.0" williamr@4: // which accompanies this distribution, and is available williamr@4: // at the URL "http://www.eclipse.org/legal/epl-v10.html". williamr@4: // williamr@4: // Initial Contributors: williamr@4: // Nokia Corporation - initial contribution. williamr@4: // williamr@4: // Contributors: williamr@4: // williamr@4: // Description: williamr@4: // All memory chunk data functions williamr@4: // williamr@2: williamr@2: williamr@2: williamr@2: /** williamr@4: @file williamr@4: @publishedAll williamr@4: @released williamr@4: */ williamr@4: #ifndef XMLENGCHUNKCONTAINER_H williamr@4: #define XMLENGCHUNKCONTAINER_H williamr@4: williamr@4: #include williamr@4: williamr@4: williamr@4: /** williamr@4: This class stores a reference to a RChunk handle within the DOM tree. No williamr@4: ownership is tranferred and the client is expected to close the RChunk when it williamr@4: is no longer required. Multiple chunk containers can refer to the same RChunk, williamr@4: regardless of whether the offsets overlap. williamr@4: williamr@4: This class is most often instantiated by calling williamr@4: RXmlEngDocument::CreateChunkContainerL(). williamr@4: williamr@4: Sample code for creating chunk container: williamr@4: @code williamr@4: RXmlEngDOMImplementation domImpl; williamr@4: domImpl.OpenL(); // opening DOM implementation object williamr@4: RXmlEngDocument iDoc; williamr@4: // create document element williamr@4: TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc")); williamr@4: // create RChunk object with chunkName name and size williamr@4: RChunk chunk; williamr@4: chunk.CreateGlobal(chunkName, size, maxSize); williamr@4: CleanupClosePushL(chunk); williamr@4: // create chunk container from Rchunk object with offset to the williamr@4: // binary data in chunk and binary data size in chunk (binarySize) williamr@4: TXmlEngChunkContainer binData = iDoc.CreateChunkContainerL( williamr@4: cid,chunk,offset,binarySize); williamr@4: // append chunkcontainer to the dom tree williamr@4: TXmlEngNode ref = iDoc.DocumentElement().AppendChildL(binData); williamr@4: // closing all opened objects williamr@4: CleanupStack::PopAndDestroy(); //chunk williamr@4: iDoc.Close(); williamr@4: domImpl.Close(); williamr@4: @endcode williamr@2: */ williamr@2: class TXmlEngChunkContainer : public TXmlEngDataContainer williamr@2: { williamr@2: public: williamr@4: /** Get memory chunk reference williamr@4: @return Memory chunk reference williamr@4: */ williamr@2: IMPORT_C RChunk& Chunk() const; williamr@2: williamr@4: /** Get offset of binary data in memory chunk williamr@4: @return Offset of binary data in memory chunk williamr@4: */ williamr@2: IMPORT_C TUint ChunkOffset() const; williamr@2: williamr@2: protected: williamr@4: /** Default constructor */ williamr@2: inline TXmlEngChunkContainer(); williamr@2: williamr@2: /** williamr@4: Constructor williamr@4: @param aInternal node pointer williamr@4: */ williamr@2: inline TXmlEngChunkContainer(void* aInternal); williamr@2: }; williamr@2: williamr@2: williamr@2: williamr@4: #include williamr@2: williamr@4: #endif /* XMLENGCHUNKCONTAINER_H */ williamr@4: