Code:
/ Dotnetfx_Win7_3.5.1 / Dotnetfx_Win7_3.5.1 / 3.5.1 / DEVDIV / depot / DevDiv / releases / whidbey / NetFXspW7 / ndp / fx / src / Xml / System / Xml / Core / IncrementalReadDecoders.cs / 1 / IncrementalReadDecoders.cs
//------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Diagnostics; namespace System.Xml { // // IncrementalReadDecoder abstract class // internal abstract class IncrementalReadDecoder { internal abstract int DecodedCount { get; } internal abstract bool IsFull { get; } internal abstract void SetNextOutputBuffer( Array array, int offset, int len ); internal abstract int Decode( char[] chars, int startPos, int len ); internal abstract int Decode( string str, int startPos, int len ); internal abstract void Reset(); } // // Dummy IncrementalReadDecoder // internal class IncrementalReadDummyDecoder : IncrementalReadDecoder { internal override int DecodedCount { get { return -1; } } internal override bool IsFull { get { return false; } } internal override void SetNextOutputBuffer( Array array, int offset, int len ) {} internal override int Decode( char[] chars, int startPos, int len ) { return len; } internal override int Decode( string str, int startPos, int len ) { return len; } internal override void Reset() {} } // // IncrementalReadDecoder for ReadChars // internal class IncrementalReadCharsDecoder : IncrementalReadDecoder { char[] buffer; int startIndex; int curIndex; int endIndex; internal IncrementalReadCharsDecoder() { } internal override int DecodedCount { get { return curIndex - startIndex; } } internal override bool IsFull { get { return curIndex == endIndex; } } internal override int Decode( char[] chars, int startPos, int len ) { Debug.Assert( chars != null ); Debug.Assert( len >= 0 ); Debug.Assert( startPos >= 0 ); Debug.Assert( chars.Length - startPos >= len ); Debug.Assert( len > 0 ); int copyCount = endIndex - curIndex; if ( copyCount > len ) { copyCount = len; } Buffer.BlockCopy( chars, startPos * 2, buffer, curIndex * 2, copyCount * 2 ); curIndex += copyCount; return copyCount; } internal override int Decode( string str, int startPos, int len ) { Debug.Assert( str != null ); Debug.Assert( len >= 0 ); Debug.Assert( startPos >= 0 ); Debug.Assert( str.Length - startPos >= len ); Debug.Assert( len > 0 ); int copyCount = endIndex - curIndex; if ( copyCount > len ) { copyCount = len; } str.CopyTo( startPos, buffer, curIndex, copyCount ); curIndex += copyCount; return copyCount; } internal override void Reset() { } internal override void SetNextOutputBuffer( Array buffer, int index, int count ) { Debug.Assert( buffer != null ); Debug.Assert( count >= 0 ); Debug.Assert( index >= 0 ); Debug.Assert( buffer.Length - index >= count ); Debug.Assert( ( buffer as char[] ) != null ); this.buffer = (char[])buffer; this.startIndex = index; this.curIndex = index; this.endIndex = index + count; } } } // File provided for Reference Use Only by Microsoft Corporation (c) 2007. //------------------------------------------------------------------------------ //// Copyright (c) Microsoft Corporation. All rights reserved. // //[....] //----------------------------------------------------------------------------- using System.Diagnostics; namespace System.Xml { // // IncrementalReadDecoder abstract class // internal abstract class IncrementalReadDecoder { internal abstract int DecodedCount { get; } internal abstract bool IsFull { get; } internal abstract void SetNextOutputBuffer( Array array, int offset, int len ); internal abstract int Decode( char[] chars, int startPos, int len ); internal abstract int Decode( string str, int startPos, int len ); internal abstract void Reset(); } // // Dummy IncrementalReadDecoder // internal class IncrementalReadDummyDecoder : IncrementalReadDecoder { internal override int DecodedCount { get { return -1; } } internal override bool IsFull { get { return false; } } internal override void SetNextOutputBuffer( Array array, int offset, int len ) {} internal override int Decode( char[] chars, int startPos, int len ) { return len; } internal override int Decode( string str, int startPos, int len ) { return len; } internal override void Reset() {} } // // IncrementalReadDecoder for ReadChars // internal class IncrementalReadCharsDecoder : IncrementalReadDecoder { char[] buffer; int startIndex; int curIndex; int endIndex; internal IncrementalReadCharsDecoder() { } internal override int DecodedCount { get { return curIndex - startIndex; } } internal override bool IsFull { get { return curIndex == endIndex; } } internal override int Decode( char[] chars, int startPos, int len ) { Debug.Assert( chars != null ); Debug.Assert( len >= 0 ); Debug.Assert( startPos >= 0 ); Debug.Assert( chars.Length - startPos >= len ); Debug.Assert( len > 0 ); int copyCount = endIndex - curIndex; if ( copyCount > len ) { copyCount = len; } Buffer.BlockCopy( chars, startPos * 2, buffer, curIndex * 2, copyCount * 2 ); curIndex += copyCount; return copyCount; } internal override int Decode( string str, int startPos, int len ) { Debug.Assert( str != null ); Debug.Assert( len >= 0 ); Debug.Assert( startPos >= 0 ); Debug.Assert( str.Length - startPos >= len ); Debug.Assert( len > 0 ); int copyCount = endIndex - curIndex; if ( copyCount > len ) { copyCount = len; } str.CopyTo( startPos, buffer, curIndex, copyCount ); curIndex += copyCount; return copyCount; } internal override void Reset() { } internal override void SetNextOutputBuffer( Array buffer, int index, int count ) { Debug.Assert( buffer != null ); Debug.Assert( count >= 0 ); Debug.Assert( index >= 0 ); Debug.Assert( buffer.Length - index >= count ); Debug.Assert( ( buffer as char[] ) != null ); this.buffer = (char[])buffer; this.startIndex = index; this.curIndex = index; this.endIndex = index + count; } } } // 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
- XmlSerializerAssemblyAttribute.cs
- PassportAuthentication.cs
- ImmutableAssemblyCacheEntry.cs
- RequestResizeEvent.cs
- BitmapEffectDrawingContextState.cs
- ImageDrawing.cs
- DataGridViewButtonColumn.cs
- AutomationPropertyInfo.cs
- PageVisual.cs
- TrackingStringDictionary.cs
- NumericUpDownAcceleration.cs
- DataGridItemAttachedStorage.cs
- PermissionSetEnumerator.cs
- TextDataBindingHandler.cs
- InputLanguageProfileNotifySink.cs
- MemoryMappedFileSecurity.cs
- SchemaName.cs
- XamlPathDataSerializer.cs
- Vector3DAnimation.cs
- StylusButtonCollection.cs
- FastEncoderWindow.cs
- ClientData.cs
- DocumentViewer.cs
- RegexMatchCollection.cs
- LicenseManager.cs
- glyphs.cs
- VisualStates.cs
- WebPartCatalogCloseVerb.cs
- RoleGroupCollection.cs
- Matrix.cs
- TabPanel.cs
- DNS.cs
- FontInfo.cs
- WindowPattern.cs
- SemanticResolver.cs
- securestring.cs
- HwndSource.cs
- ConnectivityStatus.cs
- SymLanguageType.cs
- GeneralTransform2DTo3DTo2D.cs
- controlskin.cs
- SizeValueSerializer.cs
- WebPartHelpVerb.cs
- UriSectionData.cs
- BinHexDecoder.cs
- DrawingBrush.cs
- InstanceData.cs
- MimeObjectFactory.cs
- SQLDateTimeStorage.cs
- RegexParser.cs
- MasterPage.cs
- CodeAttributeArgument.cs
- ColorContextHelper.cs
- HttpHandlerAction.cs
- WaitHandleCannotBeOpenedException.cs
- DataGridViewComboBoxEditingControl.cs
- ObjectTokenCategory.cs
- WindowsListViewScroll.cs
- PatternMatchRules.cs
- OracleDataAdapter.cs
- MouseBinding.cs
- XmlCharCheckingReader.cs
- StreamWithDictionary.cs
- ItemCollectionEditor.cs
- DateTimeOffsetAdapter.cs
- SiteOfOriginPart.cs
- HandlerElementCollection.cs
- SynchronousChannel.cs
- TreeNodeBindingDepthConverter.cs
- DesignerInterfaces.cs
- Compilation.cs
- DescriptionAttribute.cs
- HttpRequestCacheValidator.cs
- MemberMaps.cs
- Matrix3D.cs
- ToolStripMenuItem.cs
- SymbolType.cs
- BamlBinaryReader.cs
- FormsAuthentication.cs
- RawUIStateInputReport.cs
- SizeConverter.cs
- COAUTHIDENTITY.cs
- WebOperationContext.cs
- XmlSerializationGeneratedCode.cs
- InvokeMemberBinder.cs
- ClaimTypes.cs
- SelectionChangedEventArgs.cs
- LocalizableResourceBuilder.cs
- HyperlinkAutomationPeer.cs
- Activation.cs
- TextServicesContext.cs
- HandledMouseEvent.cs
- ValidationRule.cs
- FixedDSBuilder.cs
- CacheVirtualItemsEvent.cs
- ThicknessAnimation.cs
- FormView.cs
- DataGridCommandEventArgs.cs
- MiniConstructorInfo.cs
- ValuePattern.cs