Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- Funcletizer.cs
- IntegerFacetDescriptionElement.cs
- HTMLTextWriter.cs
- Brushes.cs
- AdjustableArrowCap.cs
- TextChange.cs
- StubHelpers.cs
- TypeUtil.cs
- DesignerVerbCollection.cs
- EntitySqlException.cs
- XpsSerializationException.cs
- HybridCollection.cs
- ButtonChrome.cs
- ModuleConfigurationInfo.cs
- GridItemProviderWrapper.cs
- StringAnimationBase.cs
- ADRoleFactory.cs
- StatusCommandUI.cs
- ConfigXmlReader.cs
- SlipBehavior.cs
- DesignParameter.cs
- FixedFindEngine.cs
- MethodBody.cs
- ValidationHelper.cs
- PageContentAsyncResult.cs
- PartialArray.cs
- PackageDigitalSignatureManager.cs
- CurrencyManager.cs
- PageStatePersister.cs
- Matrix3DValueSerializer.cs
- MemberDescriptor.cs
- OutArgumentConverter.cs
- StickyNote.cs
- TargetException.cs
- SqlConnectionString.cs
- ImageSource.cs
- RegexGroupCollection.cs
- BuildManagerHost.cs
- BindingMemberInfo.cs
- TextSelectionHighlightLayer.cs
- OutputCacheSettingsSection.cs
- Int32CollectionConverter.cs
- EntityConnection.cs
- Menu.cs
- ShaderRenderModeValidation.cs
- ReservationCollection.cs
- SHA256.cs
- PeerFlooder.cs
- SqlFactory.cs
- Content.cs
- TrustDriver.cs
- MarkupExtensionParser.cs
- BrowserCapabilitiesCompiler.cs
- Exception.cs
- JsonReader.cs
- EventEntry.cs
- Unit.cs
- DoubleCollection.cs
- QuerySettings.cs
- TreeView.cs
- TargetParameterCountException.cs
- SQLCharsStorage.cs
- ToolStripLocationCancelEventArgs.cs
- ComplexBindingPropertiesAttribute.cs
- UrlEncodedParameterWriter.cs
- SqlRetyper.cs
- PatternMatcher.cs
- Parameter.cs
- SingleAnimationBase.cs
- NetworkAddressChange.cs
- CheckBoxAutomationPeer.cs
- ByteConverter.cs
- DynamicResourceExtensionConverter.cs
- CodeStatement.cs
- CryptoHelper.cs
- SapiRecoInterop.cs
- PasswordBox.cs
- DbConnectionPool.cs
- Pointer.cs
- OleDbRowUpdatingEvent.cs
- FileRecordSequenceHelper.cs
- HttpCacheVary.cs
- SaveFileDialogDesigner.cs
- Rotation3DAnimationUsingKeyFrames.cs
- AuthStoreRoleProvider.cs
- DbProviderFactories.cs
- RichTextBox.cs
- ListViewInsertEventArgs.cs
- WebPartTransformerAttribute.cs
- NullableDecimalMinMaxAggregationOperator.cs
- BindUriHelper.cs
- RtType.cs
- UserControl.cs
- AdPostCacheSubstitution.cs
- InputProcessorProfiles.cs
- HostProtectionException.cs
- Convert.cs
- DocumentPropertiesDialog.cs
- PromptStyle.cs
- TdsParameterSetter.cs