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
- ToolStripRenderEventArgs.cs
- IUnknownConstantAttribute.cs
- InstanceCollisionException.cs
- PermissionRequestEvidence.cs
- ViewStateException.cs
- XmlSchemaObject.cs
- OleTxTransaction.cs
- iisPickupDirectory.cs
- BulletDecorator.cs
- FileVersionInfo.cs
- Perspective.cs
- AlignmentYValidation.cs
- XsdSchemaFileEditor.cs
- RegisteredExpandoAttribute.cs
- HttpPostProtocolReflector.cs
- SimpleMailWebEventProvider.cs
- WindowsIPAddress.cs
- ServerValidateEventArgs.cs
- WebPartCatalogAddVerb.cs
- ScaleTransform3D.cs
- ExpressionParser.cs
- SingleAnimationBase.cs
- AnimationException.cs
- SemaphoreSecurity.cs
- QuadTree.cs
- SetStoryboardSpeedRatio.cs
- SQLMoney.cs
- XmlSchemaGroupRef.cs
- TextRange.cs
- HotSpotCollectionEditor.cs
- CriticalFinalizerObject.cs
- SettingsPropertyValueCollection.cs
- HMACMD5.cs
- CFStream.cs
- Point4D.cs
- RuntimeConfig.cs
- DataObjectSettingDataEventArgs.cs
- TransformerInfo.cs
- ProfileSettingsCollection.cs
- ThreadExceptionDialog.cs
- DynamicActivityTypeDescriptor.cs
- Line.cs
- FontResourceCache.cs
- BuildProviderAppliesToAttribute.cs
- Documentation.cs
- WebMessageBodyStyleHelper.cs
- SqlErrorCollection.cs
- StringCollection.cs
- ConsumerConnectionPoint.cs
- HMACMD5.cs
- TextEditor.cs
- ObjectTypeMapping.cs
- XamlToRtfWriter.cs
- TypeConstant.cs
- PropVariant.cs
- SqlXml.cs
- Storyboard.cs
- RangeBaseAutomationPeer.cs
- CroppedBitmap.cs
- OdbcConnectionHandle.cs
- MetadataArtifactLoaderCompositeFile.cs
- HttpCachePolicy.cs
- DocumentViewerAutomationPeer.cs
- sqlcontext.cs
- RenderingEventArgs.cs
- LogicalMethodInfo.cs
- RightsManagementEncryptionTransform.cs
- HttpBindingExtension.cs
- XmlChildEnumerator.cs
- WmlListAdapter.cs
- AssemblyFilter.cs
- RequiredFieldValidator.cs
- SecurityUtils.cs
- NotImplementedException.cs
- LocationUpdates.cs
- TimeZone.cs
- QueryStoreStatusRequest.cs
- DifferencingCollection.cs
- _OverlappedAsyncResult.cs
- RemoteEndpointMessageProperty.cs
- ComponentTray.cs
- RtfNavigator.cs
- ChtmlImageAdapter.cs
- DataObject.cs
- PerformanceCounterManager.cs
- TextLine.cs
- ShortcutKeysEditor.cs
- DbConvert.cs
- InputMethodStateChangeEventArgs.cs
- Int32EqualityComparer.cs
- AccessDataSourceView.cs
- ImmComposition.cs
- ObjectDataSourceStatusEventArgs.cs
- PathFigureCollectionValueSerializer.cs
- ProbeMatchesApril2005.cs
- IndexerNameAttribute.cs
- EntityModelBuildProvider.cs
- String.cs
- ObjectAssociationEndMapping.cs
- LicenseException.cs