diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianParserLib/RegExTranslators/Types/RegExTranslatorHex.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianParserLib/RegExTranslators/Types/RegExTranslatorHex.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,112 @@ +/* +* 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.Reflection; +using SymbianParserLib.Elements; +using SymbianParserLib.Enums; + +namespace SymbianParserLib.RegExTranslators.Types +{ + internal class RegExTranslatorHex : RegExTranslatorBase + { + #region Constructors + public RegExTranslatorHex() + { + } + #endregion + + #region API + public override ParserField Process( Capture aCapture, int aStartAt, ParserLine aLine ) + { + ParserField ret = null; + // + RegExTranslatorExtractionInfo m = new RegExTranslatorExtractionInfo( aLine.OriginalValue, aStartAt ); + // + if ( m.Success && m.ValueTypeChar == 'X' ) + { + // Build the regular expression + StringBuilder regex = new StringBuilder( "[A-Fa-f0-9]" ); + if ( m.Width != RegExTranslatorExtractionInfo.KNoWidthSpecified ) + { + // Add specific length suffix + regex.Append( "{" ); + regex.Append( m.Width.ToString() ); + regex.Append( "}" ); + } + else + { + // Add "one or more" suffix + regex.Append( "+" ); + } + + ret = CreateField( regex.ToString(), m.Name, m.ValueType, m.CapturePos, m.CaptureLength, true ); + ret.FormatSpecifier.NumberBase = m.NumberBase; + } + // + return ret; + } + #endregion + + #region Properties + #endregion + + #region Internal methods + #endregion + + #region Internal constants + #endregion + + #region From System.Object + public override string ToString() + { + return base.ToString(); + } + #endregion + + #region Data members + /// + /// Regular expression built for C# on: Thu, May 15, 2008, 11:33:33 AM + /// Using Expresso Version: 3.0.2766, http://www.ultrapico.com + /// + /// A description of the regular expression: + /// + /// % + /// [PadChar]: A named capture group. [(?:0| )?] + /// Match expression but don't capture it. [0| ], zero or one repetitions + /// Select from 2 alternatives + /// 0 + /// Space + /// [Width]: A named capture group. [[0-9]?] + /// Any character in this class: [0-9], zero or one repetitions + /// Match expression but don't capture it. [x|X] + /// Select from 2 alternatives + /// xX + /// + /// + /// + private static Regex KRegEx = new Regex( + "%(?(?:0| )?)(?[0-9]?)(?:x|X)", + RegexOptions.Singleline + | RegexOptions.CultureInvariant + | RegexOptions.Compiled + ); + #endregion + } +}