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
- InstanceCreationEditor.cs
- ExeContext.cs
- DocumentPageTextView.cs
- ISAPIApplicationHost.cs
- FactoryRecord.cs
- FieldDescriptor.cs
- _ListenerAsyncResult.cs
- CheckBoxFlatAdapter.cs
- SchemaNamespaceManager.cs
- ClientScriptManager.cs
- DataGridViewSelectedColumnCollection.cs
- IConvertible.cs
- WebErrorHandler.cs
- Query.cs
- ParagraphResult.cs
- FileVersionInfo.cs
- ResourceExpressionBuilder.cs
- Stroke.cs
- LookupBindingPropertiesAttribute.cs
- SQLSingleStorage.cs
- StylusCollection.cs
- ProvideValueServiceProvider.cs
- InputProcessorProfilesLoader.cs
- DynamicValueConverter.cs
- AmbiguousMatchException.cs
- XamlSerializationHelper.cs
- WMICapabilities.cs
- MdbDataFileEditor.cs
- UserControlAutomationPeer.cs
- DownloadProgressEventArgs.cs
- XhtmlBasicPageAdapter.cs
- SignedXml.cs
- HttpModuleAction.cs
- ThumbAutomationPeer.cs
- UnsupportedPolicyOptionsException.cs
- ListBoxItem.cs
- Timeline.cs
- CompoundFileDeflateTransform.cs
- NativeRightsManagementAPIsStructures.cs
- OletxEnlistment.cs
- ItemCheckEvent.cs
- TouchPoint.cs
- Propagator.JoinPropagator.SubstitutingCloneVisitor.cs
- XpsFilter.cs
- ObjectTag.cs
- ILGen.cs
- QueryOperationResponseOfT.cs
- XmlAnyAttributeAttribute.cs
- WindowsIPAddress.cs
- VisemeEventArgs.cs
- UrlPropertyAttribute.cs
- MDIControlStrip.cs
- AbstractDataSvcMapFileLoader.cs
- UrlMappingsSection.cs
- WebControlAdapter.cs
- QueuedDeliveryRequirementsMode.cs
- PropertyGridCommands.cs
- ApplicationProxyInternal.cs
- XamlRtfConverter.cs
- SkewTransform.cs
- ClearTypeHintValidation.cs
- TemplateContent.cs
- HttpDateParse.cs
- SemanticResolver.cs
- XmlC14NWriter.cs
- QilExpression.cs
- _SslStream.cs
- PreloadHost.cs
- HtmlEncodedRawTextWriter.cs
- DropDownButton.cs
- DataGridViewSelectedColumnCollection.cs
- DomNameTable.cs
- HtmlElementEventArgs.cs
- TagPrefixInfo.cs
- SqlUserDefinedTypeAttribute.cs
- Misc.cs
- EntityDataSourceWizardForm.cs
- SplitterEvent.cs
- RuntimeWrappedException.cs
- XmlSchemaType.cs
- Clipboard.cs
- DbParameterHelper.cs
- dtdvalidator.cs
- ServiceProviders.cs
- DataTableTypeConverter.cs
- DataGridViewRow.cs
- Matrix3D.cs
- UInt16Storage.cs
- AsyncPostBackErrorEventArgs.cs
- XmlSchemaSequence.cs
- Point.cs
- HtmlInputReset.cs
- ExpressionBuilder.cs
- ScrollableControl.cs
- FixedSOMImage.cs
- Trigger.cs
- HandleCollector.cs
- GridViewDeleteEventArgs.cs
- XmlHierarchicalDataSourceView.cs
- OrderedEnumerableRowCollection.cs