Code:
/ FXUpdate3074 / FXUpdate3074 / 1.1 / untmp / whidbey / QFE / 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');
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SQLSingleStorage.cs
- SystemIcmpV4Statistics.cs
- DataGridParentRows.cs
- GridViewSelectEventArgs.cs
- AdvancedBindingEditor.cs
- CancellationHandlerDesigner.cs
- ISFTagAndGuidCache.cs
- XPathDocument.cs
- FixedDocumentSequencePaginator.cs
- ThemeDictionaryExtension.cs
- PersonalizationAdministration.cs
- DocumentApplicationJournalEntry.cs
- StylusCaptureWithinProperty.cs
- LexicalChunk.cs
- x509utils.cs
- TextHidden.cs
- CryptoStream.cs
- MsmqMessageProperty.cs
- WebPartConnectionsCancelEventArgs.cs
- ImageButton.cs
- AsyncOperationManager.cs
- TextEditorParagraphs.cs
- DBParameter.cs
- DataServiceQuery.cs
- MatrixTransform.cs
- InternalConfigHost.cs
- VideoDrawing.cs
- HandlerFactoryCache.cs
- WebPartsPersonalizationAuthorization.cs
- PagedDataSource.cs
- SQLBytes.cs
- AssociationProvider.cs
- Fonts.cs
- DataGridItemCollection.cs
- Label.cs
- UIElementPropertyUndoUnit.cs
- NumericUpDownAccelerationCollection.cs
- XhtmlCssHandler.cs
- Logging.cs
- SqlReferenceCollection.cs
- DbUpdateCommandTree.cs
- ScrollBarRenderer.cs
- String.cs
- xmlsaver.cs
- ListCollectionView.cs
- IIS7WorkerRequest.cs
- DbParameterCollectionHelper.cs
- ISAPIRuntime.cs
- JpegBitmapDecoder.cs
- ColorConverter.cs
- RegexCompiler.cs
- _DomainName.cs
- GridToolTip.cs
- DoubleIndependentAnimationStorage.cs
- LiteralTextParser.cs
- HtmlForm.cs
- TimeSpanConverter.cs
- StickyNoteContentControl.cs
- SoundPlayer.cs
- WorkItem.cs
- SoapFault.cs
- Table.cs
- EncodingFallbackAwareXmlTextWriter.cs
- CapabilitiesPattern.cs
- FtpRequestCacheValidator.cs
- AutomationAttributeInfo.cs
- ManagedWndProcTracker.cs
- SettingsContext.cs
- IRCollection.cs
- ClientUrlResolverWrapper.cs
- SchemaLookupTable.cs
- StylusPointPropertyInfoDefaults.cs
- TextChange.cs
- ParseChildrenAsPropertiesAttribute.cs
- WebPartConnectionsConfigureVerb.cs
- Roles.cs
- ValueOfAction.cs
- MessageQueueInstaller.cs
- GACIdentityPermission.cs
- WSSecureConversationDec2005.cs
- SafeNativeMethods.cs
- ChangeBlockUndoRecord.cs
- ObjectStateEntryDbDataRecord.cs
- __TransparentProxy.cs
- Binding.cs
- SplitterEvent.cs
- MailWebEventProvider.cs
- RSAPKCS1SignatureFormatter.cs
- SqlClientMetaDataCollectionNames.cs
- DataRecordInternal.cs
- WindowsSolidBrush.cs
- TypeDependencyAttribute.cs
- ToolStripStatusLabel.cs
- RequestStatusBarUpdateEventArgs.cs
- ServiceModelConfigurationElementCollection.cs
- WindowsPen.cs
- ColumnTypeConverter.cs
- CheckBox.cs
- SettingsProviderCollection.cs
- MobileUITypeEditor.cs