Code:
/ Dotnetfx_Vista_SP2 / Dotnetfx_Vista_SP2 / 8.0.50727.4016 / DEVDIV / depot / DevDiv / releases / Orcas / QFE / wpf / src / Shared / MS / Internal / DecoderFallbackWithFailureFlag.cs / 1 / DecoderFallbackWithFailureFlag.cs
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Description: DecoderFallbackWithFailureFlag is used when the developer wants Encoding.GetChars() method to fail
// without throwing an exception when decoding cannot be performed.
// Usage pattern is:
// DecoderFallbackWithFailureFlag fallback = new DecoderFallbackWithFailureFlag();
// Encoding e = Encoding.GetEncoding(codePage, EncoderFallback.ExceptionFallback, fallback);
// e.GetChars(bytesToDecode);
// if (fallback.HasFailed)
// {
// // Perform fallback and reset the failure flag.
// fallback.HasFailed = false;
// }
//
// History:
// 05/03/2005 : mleonov - Created
//
//---------------------------------------------------------------------------
using System.Text;
namespace MS.Internal
{
///
/// This class is similar to the standard DecoderExceptionFallback class,
/// except that for performance reasons it sets a Boolean failure flag
/// instead of throwing exception.
///
internal class DecoderFallbackWithFailureFlag : DecoderFallback
{
public DecoderFallbackWithFailureFlag()
{ }
public override DecoderFallbackBuffer CreateFallbackBuffer()
{
return new FallbackBuffer(this);
}
///
/// The maximum number of characters this instance can return.
///
public override int MaxCharCount
{
get
{
return 0;
}
}
///
/// Returns whether decoding failed.
///
public bool HasFailed
{
get
{
return _hasFailed;
}
set
{
_hasFailed = value;
}
}
private bool _hasFailed; // false by default
///
/// A special implementation of DecoderFallbackBuffer that sets the failure flag
/// in the parent DecoderFallbackWithFailureFlag class.
///
private class FallbackBuffer : DecoderFallbackBuffer
{
public FallbackBuffer(DecoderFallbackWithFailureFlag parent)
{
_parent = parent;
}
///
/// Indicates whether a substitute string can be emitted if an input byte sequence cannot be decoded.
/// Parameters specify an input byte sequence, and the index position of a byte in the input.
///
/// An input array of bytes.
/// The index position of a byte in bytesUnknown.
/// true if a string exists that can be inserted in the output
/// instead of decoding the byte specified in bytesUnknown;
/// false if the input byte should be ignored.
public override bool Fallback(byte[] bytesUnknown, int index)
{
_parent.HasFailed = true;
return false;
}
///
/// Retrieves the next character in the fallback buffer.
///
/// The next Unicode character in the fallback buffer.
public override char GetNextChar()
{
return (char)0;
}
///
/// Prepares the GetNextChar method to retrieve the preceding character in the fallback buffer.
///
/// true if the MovePrevious operation was successful; otherwise, false.
public override bool MovePrevious()
{
return false;
}
///
/// Gets the number of characters in this instance of DecoderFallbackBuffer that remain to be processed.
///
public override int Remaining
{
get
{
return 0;
}
}
private DecoderFallbackWithFailureFlag _parent;
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
//----------------------------------------------------------------------------
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
//
// Description: DecoderFallbackWithFailureFlag is used when the developer wants Encoding.GetChars() method to fail
// without throwing an exception when decoding cannot be performed.
// Usage pattern is:
// DecoderFallbackWithFailureFlag fallback = new DecoderFallbackWithFailureFlag();
// Encoding e = Encoding.GetEncoding(codePage, EncoderFallback.ExceptionFallback, fallback);
// e.GetChars(bytesToDecode);
// if (fallback.HasFailed)
// {
// // Perform fallback and reset the failure flag.
// fallback.HasFailed = false;
// }
//
// History:
// 05/03/2005 : mleonov - Created
//
//---------------------------------------------------------------------------
using System.Text;
namespace MS.Internal
{
///
/// This class is similar to the standard DecoderExceptionFallback class,
/// except that for performance reasons it sets a Boolean failure flag
/// instead of throwing exception.
///
internal class DecoderFallbackWithFailureFlag : DecoderFallback
{
public DecoderFallbackWithFailureFlag()
{ }
public override DecoderFallbackBuffer CreateFallbackBuffer()
{
return new FallbackBuffer(this);
}
///
/// The maximum number of characters this instance can return.
///
public override int MaxCharCount
{
get
{
return 0;
}
}
///
/// Returns whether decoding failed.
///
public bool HasFailed
{
get
{
return _hasFailed;
}
set
{
_hasFailed = value;
}
}
private bool _hasFailed; // false by default
///
/// A special implementation of DecoderFallbackBuffer that sets the failure flag
/// in the parent DecoderFallbackWithFailureFlag class.
///
private class FallbackBuffer : DecoderFallbackBuffer
{
public FallbackBuffer(DecoderFallbackWithFailureFlag parent)
{
_parent = parent;
}
///
/// Indicates whether a substitute string can be emitted if an input byte sequence cannot be decoded.
/// Parameters specify an input byte sequence, and the index position of a byte in the input.
///
/// An input array of bytes.
/// The index position of a byte in bytesUnknown.
/// true if a string exists that can be inserted in the output
/// instead of decoding the byte specified in bytesUnknown;
/// false if the input byte should be ignored.
public override bool Fallback(byte[] bytesUnknown, int index)
{
_parent.HasFailed = true;
return false;
}
///
/// Retrieves the next character in the fallback buffer.
///
/// The next Unicode character in the fallback buffer.
public override char GetNextChar()
{
return (char)0;
}
///
/// Prepares the GetNextChar method to retrieve the preceding character in the fallback buffer.
///
/// true if the MovePrevious operation was successful; otherwise, false.
public override bool MovePrevious()
{
return false;
}
///
/// Gets the number of characters in this instance of DecoderFallbackBuffer that remain to be processed.
///
public override int Remaining
{
get
{
return 0;
}
}
private DecoderFallbackWithFailureFlag _parent;
}
}
}
// 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
- SnapLine.cs
- LocalBuilder.cs
- Stream.cs
- DataGridItemCollection.cs
- ErrorProvider.cs
- AssemblyContextControlItem.cs
- XpsLiterals.cs
- HTTPNotFoundHandler.cs
- BlurBitmapEffect.cs
- FixedSOMTableRow.cs
- _CommandStream.cs
- Memoizer.cs
- _SslStream.cs
- EntityContainerRelationshipSet.cs
- XsltException.cs
- IndicShape.cs
- MsmqOutputChannel.cs
- TextServicesPropertyRanges.cs
- HierarchicalDataSourceIDConverter.cs
- HttpResponseHeader.cs
- AVElementHelper.cs
- OdbcConnectionFactory.cs
- ExclusiveTcpTransportManager.cs
- BuildProviderCollection.cs
- HtmlInputText.cs
- DbQueryCommandTree.cs
- ElapsedEventArgs.cs
- AstNode.cs
- XmlBinaryReader.cs
- DLinqAssociationProvider.cs
- ElapsedEventArgs.cs
- DiffuseMaterial.cs
- AmbientValueAttribute.cs
- ReadContentAsBinaryHelper.cs
- PackWebRequest.cs
- HandlerFactoryWrapper.cs
- BaseDataListComponentEditor.cs
- AllMembershipCondition.cs
- PageThemeBuildProvider.cs
- ClonableStack.cs
- BulletedList.cs
- ConfigXmlComment.cs
- HtmlObjectListAdapter.cs
- Transform.cs
- Ticks.cs
- SerializationSectionGroup.cs
- DocumentViewerConstants.cs
- DisableDpiAwarenessAttribute.cs
- Compiler.cs
- _Events.cs
- RNGCryptoServiceProvider.cs
- FormsAuthenticationModule.cs
- XmlSchemaAnnotation.cs
- DataRow.cs
- SafeWaitHandle.cs
- WorkflowRuntimeEndpoint.cs
- TextElementEnumerator.cs
- CodeNamespaceImportCollection.cs
- SimpleHandlerFactory.cs
- ZoomPercentageConverter.cs
- ErrorWrapper.cs
- PropertyInfoSet.cs
- Bits.cs
- CompiledScopeCriteria.cs
- ConfigXmlElement.cs
- RecommendedAsConfigurableAttribute.cs
- CorrelationService.cs
- ObjectStateEntryDbDataRecord.cs
- OdbcEnvironmentHandle.cs
- DataListItemCollection.cs
- HttpSysSettings.cs
- CodeVariableDeclarationStatement.cs
- Registry.cs
- ToolStripManager.cs
- SendMessageContent.cs
- TreeWalker.cs
- RegexMatch.cs
- ImageDrawing.cs
- CodeAttributeArgumentCollection.cs
- connectionpool.cs
- RequestCacheManager.cs
- TemplateControl.cs
- CryptoApi.cs
- ZoneIdentityPermission.cs
- UrlPath.cs
- SerializerDescriptor.cs
- XmlSchemaParticle.cs
- mactripleDES.cs
- AlphabetConverter.cs
- LingerOption.cs
- ToolStripGrip.cs
- AttachedPropertyBrowsableAttribute.cs
- WorkerRequest.cs
- CrossAppDomainChannel.cs
- serverconfig.cs
- ChannelCacheDefaults.cs
- PropertyChangedEventArgs.cs
- SourceFilter.cs
- DesignerTransactionCloseEvent.cs
- AccessDataSourceDesigner.cs