diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianUtils/MarshallingUtils/MarshalHelper.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianUtils/MarshallingUtils/MarshalHelper.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,65 @@ +/* +* 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: +* +*/ +using System; +using System.Collections.Generic; +using System.Text; +using System.Text.RegularExpressions; +using System.IO; +using System.Runtime.InteropServices; + +namespace SymbianUtils.MarshallingUtils +{ + public static class MarshalHelper + { + #region Constructors + #endregion + + #region API + public static T Read( byte[] aData ) + { + return Read( aData, 0 ); + } + + public static T Read( byte[] aData, int aOffset ) + { + int size = Marshal.SizeOf( typeof( T ) ); + + byte[] buffer = new byte[ size ]; + for ( int i = 0; i < buffer.Length; i++ ) + { + int pos = aOffset + i; + buffer[ i ] = aData[ pos ]; + } + + GCHandle handle = GCHandle.Alloc( buffer, GCHandleType.Pinned ); + T ret = (T) Marshal.PtrToStructure( handle.AddrOfPinnedObject(), typeof( T ) ); + handle.Free(); + + return ret; + } + #endregion + + #region Properties + #endregion + + #region Internal methods + #endregion + + #region Data members + #endregion + } +}