Code:
/ FX-1434 / FX-1434 / 1.0 / untmp / whidbey / REDBITS / ndp / clr / src / BCL / System / UIntPtr.cs / 1 / UIntPtr.cs
// ==++==
//
// Copyright (c) Microsoft Corporation. All rights reserved.
//
// ==--==
/*============================================================
**
** Class: UIntPtr
**
**
** Purpose: Platform independent integer
**
**
===========================================================*/
namespace System {
using System;
using System.Globalization;
using System.Runtime.Serialization;
[Serializable(),CLSCompliant(false)]
[System.Runtime.InteropServices.ComVisible(true)]
public struct UIntPtr : ISerializable
{
unsafe private void* m_value;
public static readonly UIntPtr Zero;
public unsafe UIntPtr(uint value)
{
m_value = (void *)value;
}
public unsafe UIntPtr(ulong value)
{
#if WIN32
m_value = (void *)checked((uint)value);
#else
m_value = (void *)value;
#endif
}
[CLSCompliant(false)]
public unsafe UIntPtr(void* value)
{
m_value = value;
}
private unsafe UIntPtr(SerializationInfo info, StreamingContext context) {
ulong l = info.GetUInt64("value");
if (Size==4 && l>UInt32.MaxValue) {
throw new ArgumentException(Environment.GetResourceString("Serialization_InvalidPtrValue"));
}
m_value = (void *)l;
}
unsafe void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) {
if (info==null) {
throw new ArgumentNullException("info");
}
info.AddValue("value", (ulong)m_value);
}
public unsafe override bool Equals(Object obj) {
if (obj is UIntPtr) {
return (m_value == ((UIntPtr)obj).m_value);
}
return false;
}
public unsafe override int GetHashCode() {
return unchecked((int)((long)m_value)) & 0x7fffffff;
}
public unsafe uint ToUInt32() {
#if WIN32
return (uint)m_value;
#else
return checked((uint)m_value);
#endif
}
public unsafe ulong ToUInt64() {
return (ulong)m_value;
}
public unsafe override String ToString() {
#if WIN32
return ((uint)m_value).ToString(CultureInfo.InvariantCulture);
#else
return ((ulong)m_value).ToString(CultureInfo.InvariantCulture);
#endif
}
public static explicit operator UIntPtr (uint value)
{
return new UIntPtr(value);
}
public static explicit operator UIntPtr (ulong value)
{
return new UIntPtr(value);
}
public unsafe static explicit operator uint (UIntPtr value)
{
#if WIN32
return (uint)value.m_value;
#else
return checked((uint)value.m_value);
#endif
}
public unsafe static explicit operator ulong (UIntPtr value)
{
return (ulong)value.m_value;
}
[CLSCompliant(false)]
public static unsafe explicit operator UIntPtr (void* value)
{
return new UIntPtr(value);
}
[CLSCompliant(false)]
public static unsafe explicit operator void* (UIntPtr value)
{
return value.ToPointer();
}
public unsafe static bool operator == (UIntPtr value1, UIntPtr value2)
{
return value1.m_value == value2.m_value;
}
public unsafe static bool operator != (UIntPtr value1, UIntPtr value2)
{
return value1.m_value != value2.m_value;
}
public static int Size
{
get
{
#if WIN32
return 4;
#else
return 8;
#endif
}
}
[CLSCompliant(false)]
public unsafe void* ToPointer()
{
return m_value;
}
}
}
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- RefreshPropertiesAttribute.cs
- Resources.Designer.cs
- FlagsAttribute.cs
- GridViewDeleteEventArgs.cs
- EntitySqlQueryCacheEntry.cs
- ProcessModelInfo.cs
- Avt.cs
- PageEventArgs.cs
- MobileListItemCollection.cs
- InfoCard.cs
- FixedPageProcessor.cs
- RegexMatch.cs
- ArrayElementGridEntry.cs
- CodeNamespace.cs
- CryptoProvider.cs
- ServicePoint.cs
- AccessText.cs
- RequestCachingSection.cs
- SocketException.cs
- ObjectSecurity.cs
- ContextProperty.cs
- XXXInfos.cs
- NotSupportedException.cs
- FileVersion.cs
- UIElementParagraph.cs
- UpDownBase.cs
- InheritanceRules.cs
- ScrollableControl.cs
- GregorianCalendarHelper.cs
- EntitySqlException.cs
- RSAPKCS1SignatureDeformatter.cs
- HttpListenerRequest.cs
- FontConverter.cs
- ProcessModuleCollection.cs
- AddInIpcChannel.cs
- IxmlLineInfo.cs
- UITypeEditor.cs
- DefaultClaimSet.cs
- StreamInfo.cs
- SequentialOutput.cs
- ControlValuePropertyAttribute.cs
- SrgsText.cs
- MonikerUtility.cs
- MetabaseServerConfig.cs
- DataGridViewCheckBoxColumn.cs
- ConnectionPointCookie.cs
- FormViewDesigner.cs
- SoapCodeExporter.cs
- CodePageEncoding.cs
- PaperSize.cs
- ConnectionStringSettingsCollection.cs
- CookielessHelper.cs
- DashStyles.cs
- PrintingPermissionAttribute.cs
- EntityKeyElement.cs
- UnmanagedHandle.cs
- BindingList.cs
- XmlSortKey.cs
- StylusButtonEventArgs.cs
- SplayTreeNode.cs
- HttpCookie.cs
- BitmapEditor.cs
- SqlDataReader.cs
- RegexEditorDialog.cs
- XmlWriterSettings.cs
- CodeCatchClauseCollection.cs
- ServiceMetadataPublishingElement.cs
- ToolStripContentPanel.cs
- ForeignConstraint.cs
- AnnotationStore.cs
- OperationContractAttribute.cs
- PageVisual.cs
- QueryExtender.cs
- SingleAnimationBase.cs
- Policy.cs
- XpsFilter.cs
- SerializerDescriptor.cs
- _ListenerRequestStream.cs
- UnsignedPublishLicense.cs
- HierarchicalDataBoundControl.cs
- Span.cs
- RankException.cs
- Activity.cs
- DocumentGridPage.cs
- XamlVector3DCollectionSerializer.cs
- UTF7Encoding.cs
- TraceListeners.cs
- SpStreamWrapper.cs
- Panel.cs
- AncillaryOps.cs
- StringCollection.cs
- WinInetCache.cs
- TimelineClockCollection.cs
- SessionParameter.cs
- EntityFrameworkVersions.cs
- ToolStripContainerActionList.cs
- LocatorBase.cs
- ActivityExecutionFilter.cs
- AudioException.cs
- AxisAngleRotation3D.cs