Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / 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
- JoinCqlBlock.cs
- ImageBrush.cs
- _LocalDataStoreMgr.cs
- DirectoryRedirect.cs
- NumericUpDownAcceleration.cs
- DataGridViewCellValidatingEventArgs.cs
- EllipseGeometry.cs
- Paragraph.cs
- ObjectListGeneralPage.cs
- RestClientProxyHandler.cs
- PropertyMap.cs
- RoleManagerModule.cs
- PlanCompiler.cs
- HandledMouseEvent.cs
- SizeLimitedCache.cs
- KnownBoxes.cs
- SmtpSpecifiedPickupDirectoryElement.cs
- ReceiveSecurityHeaderEntry.cs
- JournalEntryListConverter.cs
- AmbientProperties.cs
- MouseGestureValueSerializer.cs
- SqlException.cs
- TextSimpleMarkerProperties.cs
- QueryTask.cs
- ProxyElement.cs
- compensatingcollection.cs
- filewebrequest.cs
- ContentType.cs
- XsltCompileContext.cs
- TextServicesPropertyRanges.cs
- TextMetrics.cs
- MenuRendererStandards.cs
- CategoryGridEntry.cs
- WsatConfiguration.cs
- PingReply.cs
- HierarchicalDataTemplate.cs
- MessageEncoder.cs
- HelpKeywordAttribute.cs
- SqlClientFactory.cs
- FaultException.cs
- PermissionRequestEvidence.cs
- CodeObject.cs
- PropertySegmentSerializer.cs
- CallbackHandler.cs
- HashAlgorithm.cs
- GenericNameHandler.cs
- CodeGen.cs
- TextBoxBase.cs
- EditorAttribute.cs
- HtmlPhoneCallAdapter.cs
- graph.cs
- VirtualizedItemPattern.cs
- TypeSemantics.cs
- WebBrowsableAttribute.cs
- DataServiceSaveChangesEventArgs.cs
- Popup.cs
- EventLogPermissionEntryCollection.cs
- WindowsAltTab.cs
- WebPartUserCapability.cs
- HtmlWindowCollection.cs
- TokenFactoryCredential.cs
- PkcsUtils.cs
- KeyValuePair.cs
- ManagedIStream.cs
- Triplet.cs
- RawStylusActions.cs
- ProfileEventArgs.cs
- SiteIdentityPermission.cs
- EndOfStreamException.cs
- PersonalizationEntry.cs
- TextServicesCompartmentEventSink.cs
- TargetFrameworkUtil.cs
- CodeAccessSecurityEngine.cs
- RectIndependentAnimationStorage.cs
- CategoryValueConverter.cs
- X509CertificateValidator.cs
- GeometryGroup.cs
- Timeline.cs
- ExtenderControl.cs
- SqlAliasesReferenced.cs
- EditingCoordinator.cs
- ColumnTypeConverter.cs
- ApplicationServicesHostFactory.cs
- ServiceInstallComponent.cs
- Animatable.cs
- PointF.cs
- RightNameExpirationInfoPair.cs
- COM2FontConverter.cs
- WebPartAddingEventArgs.cs
- XmlSchemaNotation.cs
- LoadGrammarCompletedEventArgs.cs
- TrustLevel.cs
- shaper.cs
- PenContext.cs
- CommunicationException.cs
- PersonalizableAttribute.cs
- ZipIORawDataFileBlock.cs
- SupportsEventValidationAttribute.cs
- LocalizabilityAttribute.cs
- CollectionEditor.cs