persistentstorage/store/USTOR/UT_SWZ.CPP
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/store/USTOR/UT_SWZ.CPP	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,90 @@
+// 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:
+//
+
+#include "UT_STD.H"
+
+EXPORT_C TStreamId TSwizzleCBase::AsId() const
+/** Gets the streamid of the represented object.
+
+This swizzle must currently represent the object as a stream id, otherwise 
+the function raises a STORE-Store 3 panic.
+
+@return The stream id of the represented object */
+	{
+	__ASSERT_ALWAYS(IsId(),Panic(EStoreSwizzleBadId));
+	return iPtr==NULL?KNullStreamId:TStreamId((TUint32)iPtr>>1); // implementation dependency
+	}
+
+EXPORT_C void TSwizzleCBase::InternalizeL(RReadStream& aStream)
+/** Internalises a stream id from the read stream, constructs a swizzle from this 
+stream id and copies the swizzle to this swizzle.
+
+The presence of this function means that the standard templated operator>>() 
+can be used to internalise objects of this class.
+
+@param aStream Stream from which the stream id should be internalised */
+	{
+	TStreamId id;
+	aStream>>id;
+	*this=TSwizzleCBase(id);
+	}
+
+EXPORT_C TSwizzleCBase::TSwizzleCBase(TStreamId anId)
+//
+// Construct from a stream id.
+//
+	: iPtr(anId==KNullStreamId?NULL:(TAny*)((anId.Value()<<1)|0x1))
+	{}
+
+EXPORT_C void TSwizzleCBase::DoExternalizeL(RWriteStream& aStream,TExternalizer<TAny> anExter) const
+//
+// Write this swizzle to aStream as an out-of-stream reference.
+//
+	{
+	aStream<<TStreamRef(iPtr,(IsPtr()?anExter.Function():NULL));
+	}
+
+EXPORT_C TBool TSwizzleCBase::IsPtrRep(const TAny* aPtr)
+//
+// Test whether aPtr is a valid representation for a pointer.
+//
+	{
+	return !((TUint32)aPtr&0x3); // implementation dependency
+	}
+
+EXPORT_C TBool TSwizzleCBase::IsIdRep(const TAny* aPtr)
+//
+// Test whether aPtr is a valid representation for a stream id.
+//
+	{
+	return aPtr==NULL||(TUint32)aPtr&0x1; // implementation dependency
+	}
+
+EXPORT_C void TSwizzleCBase::__DbgChkPtr(const TAny* aPtr)
+//
+// Check for invalid pointers.
+//
+	{
+	__ASSERT_ALWAYS(IsPtrRep(aPtr),Panic(EStoreSwizzleBadPtr));
+	}
+
+EXPORT_C void TSwizzleCBase::__DbgChkRef(TStreamRef aRef)
+//
+// Check for an invalid out-of-stream reference.
+//
+	{
+	__ASSERT_ALWAYS((IsPtrRep(aRef.Ptr())&&aRef.Function()!=NULL)||(IsIdRep(aRef.Ptr())&&aRef.Function()==NULL),Panic(EStoreSwizzleBadReference));
+	}
+