Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Shared / MS / Internal / DecoderFallbackWithFailureFlag.cs / 1305600 / 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
- _NegoState.cs
- DataGridViewCellStyleChangedEventArgs.cs
- FlowDocument.cs
- BaseAutoFormat.cs
- MouseGestureValueSerializer.cs
- HttpProfileBase.cs
- CriticalFinalizerObject.cs
- AdornerPresentationContext.cs
- COM2TypeInfoProcessor.cs
- ResourceContainer.cs
- TemplateContent.cs
- Context.cs
- MatrixAnimationUsingPath.cs
- Win32MouseDevice.cs
- MetadataPropertyAttribute.cs
- WebHttpSecurityModeHelper.cs
- RtfToXamlReader.cs
- DbConnectionClosed.cs
- EndpointDispatcher.cs
- MsmqTransportReceiveParameters.cs
- Panel.cs
- ReaderWriterLockSlim.cs
- ExpressionBuilder.cs
- CodeChecksumPragma.cs
- ProgressPage.cs
- ResourceAssociationType.cs
- DelegatingHeader.cs
- PolicyImporterElementCollection.cs
- XamlWriter.cs
- FormatterConverter.cs
- Char.cs
- GeometryHitTestResult.cs
- TdsParserSafeHandles.cs
- FileClassifier.cs
- EntityTemplateUserControl.cs
- LifetimeServices.cs
- ResXResourceReader.cs
- SliderAutomationPeer.cs
- MarginsConverter.cs
- StagingAreaInputItem.cs
- InvokeMethodActivity.cs
- RestHandler.cs
- MissingMethodException.cs
- HttpClientCertificate.cs
- IntegerValidatorAttribute.cs
- PageContent.cs
- Crc32Helper.cs
- GeneralTransform3DGroup.cs
- HtmlTextArea.cs
- RemotingConfigParser.cs
- PerformanceCounterManager.cs
- CssClassPropertyAttribute.cs
- HttpBrowserCapabilitiesBase.cs
- DesignTimeTemplateParser.cs
- WebServiceResponse.cs
- TransactionFlowAttribute.cs
- TemplateBaseAction.cs
- CategoryValueConverter.cs
- HttpProtocolReflector.cs
- ErrorFormatterPage.cs
- PriorityRange.cs
- Frame.cs
- NumberSubstitution.cs
- GeneralTransform2DTo3D.cs
- CodePropertyReferenceExpression.cs
- TransactedBatchingBehavior.cs
- ReflectPropertyDescriptor.cs
- SequenceNumber.cs
- ComplusEndpointConfigContainer.cs
- EnterpriseServicesHelper.cs
- SafeEventHandle.cs
- PrintController.cs
- TypeSystemProvider.cs
- Variant.cs
- SettingsContext.cs
- FlagsAttribute.cs
- DES.cs
- InkPresenter.cs
- DetailsViewInsertedEventArgs.cs
- ApplicationFileParser.cs
- ParseHttpDate.cs
- ExpressionSelection.cs
- TemplateParser.cs
- RuntimeConfig.cs
- HtmlElement.cs
- DiagnosticTrace.cs
- WindowsImpersonationContext.cs
- BasicKeyConstraint.cs
- EventLogInternal.cs
- MobileUserControl.cs
- DataTemplateKey.cs
- QueryCacheKey.cs
- ListControlConvertEventArgs.cs
- EditCommandColumn.cs
- UserUseLicenseDictionaryLoader.cs
- SplitContainer.cs
- ColorKeyFrameCollection.cs
- MatrixCamera.cs
- ListParaClient.cs
- SelectionItemPatternIdentifiers.cs