--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mds_plat/metadata_engine_api/inc/mderelation.h Mon Jan 18 20:34:07 2010 +0200
@@ -0,0 +1,261 @@
+/*
+* 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
+*
+*/
+
+
+#ifndef __MDERELATION_H__
+#define __MDERELATION_H__
+
+
+#include <mdeinstanceitem.h>
+
+
+class CMdERelationDef;
+class CMdCSerializationBuffer;
+class CMdENamespaceDef;
+
+
+NONSHARABLE_CLASS(TMdERelation)
+ {
+ public:
+
+ TMdERelation();
+
+ IMPORT_C TItemId Id() const;
+
+ /**
+ * Returns the definition of the relation.
+ *
+ * @return relation definition
+ */
+ IMPORT_C CMdERelationDef& DefL() const;
+
+ /**
+ * Returns the identifier of the left object of the relation.
+ *
+ * @return object identifier
+ */
+ IMPORT_C TItemId LeftObjectId() const;
+
+ /**
+ * Returns the identifier of the right object of the relation.
+ *
+ * @return object identifier
+ */
+ IMPORT_C TItemId RightObjectId() const;
+
+ public:
+ /**
+ * Calculates required size for buffer to serialize relation
+ *
+ * @return necessary buffer size
+ */
+ TUint32 RequiredBufferSize() const;
+
+ /**
+ * DeSerialize relation
+ *
+ * @param aBuffer buffer where is serialized relation
+ */
+ void DeSerializeL(CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+ private:
+
+ TItemId iId;
+
+ TItemId iLeftObjectId;
+ TItemId iRightObjectId;
+
+ /** Relation definition. */
+ CMdERelationDef* iDef;
+ };
+
+/**
+ * Relation between two objects.
+ */
+NONSHARABLE_CLASS(CMdERelation) : public CMdEInstanceItem
+ {
+public:
+
+ /* Constructors and destructor. */
+
+ /**
+ * Create new realation from serialized buffer
+ *
+ * @param aBuffer serialized relation
+ * @return new relation
+ */
+ static CMdERelation* NewL(CMdESession* aSession, CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+ /**
+ * Create new realation from serialized buffer and leaves it on stack
+ *
+ * @param aBuffer serialized relation
+ * @return new relation
+ */
+ static CMdERelation* NewLC(CMdESession* aSession, CMdCSerializationBuffer& aBuffer, CMdENamespaceDef& aNamespaceDef);
+
+
+ static CMdERelation* NewL(CMdERelationDef& aDef, TItemId aLeftObjectId,
+ TItemId aRightObjectId, TInt32 aParameter);
+
+ static CMdERelation* NewLC(CMdERelationDef& aDef, TItemId aLeftObjectId,
+ TItemId aRightObjectId, TInt32 aParameter);
+
+ /**
+ * Destructor.
+ */
+ virtual ~CMdERelation();
+
+
+ /* Methods. */
+
+ /**
+ * Returns the definition of the relation.
+ *
+ * @return relation definition
+ */
+ IMPORT_C CMdERelationDef& Def() const;
+
+ /**
+ * Returns the identifier of the left object of the relation.
+ *
+ * @return object identifier
+ */
+ IMPORT_C TItemId LeftObjectId() const;
+
+ /**
+ * Returns the identifier of the right object of the relation.
+ *
+ * @return object identifier
+ */
+ IMPORT_C TItemId RightObjectId() const;
+
+ /**
+ * Returns the parameter value associated with this relation
+ *
+ * @return The parameter value
+ */
+ IMPORT_C TInt32 Parameter() const;
+
+ /**
+ * Set the parameter.
+ * @param aParameter new value for parameter
+ */
+ IMPORT_C void SetParameter(TInt32 aParameter);
+
+ /**
+ * Sets left object ID.
+ * @param aLeftObjectId left object ID
+ */
+ IMPORT_C void SetLeftObjectIdL( TItemId aLeftObjectId );
+
+ /**
+ * Sets right object ID.
+ * @param aRightObjectId right object ID
+ */
+ IMPORT_C void SetRightObjectIdL( TItemId aRightObjectId );
+
+ /**
+ * Returns the GUID of the relation.
+ *
+ * @param aGuidHigh reference where GuidHigh will be stored
+ * @param aGuidLow reference where GuidLow will be stored
+ */
+ IMPORT_C void Guid(TInt64& aGuidHigh, TInt64& aGuidLow) const;
+
+ /**
+ * Sets the GUID of the relation.
+ *
+ * @param aGuidHigh new GuidHigh value
+ * @param aGuidLow new GuidLow value
+ */
+ IMPORT_C void SetGuid(const TInt64& aGuidHigh, const TInt64& aGuidLow);
+
+ /**
+ * Returns last modified date of the relation.
+ *
+ * @return last modified date
+ */
+ IMPORT_C TTime LastModifiedDate() const;
+
+ /**
+ * Sets last modified date of the relation.
+ *
+ * @param aLastModifiedDate last modified date
+ */
+ IMPORT_C void SetLastModifiedDate(TTime aLastModifiedDate);
+
+ /**
+ * Calculates required size for buffer to serialize relation
+ *
+ * @return necessary buffer size
+ */
+ TUint32 RequiredBufferSize() const;
+
+ /**
+ * Serialize relation
+ *
+ * @param aBuffer buffer where serialized relation should go
+ */
+ TMdCOffset SerializeL(CMdCSerializationBuffer& aBuffer, TMdCOffset aFreespaceOffset) const;
+
+protected:
+
+ /**
+ * Constructs a new relation.
+ *
+ * @param aDef definition of the new relation
+ * @param aLeftObjectId identifier of the left object of the new relation
+ * @param aRightObjectId identifier of the right object of the new relation
+ * @param aParameter value for parameter
+ *
+ */
+ CMdERelation(CMdESession* aSession, TItemId aId,
+ CMdERelationDef& aDef, TItemId aLeftObjectId,
+ TItemId aRightObjectId, TInt32 aParameter);
+
+ /**
+ * Second-phase constructor.
+ */
+ void ConstructL();
+
+ TMdEInstanceType InstanceType() const;
+
+
+private:
+
+ /** Relation definition. */
+ CMdERelationDef& iDef;
+
+ /** Left object ID. */
+ TItemId iLeftObjectId;
+
+ /** Right object ID. */
+ TItemId iRightObjectId;
+
+ /** Parameter value */
+ TInt32 iParameter;
+
+ /** Guid High and Low */
+ TInt64 iGuidHigh;
+ TInt64 iGuidLow;
+
+ /** Relations last modified date */
+ TTime iLastModifiedDate;
+ };
+
+#endif // __MDERELATION_H__