diff -r 000000000000 -r 094583676ce7 PECengine/AttributeLibrary2/SrcWVAttributes/PEngWVAttributeModelDataHelper.inl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/PECengine/AttributeLibrary2/SrcWVAttributes/PEngWVAttributeModelDataHelper.inl Thu Dec 17 08:41:52 2009 +0200 @@ -0,0 +1,114 @@ +/* +* Copyright (c) 2005 Nokia Corporation and/or its subsidiary(-ies). +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of "Eclipse Public License v1.0" +* which accompanies this distribution, and is available +* at the URL "http://www.eclipse.org/legal/epl-v10.html". +* +* Initial Contributors: +* Nokia Corporation - initial contribution. +* +* Contributors: +* +* Description: Templated attribute data helpers. +* +*/ + + +// ----------------------------------------------------------------------------- +// DoSetDescL() +// ----------------------------------------------------------------------------- +// +template< class TBufType, class TDataType > +inline void DoSetDescL( TBufType*& aPtr, const TDataType& aData ) + { + TBufType* tmp = aData.AllocL(); + delete aPtr; + aPtr = tmp; + } + + + +// ----------------------------------------------------------------------------- +// DoGetDesc() +// ----------------------------------------------------------------------------- +// +template< class TBufType, class TPtrType > +inline void DoGetDesc( const TBufType* const& aBuffer, TPtrType& aData ) + { + if( aBuffer ) + { + aData.Set( *aBuffer ); + } + else + { + aData.Set( NULL, 0 ); + } + } + + + +// ----------------------------------------------------------------------------- +// DoGetBufExtSize() +// ----------------------------------------------------------------------------- +// +template< class TBufType > +inline TInt DoGetBufExtSize( const TBufType* const& aBuffer ) + { + TInt size( 4 ); //Buffer length indicator: 4 bytes + + if( aBuffer && aBuffer->Length() != 0 ) + { + size += aBuffer->Size(); + } + + return size; + } + + +// ----------------------------------------------------------------------------- +// DoExtrBufL() +// ----------------------------------------------------------------------------- +// +template< class TBufType > +inline void DoExtrBufL( const TBufType* const& aBuffer, RWriteStream& aStream ) + { + if( aBuffer && aBuffer->Length() != 0 ) + { + aStream.WriteInt32L( aBuffer->Length() ); + aStream.WriteL( *aBuffer ); + } + else + { + aStream.WriteInt32L( 0 ); + } + } + + + +// ----------------------------------------------------------------------------- +// DoIntrBufL() +// ----------------------------------------------------------------------------- +// +template< class TBufType, class TPtrType > +inline void DoIntrBufL( TBufType*& aBufPtr, TPtrType aPtr, RReadStream& aStream ) + { + TBufType* buffer = NULL; + + TInt length = aStream.ReadInt32L(); + if( length != 0 ) + { + buffer = TBufType::NewLC( length ); + aPtr.Set( buffer->Des() ); + aStream.ReadL( aPtr, length ); + CleanupStack::Pop(); //buffer + } + + delete aBufPtr; + aBufPtr = buffer; + } + + +// End of File +