Code:
/ 4.0 / 4.0 / DEVDIV_TFS / Dev10 / Releases / RTMRel / wpf / src / Core / CSharp / System / Windows / Media / textformatting / CharacterBufferReference.cs / 1305600 / CharacterBufferReference.cs
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2003
//
// File: CharacterBufferReference.cs
//
// Contents: Text Character buffer reference
//
// Spec: http://team/sites/Avalon/Specs/Text%20Formatting%20API.doc
//
// Created: 2-5-2004 Worachai Chaoweeraprasit (wchao)
//
//-----------------------------------------------------------------------
using System;
using System.Diagnostics;
using MS.Internal;
using System.Security;
using System.Security.Permissions;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.TextFormatting
{
///
/// Text character buffer reference
///
public struct CharacterBufferReference : IEquatable
{
private CharacterBuffer _charBuffer;
private int _offsetToFirstChar;
#region Constructor
///
/// Construct character buffer reference from character array
///
/// character array
/// character buffer offset to the first character
public CharacterBufferReference(
char[] characterArray,
int offsetToFirstChar
)
: this(
new CharArrayCharacterBuffer(characterArray),
offsetToFirstChar
)
{}
///
/// Construct character buffer reference from string
///
/// character string
/// character buffer offset to the first character
public CharacterBufferReference(
string characterString,
int offsetToFirstChar
)
: this(
new StringCharacterBuffer(characterString),
offsetToFirstChar
)
{}
///
/// Construct character buffer reference from unsafe character string
///
/// pointer to character string
/// character length of unsafe string
///
/// Critical: This manipulates unsafe pointers and calls into the critical UnsafeStringCharacterBuffer ctor.
/// PublicOK: The caller needs unmanaged code permission in order to pass unsafe pointers to us.
///
[SecurityCritical]
[CLSCompliant(false)]
public unsafe CharacterBufferReference(
char* unsafeCharacterString,
int characterLength
)
: this(new UnsafeStringCharacterBuffer(unsafeCharacterString, characterLength), 0)
{}
///
/// Construct character buffer reference from memory buffer
///
internal CharacterBufferReference(
CharacterBuffer charBuffer,
int offsetToFirstChar
)
{
if (offsetToFirstChar < 0)
{
throw new ArgumentOutOfRangeException("offsetToFirstChar", SR.Get(SRID.ParameterCannotBeNegative));
}
// maximum offset is one less than CharacterBuffer.Count, except that zero is always a valid offset
// even in the case of an empty or null character buffer
int maxOffset = (charBuffer == null) ? 0 : Math.Max(0, charBuffer.Count - 1);
if (offsetToFirstChar > maxOffset)
{
throw new ArgumentOutOfRangeException("offsetToFirstChar", SR.Get(SRID.ParameterCannotBeGreaterThan, maxOffset));
}
_charBuffer = charBuffer;
_offsetToFirstChar = offsetToFirstChar;
}
#endregion
///
/// Compute hash code
///
public override int GetHashCode()
{
return _charBuffer != null ? _charBuffer.GetHashCode() ^ _offsetToFirstChar : 0;
}
///
/// Test equality with the input object
///
/// The object to test.
public override bool Equals(object obj)
{
if (obj is CharacterBufferReference)
{
return Equals((CharacterBufferReference)obj);
}
return false;
}
///
/// Test equality with the input CharacterBufferReference
///
/// The characterBufferReference value to test
public bool Equals(CharacterBufferReference value)
{
return _charBuffer == value._charBuffer
&& _offsetToFirstChar == value._offsetToFirstChar;
}
///
/// Compare two CharacterBufferReference for equality
///
/// left operand
/// right operand
/// whether or not two operands are equal
public static bool operator == (
CharacterBufferReference left,
CharacterBufferReference right
)
{
return left.Equals(right);
}
///
/// Compare two CharacterBufferReference for inequality
///
/// left operand
/// right operand
/// whether or not two operands are equal
public static bool operator != (
CharacterBufferReference left,
CharacterBufferReference right
)
{
return !(left == right);
}
internal CharacterBuffer CharacterBuffer
{
get { return _charBuffer; }
}
internal int OffsetToFirstChar
{
get { return _offsetToFirstChar; }
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// Copyright (c) Microsoft Corporation. All rights reserved.
//------------------------------------------------------------------------
//
// Microsoft Windows Client Platform
// Copyright (C) Microsoft Corporation, 2003
//
// File: CharacterBufferReference.cs
//
// Contents: Text Character buffer reference
//
// Spec: http://team/sites/Avalon/Specs/Text%20Formatting%20API.doc
//
// Created: 2-5-2004 Worachai Chaoweeraprasit (wchao)
//
//-----------------------------------------------------------------------
using System;
using System.Diagnostics;
using MS.Internal;
using System.Security;
using System.Security.Permissions;
using SR=MS.Internal.PresentationCore.SR;
using SRID=MS.Internal.PresentationCore.SRID;
namespace System.Windows.Media.TextFormatting
{
///
/// Text character buffer reference
///
public struct CharacterBufferReference : IEquatable
{
private CharacterBuffer _charBuffer;
private int _offsetToFirstChar;
#region Constructor
///
/// Construct character buffer reference from character array
///
/// character array
/// character buffer offset to the first character
public CharacterBufferReference(
char[] characterArray,
int offsetToFirstChar
)
: this(
new CharArrayCharacterBuffer(characterArray),
offsetToFirstChar
)
{}
///
/// Construct character buffer reference from string
///
/// character string
/// character buffer offset to the first character
public CharacterBufferReference(
string characterString,
int offsetToFirstChar
)
: this(
new StringCharacterBuffer(characterString),
offsetToFirstChar
)
{}
///
/// Construct character buffer reference from unsafe character string
///
/// pointer to character string
/// character length of unsafe string
///
/// Critical: This manipulates unsafe pointers and calls into the critical UnsafeStringCharacterBuffer ctor.
/// PublicOK: The caller needs unmanaged code permission in order to pass unsafe pointers to us.
///
[SecurityCritical]
[CLSCompliant(false)]
public unsafe CharacterBufferReference(
char* unsafeCharacterString,
int characterLength
)
: this(new UnsafeStringCharacterBuffer(unsafeCharacterString, characterLength), 0)
{}
///
/// Construct character buffer reference from memory buffer
///
internal CharacterBufferReference(
CharacterBuffer charBuffer,
int offsetToFirstChar
)
{
if (offsetToFirstChar < 0)
{
throw new ArgumentOutOfRangeException("offsetToFirstChar", SR.Get(SRID.ParameterCannotBeNegative));
}
// maximum offset is one less than CharacterBuffer.Count, except that zero is always a valid offset
// even in the case of an empty or null character buffer
int maxOffset = (charBuffer == null) ? 0 : Math.Max(0, charBuffer.Count - 1);
if (offsetToFirstChar > maxOffset)
{
throw new ArgumentOutOfRangeException("offsetToFirstChar", SR.Get(SRID.ParameterCannotBeGreaterThan, maxOffset));
}
_charBuffer = charBuffer;
_offsetToFirstChar = offsetToFirstChar;
}
#endregion
///
/// Compute hash code
///
public override int GetHashCode()
{
return _charBuffer != null ? _charBuffer.GetHashCode() ^ _offsetToFirstChar : 0;
}
///
/// Test equality with the input object
///
/// The object to test.
public override bool Equals(object obj)
{
if (obj is CharacterBufferReference)
{
return Equals((CharacterBufferReference)obj);
}
return false;
}
///
/// Test equality with the input CharacterBufferReference
///
/// The characterBufferReference value to test
public bool Equals(CharacterBufferReference value)
{
return _charBuffer == value._charBuffer
&& _offsetToFirstChar == value._offsetToFirstChar;
}
///
/// Compare two CharacterBufferReference for equality
///
/// left operand
/// right operand
/// whether or not two operands are equal
public static bool operator == (
CharacterBufferReference left,
CharacterBufferReference right
)
{
return left.Equals(right);
}
///
/// Compare two CharacterBufferReference for inequality
///
/// left operand
/// right operand
/// whether or not two operands are equal
public static bool operator != (
CharacterBufferReference left,
CharacterBufferReference right
)
{
return !(left == right);
}
internal CharacterBuffer CharacterBuffer
{
get { return _charBuffer; }
}
internal int OffsetToFirstChar
{
get { return _offsetToFirstChar; }
}
}
}
// 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
- XmlMtomReader.cs
- DbQueryCommandTree.cs
- DateTimeParse.cs
- ObjectViewListener.cs
- PageParserFilter.cs
- _ShellExpression.cs
- RewritingProcessor.cs
- SmtpLoginAuthenticationModule.cs
- OdbcException.cs
- BooleanAnimationBase.cs
- PermissionToken.cs
- TextPointerBase.cs
- MultiViewDesigner.cs
- ConfigErrorGlyph.cs
- RepeaterItem.cs
- PageBreakRecord.cs
- ConstraintStruct.cs
- DispatcherFrame.cs
- XamlRtfConverter.cs
- SchemaImporterExtension.cs
- TableItemPatternIdentifiers.cs
- ToolStripContentPanelDesigner.cs
- ItemMap.cs
- NameValueSectionHandler.cs
- ColumnMapVisitor.cs
- DesignOnlyAttribute.cs
- ToolStripStatusLabel.cs
- ObjectDataSource.cs
- unsafeIndexingFilterStream.cs
- localization.cs
- RetrieveVirtualItemEventArgs.cs
- Transaction.cs
- ConfigurationManagerHelperFactory.cs
- ResourceProviderFactory.cs
- XmlIlVisitor.cs
- InvalidEnumArgumentException.cs
- DataGridCommandEventArgs.cs
- BaseHashHelper.cs
- ComboBoxAutomationPeer.cs
- Set.cs
- TypeInitializationException.cs
- OdbcHandle.cs
- CacheForPrimitiveTypes.cs
- Grid.cs
- Parameter.cs
- CodeTypeParameterCollection.cs
- SafeRightsManagementPubHandle.cs
- _NestedMultipleAsyncResult.cs
- X509Certificate2Collection.cs
- ModuleElement.cs
- PageSettings.cs
- TemplatePartAttribute.cs
- Root.cs
- AdapterUtil.cs
- ExpressionBuilder.cs
- TrustManager.cs
- COM2FontConverter.cs
- SafeNativeMethods.cs
- UserPreferenceChangedEventArgs.cs
- IsolatedStorageFile.cs
- TagNameToTypeMapper.cs
- X509CertificateCollection.cs
- PersonalizationStateInfo.cs
- CollectionDataContract.cs
- XPathNode.cs
- RadialGradientBrush.cs
- ContextMenuStripGroup.cs
- DbMetaDataCollectionNames.cs
- XmlQualifiedName.cs
- DataGridViewColumnCollectionDialog.cs
- TableLayout.cs
- ToolTipAutomationPeer.cs
- InputLanguageProfileNotifySink.cs
- ConditionBrowserDialog.cs
- BitmapMetadata.cs
- LocalIdKeyIdentifierClause.cs
- DataServiceContext.cs
- SQLDouble.cs
- SqlCommand.cs
- IsolatedStorageFileStream.cs
- SettingsAttributeDictionary.cs
- ListenerChannelContext.cs
- TemplateControlParser.cs
- WebSysDisplayNameAttribute.cs
- ObjectDataSourceWizardForm.cs
- CqlErrorHelper.cs
- FusionWrap.cs
- Main.cs
- TransportReplyChannelAcceptor.cs
- ProcessModule.cs
- FunctionMappingTranslator.cs
- GlyphRunDrawing.cs
- CodePageUtils.cs
- WebBrowserSiteBase.cs
- Point3D.cs
- WhitespaceSignificantCollectionAttribute.cs
- SQLInt32.cs
- JsonDeserializer.cs
- MetadataItem.cs
- CheckedListBox.cs