diff -r 000000000000 -r 08ec8eefde2f persistentstorage/store/INC/U32STD.H --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/persistentstorage/store/INC/U32STD.H Fri Jan 22 11:06:30 2010 +0200 @@ -0,0 +1,137 @@ +// Copyright (c) 1998-2009 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: +// + +#if !defined(STORE_INC_U32STD_H) +#define STORE_INC_U32STD_H +#if !defined(__S32STD_H__) +#include +#endif +#if !defined(__S32SHARE_H__) +#include +#endif + +#if defined(_DEBUG) +#define __DEBUG(s) s +#define __LEAVE(r) Util::__DbgLeave(r,_L8(__FILE__),__LINE__) +#define __LEAVE_NO_MEMORY() Util::__DbgLeaveNoMemory(_L8(__FILE__),__LINE__) +#define __LEAVE_IF_ERROR(r) Util::__DbgLeaveIfError(r,_L8(__FILE__),__LINE__) +#define __LEAVE_IF_NULL(p) Util::__DbgLeaveIfNull(p,_L8(__FILE__),__LINE__) +#else +#define __DEBUG(s) +#define __LEAVE(r) User::Leave(r) +#define __LEAVE_NO_MEMORY() User::LeaveNoMemory() +#define __LEAVE_IF_ERROR(r) User::LeaveIfError(r) +#define __LEAVE_IF_NULL(p) User::LeaveIfNull(p) +#endif + +class Util + { +public: +#if defined (_DEBUG) + static void __DbgLeave(TInt aReason,const TDesC8& aFileName,TInt aLineNo); + static void __DbgLeaveNoMemory(const TDesC8& aFileName,TInt aLineNo); + static TInt __DbgLeaveIfError(TInt aReason,const TDesC8& aFileName,TInt aLineNo); + static TAny *__DbgLeaveIfNull(TAny *aPtr,const TDesC8& aFileName,TInt aLineNo); +#endif + }; +// +template +class TCapture + { +public: + inline TCapture(T& aRef); + inline T& Object() const; +private: + T* iPtr; + }; +// +class TDesHeader + { +public: + TDesHeader() {} + inline TDesHeader(const TDesC8& aDes8); + inline TDesHeader(const TDesC16& aDes16); + inline TDesHeader& operator=(const TDesC8& aDes8); + inline TDesHeader& operator=(const TDesC16& aDes16); +// + inline TBool IsWidth8() const; + inline TBool IsWidth16() const; + inline TInt Length() const; +// + inline void ExternalizeL(RWriteStream& aStream) const; + inline void InternalizeL(RReadStream& aStream); +private: + TCardinality iVal; + }; +class TDesInternalizer + { +public: + inline const TDesHeader& Header() const; + inline TDesHeader& Header(); +// + void operator()(TDes8& aDes8,RReadStream& aStream) const; + void operator()(TDes16& aDes16,RReadStream& aStream) const; + void ReadDesc8L (TDes8& aDes8,RReadStream& aStream) const; + void ReadDesc16L (TDes16& aDes16,RReadStream& aStream) const; +private: + TDesHeader iHeader; + }; +// +NONSHARABLE_CLASS(TPtrInput) : public MStreamInput + { +public: + inline TPtrInput(TAny* aPtr); +// + TInt PushL(const TAny* aPtr,TInt aMaxLength); + TStreamTransfer ReadFromL(MStreamBuf& aSource,TStreamTransfer aTransfer); +private: + TUint8* iPtr; + }; +// +NONSHARABLE_CLASS(TPtrOutput) : public MStreamOutput + { +public: + inline TPtrOutput(const TAny* aPtr); +// + TInt PullL(TAny* aPtr,TInt aMaxLength); + TStreamTransfer WriteToL(MStreamBuf& aSink,TStreamTransfer aTransfer); +private: + const TUint8* iPtr; + }; +// +NONSHARABLE_CLASS(HDirectStoreBuf) : public RShareBuf + { +public: + static HDirectStoreBuf* CreateL(TStreamExchange& aHost,TStreamId& anId,TInt aMode=ERead|EWrite); + static HDirectStoreBuf* OpenL(TStreamExchange& aHost,TStreamId anId,TInt aMode=ERead|EWrite); +// + virtual inline ~HDirectStoreBuf(); +private: + static HDirectStoreBuf* NewL(TStreamExchange& aHost,TInt anOffset,TInt aMode); + inline HDirectStoreBuf(TInt anOffset); +// + void DoRelease(); + TStreamPos DoSeekL(TMark aMark,TStreamLocation aLocation,TInt anOffset); +private: + TInt iOff; + }; +// +template +inline TCapture Capture(T& aRef) + {return TCapture(aRef);} + + +#include "U32STD.INL" +#endif