Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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
- Subtree.cs
- AuthenticodeSignatureInformation.cs
- EditModeSwitchButton.cs
- UserNamePasswordValidator.cs
- XmlObjectSerializerWriteContextComplexJson.cs
- SingleStorage.cs
- HandlerBase.cs
- WebPartZone.cs
- Set.cs
- SocketElement.cs
- UpDownEvent.cs
- TreeNodeClickEventArgs.cs
- TcpChannelHelper.cs
- TerminatorSinks.cs
- DataControlImageButton.cs
- VerticalAlignConverter.cs
- ZoneMembershipCondition.cs
- GeneralTransform.cs
- _AutoWebProxyScriptHelper.cs
- StringAnimationBase.cs
- DNS.cs
- XPathSelfQuery.cs
- ScrollBarRenderer.cs
- DocumentSequence.cs
- InternalBufferOverflowException.cs
- CodeAttributeDeclarationCollection.cs
- DataGridColumnDropSeparator.cs
- TextFormatter.cs
- SymbolType.cs
- WebPartDescriptionCollection.cs
- ManagedFilter.cs
- Char.cs
- DBDataPermissionAttribute.cs
- WorkflowInstanceAbortedRecord.cs
- wgx_exports.cs
- FileDialog.cs
- MimeBasePart.cs
- UniformGrid.cs
- MouseActionValueSerializer.cs
- SubMenuStyleCollectionEditor.cs
- ModuleBuilderData.cs
- PropertyStore.cs
- JumpList.cs
- ToolStripTextBox.cs
- DecoderFallback.cs
- EnumerableRowCollectionExtensions.cs
- QilTernary.cs
- SelectionPattern.cs
- PrivateFontCollection.cs
- BuildManagerHost.cs
- OperatorExpressions.cs
- ConfigurationValue.cs
- SaveFileDialogDesigner.cs
- SqlSelectStatement.cs
- Assembly.cs
- DataGridRow.cs
- DbConnectionStringBuilder.cs
- _HelperAsyncResults.cs
- XmlExpressionDumper.cs
- ScriptingRoleServiceSection.cs
- ImportDesigner.xaml.cs
- DesignRelationCollection.cs
- StateItem.cs
- CustomAttributeBuilder.cs
- COM2ComponentEditor.cs
- DbProviderManifest.cs
- RC2CryptoServiceProvider.cs
- InstanceLockLostException.cs
- ProviderBase.cs
- DefinitionUpdate.cs
- ReadingWritingEntityEventArgs.cs
- CmsInterop.cs
- GetKeyedHashRequest.cs
- EdmTypeAttribute.cs
- ComponentManagerBroker.cs
- CustomCredentialPolicy.cs
- NamespaceCollection.cs
- PageAsyncTask.cs
- SafeEventLogReadHandle.cs
- DoubleStorage.cs
- CngKeyCreationParameters.cs
- Parameter.cs
- DbParameterCollectionHelper.cs
- FeatureManager.cs
- CalendarDataBindingHandler.cs
- Process.cs
- DataServiceRequestOfT.cs
- DocumentOrderComparer.cs
- CompressEmulationStream.cs
- XamlWrapperReaders.cs
- WebRequestModulesSection.cs
- LateBoundBitmapDecoder.cs
- CharUnicodeInfo.cs
- PropertyGeneratedEventArgs.cs
- PKCS1MaskGenerationMethod.cs
- HyperLinkField.cs
- ToolStrip.cs
- XmlSchemaAppInfo.cs
- UnhandledExceptionEventArgs.cs
- ContentElement.cs