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
- KeySplineConverter.cs
- BulletedList.cs
- ResourcePermissionBaseEntry.cs
- NameSpaceExtractor.cs
- BamlBinaryReader.cs
- SiteMapNodeItem.cs
- CommandExpr.cs
- DtrList.cs
- UpDownEvent.cs
- ZipFileInfoCollection.cs
- ResourcePermissionBase.cs
- BooleanToVisibilityConverter.cs
- DodSequenceMerge.cs
- FacetValues.cs
- StrongName.cs
- RadioButton.cs
- MouseWheelEventArgs.cs
- NamedElement.cs
- XmlQueryStaticData.cs
- StringHandle.cs
- LinkLabel.cs
- SemaphoreSlim.cs
- BamlResourceDeserializer.cs
- GrammarBuilderDictation.cs
- ElementsClipboardData.cs
- WebPartDeleteVerb.cs
- MergeLocalizationDirectives.cs
- SmiMetaData.cs
- MatrixTransform3D.cs
- SkipQueryOptionExpression.cs
- FormsAuthenticationConfiguration.cs
- BasicBrowserDialog.cs
- DynamicUpdateCommand.cs
- GestureRecognitionResult.cs
- HostingEnvironmentSection.cs
- DisplayMemberTemplateSelector.cs
- MemoryMappedFileSecurity.cs
- SizeConverter.cs
- DataGridViewCellStateChangedEventArgs.cs
- HuffModule.cs
- SafeNativeMethods.cs
- SearchExpression.cs
- LambdaCompiler.Expressions.cs
- StaticFileHandler.cs
- TickBar.cs
- PieceDirectory.cs
- BamlLocalizableResourceKey.cs
- RadioButtonAutomationPeer.cs
- LoginDesignerUtil.cs
- Track.cs
- ProcessRequestArgs.cs
- NullableBoolConverter.cs
- controlskin.cs
- CodeCatchClauseCollection.cs
- ApplicationServicesHostFactory.cs
- ColorTransformHelper.cs
- ObjectNotFoundException.cs
- AsyncPostBackErrorEventArgs.cs
- RoleProviderPrincipal.cs
- PolygonHotSpot.cs
- SchemaTypeEmitter.cs
- documentsequencetextcontainer.cs
- JournalNavigationScope.cs
- TextSelectionHighlightLayer.cs
- TextMessageEncoder.cs
- GradientBrush.cs
- WinInet.cs
- XmlUtil.cs
- GridViewSortEventArgs.cs
- UndoEngine.cs
- InputScopeAttribute.cs
- CallbackHandler.cs
- PolicyStatement.cs
- PageParser.cs
- ToolStripControlHost.cs
- TagMapInfo.cs
- DataObjectSettingDataEventArgs.cs
- GridToolTip.cs
- ServiceOperationHelpers.cs
- InvalidCastException.cs
- Bezier.cs
- SchemaImporter.cs
- ManipulationLogic.cs
- ILGen.cs
- CfgRule.cs
- Component.cs
- EnumUnknown.cs
- DesignerResources.cs
- ByteStorage.cs
- DetailsViewDeletedEventArgs.cs
- UniqueIdentifierService.cs
- Guid.cs
- SystemColors.cs
- EntryWrittenEventArgs.cs
- CryptographicAttribute.cs
- DetailsViewPagerRow.cs
- InheritanceService.cs
- DummyDataSource.cs
- ArrangedElementCollection.cs
- ToggleButton.cs