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
- InputEventArgs.cs
- XmlSubtreeReader.cs
- ContentPresenter.cs
- DefaultTraceListener.cs
- AssemblyAttributesGoHere.cs
- ResizeGrip.cs
- SqlRemoveConstantOrderBy.cs
- TraceContextRecord.cs
- WebBrowser.cs
- SqlMetaData.cs
- PlatformNotSupportedException.cs
- Soap.cs
- DocumentSchemaValidator.cs
- HMAC.cs
- ExpressionList.cs
- ObjectDataSourceStatusEventArgs.cs
- StylusCaptureWithinProperty.cs
- CodeParameterDeclarationExpression.cs
- UserUseLicenseDictionaryLoader.cs
- DataSourceSelectArguments.cs
- EpmHelper.cs
- keycontainerpermission.cs
- WebRequest.cs
- AdCreatedEventArgs.cs
- XmlILTrace.cs
- SiteMapProvider.cs
- RegexCode.cs
- RequestTimeoutManager.cs
- UIElementPropertyUndoUnit.cs
- KeyFrames.cs
- CompositeFontInfo.cs
- Pair.cs
- ConfigViewGenerator.cs
- DiscoveryClientOutputChannel.cs
- DataGridRowHeader.cs
- ResourceDescriptionAttribute.cs
- DataGridItem.cs
- ApplicationActivator.cs
- SafeFileMapViewHandle.cs
- iisPickupDirectory.cs
- ValidationErrorCollection.cs
- FloaterBaseParaClient.cs
- MdImport.cs
- FixedDSBuilder.cs
- LayoutSettings.cs
- TransformGroup.cs
- Effect.cs
- LambdaCompiler.Expressions.cs
- SizeFConverter.cs
- HwndAppCommandInputProvider.cs
- WindowsButton.cs
- DataServiceException.cs
- AffineTransform3D.cs
- autovalidator.cs
- PersonalizableAttribute.cs
- BamlBinaryWriter.cs
- XmlDataImplementation.cs
- ToolStripComboBox.cs
- XhtmlTextWriter.cs
- SerializationObjectManager.cs
- UnauthorizedAccessException.cs
- HatchBrush.cs
- OleDbDataReader.cs
- Cursors.cs
- EntityClassGenerator.cs
- AssemblySettingAttributes.cs
- ConfigXmlCDataSection.cs
- TypedTableBase.cs
- CqlQuery.cs
- AnonymousIdentificationSection.cs
- PromptEventArgs.cs
- HotCommands.cs
- SinglePageViewer.cs
- BaseCAMarshaler.cs
- WebProxyScriptElement.cs
- TraceLog.cs
- DeviceContext.cs
- Verify.cs
- MetadataItem.cs
- CodeEntryPointMethod.cs
- TabControlDesigner.cs
- Quad.cs
- ThicknessConverter.cs
- unsafenativemethodstextservices.cs
- ComEventsInfo.cs
- ApplicationSettingsBase.cs
- ConfigurationException.cs
- InputLanguageManager.cs
- DoubleLinkListEnumerator.cs
- EntityStoreSchemaFilterEntry.cs
- PrintPreviewDialog.cs
- ListCommandEventArgs.cs
- ExpressionEditor.cs
- BehaviorEditorPart.cs
- CFStream.cs
- KeyTime.cs
- AnnotationService.cs
- XmlNamespaceDeclarationsAttribute.cs
- ProcessModelSection.cs
- SaveFileDialog.cs