launcher/src/launcherdllparser.cpp
changeset 0 d6fe6244b863
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/launcher/src/launcherdllparser.cpp	Tue Feb 02 00:17:27 2010 +0200
@@ -0,0 +1,133 @@
+/*
+* Copyright (c) 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 "launcherdllparser.h"
+#include "launchertraces.h"
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser::~CLauncherDLLParser()
+    {
+    LOGSTRING("Launcher: CLauncherDLLParser::~CLauncherDLLParser");
+    }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser::CLauncherDLLParser()
+    {
+    LOGSTRING("Launcher: CLauncherDLLParser::CLauncherDLLParser");
+    }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser* CLauncherDLLParser::NewL()
+    {
+    LOGSTRING("Launcher: CLauncherDLLParser::NewL");
+    CLauncherDLLParser* self = CLauncherDLLParser::NewLC();    
+    CleanupStack::Pop();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+
+CLauncherDLLParser* CLauncherDLLParser::NewLC()
+    {
+    LOGSTRING("Launcher: CLauncherDLLParser::NewLC");
+    CLauncherDLLParser* self = new (ELeave) CLauncherDLLParser;
+    CleanupStack::PushL(self);
+    self->ConstructL();
+    return self;
+    }
+
+// ---------------------------------------------------------------------------
+
+void CLauncherDLLParser::ConstructL()
+    {
+    
+    }
+
+// ---------------------------------------------------------------------------
+
+void CLauncherDLLParser::ParseL( RFs& aFileSession, RFile& aFile, CLauncherDLLElement& aElement )
+    {
+    TFileName dllName;
+    TFileName fullName;
+    TUid tmpUID;
+    TInt offset = 0;
+        
+    aFile.Name(dllName);
+    aFile.FullName(fullName);
+    aElement.SetNameL(dllName);
+    
+    TBool isFileInRom = aFileSession.IsFileInRom(fullName) != 0;
+    
+    /**
+     * Read UID1
+     */
+    offset = UID1_OFFSET;
+    aFile.Seek(ESeekStart, offset); // Set file position   
+    tmpUID.iUid = ReadUint32L(aFile);    
+    aElement.SetUID1L(tmpUID);    
+    
+    /**
+     * Read UID2
+     */
+    offset = UID2_OFFSET;
+    aFile.Seek(ESeekStart, offset); // Set file position
+    tmpUID.iUid = ReadUint32L(aFile);    
+    aElement.SetUID2L(tmpUID);
+        
+    /**
+     * Read UID3
+     */
+    offset = UID3_OFFSET;
+    aFile.Seek(ESeekStart, offset); // Set file position
+    tmpUID.iUid = ReadUint32L(aFile);    
+    aElement.SetUID3L(tmpUID);
+        
+    /**
+     * Read SID
+     */
+    if( isFileInRom )
+        offset = SID_OFFSET_ROM;
+    else
+        offset = SID_OFFSET_ROFS;
+    aFile.Seek(ESeekStart, offset); // Set file position
+    tmpUID.iUid = ReadUint32L(aFile);    
+    aElement.SetSIDL(tmpUID);
+    
+    /**
+     * Read Capability
+     */
+    if( isFileInRom )
+        offset = CAPABILITY_OFFSET_ROM;
+    else
+        offset = CAPABILITY_OFFSET_ROFS;
+    aFile.Seek(ESeekStart, offset); // Set file position
+    TUint32 tmpVal = ReadUint32L(aFile);
+    aElement.SetCapabilityL(tmpVal);    
+    }
+
+// ---------------------------------------------------------------------------
+
+TUint32 CLauncherDLLParser::ReadUint32L( RFile& aFile )
+    {
+    TBuf8<4> tempBuf;    
+    User::LeaveIfError(aFile.Read(tempBuf, 4));
+    const TUint8* ptr = tempBuf.Ptr();    
+    return TUint32(ptr[0] | (ptr[1]<<8) | (ptr[2]<<16) | (ptr[3]<<24));    
+    }