metadataengine/client/src/mdenamespacedef.cpp
changeset 0 c53acadfccc6
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/metadataengine/client/src/mdenamespacedef.cpp	Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,252 @@
+/*
+* Copyright (c) 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:  ?Description
+*
+*/
+
+
+#include "mdenamespacedef.h"
+
+#include "mdcdef.h"
+#include "mdeobjectdef.h"
+#include "mderelationdef.h"
+#include "mdeeventdef.h"
+#include "mdcserializationbuffer.h"
+
+
+CMdENamespaceDef::CMdENamespaceDef( const CMdESession& aMdeSession, 
+		const TMdCNamespaceDef& aNamespaceDef )
+	: iMdeSession( aMdeSession ), iNamespaceDef( aNamespaceDef )
+	{
+	}
+
+CMdENamespaceDef* CMdENamespaceDef::NewL( const CMdESession& aMdeSession, 
+		const TMdCNamespaceDef& aNamespaceDef, 
+		CMdCSerializationBuffer& aSchemaBuffer )
+	{
+    CMdENamespaceDef* def = CMdENamespaceDef::NewLC( aMdeSession, 
+    		aNamespaceDef, aSchemaBuffer );
+    CleanupStack::Pop( def );
+    return def;
+    }
+
+CMdENamespaceDef* CMdENamespaceDef::NewLC( const CMdESession& aMdeSession, 
+		const TMdCNamespaceDef& aNamespaceDef, 
+		CMdCSerializationBuffer& aSchemaBuffer )
+	{
+    CMdENamespaceDef* def = new( ELeave ) CMdENamespaceDef( aMdeSession, 
+    		aNamespaceDef );
+    CleanupStack::PushL( def );
+    def->ConstructL( aSchemaBuffer );
+    return def;
+	}
+
+void CMdENamespaceDef::ConstructL(CMdCSerializationBuffer& aSchemaBuffer)
+	{
+	aSchemaBuffer.PositionL( iNamespaceDef.iName.iPtr.iOffset );
+	iName.Set( aSchemaBuffer.ReceivePtr16L() );
+	
+	TUint32 count = iNamespaceDef.iObjectDefs.iPtr.iCount;
+	TMdCOffset offset = iNamespaceDef.iObjectDefs.iPtr.iOffset;
+	iObjectDefs.ReserveL( count );
+	for ( TUint32 i = 0; i < count; ++i )
+		{
+		aSchemaBuffer.PositionL( offset + i * sizeof(TMdCObjectDef) );
+		const TMdCObjectDef& objectDef = TMdCObjectDef::GetFromBufferL(aSchemaBuffer);
+		iObjectDefs.AppendL( CMdEObjectDef::NewL( objectDef, aSchemaBuffer, *this ) );
+		}
+
+	count = iNamespaceDef.iEventDefs.iPtr.iCount;
+	offset = iNamespaceDef.iEventDefs.iPtr.iOffset;
+	iEventDefs.ReserveL( count );
+	for ( TUint32 i = 0; i < count; ++i )
+		{
+		aSchemaBuffer.PositionL( offset + i * sizeof(TMdCEventDef) );
+		const TMdCEventDef& eventDef = TMdCEventDef::GetFromBufferL(aSchemaBuffer);
+		iEventDefs.AppendL( CMdEEventDef::NewL( eventDef, aSchemaBuffer, *this ) );
+		}
+
+	count = iNamespaceDef.iRelationDefs.iPtr.iCount;
+	offset = iNamespaceDef.iRelationDefs.iPtr.iOffset;
+	iRelationDefs.ReserveL( count );
+	for ( TUint32 i = 0; i < count; ++i )
+		{
+		aSchemaBuffer.PositionL( offset + i * sizeof(TMdCRelationDef) );
+		const TMdCRelationDef& relationDef = TMdCRelationDef::GetFromBufferL(aSchemaBuffer);
+		iRelationDefs.AppendL( CMdERelationDef::NewL( relationDef, aSchemaBuffer, *this ) );
+		}
+	}
+
+CMdENamespaceDef::~CMdENamespaceDef()
+	{
+
+	iObjectDefs.ResetAndDestroy();
+	iObjectDefs.Close();
+
+	iEventDefs.ResetAndDestroy();
+	iEventDefs.Close();
+
+	iRelationDefs.ResetAndDestroy();
+	iRelationDefs.Close();
+	}
+
+TDefId CMdENamespaceDef::Id() const
+	{
+	return iNamespaceDef.iDefId;
+	}
+
+EXPORT_C TBool CMdENamespaceDef::ReadOnly() const
+	{
+	return iNamespaceDef.iReadOnly;
+	}
+
+EXPORT_C const TDesC& CMdENamespaceDef::Name() const
+	{
+	return iName;
+	}
+
+EXPORT_C TInt CMdENamespaceDef::Compare( const CMdENamespaceDef& aNamespaceDef ) const
+	{
+	return iNamespaceDef.iDefId - aNamespaceDef.Id();
+	}
+
+EXPORT_C TInt CMdENamespaceDef::ObjectDefCount() const
+	{
+	return iObjectDefs.Count();
+	}
+
+EXPORT_C CMdEObjectDef& CMdENamespaceDef::ObjectDefL(TInt aIndex)
+	{
+	return *iObjectDefs[aIndex];
+	}
+
+EXPORT_C CMdEObjectDef& CMdENamespaceDef::GetObjectDefL(const TDesC& aName)
+	{
+	const TInt objectDefsCount = iObjectDefs.Count();
+	for ( TInt i = 0; i < objectDefsCount; ++i )
+		{
+		if ( !aName.Compare( iObjectDefs[i]->Name() ) )
+			{
+			return ObjectDefL( i );
+			}
+		}
+
+	User::Leave( KErrNotFound );
+
+	// to stop compile warnings
+	CMdEObjectDef* objectDef = NULL;
+	return *objectDef;
+	}
+
+CMdEObjectDef* CMdENamespaceDef::GetObjectDefL(TDefId aId)
+	{
+	const TInt objectDefsCount = iObjectDefs.Count();
+	for ( TInt i = 0; i < objectDefsCount; ++i )
+		{
+		if ( aId == iObjectDefs[i]->Id() )
+			{
+			return &ObjectDefL( i );
+			}
+		}
+
+	return NULL;
+	}
+
+EXPORT_C TInt CMdENamespaceDef::RelationDefCount() const
+	{
+	return iRelationDefs.Count();
+	}
+
+EXPORT_C CMdERelationDef& CMdENamespaceDef::RelationDefL(TInt aIndex)
+	{
+	return *iRelationDefs[aIndex];
+	}
+
+EXPORT_C CMdERelationDef& CMdENamespaceDef::GetRelationDefL(const TDesC& aName)
+	{
+	const TInt relationDefCount = iRelationDefs.Count();
+	for ( TInt i = 0; i < relationDefCount; ++i )
+		{
+		if( !aName.Compare( iRelationDefs[i]->Name() ) )
+			{
+			return RelationDefL( i );
+			}
+		}
+
+	User::Leave( KErrNotFound );
+
+	// to stop compile warnings
+	CMdERelationDef* relationDef = NULL;
+	return *relationDef;
+	}
+
+CMdERelationDef* CMdENamespaceDef::GetRelationDefL(TDefId aId)
+	{
+	const TInt relationDefCount = iRelationDefs.Count();
+	for ( TInt i = 0; i < relationDefCount; ++i )
+		{
+		if( iRelationDefs[i]->Id() == aId )
+			{
+			return &RelationDefL( i );
+			}
+		}
+
+	return NULL;
+	}
+
+EXPORT_C TInt CMdENamespaceDef::EventDefCount() const
+	{
+	return iEventDefs.Count();
+	}
+
+EXPORT_C CMdEEventDef& CMdENamespaceDef::EventDefL(TInt aIndex)
+	{
+	return *iEventDefs[aIndex];
+	}
+
+EXPORT_C CMdEEventDef& CMdENamespaceDef::GetEventDefL(const TDesC& aName)
+	{
+	const TInt eventDefCount = iEventDefs.Count();
+	for ( TInt i = 0; i < eventDefCount; ++i )
+		{
+		if( !aName.Compare( iEventDefs[i]->Name() ) )
+			{
+			return EventDefL( i );
+			}
+		}
+	
+	User::Leave( KErrNotFound );
+	
+	// to stop compile warnings
+	CMdEEventDef* eventDef = NULL;
+	return *eventDef;
+	}
+
+CMdEEventDef* CMdENamespaceDef::GetEventDefL(TDefId aId)
+	{
+	const TInt eventDefCount = iEventDefs.Count();
+	for ( TInt i = 0; i < eventDefCount; ++i )
+		{
+		if( iEventDefs[i]->Id() == aId )
+			{
+			return &EventDefL( i );
+			}
+		}
+	return NULL;
+	}
+
+const CMdESession& CMdENamespaceDef::Session() const
+	{
+	return iMdeSession;
+	}