Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / Text / EncoderExceptionFallback.cs / 1 / EncoderExceptionFallback.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
// EncoderExceptionFallback.cs
namespace System.Text
{
using System;
using System.Runtime.Serialization;
[Serializable]
public sealed class EncoderExceptionFallback : EncoderFallback
{
// Construction
public EncoderExceptionFallback()
{
}
public override EncoderFallbackBuffer CreateFallbackBuffer()
{
return new EncoderExceptionFallbackBuffer();
}
// Maximum number of characters that this instance of this fallback could return
public override int MaxCharCount
{
get
{
return 0;
}
}
public override bool Equals(Object value)
{
EncoderExceptionFallback that = value as EncoderExceptionFallback;
if (that != null)
{
return (true);
}
return (false);
}
public override int GetHashCode()
{
return 654;
}
}
public sealed class EncoderExceptionFallbackBuffer : EncoderFallbackBuffer
{
public override bool Fallback(char charUnknown, int index)
{
// Fall back our char
throw new EncoderFallbackException(
Environment.GetResourceString("Argument_InvalidCodePageConversionIndex",
(int)charUnknown, index), charUnknown, index);
}
public override bool Fallback(char charUnknownHigh, char charUnknownLow, int index)
{
if (!Char.IsHighSurrogate(charUnknownHigh))
{
throw new ArgumentOutOfRangeException("charUnknownHigh",
Environment.GetResourceString("ArgumentOutOfRange_Range",
0xD800, 0xDBFF));
}
if (!Char.IsLowSurrogate(charUnknownLow))
{
throw new ArgumentOutOfRangeException("CharUnknownLow",
Environment.GetResourceString("ArgumentOutOfRange_Range",
0xDC00, 0xDFFF));
}
int iTemp = Char.ConvertToUtf32(charUnknownHigh, charUnknownLow);
// Fall back our char
throw new EncoderFallbackException(
Environment.GetResourceString("Argument_InvalidCodePageConversionIndex",
iTemp, index), charUnknownHigh, charUnknownLow, index);
}
public override char GetNextChar()
{
return (char)0;
}
public override bool MovePrevious()
{
// Exception fallback doesn't have anywhere to back up to.
return false;
}
// Exceptions are always empty
public override int Remaining
{
get
{
return 0;
}
}
}
[Serializable]
public sealed class EncoderFallbackException : ArgumentException
{
char charUnknown;
char charUnknownHigh;
char charUnknownLow;
int index;
public EncoderFallbackException()
: base(Environment.GetResourceString("Arg_ArgumentException"))
{
SetErrorCode(__HResults.COR_E_ARGUMENT);
}
public EncoderFallbackException(String message)
: base(message)
{
SetErrorCode(__HResults.COR_E_ARGUMENT);
}
public EncoderFallbackException(String message, Exception innerException)
: base(message, innerException)
{
SetErrorCode(__HResults.COR_E_ARGUMENT);
}
internal EncoderFallbackException(SerializationInfo info, StreamingContext context) : base(info, context)
{
}
internal EncoderFallbackException(
String message, char charUnknown, int index) : base(message)
{
this.charUnknown = charUnknown;
this.index = index;
}
internal EncoderFallbackException(
String message, char charUnknownHigh, char charUnknownLow, int index) : base(message)
{
if (!Char.IsHighSurrogate(charUnknownHigh))
{
throw new ArgumentOutOfRangeException("charUnknownHigh",
Environment.GetResourceString("ArgumentOutOfRange_Range",
0xD800, 0xDBFF));
}
if (!Char.IsLowSurrogate(charUnknownLow))
{
throw new ArgumentOutOfRangeException("CharUnknownLow",
Environment.GetResourceString("ArgumentOutOfRange_Range",
0xDC00, 0xDFFF));
}
this.charUnknownHigh = charUnknownHigh;
this.charUnknownLow = charUnknownLow;
this.index = index;
}
public char CharUnknown
{
get
{
return (charUnknown);
}
}
public char CharUnknownHigh
{
get
{
return (charUnknownHigh);
}
}
public char CharUnknownLow
{
get
{
return (charUnknownLow);
}
}
public int Index
{
get
{
return index;
}
}
// Return true if the unknown character is a surrogate pair.
public bool IsUnknownSurrogate()
{
return (this.charUnknownHigh != '\0');
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- ChannelCredentials.cs
- AbsoluteQuery.cs
- StrokeSerializer.cs
- FontFamily.cs
- TraceContextRecord.cs
- LambdaCompiler.ControlFlow.cs
- XmlHierarchicalEnumerable.cs
- SqlConnectionStringBuilder.cs
- TerminateSequenceResponse.cs
- Expression.cs
- AnnotationResource.cs
- FormViewUpdatedEventArgs.cs
- ExpressionBuilder.cs
- SqlException.cs
- FileVersionInfo.cs
- DecimalStorage.cs
- DataSourceProvider.cs
- Completion.cs
- SerializationTrace.cs
- XmlMtomReader.cs
- InkPresenterAutomationPeer.cs
- SpinLock.cs
- PriorityQueue.cs
- RequiredAttributeAttribute.cs
- HwndHostAutomationPeer.cs
- DataSpaceManager.cs
- PrivilegedConfigurationManager.cs
- HealthMonitoringSectionHelper.cs
- DispatcherEventArgs.cs
- COM2TypeInfoProcessor.cs
- TablePattern.cs
- ExclusiveTcpListener.cs
- DateTimeUtil.cs
- UIPermission.cs
- GridView.cs
- Shape.cs
- ResourceSet.cs
- RewritingPass.cs
- InterleavedZipPartStream.cs
- Stylus.cs
- PropertyGridView.cs
- ListViewGroupItemCollection.cs
- FreezableDefaultValueFactory.cs
- QueryableDataSourceView.cs
- SoapSchemaImporter.cs
- _BufferOffsetSize.cs
- BooleanFacetDescriptionElement.cs
- XPathChildIterator.cs
- BigInt.cs
- LogEntryHeaderSerializer.cs
- BindingCollection.cs
- Array.cs
- TextSpanModifier.cs
- PolicyReader.cs
- OuterGlowBitmapEffect.cs
- TraceFilter.cs
- Animatable.cs
- EntitySetDataBindingList.cs
- ButtonChrome.cs
- AnimationException.cs
- GridView.cs
- autovalidator.cs
- XamlReader.cs
- DataExchangeServiceBinder.cs
- InternalBase.cs
- HuffmanTree.cs
- Line.cs
- GroupStyle.cs
- StringCollectionEditor.cs
- GridViewSelectEventArgs.cs
- MustUnderstandSoapException.cs
- CodeAttributeDeclaration.cs
- CatalogPartCollection.cs
- XPathBinder.cs
- CodeNamespace.cs
- CompoundFileIOPermission.cs
- DataSourceConverter.cs
- SortKey.cs
- DataRecordObjectView.cs
- SerialStream.cs
- SqlCharStream.cs
- FolderLevelBuildProviderCollection.cs
- LineUtil.cs
- DataGridViewCellCollection.cs
- PeerPresenceInfo.cs
- NonParentingControl.cs
- IdentityNotMappedException.cs
- ChildTable.cs
- WebUtil.cs
- ListParagraph.cs
- NumericPagerField.cs
- DBConnection.cs
- Size.cs
- StructuredProperty.cs
- ReachPageContentSerializer.cs
- Expander.cs
- ValidationErrorCollection.cs
- MessageBox.cs
- TrackingDataItem.cs
- AnnotationResourceChangedEventArgs.cs