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
- ComplexLine.cs
- WsrmFault.cs
- Font.cs
- MulticastOption.cs
- OleDbPermission.cs
- DataRowComparer.cs
- SerializationTrace.cs
- EventKeyword.cs
- AccessDataSourceView.cs
- SignatureDescription.cs
- XmlDocumentType.cs
- RealProxy.cs
- PeerNearMe.cs
- Win32Native.cs
- BitmapFrameDecode.cs
- ParameterCollectionEditor.cs
- MultiAsyncResult.cs
- DbConnectionPoolIdentity.cs
- SeverityFilter.cs
- BindingMemberInfo.cs
- NativeMethodsCLR.cs
- MimeWriter.cs
- HandleCollector.cs
- DataTableExtensions.cs
- __ComObject.cs
- TrustLevel.cs
- SecurityContext.cs
- ThousandthOfEmRealDoubles.cs
- UIInitializationException.cs
- ChtmlTextBoxAdapter.cs
- SliderAutomationPeer.cs
- PrimitiveType.cs
- AppPool.cs
- XmlValidatingReader.cs
- RegexGroup.cs
- SqlFunctionAttribute.cs
- ThemeableAttribute.cs
- RtfFormatStack.cs
- DiffuseMaterial.cs
- Annotation.cs
- ObjectParameter.cs
- MonthChangedEventArgs.cs
- EntitySetDataBindingList.cs
- AssemblyFilter.cs
- Clock.cs
- DescendantBaseQuery.cs
- HttpModulesSection.cs
- IntersectQueryOperator.cs
- DictionaryChange.cs
- AssemblyAttributesGoHere.cs
- SerializationObjectManager.cs
- UserPreferenceChangedEventArgs.cs
- SqlTrackingService.cs
- MergeFilterQuery.cs
- ArraySubsetEnumerator.cs
- LicenseProviderAttribute.cs
- AccessibleObject.cs
- StickyNoteContentControl.cs
- ObjectSecurity.cs
- SplitContainerDesigner.cs
- CopyNamespacesAction.cs
- BuildResult.cs
- SwitchAttribute.cs
- LocationSectionRecord.cs
- messageonlyhwndwrapper.cs
- MetadataArtifactLoader.cs
- HitTestResult.cs
- DoubleLinkList.cs
- SoapTypeAttribute.cs
- MissingFieldException.cs
- ToolbarAUtomationPeer.cs
- Psha1DerivedKeyGenerator.cs
- ItemDragEvent.cs
- ValidatingPropertiesEventArgs.cs
- PersonalizationProviderHelper.cs
- XamlStackWriter.cs
- TransformBlockRequest.cs
- Parallel.cs
- WindowsImpersonationContext.cs
- ProtocolViolationException.cs
- OpacityConverter.cs
- DefaultTypeArgumentAttribute.cs
- WinInet.cs
- AddInActivator.cs
- ButtonPopupAdapter.cs
- XmlFormatExtensionPrefixAttribute.cs
- MetabaseServerConfig.cs
- SmtpException.cs
- TranslateTransform.cs
- BindingSource.cs
- dataobject.cs
- MemberListBinding.cs
- NullableConverter.cs
- CustomAttribute.cs
- UnsafeNativeMethods.cs
- InfiniteIntConverter.cs
- NullableLongSumAggregationOperator.cs
- HatchBrush.cs
- FactoryGenerator.cs
- DispatcherFrame.cs