--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/secureswitools/swisistools/source/rscparser/barsc2.cpp Tue Aug 31 15:21:33 2010 +0300
@@ -0,0 +1,137 @@
+// 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:
+//
+/**
+* @file barsc2.cpp
+*
+* @internalComponent
+* @released
+*/
+#include <iostream>
+#include <sstream>
+#include "barsc2.h"
+#include <string>
+
+CResourceFile::CResourceFile(const std::string& aName,TUint32 aFileOffset, TInt aFileSize)
+ {
+ // Creating the implementation instance with a placement new operator.
+ new (iImpl) RResourceFileImpl;
+
+ // Open the resource file for reading.
+ Impl()->OpenL(aName, aFileOffset, aFileSize);
+ }
+
+
+CResourceFile::~CResourceFile()
+ {
+ RResourceFileImpl* impl = Impl();
+ impl->~RResourceFileImpl();
+ }
+
+
+Ptr8* CResourceFile::AllocReadL(const TInt& aResourceId)
+ {
+ return Impl()->AllocReadL(aResourceId);
+ }
+
+/** Initialises the offset value from the first resource.
+
+The function tests to catch cases where the first resource is not an RSS_SIGNATURE.
+It assumes that the first resource in the file consists of
+two 32-bit integers. The first integer contains the version number and
+the second is a self-referencing link whose value is the offset for
+the resources in the file, plus 1.This function must be called before
+calling Offset(), AllocReadL(), AllocReadLC() or ReadL().
+@leave The function leaves if this resource id is not in this
+resource file or the file is corrupted. */
+void CResourceFile::ConfirmSignatureL()
+ {
+ Impl()->ConfirmSignatureL();
+ }
+
+// Read Uid3 of Resource File
+TUid CResourceFile::ReadAppUidL()
+ {
+ // Unicode compressed RSC file will have 19 bytes header.
+ const TUint8 Read_Byte = 4;
+ TUint8 header[Read_Byte];
+ sTUid uid;
+
+ // Read Uid3 of Resource File
+ Impl()->ReadL(8,header,Read_Byte);
+ // Get the Third UID
+ memcpy((TUint8*)&uid.iUid1,header,Read_Byte);
+
+ TUid iUid = {uid.iUid1};
+ return iUid;
+ }
+
+// Read Uid2 of Resource File
+TUid CResourceFile::ReadFileUidL()
+ {
+ // Unicode compressed RSC file will have 19 bytes header.
+ const TUint8 Read_Byte = 4;
+ TUint8 header[Read_Byte];
+ sTUid uid;
+
+ // Read Uid3 of Resource File
+ Impl()->ReadL(4,header,Read_Byte);
+ // Get the Third UID
+ memcpy((TUint8*)&uid.iUid1,header,Read_Byte);
+
+ TUid iUid = {uid.iUid1};
+ return iUid;
+ }
+
+TBool CResourceFile::OwnsResourceId(const TInt& aResourceId) const
+ {
+ return Impl()->OwnsResourceId(aResourceId);
+ }
+
+
+RResourceFileImpl* CResourceFile::Impl()
+ {
+ return reinterpret_cast <RResourceFileImpl*> (iImpl);
+ }
+
+
+const RResourceFileImpl* CResourceFile::Impl() const
+ {
+ return reinterpret_cast <const RResourceFileImpl*> (iImpl);
+ }
+
+
+void CResourceFileException::Display() const
+ {
+ std::ostringstream errDispStream;
+ errDispStream<<iValue;
+ errDispStream<<std::endl;
+
+// Note: Remove the following tow sentences after integrating with Interpretsis.
+ std::string str = errDispStream.str();
+ std::cout<<str;
+
+// Note: Put this when integrating with InterpretSis
+// std::wstring finalMessage = Utf8ToUcs2( errDispStream.str() );
+// LERROR( finalMessage );
+ }
+
+ /**
+ Get the exception message
+ */
+std::string CResourceFileException::GetMsg()
+ {
+ return iValue;
+ }
+