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
- InkPresenterAutomationPeer.cs
- ApplicationServicesHostFactory.cs
- FileAuthorizationModule.cs
- DataGridViewDataConnection.cs
- GregorianCalendar.cs
- ListViewDeleteEventArgs.cs
- DeflateEmulationStream.cs
- Stackframe.cs
- JsonFormatReaderGenerator.cs
- sitestring.cs
- DesignerDataTable.cs
- externdll.cs
- XmlWrappingWriter.cs
- ELinqQueryState.cs
- TypeBrowser.xaml.cs
- CancelEventArgs.cs
- TextEditorThreadLocalStore.cs
- CertificateManager.cs
- WinFormsComponentEditor.cs
- EdmToObjectNamespaceMap.cs
- Errors.cs
- AssemblyNameProxy.cs
- Latin1Encoding.cs
- IList.cs
- Canvas.cs
- ServiceDiscoveryElement.cs
- HttpRuntime.cs
- DbConnectionPoolGroupProviderInfo.cs
- TraceEventCache.cs
- DiagnosticTraceSource.cs
- TransformValueSerializer.cs
- UdpMessageProperty.cs
- SoapHttpTransportImporter.cs
- SmiEventSink.cs
- DataGridColumnHeaderCollection.cs
- FormatConvertedBitmap.cs
- ACL.cs
- PathGeometry.cs
- DbParameterHelper.cs
- StaticFileHandler.cs
- XmlNodeList.cs
- ReachBasicContext.cs
- DataObjectEventArgs.cs
- NumericUpDownAccelerationCollection.cs
- TextEditorCopyPaste.cs
- TaskExceptionHolder.cs
- Journaling.cs
- CopyCodeAction.cs
- VisualStyleInformation.cs
- XmlUtilWriter.cs
- DynamicMetaObject.cs
- SelectionEditingBehavior.cs
- OrderPreservingSpoolingTask.cs
- MergeLocalizationDirectives.cs
- Stack.cs
- WebPartZoneCollection.cs
- ConfigurationElement.cs
- Update.cs
- BitmapDownload.cs
- SolidColorBrush.cs
- Menu.cs
- BreakRecordTable.cs
- XmlCustomFormatter.cs
- SQLBinaryStorage.cs
- MultiDataTrigger.cs
- EdgeProfileValidation.cs
- AssociationSetEnd.cs
- NativeMethods.cs
- SQLDoubleStorage.cs
- PolicyValidationException.cs
- EntityDataSourceViewSchema.cs
- DataFormat.cs
- AnimationStorage.cs
- MethodBuilderInstantiation.cs
- ImmutableObjectAttribute.cs
- MethodBuilder.cs
- MobileUserControl.cs
- StorageBasedPackageProperties.cs
- LogFlushAsyncResult.cs
- RemoteDebugger.cs
- GridSplitter.cs
- ButtonBaseAdapter.cs
- XmlSchemaAppInfo.cs
- DataGridViewColumnConverter.cs
- ApplicationManager.cs
- BitStack.cs
- NotifyParentPropertyAttribute.cs
- PageThemeParser.cs
- HtmlInputText.cs
- ArgumentValueSerializer.cs
- DataServiceConfiguration.cs
- SelectionProcessor.cs
- XmlSchemaComplexContent.cs
- ImageInfo.cs
- InstanceDataCollection.cs
- SmiEventStream.cs
- DataQuery.cs
- RSAPKCS1KeyExchangeFormatter.cs
- CustomAttributeSerializer.cs
- GridViewSortEventArgs.cs