persistentstorage/store/INC/U32STD.H
changeset 0 08ec8eefde2f
--- /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 <s32std.h>
+#endif
+#if !defined(__S32SHARE_H__)
+#include <s32share.h>
+#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 T>
+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 <class T>
+inline TCapture<T> Capture(T& aRef)
+	{return TCapture<T>(aRef);}
+
+
+#include "U32STD.INL"
+#endif