--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/mtpfws/mtpfw/datatypes/src/tmtptypeint128.cpp Tue Feb 02 01:11:40 2010 +0200
@@ -0,0 +1,107 @@
+// Copyright (c) 2006-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
+ @publishedPartner
+*/
+
+#include <mtp/mtpdatatypeconstants.h>
+#include <mtp/tmtptypeint128.h>
+
+/**
+Default constructor.
+*/
+EXPORT_C TMTPTypeInt128::TMTPTypeInt128()
+ {
+ iData.FillZ(iData.MaxLength());
+ }
+
+/**
+Conversion constructor.
+*/
+EXPORT_C TMTPTypeInt128::TMTPTypeInt128(const TPtrC8& aData) :
+ iData(aData)
+ {
+ }
+
+/**
+Sets the data type to the specified value.
+*/
+EXPORT_C void TMTPTypeInt128::Set(TInt64 aUpperValue, TUint64 aLowerValue)
+ {
+ memcpy(&iData[KMTPTypeInt128OffsetMS], &aUpperValue, sizeof(aUpperValue));
+ memcpy(&iData[KMTPTypeInt128OffsetLS], &aLowerValue, sizeof(aLowerValue));
+ }
+
+/**
+Provides the least significant portion of the data type.
+@return The least significant 64 bits of the value.
+*/
+EXPORT_C TUint64 TMTPTypeInt128::LowerValue() const
+ {
+ // memcpy the data to avoid alignment errors.
+ TInt64 ret;
+ memcpy(&ret, &iData[KMTPTypeInt128OffsetLS], sizeof(ret));
+ return ret;
+ }
+
+/**
+Provides the most significant portion of type's value.
+@return The most significant 64 bits of the value.
+*/
+EXPORT_C TInt64 TMTPTypeInt128::UpperValue() const
+ {
+ // memcpy the data to avoid alignment errors.
+ TInt64 ret;
+ memcpy(&ret, &iData[KMTPTypeInt128OffsetMS], sizeof(ret));
+ return ret;
+ }
+
+EXPORT_C TInt TMTPTypeInt128::FirstReadChunk(TPtrC8& aChunk) const
+ {
+ aChunk.Set(iData);
+ return KMTPChunkSequenceCompletion;
+ }
+
+EXPORT_C TInt TMTPTypeInt128::NextReadChunk(TPtrC8& aChunk) const
+ {
+ aChunk.Set(NULL, 0);
+ return KErrNotReady;
+ }
+
+EXPORT_C TInt TMTPTypeInt128::FirstWriteChunk(TPtr8& aChunk)
+ {
+ aChunk.Set(&iData[0], 0, iData.MaxLength());
+ return KMTPChunkSequenceCompletion;
+ }
+
+EXPORT_C TInt TMTPTypeInt128::NextWriteChunk(TPtr8& aChunk)
+ {
+ aChunk.Set(NULL, 0, 0);
+ return KErrNotReady;
+ }
+
+EXPORT_C TUint64 TMTPTypeInt128::Size() const
+ {
+ return iData.MaxLength();
+ }
+
+EXPORT_C TUint TMTPTypeInt128::Type() const
+ {
+ return EMTPTypeINT128;
+ }
+
+