diff -r 000000000000 -r 818e61de6cd1 crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianParserLib/RegExTranslators/Cache/RegExTranslatorCache.cs --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/crashanalysercmd/PerfToolsSharedLibraries/Engine/SymbianParserLib/RegExTranslators/Cache/RegExTranslatorCache.cs Thu Feb 11 15:50:58 2010 +0200 @@ -0,0 +1,104 @@ +/* +* 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.Enums; +using SymbianParserLib.Elements; +using SymbianParserLib.Elements.SubFields; + +namespace SymbianParserLib.RegExTranslators.Cache +{ + internal class RegExTranslatorCache + { + #region Constructors + public RegExTranslatorCache() + { + } + #endregion + + #region API + public ParserLine CreateClone( string aKey ) + { + ParserLine ret = null; + // + lock ( iEntries ) + { + if ( Exists( aKey ) ) + { + RegExTranslatorCacheEntry entry = iEntries[ aKey ]; + ret = entry.Clone(); + } + } + // + return ret; + } + + public void Add( string aKey, ParserLine aLine ) + { + System.Diagnostics.Debug.Assert( !string.IsNullOrEmpty( aKey ) ); + System.Diagnostics.Debug.Assert( aLine != null ); + System.Diagnostics.Debug.Assert( !string.IsNullOrEmpty( aLine.OriginalValue ) ); + System.Diagnostics.Debug.Assert( !string.IsNullOrEmpty( aLine.FinalValue ) ); + System.Diagnostics.Debug.Assert( iEntries != null ); + + try + { + lock ( iEntries ) + { + if ( Exists( aKey ) == false ) + { + RegExTranslatorCacheEntry entry = new RegExTranslatorCacheEntry( aLine ); + iEntries.Add( aKey, entry ); + } + } + } + catch ( Exception ) + { + SymbianUtils.SymDebug.SymDebugger.Break(); + } + } + + public bool Exists( string aKey ) + { + lock ( iEntries ) + { + bool ret = iEntries.ContainsKey( aKey ); + return ret; + } + } + #endregion + + #region Properties + #endregion + + #region Internal methods + #endregion + + #region Internal constants + #endregion + + #region From System.Object + #endregion + + #region Data members + private Dictionary iEntries = new Dictionary(); + #endregion + } +}