Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / XmlUtils / System / Xml / Xsl / Runtime / XmlSortKeyAccumulator.cs / 1305376 / 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
- DataControlFieldCell.cs
- ViewLoader.cs
- HelpProvider.cs
- XmlSubtreeReader.cs
- SecurityException.cs
- Helpers.cs
- BuildManager.cs
- LineVisual.cs
- Bits.cs
- SQlBooleanStorage.cs
- RequestCache.cs
- COM2ComponentEditor.cs
- TextServicesCompartmentContext.cs
- PropertyChangingEventArgs.cs
- CodeSnippetCompileUnit.cs
- StorageEntitySetMapping.cs
- XmlDataSourceNodeDescriptor.cs
- TextOutput.cs
- CheckBoxStandardAdapter.cs
- BamlCollectionHolder.cs
- ValidatedControlConverter.cs
- IndependentAnimationStorage.cs
- WebPartTracker.cs
- CompiledQueryCacheKey.cs
- StreamedFramingRequestChannel.cs
- NetStream.cs
- ApplyImportsAction.cs
- DurableTimerExtension.cs
- GACIdentityPermission.cs
- CapabilitiesPattern.cs
- CategoryAttribute.cs
- FlagsAttribute.cs
- SqlServer2KCompatibilityCheck.cs
- ComponentManagerBroker.cs
- DataSetSchema.cs
- EventWaitHandle.cs
- SqlCrossApplyToCrossJoin.cs
- SelectionService.cs
- FixedSOMSemanticBox.cs
- NetworkCredential.cs
- ApplicationDirectoryMembershipCondition.cs
- StringFreezingAttribute.cs
- WebBrowserDocumentCompletedEventHandler.cs
- XmlReturnReader.cs
- Rule.cs
- FileLevelControlBuilderAttribute.cs
- TemplateParser.cs
- LookupBindingPropertiesAttribute.cs
- TextPointerBase.cs
- AspNetCacheProfileAttribute.cs
- ObjectHandle.cs
- GroupBoxAutomationPeer.cs
- EntitySet.cs
- ProcessProtocolHandler.cs
- OperationResponse.cs
- GridViewDeletedEventArgs.cs
- CssTextWriter.cs
- GeometryCombineModeValidation.cs
- WindowsFont.cs
- SettingsProviderCollection.cs
- LinkArea.cs
- RoutedUICommand.cs
- Tile.cs
- DocumentViewerHelper.cs
- OpCopier.cs
- ListBox.cs
- EntityTypeEmitter.cs
- shaperfactory.cs
- Pen.cs
- WebSysDescriptionAttribute.cs
- SoapAttributeOverrides.cs
- VerbConverter.cs
- ReaderContextStackData.cs
- CqlGenerator.cs
- OutputScope.cs
- ArgumentNullException.cs
- ItemMap.cs
- CompositeFontInfo.cs
- SecurityKeyType.cs
- TemplateKey.cs
- HierarchicalDataSourceIDConverter.cs
- ConditionCollection.cs
- EntityConnectionStringBuilderItem.cs
- SemanticBasicElement.cs
- URLIdentityPermission.cs
- ComponentChangedEvent.cs
- RegexRunner.cs
- SponsorHelper.cs
- HWStack.cs
- DynamicObject.cs
- XamlTreeBuilderBamlRecordWriter.cs
- BitmapCodecInfoInternal.cs
- IconConverter.cs
- SelectionProviderWrapper.cs
- Imaging.cs
- HuffCodec.cs
- _Semaphore.cs
- AssemblyCollection.cs
- Model3DGroup.cs
- HttpChannelFactory.cs