Code:
/ DotNET / DotNET / 8.0 / untmp / whidbey / REDBITS / 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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- XPathPatternParser.cs
- NamedPipeTransportSecurityElement.cs
- TextDecoration.cs
- SystemIPInterfaceProperties.cs
- Debug.cs
- SqlGatherProducedAliases.cs
- SecurityRuntime.cs
- ForeignKeyConstraint.cs
- LocationChangedEventArgs.cs
- StorageRoot.cs
- XLinq.cs
- TextParagraphProperties.cs
- Rule.cs
- Profiler.cs
- ResourceDescriptionAttribute.cs
- processwaithandle.cs
- ExpandCollapsePattern.cs
- MessageDispatch.cs
- Window.cs
- MenuTracker.cs
- NamedObject.cs
- Logging.cs
- PartitionedStream.cs
- MILUtilities.cs
- ValueOfAction.cs
- PerformanceCounterCategory.cs
- DetailsViewUpdateEventArgs.cs
- CodeTryCatchFinallyStatement.cs
- PKCS1MaskGenerationMethod.cs
- DataBindingValueUIHandler.cs
- ListenerAdaptersInstallComponent.cs
- ResourceReader.cs
- RequestCachingSection.cs
- ISO2022Encoding.cs
- ReadOnlyCollection.cs
- _NtlmClient.cs
- SettingsPropertyCollection.cs
- SegmentInfo.cs
- _SafeNetHandles.cs
- LineServices.cs
- initElementDictionary.cs
- ServicesUtilities.cs
- CharacterMetricsDictionary.cs
- ExpressionBindingCollection.cs
- SystemNetworkInterface.cs
- DrawingContextWalker.cs
- DataGridPageChangedEventArgs.cs
- OverflowException.cs
- OdbcEnvironment.cs
- Point3DAnimation.cs
- ObjectDataSourceStatusEventArgs.cs
- MenuBase.cs
- DecimalAnimationBase.cs
- SqlClientFactory.cs
- DataGridColumnDropSeparator.cs
- Facet.cs
- MemoryFailPoint.cs
- GCHandleCookieTable.cs
- XmlSerializerVersionAttribute.cs
- NativeRecognizer.cs
- RectValueSerializer.cs
- StreamAsIStream.cs
- AuthenticationManager.cs
- MainMenu.cs
- XmlNamespaceMappingCollection.cs
- LockedAssemblyCache.cs
- MLangCodePageEncoding.cs
- DataBoundLiteralControl.cs
- IBuiltInEvidence.cs
- ClockController.cs
- StylusPointDescription.cs
- Blend.cs
- XmlResolver.cs
- ToolStripItemCollection.cs
- AssemblyAttributesGoHere.cs
- ControlUtil.cs
- DependencyObjectValidator.cs
- listitem.cs
- UIElementIsland.cs
- ClientConfigurationSystem.cs
- Relationship.cs
- LineSegment.cs
- HtmlImage.cs
- SystemWebExtensionsSectionGroup.cs
- KeyValueInternalCollection.cs
- BitmapMetadata.cs
- DesignerForm.cs
- TimeSpanValidatorAttribute.cs
- PolicyLevel.cs
- JavaScriptObjectDeserializer.cs
- PointCollection.cs
- NativeMethods.cs
- GradientBrush.cs
- FixedSOMSemanticBox.cs
- IsolatedStorageException.cs
- DesignerCategoryAttribute.cs
- SafeProcessHandle.cs
- SoapReflectionImporter.cs
- DefaultBinder.cs
- PersistStreamTypeWrapper.cs