Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / ndp / fx / src / XmlUtils / System / Xml / Xsl / Runtime / XmlSortKeyAccumulator.cs / 1 / XmlSortKeyAccumulator.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System; using System.Diagnostics; using System.Globalization; using System.ComponentModel; namespace System.Xml.Xsl.Runtime { ////// Accumulates a list of sort keys and stores them in an array. /// [EditorBrowsable(EditorBrowsableState.Never)] public struct XmlSortKeyAccumulator { private XmlSortKey[] keys; private int pos; #if DEBUG private const int DefaultSortKeyCount = 4; #else private const int DefaultSortKeyCount = 64; #endif ////// Initialize the XmlSortKeyAccumulator. /// public void Create() { if (this.keys == null) this.keys = new XmlSortKey[DefaultSortKeyCount]; this.pos = 0; this.keys[0] = null; } ////// Create a new sort key and append it to the current run of sort keys. /// public void AddStringSortKey(XmlCollation collation, string value) { AppendSortKey(collation.CreateSortKey(value)); } public void AddDecimalSortKey(XmlCollation collation, decimal value) { AppendSortKey(new XmlDecimalSortKey(value, collation)); } public void AddIntegerSortKey(XmlCollation collation, long value) { AppendSortKey(new XmlIntegerSortKey(value, collation)); } public void AddIntSortKey(XmlCollation collation, int value) { AppendSortKey(new XmlIntSortKey(value, collation)); } public void AddDoubleSortKey(XmlCollation collation, double value) { AppendSortKey(new XmlDoubleSortKey(value, collation)); } public void AddDateTimeSortKey(XmlCollation collation, DateTime value) { AppendSortKey(new XmlDateTimeSortKey(value, collation)); } public void AddEmptySortKey(XmlCollation collation) { AppendSortKey(new XmlEmptySortKey(collation)); } ////// Finish creating the current run of sort keys and begin a new run. /// public void FinishSortKeys() { this.pos++; if (this.pos >= this.keys.Length) { XmlSortKey[] keysNew = new XmlSortKey[this.pos * 2]; Array.Copy(this.keys, 0, keysNew, 0, this.keys.Length); this.keys = keysNew; } this.keys[this.pos] = null; } ////// Append new sort key to the current run of sort keys. /// private void AppendSortKey(XmlSortKey key) { // Ensure that sort will be stable by setting index of key key.Priority = this.pos; if (this.keys[this.pos] == null) this.keys[this.pos] = key; else this.keys[this.pos].AddSortKey(key); } ////// Get array of sort keys that was constructed by this internal class. /// public Array Keys { get { return this.keys; } } } } // 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.Globalization; using System.ComponentModel; namespace System.Xml.Xsl.Runtime { ////// Accumulates a list of sort keys and stores them in an array. /// [EditorBrowsable(EditorBrowsableState.Never)] public struct XmlSortKeyAccumulator { private XmlSortKey[] keys; private int pos; #if DEBUG private const int DefaultSortKeyCount = 4; #else private const int DefaultSortKeyCount = 64; #endif ////// Initialize the XmlSortKeyAccumulator. /// public void Create() { if (this.keys == null) this.keys = new XmlSortKey[DefaultSortKeyCount]; this.pos = 0; this.keys[0] = null; } ////// Create a new sort key and append it to the current run of sort keys. /// public void AddStringSortKey(XmlCollation collation, string value) { AppendSortKey(collation.CreateSortKey(value)); } public void AddDecimalSortKey(XmlCollation collation, decimal value) { AppendSortKey(new XmlDecimalSortKey(value, collation)); } public void AddIntegerSortKey(XmlCollation collation, long value) { AppendSortKey(new XmlIntegerSortKey(value, collation)); } public void AddIntSortKey(XmlCollation collation, int value) { AppendSortKey(new XmlIntSortKey(value, collation)); } public void AddDoubleSortKey(XmlCollation collation, double value) { AppendSortKey(new XmlDoubleSortKey(value, collation)); } public void AddDateTimeSortKey(XmlCollation collation, DateTime value) { AppendSortKey(new XmlDateTimeSortKey(value, collation)); } public void AddEmptySortKey(XmlCollation collation) { AppendSortKey(new XmlEmptySortKey(collation)); } ////// Finish creating the current run of sort keys and begin a new run. /// public void FinishSortKeys() { this.pos++; if (this.pos >= this.keys.Length) { XmlSortKey[] keysNew = new XmlSortKey[this.pos * 2]; Array.Copy(this.keys, 0, keysNew, 0, this.keys.Length); this.keys = keysNew; } this.keys[this.pos] = null; } ////// Append new sort key to the current run of sort keys. /// private void AppendSortKey(XmlSortKey key) { // Ensure that sort will be stable by setting index of key key.Priority = this.pos; if (this.keys[this.pos] == null) this.keys[this.pos] = key; else this.keys[this.pos].AddSortKey(key); } ////// Get array of sort keys that was constructed by this internal class. /// public Array Keys { get { return this.keys; } } } } // 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
- EntityTemplateUserControl.cs
- XPathNavigatorKeyComparer.cs
- InstanceKeyView.cs
- DataKeyArray.cs
- IOException.cs
- QueryableDataSource.cs
- NetworkInterface.cs
- AccessibilityApplicationManager.cs
- SecurityChannelFaultConverter.cs
- _NTAuthentication.cs
- TextAnchor.cs
- ComplexPropertyEntry.cs
- StringUtil.cs
- SelectionRange.cs
- DataMemberFieldConverter.cs
- DocumentSequenceHighlightLayer.cs
- TextProperties.cs
- SafeEventHandle.cs
- _SSPISessionCache.cs
- ForceCopyBuildProvider.cs
- FromReply.cs
- PagesSection.cs
- EmptyEnumerable.cs
- BitmapCodecInfo.cs
- MetadataCache.cs
- DataColumnCollection.cs
- PackageRelationshipCollection.cs
- HGlobalSafeHandle.cs
- BindingUtils.cs
- PageCodeDomTreeGenerator.cs
- ExecutedRoutedEventArgs.cs
- RadioButtonAutomationPeer.cs
- StrokeNodeOperations2.cs
- TemplateApplicationHelper.cs
- DelayedRegex.cs
- Filter.cs
- DocumentEventArgs.cs
- SafeRightsManagementHandle.cs
- TextElement.cs
- Container.cs
- ExpressionBuilderCollection.cs
- Utils.cs
- BlockExpression.cs
- PrimitiveXmlSerializers.cs
- EventArgs.cs
- DeviceFilterDictionary.cs
- AutomationInteropProvider.cs
- LoggedException.cs
- ApplicationActivator.cs
- ServerValidateEventArgs.cs
- ChtmlCalendarAdapter.cs
- SizeConverter.cs
- SliderAutomationPeer.cs
- CompiledQuery.cs
- RelativeSource.cs
- MasterPage.cs
- DataViewManagerListItemTypeDescriptor.cs
- XLinq.cs
- GradientBrush.cs
- CriticalHandle.cs
- DataGridViewAccessibleObject.cs
- _NTAuthentication.cs
- DropTarget.cs
- ImageButton.cs
- SqlComparer.cs
- ICollection.cs
- PassportAuthenticationModule.cs
- SecureConversationVersion.cs
- Constants.cs
- XmlSchemaAnnotation.cs
- ProfileManager.cs
- TextBox.cs
- EntityContainer.cs
- SettingsContext.cs
- RowToFieldTransformer.cs
- odbcmetadatacolumnnames.cs
- Pen.cs
- RemoteHelper.cs
- Timer.cs
- XmlChoiceIdentifierAttribute.cs
- DataControlFieldCollection.cs
- FixedSOMLineCollection.cs
- AsymmetricSignatureDeformatter.cs
- DrawingGroupDrawingContext.cs
- TTSEvent.cs
- JsonReader.cs
- ClientProtocol.cs
- SimpleBitVector32.cs
- CellCreator.cs
- CompleteWizardStep.cs
- DesignerPainter.cs
- EtwTrace.cs
- TextCharacters.cs
- TextFormatterHost.cs
- EntitySqlQueryCacheKey.cs
- FixedTextPointer.cs
- AudienceUriMode.cs
- FixedSOMImage.cs
- DataGridViewCellCollection.cs
- HttpStreamFormatter.cs