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
- StructuralObject.cs
- Bidi.cs
- CleanUpVirtualizedItemEventArgs.cs
- InvokeMethodActivity.cs
- AxisAngleRotation3D.cs
- MediaPlayer.cs
- HtmlTextArea.cs
- ContractMethodInfo.cs
- PropertyItemInternal.cs
- EntityConnectionStringBuilder.cs
- GridViewHeaderRowPresenterAutomationPeer.cs
- NamedPipeChannelFactory.cs
- ConnectionPoint.cs
- DeflateStreamAsyncResult.cs
- HostVisual.cs
- RuntimeConfig.cs
- MetadataHelper.cs
- MailSettingsSection.cs
- CacheMemory.cs
- StylusEditingBehavior.cs
- BlurBitmapEffect.cs
- DBConnection.cs
- EncodingNLS.cs
- BindingExpressionBase.cs
- CheckBox.cs
- SmtpLoginAuthenticationModule.cs
- AggregationMinMaxHelpers.cs
- LineSegment.cs
- IgnoreDeviceFilterElementCollection.cs
- DataMemberConverter.cs
- DataGridViewAddColumnDialog.cs
- MissingFieldException.cs
- ResolveCriteriaApril2005.cs
- FixedSOMTableCell.cs
- Util.cs
- PropertyTabChangedEvent.cs
- EntitySqlQueryCacheEntry.cs
- X509SecurityToken.cs
- basenumberconverter.cs
- RemoteWebConfigurationHost.cs
- DataGridBeginningEditEventArgs.cs
- SchemeSettingElementCollection.cs
- PropertyGridCommands.cs
- MetadataPropertyvalue.cs
- SqlClientFactory.cs
- DataGridPagerStyle.cs
- ReadOnlyNameValueCollection.cs
- ScrollItemProviderWrapper.cs
- XPathDocumentNavigator.cs
- ForEachAction.cs
- BamlTreeUpdater.cs
- DoubleCollection.cs
- ComponentCollection.cs
- RuntimeResourceSet.cs
- CachedBitmap.cs
- RestHandler.cs
- HandledEventArgs.cs
- FileUpload.cs
- UpWmlMobileTextWriter.cs
- AnnotationService.cs
- CodeMemberMethod.cs
- TrayIconDesigner.cs
- EntityContainerEntitySetDefiningQuery.cs
- _ScatterGatherBuffers.cs
- _NestedSingleAsyncResult.cs
- HostingPreferredMapPath.cs
- DateTimePicker.cs
- Comparer.cs
- SerializerWriterEventHandlers.cs
- PersonalizationProviderCollection.cs
- GridViewPageEventArgs.cs
- AutoScrollExpandMessageFilter.cs
- DataObject.cs
- ServiceModelStringsVersion1.cs
- PolygonHotSpot.cs
- cookiecollection.cs
- HtmlDocument.cs
- ModuleConfigurationInfo.cs
- Literal.cs
- AttributeProviderAttribute.cs
- PageCodeDomTreeGenerator.cs
- Translator.cs
- ConstraintStruct.cs
- DocumentPageView.cs
- XmlValueConverter.cs
- XmlElement.cs
- MobileControlPersister.cs
- UidManager.cs
- TraceHandler.cs
- filewebresponse.cs
- CharStorage.cs
- SymLanguageType.cs
- DateTimeFormat.cs
- EditorAttribute.cs
- ResXFileRef.cs
- MetafileHeader.cs
- PropertyHelper.cs
- CorrelationScope.cs
- ZipPackagePart.cs
- Utils.cs