Code:
                         / DotNET / DotNET / 8.0 / untmp / WIN_WINDOWS / lh_tools_devdiv_wpf / Windows / wcp / Core / System / Windows / Media / textformatting / CharacterBufferReference.cs / 1 / CharacterBufferReference.cs
                        
                        
                            //------------------------------------------------------------------------ 
//
//  Microsoft Windows Client Platform
//  Copyright (C) Microsoft Corporation, 2003
// 
//  File:      CharacterBufferReference.cs
// 
//  Contents:  Text Character buffer reference 
//
//  Spec:      [....]/sites/Avalon/Specs/Text%20Formatting%20API.doc 
//
//  Created:   2-5-2004 [....] ([....])
//
//----------------------------------------------------------------------- 
 
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
- TabControlAutomationPeer.cs
 - SoapReflector.cs
 - PassportPrincipal.cs
 - CallContext.cs
 - SamlAssertion.cs
 - _TLSstream.cs
 - GridViewRow.cs
 - BamlTreeNode.cs
 - NonDualMessageSecurityOverHttp.cs
 - DataSourceControlBuilder.cs
 - TreeBuilderXamlTranslator.cs
 - HttpClientCertificate.cs
 - DependencyPropertyHelper.cs
 - RichListBox.cs
 - SqlHelper.cs
 - ChooseAction.cs
 - PageThemeBuildProvider.cs
 - CodeBlockBuilder.cs
 - PropertyItemInternal.cs
 - Thickness.cs
 - XmlExceptionHelper.cs
 - BindingRestrictions.cs
 - ManualResetEvent.cs
 - ForeignConstraint.cs
 - DataPagerCommandEventArgs.cs
 - DictionaryContent.cs
 - NonVisualControlAttribute.cs
 - PatternMatcher.cs
 - XmlSchemaComplexType.cs
 - _TLSstream.cs
 - RoleManagerModule.cs
 - DataGridDesigner.cs
 - Compilation.cs
 - ConnectionProviderAttribute.cs
 - ObjectViewQueryResultData.cs
 - CodeNamespace.cs
 - PixelFormat.cs
 - TreeNodeMouseHoverEvent.cs
 - IsolatedStorageFilePermission.cs
 - RightsManagementPermission.cs
 - SqlDataSourceAdvancedOptionsForm.cs
 - DocumentSequenceHighlightLayer.cs
 - XamlPathDataSerializer.cs
 - ProxyHwnd.cs
 - ArgumentOutOfRangeException.cs
 - MessageDirection.cs
 - LabelEditEvent.cs
 - Stylus.cs
 - HttpListenerResponse.cs
 - ZeroOpNode.cs
 - FixedSchema.cs
 - ParenthesizePropertyNameAttribute.cs
 - HtmlInputImage.cs
 - WSTrustFeb2005.cs
 - LocalBuilder.cs
 - DataSourceXmlClassAttribute.cs
 - PolyBezierSegmentFigureLogic.cs
 - ArraySortHelper.cs
 - GridViewUpdatedEventArgs.cs
 - SoapHttpTransportImporter.cs
 - KeyManager.cs
 - BufferAllocator.cs
 - Function.cs
 - Transform3D.cs
 - StickyNoteAnnotations.cs
 - CompilerScopeManager.cs
 - XmlDesignerDataSourceView.cs
 - MeasureData.cs
 - WebServiceParameterData.cs
 - DefaultPrintController.cs
 - IdleTimeoutMonitor.cs
 - HWStack.cs
 - UnionCodeGroup.cs
 - RegistryDataKey.cs
 - RangeExpression.cs
 - PageAsyncTask.cs
 - NamedPermissionSet.cs
 - DisplayInformation.cs
 - Peer.cs
 - ObjectDataSourceStatusEventArgs.cs
 - ConfigXmlComment.cs
 - DockAndAnchorLayout.cs
 - ZoneLinkButton.cs
 - CryptographicAttribute.cs
 - IISUnsafeMethods.cs
 - ImageField.cs
 - FixedTextView.cs
 - DateTimeConverter.cs
 - ComplexType.cs
 - FocusManager.cs
 - _WinHttpWebProxyDataBuilder.cs
 - SerialPort.cs
 - VariableQuery.cs
 - UserControl.cs
 - FixedDSBuilder.cs
 - XamlWriter.cs
 - SuppressMessageAttribute.cs
 - EntityDataSourceDesigner.cs
 - EdmRelationshipNavigationPropertyAttribute.cs
 - EncoderParameters.cs