Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / whidbey / NetFxQFE / 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
- ByteKeyFrameCollection.cs
- PathStreamGeometryContext.cs
- HtmlForm.cs
- StaticDataManager.cs
- configsystem.cs
- Padding.cs
- Rotation3DAnimationUsingKeyFrames.cs
- SystemMulticastIPAddressInformation.cs
- ToolTip.cs
- PriorityRange.cs
- AnnotationAuthorChangedEventArgs.cs
- HandleCollector.cs
- DynamicResourceExtension.cs
- Ipv6Element.cs
- MemoryRecordBuffer.cs
- KeyboardEventArgs.cs
- ProgressChangedEventArgs.cs
- PropertyOverridesDialog.cs
- Rotation3DAnimationUsingKeyFrames.cs
- InkCanvasInnerCanvas.cs
- XmlSerializationWriter.cs
- ValidatorCompatibilityHelper.cs
- ThreadExceptionDialog.cs
- GraphicsPathIterator.cs
- AttributeCollection.cs
- UrlAuthFailureHandler.cs
- CompressEmulationStream.cs
- ObjectDataSourceEventArgs.cs
- InsufficientMemoryException.cs
- HtmlEmptyTagControlBuilder.cs
- SQLGuid.cs
- QueueProcessor.cs
- TableCellCollection.cs
- SmtpSection.cs
- SecurityUniqueId.cs
- IntSecurity.cs
- ObjectStateEntryDbDataRecord.cs
- FunctionDetailsReader.cs
- ViewEventArgs.cs
- CompilationLock.cs
- Literal.cs
- DataListItem.cs
- DBConcurrencyException.cs
- QuotedStringWriteStateInfo.cs
- SafeThreadHandle.cs
- GuidelineCollection.cs
- PeerApplication.cs
- CollectionView.cs
- CustomAttributeFormatException.cs
- _DigestClient.cs
- AnnotationResource.cs
- errorpatternmatcher.cs
- AuthenticationService.cs
- JoinCqlBlock.cs
- EntityTemplateUserControl.cs
- StoryFragments.cs
- WebPart.cs
- PolicyManager.cs
- IisTraceWebEventProvider.cs
- DiscreteKeyFrames.cs
- TypeDelegator.cs
- ItemChangedEventArgs.cs
- GeneratedCodeAttribute.cs
- Scripts.cs
- SpeechUI.cs
- Walker.cs
- recordstate.cs
- LicenseException.cs
- CompositionAdorner.cs
- ClusterRegistryConfigurationProvider.cs
- BaseComponentEditor.cs
- DataBoundControlHelper.cs
- HMACSHA256.cs
- Update.cs
- QilTernary.cs
- GetWinFXPath.cs
- CustomAttributeFormatException.cs
- PrintPreviewControl.cs
- WebPartConnectionCollection.cs
- DecimalAnimationUsingKeyFrames.cs
- ServiceHostingEnvironment.cs
- ConditionalWeakTable.cs
- DataRecordObjectView.cs
- AmbientValueAttribute.cs
- ValidatingPropertiesEventArgs.cs
- SqlClientPermission.cs
- PointLightBase.cs
- SessionState.cs
- ExpressionLexer.cs
- CriticalFinalizerObject.cs
- DataBinder.cs
- InstanceData.cs
- QilReplaceVisitor.cs
- TabControl.cs
- QueryExecutionOption.cs
- ColorConverter.cs
- SqlDuplicator.cs
- SignatureResourcePool.cs
- Geometry3D.cs
- ImageMetadata.cs