diff -r 5cc91383ab1e -r 7333d7932ef7 secureswitools/swisistools/source/xmlparser/xmlparser.h --- 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 #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 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 iLocalizedSoftwareTypeNames; int iSifPluginUid; - int iInstallerSid; - int iExecutionLayerSid; + std::wstring iLauncherExecutable; + std::vector iCustomAcessList; std::vector 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 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 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 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 iViewDataAttributes; + }; + + std::vector iLocalizableAttribute; + std::vector 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 iApplicationAttribute; + std::vector iFileOwnershipInfo; + std::vector iApplicationServiceInfo; + std::vector iApplicationLocalizableInfo; + std::vector iApplicationProperty; + std::vector iOpaqueDataType; + }; + class TComponent { public: @@ -258,13 +428,16 @@ std::vector iComponentProperties; std::vector iComponentFiles; TComponentDependency iComponentDependency; + std::vector iApplicationRegistrationInfo; TComponentDetails iComponentDetails; - }; + }; // class TComponent + + inline XercesString SoftwareTypeName(); std::wstring iSoftwareTypeName; std::vector 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