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
- RegisteredExpandoAttribute.cs
- ClientBuildManagerCallback.cs
- SQLDateTime.cs
- StringFormat.cs
- ButtonField.cs
- BasicCellRelation.cs
- Reference.cs
- HtmlHistory.cs
- ContractUtils.cs
- DBSqlParserTableCollection.cs
- UnsafeNativeMethodsTablet.cs
- SerialPinChanges.cs
- _ListenerResponseStream.cs
- Stack.cs
- _ShellExpression.cs
- XmlDictionaryReaderQuotas.cs
- XXXOnTypeBuilderInstantiation.cs
- WorkflowMarkupSerializationProvider.cs
- MarkupWriter.cs
- Types.cs
- FlowLayoutPanel.cs
- JournalNavigationScope.cs
- MetadataWorkspace.cs
- MetadataCache.cs
- VisualBasicSettings.cs
- AsymmetricCryptoHandle.cs
- SafeArrayTypeMismatchException.cs
- ObjectItemCollectionAssemblyCacheEntry.cs
- DynamicField.cs
- XamlToRtfParser.cs
- ChangeTracker.cs
- LicenseException.cs
- PathSegmentCollection.cs
- SkewTransform.cs
- Model3D.cs
- mansign.cs
- RectangleF.cs
- DecoderBestFitFallback.cs
- COSERVERINFO.cs
- StateWorkerRequest.cs
- AsyncOperationContext.cs
- Assembly.cs
- CharacterBufferReference.cs
- storepermissionattribute.cs
- XmlSchemaSet.cs
- BrowserCapabilitiesCompiler.cs
- WindowInteractionStateTracker.cs
- TimeSpanMinutesOrInfiniteConverter.cs
- SendingRequestEventArgs.cs
- ListViewItem.cs
- PrimitiveSchema.cs
- ItemsPresenter.cs
- InheritablePropertyChangeInfo.cs
- LassoSelectionBehavior.cs
- TextSerializer.cs
- FontStyles.cs
- AttributeCollection.cs
- ClientBuildManager.cs
- HostedTcpTransportManager.cs
- SQLGuid.cs
- CommandID.cs
- WindowsTokenRoleProvider.cs
- GlobalizationSection.cs
- DetailsView.cs
- XmlSchemaSubstitutionGroup.cs
- Simplifier.cs
- LinkConverter.cs
- InstanceLockException.cs
- StrokeNodeOperations2.cs
- SubclassTypeValidator.cs
- UriParserTemplates.cs
- EqualityComparer.cs
- XmlSchemaSimpleContent.cs
- AppDomainUnloadedException.cs
- CollectionContainer.cs
- SmiXetterAccessMap.cs
- codemethodreferenceexpression.cs
- Attributes.cs
- mediaeventshelper.cs
- RSAPKCS1SignatureFormatter.cs
- IPHostEntry.cs
- WebContext.cs
- CryptoKeySecurity.cs
- CodeNamespace.cs
- DesignBindingPicker.cs
- DataGridViewTextBoxEditingControl.cs
- RemotingException.cs
- HtmlLink.cs
- dtdvalidator.cs
- AddressHeader.cs
- SortDescription.cs
- WebConvert.cs
- Win32MouseDevice.cs
- HtmlInputPassword.cs
- _CacheStreams.cs
- StringExpressionSet.cs
- ReferenceConverter.cs
- MetadataPropertyAttribute.cs
- BlockExpression.cs
- ClassHandlersStore.cs