From: Oleg T. <he...@us...> - 2005-10-28 20:01:56
|
Update of /cvsroot/mvp-xml/Common/v2/src/XPath In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv21156/v2/src/XPath Modified Files: DynamicContext.cs IndexingXPathNavigator.cs XPathCache.cs Log Message: Index: DynamicContext.cs =================================================================== RCS file: /cvsroot/mvp-xml/Common/v2/src/XPath/DynamicContext.cs,v retrieving revision 1.2 retrieving revision 1.3 diff -u -d -r1.2 -r1.3 --- DynamicContext.cs 25 Oct 2005 21:33:44 -0000 1.2 +++ DynamicContext.cs 28 Oct 2005 20:01:47 -0000 1.3 @@ -210,7 +210,9 @@ /// </summary> public override IXsltContextVariable ResolveVariable(string prefix, string name) { - return _variables[name]; + IXsltContextVariable var; + _variables.TryGetValue(name, out var); + return var; } #endregion Variable Handling Code Index: XPathCache.cs =================================================================== RCS file: /cvsroot/mvp-xml/Common/v2/src/XPath/XPathCache.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- XPathCache.cs 26 Oct 2005 15:08:29 -0000 1.3 +++ XPathCache.cs 28 Oct 2005 20:01:47 -0000 1.4 @@ -41,23 +41,19 @@ /// <summary> /// Retrieves a cached compiled expression, or a newly compiled one. /// </summary> - private static XPathExpression GetCompiledExpression(string expression, XPathNavigator source) - { - XPathExpression expr; + private static XPathExpression GetCompiledExpression(string expression, XPathNavigator source) + { + XPathExpression expr; - if (Cache.ContainsKey(expression)) - { - expr = Cache[expression]; - } - else - { - // No double checks. At most we will compile twice. No big deal. - expr = source.Compile(expression); - Cache[expression] = expr; - } + if (!Cache.TryGetValue(expression, out expr)) + { + // No double checks. At most we will compile twice. No big deal. + expr = source.Compile(expression); + Cache[expression] = expr; + } - return expr.Clone(); - } + return expr.Clone(); + } /// <summary> /// Sets up the context for expression execution. Index: IndexingXPathNavigator.cs =================================================================== RCS file: /cvsroot/mvp-xml/Common/v2/src/XPath/IndexingXPathNavigator.cs,v retrieving revision 1.3 retrieving revision 1.4 diff -u -d -r1.3 -r1.4 --- IndexingXPathNavigator.cs 26 Oct 2005 16:15:42 -0000 1.3 +++ IndexingXPathNavigator.cs 28 Oct 2005 20:01:47 -0000 1.4 @@ -687,15 +687,11 @@ { //Get slot List<XPathNavigator> indexedNodes; - if (index.ContainsKey(key)) - { - indexedNodes = index[key]; - } - else + if (!index.TryGetValue(key, out indexedNodes)) { indexedNodes = new List<XPathNavigator>(); index.Add(key, indexedNodes); - } + } indexedNodes.Add(node.Clone()); } } @@ -727,15 +723,11 @@ if (indexes == null) indexes = new Dictionary<string, XPathNavigatorIndex>(); XPathNavigatorIndex index; - if (indexes.ContainsKey(indexName)) - { - index = indexes[indexName]; - } - else + if (!indexes.TryGetValue(indexName, out index)) { - index = new XPathNavigatorIndex(); - indexes.Add(indexName, index); - } + index = new XPathNavigatorIndex(); + indexes.Add(indexName, index); + } index.AddKey(key); } @@ -793,7 +785,8 @@ { if (!indexed) BuildIndexes(); - XPathNavigatorIndex index = indexes[indexName]; + XPathNavigatorIndex index; + indexes.TryGetValue(indexName, out index); return index == null? null : index.GetNodes(value); } } |