示例#1
0
        /// <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);
        }
示例#2
0
        /// <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);
        }
示例#3
0
        /// <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);
        }
示例#4
0
        /// <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);
        }