williamr@2: /*
williamr@2: * Copyright (c) 2006-2006 Nokia Corporation and/or its subsidiary(-ies). 
williamr@2: * All rights reserved.
williamr@2: * This component and the accompanying materials are made available
williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: * which accompanies this distribution, and is available
williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2: *
williamr@2: * Initial Contributors:
williamr@2: * Nokia Corporation - initial contribution.
williamr@2: *
williamr@2: * Contributors:
williamr@2: *
williamr@2: * Description:       All memory chunk data functions
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: #ifndef XMLENGINE_CHUNKCONTAINER_H_INCLUDED
williamr@2: #define XMLENGINE_CHUNKCONTAINER_H_INCLUDED
williamr@2: 
williamr@2: #include "xmlengdatacontainer.h"
williamr@2: 
williamr@2: 
williamr@2: /**
williamr@2: * Instance of TXmlEngChunkContainer class represents data stored in RChunks in DOM tree
williamr@2: *
williamr@2: * RChunk data is treated in general as text nodes in DOM tree.
williamr@2: * Some of the fields in xmlNode structure are reused in order to save memory. 
williamr@2: * Data is stored in memory referenced to by RChunk.
williamr@2: *
williamr@2: * Sample code for creating chunk container:
williamr@2: * @code  
williamr@2: *      RXmlEngDOMImplementation domImpl;
williamr@2: *      domImpl.OpenL();        ///< opening DOM implementation object 
williamr@2: *      RXmlEngDocument iDoc; 
williamr@2: *      ///< create document element
williamr@2: *      TXmlEngElement elem = iDoc.CreateDocumentElementL(_L8("doc"));
williamr@2: *      ///< create RChunk object with chunkName name and size
williamr@2: *      RChunk chunk;
williamr@2: *      chunk.CreateGlobal(chunkName, size, maxSize);
williamr@2: *      CleanupClosePushL(chunk); 
williamr@2: *      ///< create chunk container from Rchunk object with offset to the 
williamr@2: *      ///< binary data in chunk and binary data size in chunk (binarySize) 
williamr@2: *      TXmlEngChunkContainer binData = iDoc.CreateChunkContainerL(
williamr@2: *									cid,chunk,offset,binarySize); 
williamr@2: *      ///< append chunkcontainer to the dom tree          
williamr@2: *      TXmlEngNode ref = iDoc.DocumentElement().AppendChildL(binData);
williamr@2: *       ///< closing all opened objects
williamr@2: *      CleanupStack::PopAndDestroy();//chunk
williamr@2: *      iDoc.Close();              
williamr@2: *      domImpl.Close();
williamr@2: * @endcode 
williamr@2: *
williamr@2: * @lib XmlEngineDOM.lib
williamr@2: * @since S60 v3.2
williamr@2: */
williamr@2: class TXmlEngChunkContainer : public TXmlEngDataContainer
williamr@2: {
williamr@2: public:
williamr@2:     /**
williamr@2:      * Get memory chunk reference
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @return Memory chunk reference
williamr@2:      * 
williamr@2:      */
williamr@2:     IMPORT_C RChunk& Chunk() const;
williamr@2: 
williamr@2:     /**
williamr@2:      * Get offset of binary data in memory chunk
williamr@2:      *
williamr@2:      * @since S60 v3.2
williamr@2:      * @return Offset of binary data in memory chunk
williamr@2:      */
williamr@2:     IMPORT_C TUint ChunkOffset() const;   
williamr@2: 	
williamr@2: protected:
williamr@2:     /**
williamr@2:      * Default constructor
williamr@2: 	 *
williamr@2:      * @since S60 v3.1
williamr@2:      */
williamr@2: 	inline TXmlEngChunkContainer(); 
williamr@2: 	
williamr@2:     /**
williamr@2:      * Constructor
williamr@2:      *
williamr@2:      * @since S60 v3.1
williamr@2:      * @param aInternal node pointer
williamr@2:      */
williamr@2: 	inline TXmlEngChunkContainer(void* aInternal);
williamr@2: };
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: #include "xmlengchunkcontainer.inl"
williamr@2: 
williamr@2: #endif /* XMLENGINE_CHUNKCONTAINER_H_INCLUDED */