persistentstorage/dbms/sdbms/SD_UTL.CPP
changeset 0 08ec8eefde2f
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/persistentstorage/dbms/sdbms/SD_UTL.CPP	Fri Jan 22 11:06:30 2010 +0200
@@ -0,0 +1,166 @@
+// 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 "SD_STD.H"
+
+GLDEF_C void Panic(TDbsPanic aPanic)
+//
+// Panic the client
+//
+	{
+	_LIT(KCategory,"DBMS-server");
+	Dbms::Panic(KCategory,aPanic);
+	}
+
+// Class Dbms
+
+EXPORT_C void Dbms::Panic(const TDesC& aCategory,TInt aCode)
+//
+// Panic the client
+// Outside of the server this calls User::Panic, within it calls the server and LEAVES!
+//
+	{
+	__TRACE(aCategory);
+	__TRACE(aCode);
+	CDbsServer* server=CDbsServer::Instance();
+	if (server)
+		{
+		server->Panic(aCategory,aCode);
+		__LEAVE(KDbsLeavePanic);
+		}
+	else
+		User::Panic(aCategory,aCode);
+	}
+
+// streaming functions
+
+GLDEF_C void ExternalizeL(const TDbCol& aCol,RWriteStream& aStream)
+	{
+	aStream<<aCol.iName<<TUint8(aCol.iType)<<TInt32(aCol.iMaxLength)<<TUint8(aCol.iAttributes);
+	}
+
+GLDEF_C void ExternalizeL(const CDbColSet& aColSet,RWriteStream& aStream)
+	{
+	TInt cc=aColSet.Count();
+	aStream.WriteInt32L(cc);
+	for (TInt ii=0;++ii<=cc;)
+		aStream<<aColSet[ii];
+	}
+
+GLDEF_C void InternalizeL(CDbColSet& aColSet,RReadStream& aStream)
+	{
+	__ASSERT(aColSet.Count()==0);
+	TDbCol col;
+	TPtr name(col.iName.Des());
+	TInt cc=aStream.ReadInt32L();
+	while (--cc>=0)
+		{
+		aStream>>name;
+		col.iType=TDbColType(aStream.ReadUint8L());
+		col.iMaxLength=aStream.ReadInt32L();
+		col.iAttributes=aStream.ReadUint8L();
+		aColSet.AddL(col);
+		}
+	}
+
+GLDEF_C void ExternalizeL(const CDbKey& aKey,RWriteStream& aStream)
+	{
+	TInt cc=aKey.Count();
+	aStream.WriteInt32L(cc);
+	for (TInt ii=0;ii<cc;++ii)
+		{
+		const TDbKeyCol& col=aKey[ii];
+		aStream<<col.iName<<TUint8(col.iOrder)<<TInt32(col.iLength);
+		}
+	aStream<<TUint8(aKey.Comparison())<<TUint8(aKey.IsUnique());
+	}
+
+GLDEF_C void InternalizeL(CDbKey& aKey,RReadStream& aStream)
+	{
+	__ASSERT(aKey.Count()==0);
+	TDbKeyCol col;
+	TPtr name(col.iName.Des());
+	TInt cc=aStream.ReadInt32L();
+	while (--cc>=0)
+		{
+		aStream>>name;
+		TUint8 uInt = aStream.ReadUint8L();
+		col.iOrder=TDbKeyCol::TOrder(uInt);
+		col.iLength=aStream.ReadInt32L();
+		aKey.AddL(col);
+		}
+	aKey.SetComparison(TDbTextComparison(aStream.ReadUint8L()));
+	if (aStream.ReadUint8L())
+		aKey.MakeUnique();
+	}
+
+GLDEF_C void ExternalizeL(const CDbNames& aNames,RWriteStream& aStream)
+	{
+	TInt cc=aNames.Count();
+	aStream.WriteInt32L(cc);
+	for (TInt ii=0;ii<cc;++ii)
+		aStream<<aNames[ii];
+	}
+
+GLDEF_C void InternalizeL(CDbNames& aNames,RReadStream& aStream)
+	{
+	__ASSERT(aNames.Count()==0);
+	TDbName name;
+	TInt cc=aStream.ReadInt32L();
+	while (--cc>=0)
+		{
+		aStream>>name;
+		aNames.AddL(name);
+		}
+	}
+
+/**
+A helper function, used in
+"RWriteStream& operator<<(RWriteStream& aStream,const CDbStrings& aStrings)".
+@internalComponent
+*/
+GLDEF_C void ExternalizeL(const CDbStrings& aStrings,RWriteStream& aStream)
+	{
+	TInt cc=aStrings.Count();
+	aStream.WriteInt32L(cc);
+	for (TInt ii=0;ii<cc;++ii)
+		aStream<<aStrings[ii];
+	}
+
+/** 
+Represents a generic read/write DBMS string. It maps to a modifiable buffer descriptor 
+with maximum size KDbMaxStrLen.
+
+@see TBuf 
+@internalComponent
+*/
+typedef TBuf<KDbMaxStrLen> TDbString;
+
+/**
+A helper function, used in
+"RReadStream& operator>>(RReadStream& aStream,CDbStrings& aStrings)".
+@internalComponent
+*/
+GLDEF_C void InternalizeL(CDbStrings& aStrings,RReadStream& aStream)
+	{
+	__ASSERT(aStrings.Count()==0);
+	TDbString str;
+	TInt cc=aStream.ReadInt32L();
+	while (--cc>=0)
+		{
+		aStream>>str;
+		aStrings.AddL(str);
+		}
+	}