idlehomescreen/inc/xndomstringpool.h
changeset 2 08c6ee43b396
parent 0 f72a12da539e
--- a/idlehomescreen/inc/xndomstringpool.h	Thu Jan 07 12:39:41 2010 +0200
+++ b/idlehomescreen/inc/xndomstringpool.h	Mon Jan 18 20:10:36 2010 +0200
@@ -15,14 +15,13 @@
 *
 */
 
-
-
 #ifndef XN_DOM_STRING_POOL_H
 #define XN_DOM_STRING_POOL_H
 
 //  INCLUDES
 #include <e32base.h>
 #include <s32strm.h>
+#include "xndomstringpooloptimizer.h"
 
 // CLASS DECLARATION
 
@@ -40,17 +39,27 @@
         
         /**
         * Two-phased constructor.
+        * 
+        * @param    aAllowDuplicates        ETrue if duplicates are to be allowed.
+        *                                   Supported for legacy reasons. 
         */
-        static CXnDomStringPool* NewL();
+        static CXnDomStringPool* NewL( const TBool aAllowDuplicates = EFalse );
+
         /**
         * Two-phased stream constructor.
+        * 
+        * @param    aStream                 Stream where string pool is internalized.
+        * @param    aAllowDuplicates        ETrue if duplicates are to be allowed.
+        *                                   Supported for legacy reasons. 
         */
-        static CXnDomStringPool* NewL( RReadStream& aStream );
+        static CXnDomStringPool* NewL( RReadStream& aStream,
+                const TBool aAllowDuplicates = EFalse );
+        
         /**
         * Destructor.
         */
         virtual ~CXnDomStringPool();
-
+        
    public: 
         /**
         * Make a copy from original StringPool.
@@ -58,18 +67,36 @@
         * @return Pointer to a string pool. Ownership is transferred to a caller.
         */
         CXnDomStringPool* CloneL(); 
+        
    public: //Adding
         
         /**
         * Set dom string into string pool.
+        * 
         * @param aString String to add to string pool
         * @return Index (reference) to string pool
         */
-        IMPORT_C TInt AddStringL( const TDesC8& aString ); 
-   
+        TInt AddStringL( const TDesC8& aString ); 
+
+        /**
+        * Set dom string into string pool.
+        * 
+        * @param aString String to add to string pool. OWNERSHIP TRANSFERRED!
+        * @return Index (reference) to string pool
+        */
+        TInt AddStringL( HBufC8* aString );         
+
+        /**
+        * Add all string from another string pool.
+        * 
+        * @param aStringPool    Source string pool.
+        */
+        void AddAllL( CXnDomStringPool& aStringPool );        
+        
    public: //Accessing     
         /**
-        * Get pointer to the node element name.
+        * Get reference to string.
+        * 
         * @param aMap Map object which has index to name string
         * @return Pointer to the name
         */
@@ -77,46 +104,67 @@
         
         /**
         * Get object's data size in bytes.
+        * 
         * @return Data size in bytes
         */
         TInt Size() const;
+
+        /**
+        * Get amount of strings.
+        */
+        TInt Count() const;        
         
         /**
-        * Externalize object
+        * Externalize object.
+        * 
         * @param aStream Output stream
         */
         void ExternalizeL( RWriteStream& aStream ) const;
        
         /**
-        * Internalize object
+        * Internalize object.
+        * 
         * @param aStream Input stream
         */
         void InternalizeL( RReadStream& aStream );          
         
-        /**
-        * Get index offset to string array for shared resources
-        * @return An offset that caller must add to its indexes
-        */
-        TUint Offset() const;
-
    private:
 
         /**
         * C++ default constructor.
+        * 
+        * @param    aAllowDuplicates        ETrue if duplicates are to be allowed.
+        *                                   Supported for legacy reasons.
         */
-        CXnDomStringPool();
+        CXnDomStringPool( const TBool aAllowDuplicates );
 
         /**
-        * By default Symbian 2nd phase constructor is private.
+        * By default Symbian 2nd phase constructor is private. 
         */
-        void ConstructL();
-     
-    private:    
+        void ConstructL();    
+        
+        /**
+        * Add string to string pool and to optimizer also.
+        * 
+        * @param aNewString     String to be added. OWNERSHIP TRANSFERRED.
+        * @param TInt           Index to added string.
+        */
+        TInt DoAddStringL( HBufC8* aNewString ) ;
+        
+    private:            
         //String pool
         RPointerArray<HBufC8>       iStringPool;
-       
-        TUint iStringPoolOffsetCurrent; // Internalize uses 
-        TUint iStringPoolOffsetNext;
+        
+        /**
+         * String pool optimizer.
+         */
+        TXnDomStringPoolOptimizer iStringPoolOptimizer;
+        
+        /**
+         * ETrue if string pool can contain duplicate entries. Must
+         * be supported for legacy reasons while loading xuikon odts.
+         */
+        TBool iAllowDuplicates;
     };
 
 #endif      // XN_DOM_STRING_POOL_H