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
- ActivationServices.cs
- CodeExpressionRuleDeclaration.cs
- SQLGuid.cs
- RTLAwareMessageBox.cs
- FileStream.cs
- ByteStack.cs
- XmlToDatasetMap.cs
- QilName.cs
- FormViewRow.cs
- ExpressionNode.cs
- UiaCoreTypesApi.cs
- EntityDesignerUtils.cs
- DataGridViewRowPostPaintEventArgs.cs
- GeneralTransform3DGroup.cs
- ScrollEventArgs.cs
- GifBitmapDecoder.cs
- SqlProcedureAttribute.cs
- DetailsViewPageEventArgs.cs
- ImageMapEventArgs.cs
- OdbcParameter.cs
- StreamedFramingRequestChannel.cs
- DataGridViewRowCollection.cs
- ResXDataNode.cs
- PKCS1MaskGenerationMethod.cs
- SecurityStandardsManager.cs
- FillErrorEventArgs.cs
- NativeCompoundFileAPIs.cs
- SqlComparer.cs
- CellTreeNode.cs
- Transactions.cs
- SafePointer.cs
- SoapFault.cs
- DesignerForm.cs
- BitmapFrame.cs
- RoutedPropertyChangedEventArgs.cs
- AttachedPropertiesService.cs
- HtmlForm.cs
- manifestimages.cs
- NotImplementedException.cs
- ByteStreamGeometryContext.cs
- ZeroOpNode.cs
- DataGridViewSelectedRowCollection.cs
- ObjectPersistData.cs
- ThumbAutomationPeer.cs
- FragmentQueryKB.cs
- XmlSchemaGroupRef.cs
- SecurityElement.cs
- PageAdapter.cs
- FunctionImportMapping.cs
- Win32.cs
- AbsoluteQuery.cs
- XPathBuilder.cs
- OutputScopeManager.cs
- VisualBasicSettingsHandler.cs
- DesignerHelpers.cs
- SqlGenerator.cs
- DataGridViewCellValueEventArgs.cs
- ExecutedRoutedEventArgs.cs
- ImageCodecInfo.cs
- PersistenceTypeAttribute.cs
- TypedLocationWrapper.cs
- LocalFileSettingsProvider.cs
- ConnectionStringsExpressionBuilder.cs
- FontWeight.cs
- MouseBinding.cs
- ImageFormat.cs
- OdbcFactory.cs
- RuntimeConfigLKG.cs
- WebPartZone.cs
- SimpleMailWebEventProvider.cs
- ToolStripLocationCancelEventArgs.cs
- SerializerWriterEventHandlers.cs
- BuildManagerHost.cs
- FormsAuthenticationModule.cs
- WebPartDescription.cs
- SafeNativeMethods.cs
- InfiniteTimeSpanConverter.cs
- Zone.cs
- AnonymousIdentificationSection.cs
- WorkflowServiceNamespace.cs
- WebPartAuthorizationEventArgs.cs
- InkCanvasAutomationPeer.cs
- ContentPosition.cs
- IUnknownConstantAttribute.cs
- NetTcpBinding.cs
- ItemCheckedEvent.cs
- SubstitutionResponseElement.cs
- WsdlWriter.cs
- SerializableAttribute.cs
- FrameAutomationPeer.cs
- AxImporter.cs
- Operator.cs
- PostBackTrigger.cs
- UnitControl.cs
- RegexInterpreter.cs
- LazyTextWriterCreator.cs
- ZoneButton.cs
- Wizard.cs
- ClientCredentialsElement.cs
- QueueException.cs