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
- OracleConnectionStringBuilder.cs
- GregorianCalendar.cs
- ChangeTracker.cs
- Model3D.cs
- FlowSwitch.cs
- Vector.cs
- GenericNameHandler.cs
- SystemParameters.cs
- WindowsListViewGroup.cs
- FixedSOMFixedBlock.cs
- LinqDataSourceContextEventArgs.cs
- MultipleViewProviderWrapper.cs
- CodeExporter.cs
- WebBrowser.cs
- TextContainerChangeEventArgs.cs
- StorageEntitySetMapping.cs
- CroppedBitmap.cs
- CodeLinePragma.cs
- WorkerRequest.cs
- AttachedAnnotation.cs
- FileDialog.cs
- PublisherIdentityPermission.cs
- WindowsFont.cs
- HijriCalendar.cs
- _NegoState.cs
- X509Certificate2.cs
- XmlSchemaException.cs
- HybridObjectCache.cs
- ScriptResourceHandler.cs
- DataGridViewCellParsingEventArgs.cs
- DataGridViewCell.cs
- VisualBasicHelper.cs
- Rijndael.cs
- EntityDataSourceWrapper.cs
- SystemInfo.cs
- XmlSerializerOperationFormatter.cs
- SQLMembershipProvider.cs
- UIHelper.cs
- WeakEventManager.cs
- DataAdapter.cs
- FunctionUpdateCommand.cs
- EncryptedPackage.cs
- EventSetter.cs
- WindowsAuthenticationEventArgs.cs
- CriticalFinalizerObject.cs
- SimpleWorkerRequest.cs
- SecurityTokenParameters.cs
- WeakReference.cs
- GridViewDeletedEventArgs.cs
- ExpressionNormalizer.cs
- DecoderFallback.cs
- DataObjectCopyingEventArgs.cs
- BindingContext.cs
- CodeAttributeDeclaration.cs
- IdentitySection.cs
- Stylesheet.cs
- RuleSettingsCollection.cs
- PenLineJoinValidation.cs
- ThrowHelper.cs
- PKCS1MaskGenerationMethod.cs
- ListBox.cs
- ProvidePropertyAttribute.cs
- ScaleTransform3D.cs
- XmlToDatasetMap.cs
- EventLogQuery.cs
- XmlSchemaType.cs
- SerializationFieldInfo.cs
- PinnedBufferMemoryStream.cs
- DateTimeSerializationSection.cs
- FullTextState.cs
- TCEAdapterGenerator.cs
- ConsumerConnectionPointCollection.cs
- templategroup.cs
- MatrixConverter.cs
- Floater.cs
- CallSite.cs
- DrawingGroup.cs
- TextAnchor.cs
- WebConfigurationHost.cs
- ToolStripRenderer.cs
- UnmanagedMarshal.cs
- SupportingTokenBindingElement.cs
- PasswordTextNavigator.cs
- XmlWrappingWriter.cs
- HtmlInputText.cs
- MLangCodePageEncoding.cs
- SubpageParaClient.cs
- SqlSelectStatement.cs
- MimeBasePart.cs
- BuiltInExpr.cs
- WindowInteropHelper.cs
- DesignerLoader.cs
- ImageField.cs
- CollectionView.cs
- InternalTypeHelper.cs
- ETagAttribute.cs
- TextSelection.cs
- HtmlCalendarAdapter.cs
- TextEmbeddedObject.cs
- DetailsViewRowCollection.cs