secureswitools/swisistools/source/xmlparser/xmlparser.h
branchRCL_3
changeset 25 7333d7932ef7
parent 0 ba25891c3a9e
child 26 8b7f4e561641
--- a/secureswitools/swisistools/source/xmlparser/xmlparser.h	Thu Aug 19 10:02:49 2010 +0300
+++ b/secureswitools/swisistools/source/xmlparser/xmlparser.h	Tue Aug 31 15:21:33 2010 +0300
@@ -1,5 +1,5 @@
 /*
-* Copyright (c) 2008-2009 Nokia Corporation and/or its subsidiary(-ies).
+* Copyright (c) 2008-2010 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"
@@ -37,6 +37,14 @@
 #include <xercesc/dom/DOM.hpp>
 
 #include "toolsconf.h"
+#include "symbiantypes.h"
+#include "utf8_wrapper.h"
+
+// Xerces library uses XMLCh (UTF16 format) as its default character type.
+// We can store the UTF16 returned form the xerces library in the following
+// template class.
+typedef std::basic_string<XMLCh> XercesString;
+
 
 /**
 * This template is used to cleanup memory by calling a function as pointed 
@@ -113,9 +121,7 @@
 			{
 		public:
 			TScrEnvironmentDetails()
-			:iSifPluginUid(0),
-			iInstallerSid(0),
-			iExecutionLayerSid(0)
+			:iSifPluginUid(0)
 			{}
 			
 			class TLocalizedSoftwareTypeName
@@ -128,14 +134,25 @@
 				int iLocale;
 				std::wstring iName;
 				};
+
+            class TCustomAcessList
+				{
+			public:
+				TCustomAcessList()
+				:iAccessMode(1)
+				{}
+								
+				int iSecureId;
+				int iAccessMode;;
+				};
 			
 			std::wstring iUniqueSoftwareTypeName;
 			std::vector<TLocalizedSoftwareTypeName> iLocalizedSoftwareTypeNames;
 			int iSifPluginUid;
-			int iInstallerSid;
-			int iExecutionLayerSid;
+            std::wstring iLauncherExecutable;
+			std::vector<TCustomAcessList> iCustomAcessList;
 			std::vector<std::wstring> iMIMEDetails;
-			};
+			}; // struct TScrEnvironmentDetails
 
 		
 	class TScrPreProvisionDetail
@@ -151,11 +168,16 @@
 			TComponentLocalizable()
 			:iLocale(0)
 			{}
-			
+
+		public: // public Functions
+			inline XercesString Name();
+			inline XercesString Vendor();
+		
+		public: // Member variables	
 			int iLocale;
 			std::wstring iName;
 			std::wstring iVendor;
-			};
+			}; // class TComponentLocalizable
 		
 		class TComponentProperty
 			{
@@ -167,29 +189,41 @@
 			iIsStr8Bit(false)
 			{}
 
-		public:
+		public: // Member Functions
+			inline XercesString Name();
+			inline XercesString Value();
+
+		public: // Member variables
 			std::wstring iName;
 			int iLocale;
 			std::wstring iValue;
 			bool iIsIntValue;
 			int iIsStr8Bit;
-			};
+			}; // class TComponentProperty
 
 		class TComponentDependency
 			{
 		public:
 			class TComponentDependencyDetail
 				{
-				public:
+				public: // Member Functions
+					inline XercesString SupplierId();
+					inline XercesString FromVersion();
+					inline XercesString ToVersion();
+
+				public: // Member Variables
 					std::wstring iSupplierId;
 					std::wstring iFromVersion;
 					std::wstring iToVersion;
-				};
+				}; // class TComponentDependencyDetail
 
-			public:
+			public: // Member Functions
+				inline XercesString DependentId();
+
+			public: // Member Variables
 				std::wstring iDependentId;
 				std::vector<TComponentDependencyDetail>	iComponentDependencyList;
-			};
+			}; // class TComponentDependency
 
 		class TComponentFile
 			{
@@ -203,22 +237,32 @@
 				TFileProperty()
 				:iIsIntValue(false)
 				{}
+			public: // Member Functions
+				inline XercesString Name();
+				inline XercesString Value();
+	
+			public: // Member Variables
 				std::wstring iName;
 				std::wstring iValue;
 				bool iIsIntValue;
-				};
+				}; // struct TFileProperty
 
+			public: // Member Functions
+			inline XercesString Location();
+			
+			public: // Member Variables
 			std::wstring iLocation;
 			std::vector<TFileProperty> iFileProperties;
 			
-			};
+			}; // class TComponentFile
 		
 		class TComponentDetails
 			{
 			public:
 			TComponentDetails()
 
-			:iIsRemovable(1),
+			:iIsRomApplication(0),
+			iIsRemovable(1),
 			iSize(0),
 			iScomoState(1),
 			iOriginVerified(1),
@@ -231,22 +275,148 @@
 
 				TVersion()
 				{}
+			public:
+				inline XercesString MajorVersion();
+				inline XercesString MinorVersion();
+				inline XercesString BuildVersion();
 
 			public:
 				std::wstring iMajor;
 				std::wstring iMinor;
 				std::wstring iBuild;
-				};
+				}; // class TVersion
 
+			public: // Member Functions
+			inline XercesString GlobalId();
+
+			int iIsRomApplication;
 			int iIsRemovable;
-			__int64 iSize;
+			TInt64 iSize;
 			int iScomoState;
 			std::wstring iGlobalId;
 			TVersion iVersion;
 			int iOriginVerified;
 			int iIsHidden;
 			};
+		
+		class TApplicationRegistrationInfo
+			{
+			public:
+				TApplicationRegistrationInfo()
+				{}
 
+				class TAppAttribute
+					{
+					public:
+					TAppAttribute()
+					:iIsIntValue(false),
+					iIsStr8Bit(false)
+					{}
+					std::wstring iName;
+					std::wstring iValue;
+					bool iIsIntValue;
+					int iIsStr8Bit;
+					};
+
+				class TDataType
+					{
+					public:
+					TDataType()
+					{}
+					int iPriority;
+					std::wstring iType;
+					};
+
+				class TOpaqueDataType
+					{
+					public:
+					TOpaqueDataType()
+					:iLocale(0),
+					iIsBinary(false)
+					{}
+					int iLocale;
+					int iServiceUid;
+					bool iIsBinary; 
+					std::wstring iOpaqueData;
+					};
+
+				class TAppServiceInfo
+					{
+					public:
+					TAppServiceInfo()
+					{}
+					int iUid;
+					std::vector<TDataType> iDataType;
+					};
+
+				class TAppLocalizableInfo
+					{
+					public:
+					TAppLocalizableInfo()
+					{}
+
+					class TLocalizableAttribute
+						{
+						public:
+						TLocalizableAttribute()
+						:iIsIntValue(false),
+						iIsStr8Bit(false)
+						{}
+						std::wstring iName;
+						std::wstring iValue;
+						bool iIsIntValue;
+						int iIsStr8Bit;
+						};
+
+					class TViewData
+						{
+						public:
+						TViewData()
+						{}
+
+						class TViewDataAttributes
+						{
+						public:
+						TViewDataAttributes()
+						:iIsIntValue(false),
+						iIsStr8Bit(false)
+						{}
+						std::wstring iName;
+						std::wstring iValue;
+						bool iIsIntValue;
+						int iIsStr8Bit;
+						};
+						
+						std::vector<TViewDataAttributes> iViewDataAttributes;
+						};
+
+					std::vector<TLocalizableAttribute> iLocalizableAttribute;
+					std::vector<TViewData> iViewData;
+					};
+
+				class TAppProperty
+					{
+					public:
+					TAppProperty()
+					:iLocale(0),
+					iIntValue(0)
+					{}
+					int iLocale;
+					std::wstring iName;
+					int iServiceUid;
+					int iIntValue;
+					std::wstring iStrValue;
+					bool iIsStr8Bit;
+					};
+
+			std::vector<TAppAttribute> iApplicationAttribute;
+			std::vector<std::wstring> iFileOwnershipInfo;
+			std::vector<TAppServiceInfo> iApplicationServiceInfo;
+			std::vector<TAppLocalizableInfo> iApplicationLocalizableInfo;
+			std::vector<TAppProperty> iApplicationProperty;
+			std::vector<TOpaqueDataType> iOpaqueDataType;
+			};
+		
 		class TComponent
 			{
 			public:
@@ -258,13 +428,16 @@
 			std::vector<TComponentProperty>		iComponentProperties;
 			std::vector<TComponentFile>			iComponentFiles;
 			TComponentDependency iComponentDependency;
+			std::vector<TApplicationRegistrationInfo> iApplicationRegistrationInfo;
 			TComponentDetails iComponentDetails;
-			};
+			}; // class TComponent
+
+		inline XercesString SoftwareTypeName();
 
 		std::wstring iSoftwareTypeName;
 		std::vector<TComponent> iComponents;
 		
-		};
+		}; // class TScrPreProvisionDetail
 }
 
 class CScrXmlParser
@@ -316,8 +489,34 @@
 		
 		XmlDetails::TScrPreProvisionDetail::TComponentDetails GetComponentDetails( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
 		
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo GetApplicationRegistrationInfo(const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppAttribute GetAppAttribute( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		std::wstring GetFileOwnershipInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TDataType GetDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType GetOpaqueDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TOpaqueDataType GetServiceOpaqueDataType( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppServiceInfo GetAppServiceInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement, XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo& aAppRegistrationInfo);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo GetAppLocalizableInfo( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TLocalizableAttribute GetAppLocalizableAttribute( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData GetAppLocalizableViewData( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppLocalizableInfo::TViewData::TViewDataAttributes GetAppLocalizableViewDataAttributes( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
+		XmlDetails::TScrPreProvisionDetail::TApplicationRegistrationInfo::TAppProperty GetAppProperty( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
 		XmlDetails::TScrEnvironmentDetails::TLocalizedSoftwareTypeName GetLocalizedSoftwareTypeName( const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
 		
+        XmlDetails::TScrEnvironmentDetails::TCustomAcessList GetCustomAcessList(const XERCES_CPP_NAMESPACE::DOMElement* aDOMElement);
+
 		void ConfigDomParser(xercesc::XercesDOMParser& aDomParser);
 	};
 
@@ -358,4 +557,228 @@
 
 XERCES_CPP_NAMESPACE_END
 
+// inline function definitions
+
+#ifndef _WIN32
+inline XercesString WStringToXercesString(const std::wstring& aString)
+	{
+	XMLCh* buffer = new XMLCh[ (aString.length() + 1) * 2 ];
+	XMLCh* temp = buffer;
+	const wchar_t* source = aString.c_str();
+
+	ConvertUCS4toUTF16(&source, source + aString.length(), &temp, buffer + aString.length());
+
+	// Appending NUL to the converted buffer.
+	*temp = 0;
+
+	XercesString result(buffer);
+	delete[] buffer;
+
+	return result; 
+	}
+
+#else
+
+// We need not do anything for WINDOWS, since XercesString
+// and WString both are same and will be in UTF-16 encoding format.
+#define WStringToXercesString(aWString) (aWString)
+
+#endif // _WIN32
+
+
+//------------------------------------------------------------------------------------------------------------------------------
+//											UTILITY FUNCTIONS
+//------------------------------------------------------------------------------------------------------------------------------
+#ifndef _WIN32
+
+inline std::wstring XercesStringToWString(const XercesString& aString)
+	{
+	wchar_t* buffer = new wchar_t[aString.length() + 1];
+	const XMLCh* source = aString.c_str();
+
+	// Using a temp variable in place of buffer as ConvertUTF16toUTF8 modifies the source pointer passed.
+	wchar_t* temp = buffer;
+
+	ConvertUTF16toUCS4(&source, source + aString.length(), &temp, temp + aString.length());
+
+	// Appending NUL to the converted buffer.
+	*temp = 0;
+
+	std::wstring result(buffer);
+	delete[] buffer;
+	return result;
+	}
+#else
+
+// We need not do anything for WINDOWS, since XercesString
+// and WString both are same and will be in UTF-16 encoding format.
+#define XercesStringToWString(aXercesString) (aXercesString)
+
+#endif // _WIN32
+
+
+//------------------------------------------------------------------------------------------------------------------------------
+
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDetails::TVersion::MajorVersion()
+{
+#ifdef _WIN32
+	return iMajor;
+#else
+	return WStringToXercesString(iMajor);
+#endif // _WIN32
+}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDetails::TVersion::MinorVersion()
+{
+#ifdef _WIN32
+	return iMinor;
+#else
+	return WStringToXercesString(iMinor);
+#endif // _WIN32
+}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDetails::TVersion::BuildVersion()
+{
+#ifdef _WIN32
+	return iBuild;
+#else
+	return WStringToXercesString(iBuild);
+#endif // _WIN32
+}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDetails::GlobalId()
+{
+#ifdef _WIN32
+	return iGlobalId;
+#else  
+	return WStringToXercesString(iGlobalId);
+#endif // _WIN32
+}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::SoftwareTypeName()
+	{
+#ifdef _WIN32
+	return iSoftwareTypeName;
+#else
+	return WStringToXercesString(iSoftwareTypeName);
+#endif // _WIN32
+	}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentLocalizable::Name()
+	{
+#ifdef _WIN32
+	return iName;
+#else
+	return WStringToXercesString(iName);
+#endif // _WIN32
+	}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentLocalizable::Vendor()
+	{
+#ifdef _WIN32
+	return iVendor;
+#else
+	return WStringToXercesString(iVendor);
+#endif // _WIN32
+	}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentProperty::Name()
+	{
+#ifdef _WIN32
+	return iName;
+#else
+	return WStringToXercesString(iName);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentProperty::Value()
+	{
+#ifdef _WIN32
+	return iValue;
+#else
+	return WStringToXercesString(iValue);
+#endif // _WIN32
+	}
+
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentFile::Location()
+	{
+#ifdef _WIN32
+	return iLocation;
+#else
+	return WStringToXercesString(iLocation);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentFile::TFileProperty::Name()
+	{
+#ifdef _WIN32
+	return iName;
+#else
+	return WStringToXercesString(iName);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentFile::TFileProperty::Value()
+	{
+#ifdef _WIN32
+	return iValue;
+#else
+	return WStringToXercesString(iValue);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDependency::DependentId()
+	{
+#ifdef _WIN32
+	return iDependentId;
+#else
+	return WStringToXercesString(iDependentId);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDependency::TComponentDependencyDetail::SupplierId()
+	{
+#ifdef _WIN32
+	return iSupplierId;
+#else
+	return WStringToXercesString(iSupplierId);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDependency::TComponentDependencyDetail::FromVersion()
+	{
+#ifdef _WIN32
+	return iFromVersion;
+#else
+	return WStringToXercesString(iFromVersion);
+#endif // _WIN32
+	}
+
+inline XercesString XmlDetails::TScrPreProvisionDetail::TComponentDependency::TComponentDependencyDetail::ToVersion()
+	{
+#ifdef _WIN32
+	return iToVersion;
+#else
+	return WStringToXercesString(iToVersion);
+#endif // _WIN32
+	}
+
+
+
+
+
+
+
+
+
 #endif // _XMLPARSER_H