Code:
/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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.
//
// [....]
//-----------------------------------------------------------------------------
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.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- WebPartConnectVerb.cs
- PrinterUnitConvert.cs
- OleDbMetaDataFactory.cs
- StrongNamePublicKeyBlob.cs
- Invariant.cs
- PersonalizationEntry.cs
- ThaiBuddhistCalendar.cs
- TdsRecordBufferSetter.cs
- OracleColumn.cs
- AsyncResult.cs
- NavigationHelper.cs
- Policy.cs
- CacheAxisQuery.cs
- GridItemCollection.cs
- QueryPageSettingsEventArgs.cs
- DataTableTypeConverter.cs
- ItemList.cs
- ManipulationVelocities.cs
- Zone.cs
- LocationReferenceEnvironment.cs
- ParserContext.cs
- BinaryFormatter.cs
- ExceptionHelpers.cs
- ConsumerConnectionPointCollection.cs
- InfoCardTraceRecord.cs
- ArrayTypeMismatchException.cs
- StrokeNode.cs
- SignatureResourceHelper.cs
- IdentityHolder.cs
- HttpPostedFile.cs
- SerializationObjectManager.cs
- ExpressionDumper.cs
- oledbmetadatacollectionnames.cs
- CornerRadiusConverter.cs
- ListViewItemSelectionChangedEvent.cs
- AuthenticateEventArgs.cs
- BuiltInPermissionSets.cs
- DiscoveryCallbackBehavior.cs
- GrabHandleGlyph.cs
- ListViewItemEventArgs.cs
- ExpandableObjectConverter.cs
- ConfigUtil.cs
- StringResourceManager.cs
- ReaderWriterLockWrapper.cs
- EventLogPermissionEntryCollection.cs
- EntityContainerEmitter.cs
- DrawingServices.cs
- TabletDevice.cs
- MessageQueuePermission.cs
- IteratorFilter.cs
- StorageRoot.cs
- DiagnosticsConfiguration.cs
- CollectionViewGroup.cs
- TriggerActionCollection.cs
- FormatConvertedBitmap.cs
- ProxyFragment.cs
- ValidationResult.cs
- CompilerCollection.cs
- Label.cs
- Menu.cs
- DBSchemaTable.cs
- HtmlElementErrorEventArgs.cs
- SmiEventStream.cs
- CustomAttribute.cs
- ObservableCollection.cs
- LinkLabel.cs
- ImpersonateTokenRef.cs
- PropertyKey.cs
- WebPartUserCapability.cs
- CancellationTokenRegistration.cs
- WeakReferenceKey.cs
- SystemIPAddressInformation.cs
- WebPartManagerInternals.cs
- DoubleIndependentAnimationStorage.cs
- ToolTip.cs
- SafeBitVector32.cs
- TextBreakpoint.cs
- RegisteredHiddenField.cs
- CacheOutputQuery.cs
- BitmapEffectvisualstate.cs
- SecurityHeaderTokenResolver.cs
- __Filters.cs
- AsyncCodeActivity.cs
- DoubleMinMaxAggregationOperator.cs
- TraceRecord.cs
- Matrix3DStack.cs
- TimeStampChecker.cs
- Int64Converter.cs
- SwitchCase.cs
- EditingMode.cs
- SmtpClient.cs
- HtmlInputImage.cs
- RoleGroupCollection.cs
- FtpWebResponse.cs
- GridViewAutomationPeer.cs
- EnumValAlphaComparer.cs
- Regex.cs
- ScrollBarAutomationPeer.cs
- Win32PrintDialog.cs
- BlurEffect.cs