--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/sisxlibrary/sisinstallblock.cpp Thu Dec 17 08:51:10 2009 +0200
@@ -0,0 +1,161 @@
+/*
+* Copyright (c) 2007-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
+ @internalComponent
+ @released
+*/
+
+#ifdef _WIN32
+#pragma warning (disable: 4786)
+#endif //_WIN32
+
+#include "sisinstallblock.h"
+#include "sisdata.h"
+
+CSISInstallBlock::CSISInstallBlock ()
+ {
+ InsertMembers ();
+ }
+
+
+CSISInstallBlock::CSISInstallBlock (const CSISInstallBlock& aInitialiser) :
+ CStructure <CSISFieldRoot::ESISInstallBlock> (aInitialiser),
+ iFiles (aInitialiser.iFiles),
+ iEmbeddedFiles (aInitialiser.iEmbeddedFiles),
+ iIfs (aInitialiser.iIfs)
+ {
+ InsertMembers ();
+ }
+
+
+void CSISInstallBlock::InsertMembers ()
+ {
+ InsertMember (iFiles);
+ InsertMember (iEmbeddedFiles);
+ InsertMember (iIfs);
+ }
+
+
+void CSISInstallBlock::Embed (class CSISController& aController, const TUint32 aIndex)
+ {
+ iEmbeddedFiles.Push (aController);
+ }
+
+
+void CSISInstallBlock::AddIf ()
+ {
+ iIfs.Push (CSISIf ());
+ }
+
+
+CSISIf& CSISInstallBlock::If ()
+ {
+ return iIfs.Last ();
+ }
+
+const CSISIf& CSISInstallBlock::If () const
+ {
+ return iIfs.Last ();
+ }
+
+
+CSISInstallBlock& CSISInstallBlock::IfInstall ()
+ {
+ return iIfs.Last ().InstallBlock ();
+ }
+
+
+const CSISInstallBlock& CSISInstallBlock::IfInstall () const
+ {
+ return iIfs.Last ().InstallBlock ();
+ }
+
+void CSISInstallBlock::SetHash (const CSISHash& aHash)
+ {
+ iFiles.Last ().SetHash (aHash);
+ }
+
+void CSISInstallBlock::ExtractCapabilities(const std::wstring& aFileName)
+ {
+ iFiles.Last().ExtractCapabilities(aFileName);
+ }
+
+void CSISInstallBlock::GetFileList(TFileDescList& aFileList, bool aRecursive) const
+ {
+ for(int i = 0; i < iFiles.size(); ++i)
+ {
+ aFileList.push_back(&iFiles[i]);
+ }
+
+ if(!aRecursive)
+ {
+ return;
+ }
+
+ for(i = 0; i < iIfs.size(); ++i)
+ {
+ iIfs[i].GetFileList(aFileList);
+ }
+ }
+void CSISInstallBlock::GetEmbeddedControllers(TControllerMap& aControllers, bool aRecursive) const
+ {
+ for(int i = 0; i < iEmbeddedFiles.size(); ++i)
+ {
+ aControllers[iEmbeddedFiles[i].DataIndex()] = &iEmbeddedFiles[i];
+ }
+
+ if(!aRecursive)
+ {
+ return;
+ }
+
+ for(i = 0; i < iIfs.size(); ++i)
+ {
+ iIfs[i].GetEmbeddedControllers(aControllers);
+ }
+ }
+
+void CSISInstallBlock::AddPackageEntry(std::wostream& aStream, bool aVerbose) const
+ {
+ TUint32 descriptionsCount = iFiles.size();
+ for (TUint32 i = 0; i < descriptionsCount; ++i)
+ {
+ iFiles[i].AddPackageEntry(aStream, aVerbose);
+ }
+ TUint32 embeddedCount = iEmbeddedFiles.size();
+ if (embeddedCount)
+ {
+ if (aVerbose)
+ {
+ aStream << std::endl << L"; " << embeddedCount << L" embedded files" << std::endl;
+ }
+ for (int i = 0; i < embeddedCount; ++i)
+ {
+ wchar_t sisFileName[30];
+#ifdef _MSC_VER
+ swprintf(sisFileName, L"sis%d.sis", iEmbeddedFiles[i].GetControllerID());
+#else
+ swprintf(sisFileName, 30, L"sis%d.sis", iEmbeddedFiles[i].GetControllerID());
+#endif //_MSC_VER
+ aStream << L"@\"" << sisFileName << L"\",(0x" << std::hex << iEmbeddedFiles[i].UID1() << std::dec << L")" << std::endl;
+ }
+ }
+ iIfs.AddPackageEntry(aStream, aVerbose);
+ }