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
- UrlMapping.cs
- SortDescriptionCollection.cs
- SiteMapProvider.cs
- SessionParameter.cs
- DynamicPropertyHolder.cs
- KeyPressEvent.cs
- ResolvedKeyFrameEntry.cs
- DataSourceProvider.cs
- BufferedGenericXmlSecurityToken.cs
- XmlSchemaCollection.cs
- FileDialogCustomPlaces.cs
- TemplatePagerField.cs
- SoapServerMethod.cs
- ConnectionConsumerAttribute.cs
- RoleManagerEventArgs.cs
- ComAdminInterfaces.cs
- StrokeFIndices.cs
- ByteRangeDownloader.cs
- AccessedThroughPropertyAttribute.cs
- AsymmetricAlgorithm.cs
- streamingZipPartStream.cs
- SqlCacheDependencyDatabaseCollection.cs
- DynamicMetaObjectBinder.cs
- DataSourceCacheDurationConverter.cs
- webclient.cs
- KeyValuePair.cs
- StylusCollection.cs
- FrameSecurityDescriptor.cs
- DefaultObjectMappingItemCollection.cs
- SqlDuplicator.cs
- TextEffectResolver.cs
- DataBindingHandlerAttribute.cs
- EmptyCollection.cs
- WorkflowQueue.cs
- Stackframe.cs
- Schema.cs
- InternalCache.cs
- GeneralTransform2DTo3DTo2D.cs
- PolicyLevel.cs
- WizardPanel.cs
- LicenseContext.cs
- XmlUtf8RawTextWriter.cs
- TextSimpleMarkerProperties.cs
- XmlSortKeyAccumulator.cs
- XmlILIndex.cs
- odbcmetadatacollectionnames.cs
- Point3DCollection.cs
- XsltConvert.cs
- ParameterCollection.cs
- XDRSchema.cs
- TraceContext.cs
- OracleRowUpdatedEventArgs.cs
- WSSecureConversationDec2005.cs
- VScrollBar.cs
- CollectionAdapters.cs
- JsonQNameDataContract.cs
- SessionState.cs
- StrokeNodeOperations2.cs
- Line.cs
- StorageAssociationTypeMapping.cs
- PromptStyle.cs
- TransformGroup.cs
- AnimationLayer.cs
- LinkDescriptor.cs
- SqlTypesSchemaImporter.cs
- OletxTransactionHeader.cs
- WindowsStreamSecurityElement.cs
- Variant.cs
- ButtonField.cs
- DefaultExpression.cs
- LiteralTextContainerControlBuilder.cs
- HtmlControlPersistable.cs
- WebUtil.cs
- QilXmlWriter.cs
- SendMailErrorEventArgs.cs
- SystemGatewayIPAddressInformation.cs
- SiteMapNode.cs
- RIPEMD160Managed.cs
- PopupRoot.cs
- PaginationProgressEventArgs.cs
- RemoteWebConfigurationHost.cs
- XPathParser.cs
- ArrayConverter.cs
- WaitForChangedResult.cs
- SpinWait.cs
- FunctionQuery.cs
- Command.cs
- DetailsViewPagerRow.cs
- PageBuildProvider.cs
- DateTimeOffset.cs
- TraceHandlerErrorFormatter.cs
- RawMouseInputReport.cs
- CodeVariableReferenceExpression.cs
- ByteStream.cs
- DataServiceStreamResponse.cs
- Attachment.cs
- TemplatePartAttribute.cs
- OutOfProcStateClientManager.cs
- TabRenderer.cs
- XhtmlBasicValidationSummaryAdapter.cs