Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / 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
- ActivityCodeDomReferenceService.cs
- TabControlEvent.cs
- OneWayChannelListener.cs
- Polyline.cs
- ConnectorMovedEventArgs.cs
- AdCreatedEventArgs.cs
- CanExpandCollapseAllConverter.cs
- BlockUIContainer.cs
- WebPartUtil.cs
- RijndaelManagedTransform.cs
- TransformerInfoCollection.cs
- WebConfigurationFileMap.cs
- TripleDESCryptoServiceProvider.cs
- ConsoleKeyInfo.cs
- DragStartedEventArgs.cs
- KnownTypeAttribute.cs
- RuntimeEnvironment.cs
- InvocationExpression.cs
- DesignSurfaceCollection.cs
- XmlNotation.cs
- CodeDelegateCreateExpression.cs
- ProcessHostMapPath.cs
- ComponentChangedEvent.cs
- DataServiceRequestException.cs
- ChangePassword.cs
- MobileCategoryAttribute.cs
- DeflateEmulationStream.cs
- CompositeKey.cs
- CompiledQuery.cs
- ComplexBindingPropertiesAttribute.cs
- StructuralCache.cs
- CategoryGridEntry.cs
- Control.cs
- DocumentOrderQuery.cs
- ClientSideQueueItem.cs
- StylusLogic.cs
- ResolveResponseInfo.cs
- InputLanguageCollection.cs
- DragDrop.cs
- DeadCharTextComposition.cs
- ExpressionBuilderContext.cs
- TagPrefixAttribute.cs
- FramingEncoders.cs
- MetaType.cs
- RoleProviderPrincipal.cs
- LocatorPart.cs
- Vector3DAnimation.cs
- ItemContainerGenerator.cs
- ZeroOpNode.cs
- OleDbDataAdapter.cs
- TemplateBaseAction.cs
- OperationAbortedException.cs
- MessageQueueInstaller.cs
- TableCellCollection.cs
- InputScopeAttribute.cs
- XmlSerializerNamespaces.cs
- WebAdminConfigurationHelper.cs
- DynamicResourceExtensionConverter.cs
- XmlBinaryWriter.cs
- FrameworkPropertyMetadata.cs
- ByteStreamGeometryContext.cs
- Int16AnimationUsingKeyFrames.cs
- FlowDocumentPageViewerAutomationPeer.cs
- SelectiveScrollingGrid.cs
- QueryPrefixOp.cs
- Brush.cs
- EmptyElement.cs
- SqlCommandSet.cs
- ConfigXmlAttribute.cs
- ProviderUtil.cs
- BindingCollectionElement.cs
- SectionRecord.cs
- VisualBrush.cs
- CodeCatchClauseCollection.cs
- PersistChildrenAttribute.cs
- DataListItemCollection.cs
- HtmlElementErrorEventArgs.cs
- BufferedWebEventProvider.cs
- NonBatchDirectoryCompiler.cs
- GeometryConverter.cs
- HtmlInputText.cs
- StickyNote.cs
- EditingCommands.cs
- LineSegment.cs
- CmsInterop.cs
- BackgroundWorker.cs
- XmlSecureResolver.cs
- WindowsHyperlink.cs
- ColorBuilder.cs
- ProviderSettingsCollection.cs
- GridViewItemAutomationPeer.cs
- TextProviderWrapper.cs
- IndexedWhereQueryOperator.cs
- HMACRIPEMD160.cs
- DashStyle.cs
- RepeaterItemCollection.cs
- _ShellExpression.cs
- SqlLiftIndependentRowExpressions.cs
- OutOfMemoryException.cs
- StrongBox.cs