| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 | //// Author://   Jb Evain (jbevain@gmail.com)//// Copyright (c) 2008 - 2015 Jb Evain// Copyright (c) 2008 - 2011 Novell, Inc.//// Licensed under the MIT/X11 license.//using System;namespace ILRuntime.Mono.Cecil {	public struct MetadataToken : IEquatable<MetadataToken> {		readonly uint token;		public uint RID	{			get { return token & 0x00ffffff; }		}		public TokenType TokenType {			get { return (TokenType) (token & 0xff000000); }		}		public static readonly MetadataToken Zero = new MetadataToken ((uint) 0);		public MetadataToken (uint token)		{			this.token = token;		}		public MetadataToken (TokenType type)			: this (type, 0)		{		}		public MetadataToken (TokenType type, uint rid)		{			token = (uint) type | rid;		}		public MetadataToken (TokenType type, int rid)		{			token = (uint) type | (uint) rid;		}		public int ToInt32 ()		{			return (int) token;		}		public uint ToUInt32 ()		{			return token;		}		public override int GetHashCode ()		{			return (int) token;		}		public bool Equals (MetadataToken other)		{			return other.token == token;		}		public override bool Equals (object obj)		{			if (obj is MetadataToken) {				var other = (MetadataToken) obj;				return other.token == token;			}			return false;		}		public static bool operator == (MetadataToken one, MetadataToken other)		{			return one.token == other.token;		}		public static bool operator != (MetadataToken one, MetadataToken other)		{			return one.token != other.token;		}		public override string ToString ()		{			return string.Format ("[{0}:0x{1}]", TokenType, RID.ToString ("x4"));		}	}}
 |