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
- ToolStripCodeDomSerializer.cs
- DataGridPageChangedEventArgs.cs
- MatrixCamera.cs
- ClientOptions.cs
- DataGridViewAccessibleObject.cs
- PersonalizationStateInfo.cs
- TdsRecordBufferSetter.cs
- SafeCryptoHandles.cs
- UnsafeNativeMethods.cs
- TableCell.cs
- OpCellTreeNode.cs
- ReferenceConverter.cs
- ComponentDispatcherThread.cs
- PeerPresenceInfo.cs
- SQLResource.cs
- EdmTypeAttribute.cs
- Rfc2898DeriveBytes.cs
- LongSumAggregationOperator.cs
- MobileControlsSectionHelper.cs
- LogAppendAsyncResult.cs
- DisableDpiAwarenessAttribute.cs
- SchemaCollectionCompiler.cs
- UnknownBitmapEncoder.cs
- FullTextState.cs
- ObjectStateEntryDbDataRecord.cs
- OracleTransaction.cs
- ISessionStateStore.cs
- HMAC.cs
- SchemaManager.cs
- ThreadExceptionDialog.cs
- BaseTemplateParser.cs
- WindowsUserNameCachingSecurityTokenAuthenticator.cs
- AuthorizationRuleCollection.cs
- TextElement.cs
- WebHttpSecurityElement.cs
- EdmPropertyAttribute.cs
- ConfigurationValidatorAttribute.cs
- ProtocolsConfiguration.cs
- Missing.cs
- DataGridTable.cs
- ResourceDescriptionAttribute.cs
- PolyLineSegment.cs
- ObjectConverter.cs
- PassportAuthenticationModule.cs
- TextViewBase.cs
- CollectionChange.cs
- PassportPrincipal.cs
- Vector3D.cs
- ListCollectionView.cs
- WindowCollection.cs
- XmlExceptionHelper.cs
- CreateWorkflowOwnerCommand.cs
- SqlParameterCollection.cs
- Error.cs
- CorrelationValidator.cs
- GcHandle.cs
- InstanceLockTracking.cs
- Latin1Encoding.cs
- FixedDocumentPaginator.cs
- StorageInfo.cs
- _DigestClient.cs
- FrugalList.cs
- AssertHelper.cs
- FormViewActionList.cs
- InfoCardMetadataExchangeClient.cs
- Latin1Encoding.cs
- CompiledRegexRunner.cs
- TextBlock.cs
- GroupBoxAutomationPeer.cs
- FixedDSBuilder.cs
- CategoryNameCollection.cs
- TreePrinter.cs
- FormViewAutoFormat.cs
- XamlParser.cs
- ControlBuilderAttribute.cs
- MULTI_QI.cs
- UdpChannelFactory.cs
- SQLBytes.cs
- MatrixTransform.cs
- DES.cs
- ToolStripItemCollection.cs
- AutomationAttributeInfo.cs
- DashStyle.cs
- DockAndAnchorLayout.cs
- _BasicClient.cs
- RenderData.cs
- SafeUserTokenHandle.cs
- ICspAsymmetricAlgorithm.cs
- WsatServiceAddress.cs
- PropertyEmitter.cs
- RequestQueryParser.cs
- Win32.cs
- AddInStore.cs
- ElementNotEnabledException.cs
- xml.cs
- FtpWebResponse.cs
- QilIterator.cs
- XPathNavigator.cs
- VariableQuery.cs
- WebServiceBindingAttribute.cs