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
- ValidatedControlConverter.cs
- WaitForChangedResult.cs
- HttpDictionary.cs
- Win32Interop.cs
- WebBrowserPermission.cs
- StreamWithDictionary.cs
- MatrixCamera.cs
- xdrvalidator.cs
- FormView.cs
- SqlFacetAttribute.cs
- ComponentChangedEvent.cs
- TabItem.cs
- HealthMonitoringSection.cs
- QueueSurrogate.cs
- ExtensionSimplifierMarkupObject.cs
- IssuedTokenClientBehaviorsElementCollection.cs
- input.cs
- MemoryMappedViewStream.cs
- SystemNetHelpers.cs
- TableRowCollection.cs
- RestClientProxyHandler.cs
- LinqDataSource.cs
- ServiceOperationParameter.cs
- XmlAttributeCollection.cs
- Menu.cs
- EmissiveMaterial.cs
- ObjectDataSourceFilteringEventArgs.cs
- OleDbConnectionFactory.cs
- TextTreeText.cs
- BorderGapMaskConverter.cs
- HttpWriter.cs
- FontInfo.cs
- ComponentGlyph.cs
- _UriTypeConverter.cs
- WhiteSpaceTrimStringConverter.cs
- ResourceExpression.cs
- RangeBase.cs
- TemplateManager.cs
- DataTablePropertyDescriptor.cs
- ImageResources.Designer.cs
- Page.cs
- XslNumber.cs
- MessageQueuePermissionAttribute.cs
- Formatter.cs
- WebPartConnection.cs
- ShapeTypeface.cs
- FilterInvalidBodyAccessException.cs
- DataObjectSettingDataEventArgs.cs
- VirtualizingPanel.cs
- ISSmlParser.cs
- FileNameEditor.cs
- IndexOutOfRangeException.cs
- XmlSerializerOperationGenerator.cs
- SchemaSetCompiler.cs
- OwnerDrawPropertyBag.cs
- XmlEntity.cs
- HTTPNotFoundHandler.cs
- ToolStripItemRenderEventArgs.cs
- TextMarkerSource.cs
- hwndwrapper.cs
- XmlSchemaDocumentation.cs
- XComponentModel.cs
- SeekStoryboard.cs
- ByteConverter.cs
- DateTimeFormat.cs
- IDispatchConstantAttribute.cs
- ProvidePropertyAttribute.cs
- RawKeyboardInputReport.cs
- GridView.cs
- StringResourceManager.cs
- ReflectionHelper.cs
- RelationshipType.cs
- HotSpot.cs
- XmlSchema.cs
- CodeObjectCreateExpression.cs
- HTTPRemotingHandler.cs
- DefaultMemberAttribute.cs
- HandlerFactoryWrapper.cs
- PasswordDeriveBytes.cs
- PackageRelationshipCollection.cs
- MappingSource.cs
- SqlLiftIndependentRowExpressions.cs
- ModelPropertyImpl.cs
- AsyncStreamReader.cs
- CodeNamespace.cs
- UnsafeNativeMethods.cs
- XmlSchemaObjectCollection.cs
- SqlDuplicator.cs
- Label.cs
- AppendHelper.cs
- XmlnsPrefixAttribute.cs
- PaperSize.cs
- StateManagedCollection.cs
- SqlTransaction.cs
- Parser.cs
- ApplicationHost.cs
- PropertyEmitterBase.cs
- SimpleTextLine.cs
- RowSpanVector.cs
- TabControlCancelEvent.cs