/// <summary> /// Make a .NET method reference for the MonitorEnter/Exit instruction. /// </summary> private XMethodReference MonitorMethodReference(string methodName) { var declaringType = new XTypeReference.SimpleXTypeReference(module, "System.Threading", "Monitor", null, false, null); var methodRef = new XMethodReference.Simple(methodName, false, module.TypeSystem.Void, declaringType, new[] { module.TypeSystem.Object }, null); return(methodRef); }
/// <summary> /// Default ctor /// </summary> internal XTypeSystem(XModule module) { Bool = new XPrimitiveType(module, XTypeReferenceKind.Bool, "Boolean"); Byte = new XPrimitiveType(module, XTypeReferenceKind.Byte, "Byte"); SByte = new XPrimitiveType(module, XTypeReferenceKind.SByte, "SByte"); Char = new XPrimitiveType(module, XTypeReferenceKind.Char, "Char"); Short = new XPrimitiveType(module, XTypeReferenceKind.Short, "Int16"); UShort = new XPrimitiveType(module, XTypeReferenceKind.UShort, "UInt16"); Int = new XPrimitiveType(module, XTypeReferenceKind.Int, "Int32"); UInt = new XPrimitiveType(module, XTypeReferenceKind.UInt, "UInt32"); Long = new XPrimitiveType(module, XTypeReferenceKind.Long, "Int64"); ULong = new XPrimitiveType(module, XTypeReferenceKind.ULong, "UInt64"); Float = new XPrimitiveType(module, XTypeReferenceKind.Float, "Single"); Double = new XPrimitiveType(module, XTypeReferenceKind.Double, "Double"); Void = new XPrimitiveType(module, XTypeReferenceKind.Void, "Void"); IntPtr = new XPrimitiveType(module, XTypeReferenceKind.IntPtr, "IntPtr"); UIntPtr = new XPrimitiveType(module, XTypeReferenceKind.UIntPtr, "UIntPtr"); TypedReference = new XPrimitiveType(module, XTypeReferenceKind.TypedReference, "TypedReference"); Exception = new XTypeReference.SimpleXTypeReference(module, "System", "Exception", null, false, null); Object = new XTypeReference.SimpleXTypeReference(module, "System", "Object", null, false, null); String = new XTypeReference.SimpleXTypeReference(module, "System", "String", null, false, null); Type = new XTypeReference.SimpleXTypeReference(module, "System", "Type", null, false, null); NoType = new XTypeReference.SimpleXTypeReference(module, "____no_type___", "___no_type`99999", null, false, null); }
/// <summary> /// Gets the type definition for a Dot42 type. /// </summary> internal XTypeReference GetDot42InternalType(string typeNamespace, string typeName) { XTypeReference result; var key = typeNamespace + "." + typeName; if (!internalTypeReferences.TryGetValue(key, out result)) { //result = new XTypeReference(Module, typeNamespace, typeName, assembly.MainModule, new AssemblyNameReference { Name = AssemblyConstants.SdkAssemblyName }); result = new XTypeReference.SimpleXTypeReference(Module, typeNamespace, typeName, null, false, null); internalTypeReferences[key] = result; } return(result); }