Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Xml / System / Xml / Dom / DomNameTable.cs / 1 / DomNameTable.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Xml.Schema; namespace System.Xml { internal class DomNameTable { XmlName[] entries; int count; int mask; XmlDocument ownerDocument; XmlNameTable nameTable; const int InitialSize = 64; // must be a power of two public DomNameTable( XmlDocument document ) { ownerDocument = document; nameTable = document.NameTable; entries = new XmlName[InitialSize]; mask = InitialSize - 1; Debug.Assert( ( entries.Length & mask ) == 0 ); // entries.Length must be a power of two } public XmlName GetName(string prefix, string localName, string ns, IXmlSchemaInfo schemaInfo) { if (prefix == null) { prefix = string.Empty; } if (ns == null) { ns = string.Empty; } int hashCode = XmlName.GetHashCode(localName); for (XmlName e = entries[hashCode & mask]; e != null; e = e.next) { if (e.HashCode == hashCode && ((object)e.LocalName == (object)localName || e.LocalName.Equals(localName)) && ((object)e.Prefix == (object)prefix || e.Prefix.Equals(prefix)) && ((object)e.NamespaceURI == (object)ns || e.NamespaceURI.Equals(ns)) && e.Equals(schemaInfo)) { return e; } } return null; } public XmlName AddName(string prefix, string localName, string ns, IXmlSchemaInfo schemaInfo) { if (prefix == null) { prefix = string.Empty; } if (ns == null) { ns = string.Empty; } int hashCode = XmlName.GetHashCode(localName); for (XmlName e = entries[hashCode & mask]; e != null; e = e.next) { if (e.HashCode == hashCode && ((object)e.LocalName == (object)localName || e.LocalName.Equals(localName)) && ((object)e.Prefix == (object)prefix || e.Prefix.Equals(prefix)) && ((object)e.NamespaceURI == (object)ns || e.NamespaceURI.Equals(ns)) && e.Equals(schemaInfo)) { return e; } } prefix = nameTable.Add(prefix); localName = nameTable.Add(localName); ns = nameTable.Add(ns); int index = hashCode & mask; XmlName name = XmlName.Create(prefix, localName, ns, hashCode, ownerDocument, entries[index], schemaInfo); entries[index] = name; if (count++ == mask) { Grow(); } return name; } private void Grow() { int newMask = mask * 2 + 1; XmlName[] oldEntries = entries; XmlName[] newEntries = new XmlName[newMask+1]; // use oldEntries.Length to eliminate the rangecheck for ( int i = 0; i < oldEntries.Length; i++ ) { XmlName name = oldEntries[i]; while ( name != null ) { int newIndex = name.HashCode & newMask; XmlName tmp = name.next; name.next = newEntries[newIndex]; newEntries[newIndex] = name; name = tmp; } } entries = newEntries; mask = newMask; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Xml.Schema; namespace System.Xml { internal class DomNameTable { XmlName[] entries; int count; int mask; XmlDocument ownerDocument; XmlNameTable nameTable; const int InitialSize = 64; // must be a power of two public DomNameTable( XmlDocument document ) { ownerDocument = document; nameTable = document.NameTable; entries = new XmlName[InitialSize]; mask = InitialSize - 1; Debug.Assert( ( entries.Length & mask ) == 0 ); // entries.Length must be a power of two } public XmlName GetName(string prefix, string localName, string ns, IXmlSchemaInfo schemaInfo) { if (prefix == null) { prefix = string.Empty; } if (ns == null) { ns = string.Empty; } int hashCode = XmlName.GetHashCode(localName); for (XmlName e = entries[hashCode & mask]; e != null; e = e.next) { if (e.HashCode == hashCode && ((object)e.LocalName == (object)localName || e.LocalName.Equals(localName)) && ((object)e.Prefix == (object)prefix || e.Prefix.Equals(prefix)) && ((object)e.NamespaceURI == (object)ns || e.NamespaceURI.Equals(ns)) && e.Equals(schemaInfo)) { return e; } } return null; } public XmlName AddName(string prefix, string localName, string ns, IXmlSchemaInfo schemaInfo) { if (prefix == null) { prefix = string.Empty; } if (ns == null) { ns = string.Empty; } int hashCode = XmlName.GetHashCode(localName); for (XmlName e = entries[hashCode & mask]; e != null; e = e.next) { if (e.HashCode == hashCode && ((object)e.LocalName == (object)localName || e.LocalName.Equals(localName)) && ((object)e.Prefix == (object)prefix || e.Prefix.Equals(prefix)) && ((object)e.NamespaceURI == (object)ns || e.NamespaceURI.Equals(ns)) && e.Equals(schemaInfo)) { return e; } } prefix = nameTable.Add(prefix); localName = nameTable.Add(localName); ns = nameTable.Add(ns); int index = hashCode & mask; XmlName name = XmlName.Create(prefix, localName, ns, hashCode, ownerDocument, entries[index], schemaInfo); entries[index] = name; if (count++ == mask) { Grow(); } return name; } private void Grow() { int newMask = mask * 2 + 1; XmlName[] oldEntries = entries; XmlName[] newEntries = new XmlName[newMask+1]; // use oldEntries.Length to eliminate the rangecheck for ( int i = 0; i < oldEntries.Length; i++ ) { XmlName name = oldEntries[i]; while ( name != null ) { int newIndex = name.HashCode & newMask; XmlName tmp = name.next; name.next = newEntries[newIndex]; newEntries[newIndex] = name; name = tmp; } } entries = newEntries; mask = newMask; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- GCHandleCookieTable.cs
- _Connection.cs
- PointValueSerializer.cs
- ParentQuery.cs
- UnauthorizedAccessException.cs
- StringReader.cs
- ApplyImportsAction.cs
- TypeNameConverter.cs
- OletxDependentTransaction.cs
- PreviewPrintController.cs
- InvalidWMPVersionException.cs
- TemplatePartAttribute.cs
- BeginCreateSecurityTokenRequest.cs
- CommandLibraryHelper.cs
- DataGridViewAdvancedBorderStyle.cs
- RectangleHotSpot.cs
- SqlDataReaderSmi.cs
- CollectionViewGroupRoot.cs
- HttpInputStream.cs
- PairComparer.cs
- GreenMethods.cs
- DbParameterCollectionHelper.cs
- LocationReferenceEnvironment.cs
- DataGridAddNewRow.cs
- MailBnfHelper.cs
- ObjectIDGenerator.cs
- OracleInfoMessageEventArgs.cs
- HttpRequestCacheValidator.cs
- SystemUdpStatistics.cs
- WindowPattern.cs
- EntityDataReader.cs
- AttributedMetaModel.cs
- ObjectQueryState.cs
- WpfKnownMember.cs
- SqlErrorCollection.cs
- ThreadStaticAttribute.cs
- OwnerDrawPropertyBag.cs
- ConfigurationLockCollection.cs
- TypeConverterHelper.cs
- GridView.cs
- TableRowCollection.cs
- CustomTrackingQuery.cs
- DispatcherExceptionEventArgs.cs
- SmtpReplyReaderFactory.cs
- ConfigurationLocation.cs
- NativeMethods.cs
- InitializationEventAttribute.cs
- PropertyGroupDescription.cs
- IdnElement.cs
- XmlQueryType.cs
- EncoderParameter.cs
- PerfCounterSection.cs
- InteropEnvironment.cs
- XmlQueryContext.cs
- PageParserFilter.cs
- PassportAuthenticationModule.cs
- InitializerFacet.cs
- UpdateCompiler.cs
- SplitContainer.cs
- MenuStrip.cs
- autovalidator.cs
- xdrvalidator.cs
- GradientBrush.cs
- isolationinterop.cs
- XmlSchemaInferenceException.cs
- CredentialCache.cs
- ClientEventManager.cs
- EmptyQuery.cs
- cookiecontainer.cs
- ToolboxComponentsCreatingEventArgs.cs
- XPathDocumentIterator.cs
- ExplicitDiscriminatorMap.cs
- DataRecord.cs
- PriorityBindingExpression.cs
- JsonWriter.cs
- BulletedList.cs
- UnionCodeGroup.cs
- Site.cs
- QuinticEase.cs
- DynamicResourceExtensionConverter.cs
- Enum.cs
- MarkupCompilePass1.cs
- ByteStack.cs
- RepeatInfo.cs
- NativeObjectSecurity.cs
- DataControlExtensions.cs
- ZipPackage.cs
- TranslateTransform3D.cs
- ViewStateException.cs
- ValidatingReaderNodeData.cs
- ValueTypeFixupInfo.cs
- ParseHttpDate.cs
- FontStyleConverter.cs
- ClassValidator.cs
- MissingFieldException.cs
- ToolStripDropDownItem.cs
- FixedNode.cs
- StreamHelper.cs
- ListComponentEditor.cs
- _LazyAsyncResult.cs