Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- XslTransform.cs
- HostingEnvironmentSection.cs
- InstalledFontCollection.cs
- Win32Interop.cs
- VoiceInfo.cs
- EndOfStreamException.cs
- SmtpFailedRecipientException.cs
- LiteralControl.cs
- SpStreamWrapper.cs
- PageParser.cs
- SerializeAbsoluteContext.cs
- ModelItemExtensions.cs
- HandlerWithFactory.cs
- TransformationRules.cs
- SymLanguageVendor.cs
- CollectionChangedEventManager.cs
- ApplicationActivator.cs
- ObjectDataSource.cs
- SoapIncludeAttribute.cs
- ObjectDataSourceFilteringEventArgs.cs
- NativeRecognizer.cs
- SqlInternalConnection.cs
- WebPartUtil.cs
- ResponseBodyWriter.cs
- ExternalException.cs
- StretchValidation.cs
- ExpandSegment.cs
- FacetEnabledSchemaElement.cs
- Span.cs
- RegionIterator.cs
- EndOfStreamException.cs
- AsyncContentLoadedEventArgs.cs
- brushes.cs
- StringComparer.cs
- webproxy.cs
- WindowHelperService.cs
- Int64Animation.cs
- StringCollectionEditor.cs
- DoubleLink.cs
- SQLByteStorage.cs
- RecommendedAsConfigurableAttribute.cs
- ServerValidateEventArgs.cs
- Base64Stream.cs
- WindowsRichEditRange.cs
- QuaternionRotation3D.cs
- TraceHandler.cs
- CharAnimationBase.cs
- VScrollProperties.cs
- DbConnectionPoolGroup.cs
- ResetableIterator.cs
- OleDbCommand.cs
- SQLSingleStorage.cs
- ManipulationInertiaStartingEventArgs.cs
- CookieParameter.cs
- LinkConverter.cs
- UnknownBitmapEncoder.cs
- ButtonField.cs
- ByteStream.cs
- MetadataItemEmitter.cs
- COM2PictureConverter.cs
- ListViewItemMouseHoverEvent.cs
- NonBatchDirectoryCompiler.cs
- WebBrowserBase.cs
- Point3DValueSerializer.cs
- SqlBinder.cs
- CryptoStream.cs
- Stream.cs
- FileDialogCustomPlace.cs
- MediaScriptCommandRoutedEventArgs.cs
- ServerValidateEventArgs.cs
- returneventsaver.cs
- DynamicFilterExpression.cs
- Pen.cs
- PropertyEntry.cs
- WebControlsSection.cs
- ColorAnimationUsingKeyFrames.cs
- TextAnchor.cs
- __TransparentProxy.cs
- TemplateBuilder.cs
- ListComponentEditor.cs
- RegexGroup.cs
- RemoteWebConfigurationHostServer.cs
- ProfileManager.cs
- ValueType.cs
- StyleTypedPropertyAttribute.cs
- DataSourceListEditor.cs
- NameValueConfigurationElement.cs
- SoapCodeExporter.cs
- OperatorExpressions.cs
- OleServicesContext.cs
- Timer.cs
- InputProviderSite.cs
- ClientOptions.cs
- SchemaEntity.cs
- XsdBuilder.cs
- HandlerFactoryCache.cs
- X509RecipientCertificateServiceElement.cs
- SynthesizerStateChangedEventArgs.cs
- Shape.cs
- MailWebEventProvider.cs