Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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
- ViewStateModeByIdAttribute.cs
- NullReferenceException.cs
- Authorization.cs
- GlobalProxySelection.cs
- EncodingTable.cs
- BamlReader.cs
- WindowsMenu.cs
- StatusBar.cs
- UIntPtr.cs
- QilIterator.cs
- Int32Rect.cs
- SymbolType.cs
- HtmlForm.cs
- AssociationTypeEmitter.cs
- TextBounds.cs
- GridErrorDlg.cs
- WpfKnownTypeInvoker.cs
- SmiSettersStream.cs
- BitmapEffectDrawing.cs
- IPipelineRuntime.cs
- HttpCookie.cs
- FamilyMap.cs
- webclient.cs
- ThreadSafeList.cs
- ApplyHostConfigurationBehavior.cs
- StartUpEventArgs.cs
- SerialReceived.cs
- NameValueSectionHandler.cs
- LinearGradientBrush.cs
- __Error.cs
- WebPartZoneCollection.cs
- TreeViewAutomationPeer.cs
- XPathExpr.cs
- OdbcRowUpdatingEvent.cs
- StructuralType.cs
- FrameworkContentElement.cs
- SyntaxCheck.cs
- IMembershipProvider.cs
- HostSecurityManager.cs
- TypeSystemProvider.cs
- AdRotator.cs
- ISAPIApplicationHost.cs
- DecoratedNameAttribute.cs
- ThreadStaticAttribute.cs
- KeyedCollection.cs
- SHA512.cs
- HostedElements.cs
- CopyNodeSetAction.cs
- ResourceAssociationType.cs
- CultureTableRecord.cs
- BaseAsyncResult.cs
- DataGridViewSelectedColumnCollection.cs
- CodeLabeledStatement.cs
- ValidationPropertyAttribute.cs
- NativeMethods.cs
- TreeNodeSelectionProcessor.cs
- XmlnsCompatibleWithAttribute.cs
- ThumbAutomationPeer.cs
- AnnotationDocumentPaginator.cs
- IpcClientChannel.cs
- IconConverter.cs
- UriParserTemplates.cs
- SafeThreadHandle.cs
- HashStream.cs
- StateWorkerRequest.cs
- MemberCollection.cs
- NavigationProgressEventArgs.cs
- BamlBinaryReader.cs
- ClientUtils.cs
- DocComment.cs
- ServiceMetadataExtension.cs
- WebBrowserEvent.cs
- MaxMessageSizeStream.cs
- IpcPort.cs
- SmtpDigestAuthenticationModule.cs
- StateRuntime.cs
- WorkerRequest.cs
- ProofTokenCryptoHandle.cs
- EncoderReplacementFallback.cs
- ChangesetResponse.cs
- XmlReader.cs
- Pen.cs
- PassportAuthenticationModule.cs
- ServiceNameElement.cs
- TemplateInstanceAttribute.cs
- TextTrailingCharacterEllipsis.cs
- ScrollableControl.cs
- WindowsToolbarItemAsMenuItem.cs
- XmlBindingWorker.cs
- InkCanvasSelectionAdorner.cs
- Transform3DGroup.cs
- StdRegProviderWrapper.cs
- ProgressiveCrcCalculatingStream.cs
- ExpressionList.cs
- EntityConnectionStringBuilderItem.cs
- AncestorChangedEventArgs.cs
- ConfigurationSection.cs
- PresentationTraceSources.cs
- ComponentManagerBroker.cs
- TemplateField.cs