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
- ImmComposition.cs
- IndexedDataBuffer.cs
- TypefaceMap.cs
- SingleSelectRootGridEntry.cs
- ParserExtension.cs
- Span.cs
- __Error.cs
- DesignTimeSiteMapProvider.cs
- SafeLibraryHandle.cs
- FixedSOMSemanticBox.cs
- SettingsAttributes.cs
- XmlSchemaAttributeGroupRef.cs
- AdornedElementPlaceholder.cs
- SoapExtensionTypeElement.cs
- CacheSection.cs
- SystemInformation.cs
- DbCommandTree.cs
- Brush.cs
- System.Data_BID.cs
- PerfProviderCollection.cs
- ComNativeDescriptor.cs
- QilSortKey.cs
- DataAccessor.cs
- GroupStyle.cs
- ReadContentAsBinaryHelper.cs
- DetailsViewCommandEventArgs.cs
- CodeObject.cs
- AssociationSet.cs
- BamlBinaryWriter.cs
- MultipleViewPattern.cs
- ApplicationDirectoryMembershipCondition.cs
- Maps.cs
- XmlBinaryReader.cs
- TCEAdapterGenerator.cs
- FormatSettings.cs
- FlowLayout.cs
- PartManifestEntry.cs
- UnauthorizedAccessException.cs
- HtmlHead.cs
- MarkupCompilePass1.cs
- TextPattern.cs
- Solver.cs
- IERequestCache.cs
- _ListenerAsyncResult.cs
- AppDomainAttributes.cs
- MessageOperationFormatter.cs
- IProvider.cs
- _TransmitFileOverlappedAsyncResult.cs
- Pair.cs
- dbdatarecord.cs
- Pkcs7Signer.cs
- TcpChannelHelper.cs
- RunClient.cs
- MdbDataFileEditor.cs
- TagMapCollection.cs
- Enum.cs
- NameValueFileSectionHandler.cs
- Localizer.cs
- XmlExpressionDumper.cs
- RegexMatchCollection.cs
- NestedContainer.cs
- LinkedResourceCollection.cs
- LookupNode.cs
- FormViewUpdatedEventArgs.cs
- SettingsAttributes.cs
- AssertHelper.cs
- CheckBoxPopupAdapter.cs
- XPathSelfQuery.cs
- WeakEventManager.cs
- QilXmlWriter.cs
- BaseHashHelper.cs
- TemporaryBitmapFile.cs
- QilNode.cs
- ErrorWrapper.cs
- HttpProfileBase.cs
- FakeModelPropertyImpl.cs
- WebPartEditorCancelVerb.cs
- WindowsTokenRoleProvider.cs
- TriggerCollection.cs
- ControlHelper.cs
- CodeDOMUtility.cs
- CopyOfAction.cs
- SizeF.cs
- XmlCDATASection.cs
- shaper.cs
- HttpDebugHandler.cs
- ResourcesChangeInfo.cs
- DataGridAddNewRow.cs
- RunInstallerAttribute.cs
- MatrixValueSerializer.cs
- ChannelManager.cs
- DragSelectionMessageFilter.cs
- FirstQueryOperator.cs
- CodeExporter.cs
- RangeContentEnumerator.cs
- ExtentKey.cs
- ObjectStateEntryDbUpdatableDataRecord.cs
- GcHandle.cs
- Stroke2.cs
- PackageRelationshipCollection.cs