UIntPtr.cs source code in C# .NET

Source code for the .NET framework in C#

                        

Code:

/ Net / Net / 3.5.50727.3053 / DEVDIV / depot / DevDiv / releases / whidbey / netfxsp / 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; 
        }

	}
} 

 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
// ==++== 
//
//   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; 
        }

	}
} 

 

// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
                        

Link Menu

Network programming in C#, Network Programming in VB.NET, Network Programming in .NET
This book is available now!
Buy at Amazon US or
Buy at Amazon UK