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
- DrawingVisual.cs
- DesignerActionHeaderItem.cs
- ThicknessConverter.cs
- DataGridViewComboBoxEditingControl.cs
- ExternalCalls.cs
- KeyValueConfigurationElement.cs
- CommonDialog.cs
- SvcFileManager.cs
- TextSelectionHighlightLayer.cs
- XslTransform.cs
- XmlArrayAttribute.cs
- Application.cs
- ProofTokenCryptoHandle.cs
- DescriptionAttribute.cs
- PictureBox.cs
- BindToObject.cs
- SqlRowUpdatingEvent.cs
- IssuedTokenParametersElement.cs
- ClockController.cs
- MouseEventArgs.cs
- WebPartZoneBase.cs
- ContainerCodeDomSerializer.cs
- ConfigurationSectionCollection.cs
- Point.cs
- ToolstripProfessionalRenderer.cs
- HelpKeywordAttribute.cs
- XPathEmptyIterator.cs
- XmlIncludeAttribute.cs
- FileNotFoundException.cs
- Command.cs
- TemplateNameScope.cs
- SafePipeHandle.cs
- LinkedResourceCollection.cs
- Tool.cs
- ClientOptions.cs
- SafeFileHandle.cs
- MetroSerializationManager.cs
- DataGridViewCellFormattingEventArgs.cs
- SafeCertificateStore.cs
- QilName.cs
- ObjectDataSourceDesigner.cs
- ThousandthOfEmRealPoints.cs
- HtmlUtf8RawTextWriter.cs
- Application.cs
- SuppressMergeCheckAttribute.cs
- PersistencePipeline.cs
- DateTimeStorage.cs
- MemoryFailPoint.cs
- SqlNodeAnnotation.cs
- MessageBodyDescription.cs
- ResXDataNode.cs
- StaticExtension.cs
- XmlAnyElementAttributes.cs
- PartialTrustVisibleAssembly.cs
- PlaceHolder.cs
- ItemDragEvent.cs
- SafeBitVector32.cs
- GradientStop.cs
- GrammarBuilder.cs
- VisualStyleTypesAndProperties.cs
- COM2Properties.cs
- WindowsHyperlink.cs
- CqlWriter.cs
- TemplateControl.cs
- SafeLibraryHandle.cs
- GlyphInfoList.cs
- DeleteStoreRequest.cs
- ReadOnlyHierarchicalDataSourceView.cs
- SpeechRecognitionEngine.cs
- InheritanceContextChangedEventManager.cs
- ObjectViewQueryResultData.cs
- DeviceContexts.cs
- MonthCalendar.cs
- GPStream.cs
- MethodAccessException.cs
- HotCommands.cs
- PathStreamGeometryContext.cs
- DataGridViewDesigner.cs
- OleDbPropertySetGuid.cs
- oledbmetadatacolumnnames.cs
- ViewStateModeByIdAttribute.cs
- ISFTagAndGuidCache.cs
- CompositeKey.cs
- VariableAction.cs
- MailMessage.cs
- UriTemplate.cs
- BufferedGraphics.cs
- FileCodeGroup.cs
- PersianCalendar.cs
- RoutedEventConverter.cs
- InputBindingCollection.cs
- MenuEventArgs.cs
- SqlDataSourceView.cs
- TypeLibConverter.cs
- TaskFormBase.cs
- DiagnosticTraceSchemas.cs
- FileEnumerator.cs
- QueryPageSettingsEventArgs.cs
- DropSource.cs
- SerializeAbsoluteContext.cs