--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/dataproviders/dataproviderapi/interface/cmtpmetadata.h Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,223 @@
+// Copyright (c) 2006-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:
+//
+
+/**
+ @file
+ @publishedPartner
+ @released
+*/
+
+#ifndef CMTPMETADATA_H
+#define CMTPMETADATA_H
+
+#include <badesca.h>
+#include <e32base.h>
+
+/**
+Defines the MTP meta-data base class.
+@publishedPartner
+@released
+*/
+class CMTPMetaData : public CBase
+ {
+public:
+ /*
+ * Store the hash code for the folder
+ */
+ struct TPathHash
+ {
+ TUint32 iHash;
+ TUint iIndex;
+ };
+
+public:
+
+ IMPORT_C virtual ~CMTPMetaData();
+
+ IMPORT_C const TDesC& DesC(TUint aId) const;
+ IMPORT_C const CDesCArray& DesCArray(TUint aId);
+ IMPORT_C TInt Int(TUint aId) const;
+ IMPORT_C const RArray<TInt>& IntArray(TUint aId) const;
+ IMPORT_C TUint Uint(TUint aId) const;
+ IMPORT_C const RArray<TUint>& UintArray(TUint aId) const;
+
+ IMPORT_C void GetIntArrayL(TUint aId, RArray<TInt>& aValue);
+ IMPORT_C void GetUintArrayL(TUint aId, RArray<TUint>& aValue);
+
+ IMPORT_C void SetDesCL(TUint aId, const TDesC& aValue);
+ IMPORT_C void SetDesCArrayL(TUint aId, const CDesCArrayFlat& aValue);
+ IMPORT_C void SetDesCArrayL(TUint aId, const CDesCArraySeg& aValue);
+ IMPORT_C void SetInt(TUint aId, TInt aValue);
+ IMPORT_C void SetIntArrayL(TUint aId, const RArray<TInt>& aValue);
+ IMPORT_C void SetUint(TUint aId, TUint aValue);
+ IMPORT_C void SetUintArrayL(TUint aId, const RArray<TUint>& aValue);
+ IMPORT_C void SetHashPath(const TDesC16& aExclusionPath, TUint aIndex);
+ IMPORT_C const RArray<TPathHash>& GetHashPathArray();
+
+ IMPORT_C TAny* GetExtendedInterface(TUid aInterfaceUid);
+ IMPORT_C static TInt CompareTPathHash(const TPathHash&, const TPathHash&);
+
+protected:
+
+ /**
+ The meta-data element data type identifiers.
+ */
+ enum TType
+ {
+ /**
+ Unknown (null).
+ */
+ EUndefined = 0,
+
+ /**
+ @see TDesC.
+ */
+ EDesC = 1,
+
+ /**
+ @see CDesCArray.
+ */
+ EDesCArray = 2,
+
+ /**
+ @see TInt.
+ */
+ EInt = 3,
+
+ /**
+ @see Rarray<TInt>.
+ */
+ EIntArray = 4,
+
+ /**
+ @see TUint.
+ */
+ EUint = 5,
+
+ /**
+ @see Rarray<TUint>.
+ */
+ EUintArray = 6,
+ };
+
+ /**
+ Describes the meta-data element.
+ */
+ struct TElementMetaData
+ {
+ /**
+ The element buffer offset.
+ */
+ TUint iOffset;
+
+ /**
+ The element data type identifier.
+ */
+ TType iType;
+ };
+
+protected:
+
+ CMTPMetaData(const TElementMetaData* aElements, TUint aCount);
+ void ConstructL();
+ void ConstructL(const CMTPMetaData& aFrom);
+
+private:
+
+ CMTPMetaData();
+
+ void CopyL(const CDesCArray& aFrom, CDesCArray& aTo);
+ void CopyL(const RArray<TInt>& aFrom, RArray<TInt>& aTo);
+ void CopyL(const RArray<TUint>& aFrom, RArray<TUint>& aTo);
+
+ void DeleteIntArray(TUint aIdx);
+ void DeleteUintArray(TUint aIdx);
+
+private: // Owned
+
+ /**
+ The default array granularity
+ */
+ static const TUint KGranularity = 8;
+
+ /**
+ The element meta-data.
+ */
+ const RArray<TElementMetaData> iElements;
+
+ /**
+ The DesC element data.
+ */
+ RPointerArray<HBufC> iElementsDesC;
+
+ /**
+ The DesCArray element data.
+ */
+ RPointerArray<CDesCArray> iElementsDesCArray;
+
+ /**
+ The Int element data.
+ */
+ RArray<TInt> iElementsInt;
+
+ /**
+ The IntArray element data.
+ */
+ RPointerArray<TAny> iElementsIntArray;
+
+ /**
+ The Uint element data.
+ */
+ RArray<TUint> iElementsUint;
+
+ /**
+ The UintArray element data.
+ */
+ RPointerArray<TAny> iElementsUintArray;
+
+ /**
+ The extended data object pointer.
+ */
+ TAny* iExtensionData;
+
+ /**
+ The extended interface object pointer.
+ */
+ TAny* iExtensionInterfaces;
+
+ /**
+ The TDesCArrayType type element data.
+ */
+ RArray<TInt> iElementsDesCArrayType;
+ RArray<TPathHash> iPathHash;
+
+ /**
+ The CDesCArray element data type identifiers.
+ */
+ enum TDesCArrayType
+ {
+ /**
+ @see CDesCArrayFlat.
+ */
+ EDesCArrayFlat = 0,
+
+ /**
+ @see CDesCArraySeg.
+ */
+ EDesCArraySeg = 1,
+ };
+ };
+
+#endif // CMTPMETADATA_H