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
- EntityTypeEmitter.cs
- ReadOnlyDictionary.cs
- DocumentAutomationPeer.cs
- SqlClientFactory.cs
- ImageMapEventArgs.cs
- FontDriver.cs
- LocalizableAttribute.cs
- XmlCodeExporter.cs
- BaseCollection.cs
- RegistryPermission.cs
- SQLBinaryStorage.cs
- CanonicalFontFamilyReference.cs
- DelegateTypeInfo.cs
- AnonymousIdentificationSection.cs
- Resources.Designer.cs
- Binding.cs
- CompilationUtil.cs
- CacheSection.cs
- MetadataFile.cs
- HttpCapabilitiesBase.cs
- OrderedEnumerableRowCollection.cs
- WindowsFormsEditorServiceHelper.cs
- ExtensionSimplifierMarkupObject.cs
- ZipIOExtraFieldPaddingElement.cs
- MultiView.cs
- BamlTreeUpdater.cs
- TableItemPatternIdentifiers.cs
- SiteMapNodeItemEventArgs.cs
- NameValueCollection.cs
- EdmMember.cs
- ConfigurationValidatorAttribute.cs
- ExpandableObjectConverter.cs
- CodeLinePragma.cs
- XPathNodeIterator.cs
- connectionpool.cs
- TemplateBamlTreeBuilder.cs
- CachedPathData.cs
- InputBuffer.cs
- LingerOption.cs
- DataList.cs
- TextBox.cs
- MappingItemCollection.cs
- EnumConverter.cs
- MobileControlPersister.cs
- FileDataSourceCache.cs
- SerializationSectionGroup.cs
- FormatException.cs
- BooleanAnimationUsingKeyFrames.cs
- ProcessInfo.cs
- Span.cs
- PriorityBinding.cs
- KnownTypesHelper.cs
- XamlGridLengthSerializer.cs
- XPathNodeList.cs
- GridViewUpdatedEventArgs.cs
- PageBorderless.cs
- ContainerControl.cs
- _SSPISessionCache.cs
- BitmapSource.cs
- EntityCommandCompilationException.cs
- XmlWhitespace.cs
- LongAverageAggregationOperator.cs
- SendKeys.cs
- TabControlAutomationPeer.cs
- ResXBuildProvider.cs
- ObjectMemberMapping.cs
- FacetEnabledSchemaElement.cs
- UserPreferenceChangingEventArgs.cs
- XPathMessageFilterElementCollection.cs
- JournalNavigationScope.cs
- TimeStampChecker.cs
- SerializationInfo.cs
- IncrementalCompileAnalyzer.cs
- AnnotationHighlightLayer.cs
- HttpDigestClientElement.cs
- CollectionsUtil.cs
- DataGrid.cs
- Exceptions.cs
- StylusPointDescription.cs
- HttpCookie.cs
- WhitespaceRuleLookup.cs
- DefaultHttpHandler.cs
- PointAnimationUsingPath.cs
- ToolStripRenderEventArgs.cs
- ListViewDesigner.cs
- TempFiles.cs
- If.cs
- BasicCellRelation.cs
- SingleObjectCollection.cs
- SocketInformation.cs
- NativeRecognizer.cs
- PropertyChangedEventArgs.cs
- SafeWaitHandle.cs
- AutomationIdentifierGuids.cs
- _HelperAsyncResults.cs
- DirectoryLocalQuery.cs
- TagNameToTypeMapper.cs
- Int32RectConverter.cs
- TypeBuilderInstantiation.cs
- HandlerWithFactory.cs