genericservices/mimerecognitionfw/apmime/APMSTD.CPP
changeset 0 e4d67989cc36
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/genericservices/mimerecognitionfw/apmime/APMSTD.CPP	Tue Feb 02 02:01:42 2010 +0200
@@ -0,0 +1,233 @@
+// Copyright (c) 1997-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 <s32strm.h>
+
+#include "APMSTD.H"
+#include "APMPAN.H"
+
+//
+// class TDataType
+//
+
+EXPORT_C TDataType::TDataType()
+	:iDataType(),
+	iUid(KNullUid)
+/** Default constructor.
+
+Sets an empty data type string and sets the associated UID to KNullUid. */
+	{}
+
+EXPORT_C TDataType::TDataType(const TDataType& aDataType)
+	:iDataType(aDataType.iDataType),
+	iUid(aDataType.iUid)
+/** Copy constructor.
+
+@param aDataType The data type to be copied. */
+	{}
+
+EXPORT_C TDataType::TDataType(const TDesC8& aDataType)
+	:iDataType(aDataType),
+	iUid(KNullUid)
+/** Constructor taking a descriptor.
+
+The data type string is copied from the specified descriptor. By default, 
+the associated UID is set to KNullUid.
+
+If the data type string begins with the characters "x-epoc/x-app", identifying 
+data as a native Symbian type, then the associated UID is set to the UID value 
+which is expected to follow the characters "x-epoc/x-app".
+
+If no sensible UID can be extracted from the characters following: "x-epoc/x-app", 
+then the associated UID is set to KNullUid.
+
+@param aDataType The source for the data type string. Note that this is an 
+8 bit descriptor. */
+	{
+	ParseDes();
+	}
+
+EXPORT_C TDataType::TDataType(TUid aUid)
+	:iUid(aUid)
+/** Constructor taking a UID.
+
+The data type string is set to "x-epoc/x-app" concatenated with the decimal 
+character representation of the specified UID value. The data type is assumed 
+to identify data as a native Symbian type.
+
+@param aUid The associated UID. */
+	{
+	iDataType=KApaAppTypeDes;
+	iDataType.AppendNum(STATIC_CAST(TInt,iUid.iUid));
+	}
+
+EXPORT_C TInt TDataType::operator==(const TDataType& aDataType) const
+/** Compares this data type for equality with the specified data type.
+
+Two data types are equal if their data type strings are the same. Text is 
+folded for the purpose of the comparison, removing accents and converting 
+letters to a common case form.
+
+@param aDataType The data type taking part in the comparison.
+@return True, if the data types are equal; false, otherwise. */
+	{
+	return (iDataType.CompareF(aDataType.iDataType)==0);
+	}
+
+EXPORT_C TInt TDataType::operator!=(const TDataType& aDataType) const
+/** Compares this data type for inequality with the specified data type.
+
+Two data types are only equal if their data type strings are the same. Text 
+is folded for the purpose of the comparison, removing accents and converting 
+letters to a common case form.
+
+@param aDataType The data type taking part in the comparison.
+@return True, if the data types are not equal; false, otherwise. */
+	{
+	return iDataType.CompareF(aDataType.iDataType);
+	}
+
+EXPORT_C TBool TDataType::IsNative() const
+/** Tests whether the data type is a native Symbian type.
+
+@return True, if the data type is a native Symbian type; false, otherwise. */
+	{
+	return iUid!=KNullUid;
+	}
+
+EXPORT_C TUid TDataType::Uid() const
+/** Gets the UID associated with this data type.
+
+@return The UID. */
+	{
+	return iUid;
+	}
+
+EXPORT_C TBuf<KMaxDataTypeLength> TDataType::Des() const
+/** Gets a copy of the data type string.
+
+@return A modifiable buffer descriptor containing a copy of the data type 
+string. Note that this descriptor is a build independent type. */
+	{
+#ifdef _UNICODE
+	TBuf16<KMaxDataTypeLength> buf;
+	buf.Copy(iDataType);
+	return buf;
+#else
+	return iDataType;
+#endif // _UNICODE
+	}
+
+EXPORT_C TPtrC8 TDataType::Des8() const
+/** Gets an 8 bit non-modifiable pointer descriptor to the data type string.
+
+@return A pointer descriptor to the data type string. */
+	{
+	return iDataType;
+	}
+
+void TDataType::ParseDes()
+	{
+	TInt desLen=KApaAppTypeDes.Length();
+	if (iDataType.Length()<=desLen)
+		iUid=KNullUid;
+	else
+		{
+		if (iDataType.Left(desLen).CompareF(KApaAppTypeDes)==0)
+			{
+			TLex8 lex(iDataType);
+			lex.SkipAndMark(desLen);
+			TInt err=lex.Val(iUid.iUid);
+			if (err!=KErrNone)
+				iUid=KNullUid;
+			}
+		}
+	}
+
+EXPORT_C void TDataType::InternalizeL(RReadStream& aReadStream)
+/** Internalizes the data type from a stream.
+
+The presence of this function means that the standard templated stream operator>>() 
+is available to internalize objects of this class.
+
+@param aReadStream The read stream. */
+	{
+	aReadStream >> iDataType;
+	ParseDes();
+	}
+
+EXPORT_C void TDataType::ExternalizeL(RWriteStream& aWriteStream) const
+/** Externalizes the data type to a stream.
+
+The presence of this function means that the standard templated stream operator<<() 
+is available to externalise objects of this class.
+
+@param aWriteStream The write stream. */
+	{
+	aWriteStream << iDataType;
+	}
+
+//
+// class TDataTypeWithPriority
+//
+
+/** Default constructor */
+EXPORT_C TDataTypeWithPriority::TDataTypeWithPriority()
+	{
+	}
+
+/** Constructor taking a data type and a priority value.
+
+@param aDataType The data type.
+@param aPriority The priority value. */
+EXPORT_C TDataTypeWithPriority::TDataTypeWithPriority(const TDataType& aDataType, TDataTypePriority aPriority)
+	: iDataType(aDataType),
+	iPriority(aPriority)
+	{}
+	
+/** Internalizes the data type from a stream.
+
+The presence of this function means that the standard templated stream operator>>() 
+is available to internalize objects of this class.
+
+@param aReadStream The read stream. */
+EXPORT_C void TDataTypeWithPriority::InternalizeL(RReadStream& aReadStream)
+	{
+	aReadStream >> iDataType;
+	aReadStream >> iPriority;
+	}
+
+/** Externalizes the data type to a stream.
+
+The presence of this function means that the standard templated stream operator<<() 
+is available to externalise objects of this class.
+
+@param aWriteStream The write stream. */
+EXPORT_C void TDataTypeWithPriority::ExternalizeL(RWriteStream& aWriteStream) const
+	{
+	aWriteStream << iDataType;
+	aWriteStream << iPriority;
+	}
+
+GLDEF_C void Panic(TApmPanic aPanic)
+//
+// Panic the process with APMIME as the category.
+//
+	{
+	_LIT(KApMimePanicCat,"APMIME");
+	User::Panic(KApMimePanicCat,aPanic);
+	}
+
+