diff -r bd874ee5e5e2 -r 502e5d91ad42 homescreenpluginsrv/hspsdom/src/hspsdomattribute.cpp --- a/homescreenpluginsrv/hspsdom/src/hspsdomattribute.cpp Fri Mar 12 15:43:54 2010 +0200 +++ b/homescreenpluginsrv/hspsdom/src/hspsdomattribute.cpp Mon Mar 15 12:41:53 2010 +0200 @@ -35,7 +35,6 @@ { } - // ----------------------------------------------------------------------------- // ChspsDomAttribute::ConstructL // Symbian 2nd phase constructor can leave. @@ -45,6 +44,17 @@ { iNameRef = iStringPool.AddStringL( aName ); } + +// ----------------------------------------------------------------------------- +// ChspsDomAttribute::ConstructL +// Symbian 2nd phase constructor can leave. +// ----------------------------------------------------------------------------- +// +void ChspsDomAttribute::ConstructL( const TInt aName ) + { + iNameRef = aName; + } + // ----------------------------------------------------------------------------- // ChspsDomAttribute::NewL // Two-phased constructor. @@ -63,6 +73,23 @@ return self; } +// ----------------------------------------------------------------------------- +// ChspsDomAttribute::NewL +// Two-phased constructor. +// ----------------------------------------------------------------------------- +// +EXPORT_C ChspsDomAttribute* ChspsDomAttribute::NewL( + const TInt aName, + ChspsDomStringPool& aStringPool ) + { + ChspsDomAttribute* self = new( ELeave ) ChspsDomAttribute( aStringPool ); + + CleanupStack::PushL( self ); + self->ConstructL( aName ); + CleanupStack::Pop( self ); + + return self; + } // ----------------------------------------------------------------------------- // ChspsDomAttribute::NewL @@ -106,18 +133,38 @@ // ChspsDomAttribute::CloneL // ----------------------------------------------------------------------------- // -ChspsDomAttribute* ChspsDomAttribute::CloneL( ChspsDomStringPool& aStringPool ) - { - const TDesC8& name = iStringPool.String( iNameRef ); +ChspsDomAttribute* ChspsDomAttribute::CloneL( ChspsDomStringPool& aStringPool, + const TBool aFastClone ) + { + ChspsDomAttribute* clone = NULL; - ChspsDomAttribute* clone = ChspsDomAttribute::NewL( name, aStringPool ); + if( aFastClone ) + { + clone = ChspsDomAttribute::NewL( iNameRef, aStringPool ); + } + else + { + const TDesC8& name = iStringPool.String( iNameRef ); + clone = ChspsDomAttribute::NewL( name, aStringPool ); + } + CleanupStack::PushL( clone ); + if ( iValueRef > KErrNotFound ) { - const TDesC8& value = iStringPool.String( iValueRef ); - clone->SetValueL( value ); + if( aFastClone ) + { + clone->SetValueL( iValueRef ); + } + else + { + const TDesC8& value = iStringPool.String( iValueRef ); + clone->SetValueL( value ); + } } + CleanupStack::Pop( clone ); + return clone; } @@ -169,6 +216,14 @@ iValueRef = iStringPool.AddStringL( aValue ); } +// ----------------------------------------------------------------------------- +// ChspsDomAttribute::SetValueL +// ----------------------------------------------------------------------------- +// +EXPORT_C void ChspsDomAttribute::SetValueL( const TInt aValue ) + { + iValueRef = aValue; + } // ----------------------------------------------------------------------------- // ChspsDomAttribute::Size