Code:
/ 4.0 / 4.0 / untmp / 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- PropertyTabAttribute.cs
- TreeViewItem.cs
- BoundColumn.cs
- AbstractDataSvcMapFileLoader.cs
- StylusPlugInCollection.cs
- Debugger.cs
- SessionStateUtil.cs
- Variable.cs
- Matrix.cs
- DeferredTextReference.cs
- FontWeight.cs
- TransactionTable.cs
- BlurBitmapEffect.cs
- Helper.cs
- RightsManagementEncryptedStream.cs
- LinearGradientBrush.cs
- BufferAllocator.cs
- CompilerInfo.cs
- StyleSelector.cs
- SecurityTokenReferenceStyle.cs
- ToolStripPanel.cs
- PageVisual.cs
- SiteMapDataSource.cs
- XMLDiffLoader.cs
- AuthorizationRule.cs
- TextServicesDisplayAttribute.cs
- CacheChildrenQuery.cs
- Missing.cs
- ApplicationServiceManager.cs
- DependencySource.cs
- RoleGroup.cs
- FamilyTypeface.cs
- PropertyGridEditorPart.cs
- NetworkInterface.cs
- OleDbErrorCollection.cs
- CachedPathData.cs
- InternalTypeHelper.cs
- DirectoryObjectSecurity.cs
- AttributedMetaModel.cs
- SemaphoreFullException.cs
- LeaseManager.cs
- Console.cs
- SmiEventSink.cs
- StringStorage.cs
- CodeDesigner.cs
- NativeRecognizer.cs
- GrowingArray.cs
- SchemaManager.cs
- SQLStringStorage.cs
- DesignConnection.cs
- TextWriter.cs
- CustomValidator.cs
- SafeRightsManagementPubHandle.cs
- ThousandthOfEmRealDoubles.cs
- XPathEmptyIterator.cs
- CompModHelpers.cs
- FunctionImportMapping.ReturnTypeRenameMapping.cs
- FlowNode.cs
- RijndaelManaged.cs
- DataChangedEventManager.cs
- SmiContextFactory.cs
- CellTreeSimplifier.cs
- SecurityException.cs
- ItemCheckedEvent.cs
- SoapIgnoreAttribute.cs
- UnorderedHashRepartitionStream.cs
- NullPackagingPolicy.cs
- HttpConfigurationContext.cs
- NodeCounter.cs
- CompletedAsyncResult.cs
- AppearanceEditorPart.cs
- StrokeRenderer.cs
- NumberFormatInfo.cs
- TypeUtil.cs
- FieldNameLookup.cs
- GroupBox.cs
- HyperLinkColumn.cs
- Content.cs
- DocumentGridPage.cs
- Matrix3DStack.cs
- ContextMenuStrip.cs
- UIElement.cs
- CharacterShapingProperties.cs
- RenderData.cs
- StringHandle.cs
- MessageQueuePermissionEntryCollection.cs
- DebugInfoExpression.cs
- PanelStyle.cs
- ClipboardProcessor.cs
- DEREncoding.cs
- PropertyDescriptors.cs
- XmlAnyAttributeAttribute.cs
- ItemType.cs
- DiscoveryClientDuplexChannel.cs
- MsmqChannelListenerBase.cs
- SignatureHelper.cs
- ChildrenQuery.cs
- QueryRewriter.cs
- Select.cs
- ListItemsCollectionEditor.cs