Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ReachPageContentSerializerAsync.cs
- ImageButton.cs
- ClientScriptManager.cs
- TiffBitmapDecoder.cs
- CaseInsensitiveHashCodeProvider.cs
- JpegBitmapEncoder.cs
- WebHttpSecurityModeHelper.cs
- CleanUpVirtualizedItemEventArgs.cs
- WmlTextViewAdapter.cs
- DisableDpiAwarenessAttribute.cs
- CfgParser.cs
- HttpProcessUtility.cs
- ManifestBasedResourceGroveler.cs
- CacheVirtualItemsEvent.cs
- CodeTypeParameterCollection.cs
- RSAOAEPKeyExchangeFormatter.cs
- PageParser.cs
- TemplateControlParser.cs
- LayoutEditorPart.cs
- COM2PropertyPageUITypeConverter.cs
- PermissionToken.cs
- Highlights.cs
- InstancePersistenceEvent.cs
- Range.cs
- UnsafeNativeMethodsTablet.cs
- CodeCompileUnit.cs
- RankException.cs
- UnsafeNativeMethods.cs
- Single.cs
- SmtpFailedRecipientsException.cs
- DocumentViewerAutomationPeer.cs
- TableCellCollection.cs
- ClientBuildManager.cs
- PictureBoxDesigner.cs
- SrgsRuleRef.cs
- PeerContact.cs
- ToolboxComponentsCreatingEventArgs.cs
- EventLogPermissionEntryCollection.cs
- EffectiveValueEntry.cs
- ArraySet.cs
- EdmRelationshipNavigationPropertyAttribute.cs
- DataBinder.cs
- InstanceOwner.cs
- UrlMapping.cs
- SimpleHandlerBuildProvider.cs
- ScrollProperties.cs
- ModulesEntry.cs
- Assert.cs
- TagMapCollection.cs
- ConfigXmlComment.cs
- securitymgrsite.cs
- ResourcePool.cs
- ExcCanonicalXml.cs
- WebServiceHostFactory.cs
- GroupBoxDesigner.cs
- CodeTypeReferenceCollection.cs
- ContentElement.cs
- RowToFieldTransformer.cs
- DataChangedEventManager.cs
- LowerCaseStringConverter.cs
- MonthCalendar.cs
- TemplatedEditableDesignerRegion.cs
- DrawingAttributes.cs
- NativeMethods.cs
- DictionarySectionHandler.cs
- Random.cs
- DynamicDataExtensions.cs
- SQLString.cs
- InstanceNotReadyException.cs
- PathParser.cs
- WebPartDisplayModeEventArgs.cs
- FrameworkContentElementAutomationPeer.cs
- SqlDataSourceView.cs
- TableChangeProcessor.cs
- WebPartAddingEventArgs.cs
- Cell.cs
- HttpServerVarsCollection.cs
- BindableAttribute.cs
- PropertyGridCommands.cs
- Rfc2898DeriveBytes.cs
- SiteMapProvider.cs
- ClaimComparer.cs
- UnmanagedMemoryStream.cs
- ProvideValueServiceProvider.cs
- HtmlShim.cs
- SchemaComplexType.cs
- DrawingContextWalker.cs
- securestring.cs
- BorderGapMaskConverter.cs
- XamlTemplateSerializer.cs
- PerspectiveCamera.cs
- DirectionalLight.cs
- ConstraintConverter.cs
- ItemCheckEvent.cs
- Matrix3D.cs
- Native.cs
- NativeMethods.cs
- Help.cs
- SettingsPropertyWrongTypeException.cs
- X509Certificate2Collection.cs