Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / fx / src / Xml / System / Xml / Core / IncrementalReadDecoders.cs / 1305376 / 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();
}
#if !SILVERLIGHT // Needed only for XmlTextReader
//
// 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;
}
}
#endif
}
// 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();
}
#if !SILVERLIGHT // Needed only for XmlTextReader
//
// 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;
}
}
#endif
}
// 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
- UnsafeNativeMethods.cs
- _WinHttpWebProxyDataBuilder.cs
- SerializationHelper.cs
- ToolStripSettings.cs
- ComponentChangedEvent.cs
- BinaryMessageEncodingElement.cs
- SchemeSettingElementCollection.cs
- MdImport.cs
- ToolStripDropDownDesigner.cs
- _ListenerAsyncResult.cs
- Vector3DValueSerializer.cs
- SqlXmlStorage.cs
- MiniMapControl.xaml.cs
- SoapInteropTypes.cs
- TabControl.cs
- SelectionPatternIdentifiers.cs
- ThemeInfoAttribute.cs
- TableDetailsCollection.cs
- DataBoundLiteralControl.cs
- GroupBoxRenderer.cs
- StylusLogic.cs
- PartialCachingControl.cs
- SqlTriggerAttribute.cs
- CompilerLocalReference.cs
- DirectoryInfo.cs
- FieldReference.cs
- DayRenderEvent.cs
- LinqDataSourceInsertEventArgs.cs
- XmlDataImplementation.cs
- HttpGetServerProtocol.cs
- QueryStatement.cs
- SettingsPropertyIsReadOnlyException.cs
- DesignerLoader.cs
- PropertyGridEditorPart.cs
- WsatConfiguration.cs
- ParentQuery.cs
- StateBag.cs
- ExpandCollapsePattern.cs
- RegexStringValidatorAttribute.cs
- Regex.cs
- XmlSchemaAnyAttribute.cs
- SmtpFailedRecipientsException.cs
- NameValueCollection.cs
- MimeMultiPart.cs
- ToolStripRenderer.cs
- Command.cs
- FileLoadException.cs
- ApplicationInfo.cs
- CompressedStack.cs
- KnownBoxes.cs
- AuthenticationSection.cs
- ReflectPropertyDescriptor.cs
- DeclaredTypeValidator.cs
- _TimerThread.cs
- ServiceThrottlingElement.cs
- PrinterSettings.cs
- DbConnectionPoolIdentity.cs
- SQLInt16.cs
- UIServiceHelper.cs
- ParserStack.cs
- ProcessProtocolHandler.cs
- BaseCollection.cs
- DataGridViewSelectedCellCollection.cs
- documentsequencetextcontainer.cs
- ChannelManager.cs
- XPathNavigator.cs
- SamlSubject.cs
- GenerateTemporaryAssemblyTask.cs
- JpegBitmapEncoder.cs
- AsymmetricSignatureFormatter.cs
- WebPartUtil.cs
- DataReaderContainer.cs
- CommonXSendMessage.cs
- SqlUdtInfo.cs
- AuthStoreRoleProvider.cs
- TargetParameterCountException.cs
- sqlpipe.cs
- Crc32.cs
- Propagator.JoinPropagator.cs
- XmlUtil.cs
- ExpressionBinding.cs
- Constraint.cs
- DoubleKeyFrameCollection.cs
- BamlReader.cs
- XmlSchemaComplexContent.cs
- PageEventArgs.cs
- TextRangeEditLists.cs
- AppliedDeviceFiltersEditor.cs
- XmlSchemaDocumentation.cs
- SByteStorage.cs
- DbQueryCommandTree.cs
- GcSettings.cs
- IProvider.cs
- BufferedStream.cs
- DataServiceProviderMethods.cs
- SimpleExpression.cs
- XmlWellformedWriter.cs
- PermissionListSet.cs
- VBIdentifierNameEditor.cs
- Control.cs