contentmgmt/contentaccessfwfordrm/inc/metadata.h
changeset 0 2c201484c85f
child 8 35751d3474b7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/contentmgmt/contentaccessfwfordrm/inc/metadata.h	Wed Jul 08 11:25:26 2009 +0100
@@ -0,0 +1,146 @@
+/*
+* Copyright (c) 2004-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of the License "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 __CAF_METADATA_H__
+#define __CAF_METADATA_H__
+
+#include <e32base.h>
+#include <f32file.h>
+
+class RReadStream;
+class RWriteStream;
+
+namespace ContentAccess
+	{
+	/** Stores a field and data pair for use in a supplier import operation
+	
+	The field and data can be any values the application doing the import thinks 
+	the agent will find useful. Some information that could be included here are
+	headers, eg:
+
+	"Content Type", "application/vnd.oma.drm.dm"
+
+	The application can include anything it likes, if the agent doesn't understand
+	the header it can just ignore it, eg:
+
+	"Colour", "Yellow"
+
+
+	CMetaData can be used with 8-bit or unicode data and automatically performs
+	conversions between the two. 
+	
+	Applications should use the unicode functions whenever possible because it 
+	removes the risk of losing information during the unicode to 8 bit conversion.
+
+	@publishedPartner
+	@released
+	*/
+	class CMetaData : public CBase
+		{
+	public:
+		/** Construct a new CMetaData with 8 bit data 
+		The 8-bit data will be stored in CMetaData as unicode 
+		
+		@param aField The name of the field
+		@param aData The data associated with the field
+		@return A CMetaData object populated with the given field and data		
+		@internalComponent
+		@released
+		*/
+		static CMetaData* NewL(const TDesC8& aField, const TDesC8& aData);
+		/** Construct a new CMetaData with unicode data 
+
+		@param aField The name of the field
+		@param aData The data associated with the field
+		@return A CMetaData object populated with the given field and data		
+
+		@internalComponent
+		@released
+		*/
+		static CMetaData* NewL(const TDesC16& aField, const TDesC16& aData);
+
+		/** Construct a new CMetaData from a data stream
+
+		@param aStream The stream to read the CMetaData object from
+		@return A CMetaData object read from the stream
+		
+		@internalComponent
+		@released
+		*/
+		static CMetaData* NewL(RReadStream& aStream);
+
+		/** destructor 
+		*/
+		virtual ~CMetaData();
+
+		/** The field name 
+		@return The field name
+		*/
+		IMPORT_C const TDesC& Field() const;
+		
+		/** The data value 
+		@return The data value
+		*/
+		IMPORT_C const TDesC& Data() const;
+
+		/** The field name 
+		@return The field name
+		*/
+		IMPORT_C const TDesC8& Field8() const;
+		
+		/** The data value 
+		@return The data value
+		*/
+		IMPORT_C const TDesC8& Data8() const;
+
+		/** Write the CMetaData to a data stream
+		
+		@param aStream The stream to write the CMetaData object to
+		@internalComponent
+		@released
+		*/
+		void ExternalizeL(RWriteStream& aStream) const;
+
+	private:
+		CMetaData(TBool aUnicode);
+		void ConstructL(const TDesC8& aField, const TDesC8& aData);
+		void ConstructL(const TDesC16& aField, const TDesC16& aData);
+
+		/** Read the CMetaData from a data stream
+		*/
+		void InternalizeL(RReadStream& aStream);
+
+	private:
+		HBufC* iField;
+		HBufC* iData;
+		HBufC8* iField8;
+		HBufC8* iData8;
+		TBool iUnicode;
+		};
+	}
+
+#endif