Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / clr / src / BCL / System / IntPtr.cs / 1305376 / IntPtr.cs
// ==++== // // Copyright (c) Microsoft Corporation. All rights reserved. // // ==--== /*============================================================ ** ** Class: IntPtr ** ** ** Purpose: Platform independent integer ** ** ===========================================================*/ namespace System { using System; using System.Globalization; using System.Runtime; using System.Runtime.Serialization; using System.Runtime.CompilerServices; using System.Runtime.ConstrainedExecution; using System.Diagnostics.Contracts; [Serializable] [System.Runtime.InteropServices.ComVisible(true)] public struct IntPtr : ISerializable { unsafe private void* m_value; // The compiler treats void* closest to uint hence explicit casts are required to preserve int behavior public static readonly IntPtr Zero; // fast way to compare IntPtr to (IntPtr)0 while IntPtr.Zero doesn't work due to slow statics access [System.Security.SecuritySafeCritical] // auto-generated [Pure] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] internal unsafe bool IsNull() { return (this.m_value == null); } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe IntPtr(int value) { #if WIN32 m_value = (void *)value; #else m_value = (void *)(long)value; #endif } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe IntPtr(long value) { #if WIN32 m_value = (void *)checked((int)value); #else m_value = (void *)value; #endif } [System.Security.SecurityCritical] // auto-generated [CLSCompliant(false)] [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] public unsafe IntPtr(void* value) { m_value = value; } [System.Security.SecurityCritical] // auto-generated private unsafe IntPtr(SerializationInfo info, StreamingContext context) { long l = info.GetInt64("value"); if (Size==4 && (l>Int32.MaxValue || l() != null); #if WIN32 return ((int)m_value).ToString(format, CultureInfo.InvariantCulture); #else return ((long)m_value).ToString(format, CultureInfo.InvariantCulture); #endif } [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static explicit operator IntPtr (int value) { return new IntPtr(value); } [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static explicit operator IntPtr (long value) { return new IntPtr(value); } [System.Security.SecurityCritical] // auto-generated [CLSCompliant(false), ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static unsafe explicit operator IntPtr (void* value) { return new IntPtr(value); } [System.Security.SecuritySafeCritical] // auto-generated [CLSCompliant(false)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static unsafe explicit operator void* (IntPtr value) { return value.ToPointer(); } [System.Security.SecuritySafeCritical] // auto-generated #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe static explicit operator int (IntPtr value) { #if WIN32 return (int)value.m_value; #else long l = (long)value.m_value; return checked((int)l); #endif } [System.Security.SecuritySafeCritical] // auto-generated #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe static explicit operator long (IntPtr value) { #if WIN32 return (long)(int)value.m_value; #else return (long)value.m_value; #endif } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe static bool operator == (IntPtr value1, IntPtr value2) { return value1.m_value == value2.m_value; } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe static bool operator != (IntPtr value1, IntPtr value2) { return value1.m_value != value2.m_value; } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static IntPtr Add(IntPtr pointer, int offset) { return pointer + offset; } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static IntPtr operator +(IntPtr pointer, int offset) { #if WIN32 return new IntPtr(pointer.ToInt32() + offset); #else return new IntPtr(pointer.ToInt64() + offset); #endif } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static IntPtr Subtract(IntPtr pointer, int offset) { return pointer - offset; } [System.Security.SecuritySafeCritical] // auto-generated [ReliabilityContract(Consistency.MayCorruptInstance, Cer.MayFail)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public static IntPtr operator -(IntPtr pointer, int offset) { #if WIN32 return new IntPtr(pointer.ToInt32() - offset); #else return new IntPtr(pointer.ToInt64() - offset); #endif } public static int Size { [Pure] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif get { #if WIN32 return 4; #else return 8; #endif } } [System.Security.SecuritySafeCritical] // auto-generated [CLSCompliant(false)] [ReliabilityContract(Consistency.WillNotCorruptState, Cer.Success)] #if !FEATURE_CORECLR [TargetedPatchingOptOut("Performance critical to inline across NGen image boundaries")] #endif public unsafe void* ToPointer() { return m_value; } } } // 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
- AttributeUsageAttribute.cs
- TokenizerHelper.cs
- CachingHintValidation.cs
- Compensate.cs
- LicenseProviderAttribute.cs
- SqlRowUpdatedEvent.cs
- PropertyItemInternal.cs
- BuildProvider.cs
- ServiceOperationWrapper.cs
- Attribute.cs
- SafeNativeMethodsOther.cs
- CategoryNameCollection.cs
- XmlSchemaValidator.cs
- CodeBinaryOperatorExpression.cs
- SqlCacheDependencySection.cs
- CorePropertiesFilter.cs
- OracleTimeSpan.cs
- InputReportEventArgs.cs
- ByteAnimationBase.cs
- PrimitiveType.cs
- NativeMethods.cs
- PrePrepareMethodAttribute.cs
- SchemaTableColumn.cs
- SingleResultAttribute.cs
- objectquery_tresulttype.cs
- DataGridLinkButton.cs
- XamlNamespaceHelper.cs
- X509SecurityTokenProvider.cs
- CompiledRegexRunnerFactory.cs
- DataServiceQueryException.cs
- WindowsSolidBrush.cs
- RegistryExceptionHelper.cs
- TextPointerBase.cs
- CodeGen.cs
- CodeArrayCreateExpression.cs
- FontResourceCache.cs
- ApplicationSettingsBase.cs
- NativeMethods.cs
- SchemaNames.cs
- ErrorProvider.cs
- UIElementIsland.cs
- TypeValidationEventArgs.cs
- ProgressChangedEventArgs.cs
- SafeNativeMethodsMilCoreApi.cs
- Track.cs
- AutoGeneratedFieldProperties.cs
- FixedSOMTableRow.cs
- DataBoundControlAdapter.cs
- SerializationEventsCache.cs
- EventProviderClassic.cs
- Attributes.cs
- HttpPostedFile.cs
- PipeStream.cs
- CompiledELinqQueryState.cs
- OSFeature.cs
- DocumentPage.cs
- PointConverter.cs
- AssemblyCache.cs
- FastEncoder.cs
- EdgeProfileValidation.cs
- BindingExpression.cs
- FamilyTypefaceCollection.cs
- ClientSection.cs
- CanonicalFormWriter.cs
- SchemaLookupTable.cs
- DataBoundControlHelper.cs
- SetterBase.cs
- DispatcherObject.cs
- SoapDocumentServiceAttribute.cs
- TabControl.cs
- ComponentChangedEvent.cs
- PagedDataSource.cs
- TypeKeyValue.cs
- UiaCoreApi.cs
- RewritingPass.cs
- LookupBindingPropertiesAttribute.cs
- XmlRawWriterWrapper.cs
- XpsStructure.cs
- OleStrCAMarshaler.cs
- ReferenceAssemblyAttribute.cs
- MemberInitExpression.cs
- DnsPermission.cs
- SoapElementAttribute.cs
- PopupRoot.cs
- HttpListenerResponse.cs
- WebPartActionVerb.cs
- SoapSchemaImporter.cs
- WindowsProgressbar.cs
- DataRowView.cs
- QueueSurrogate.cs
- UriTemplateVariableQueryValue.cs
- SignatureToken.cs
- LayoutTableCell.cs
- MetadataPropertyAttribute.cs
- WebRequestModuleElement.cs
- ComplexObject.cs
- ChangeToolStripParentVerb.cs
- BitVector32.cs
- PropertyPushdownHelper.cs
- SiteMapNodeItemEventArgs.cs