コード例 #1
0
            /// <summary>
            /// Default ctor
            /// </summary>
            public JavaTypeDefinition(XModule module, XTypeDefinition declaringType, ClassFile type)
                : base(module, declaringType, false, null)
            {
                this.type = type;
                fields = type.Fields.Select(x => new JavaFieldDefinition(this, x)).Cast<XFieldDefinition>().ToList().AsReadOnly();
                methods = type.Methods.Select(x => new JavaMethodDefinition(this, x)).Cast<XMethodDefinition>().ToList().AsReadOnly();
                interfaces = new List<XTypeReference>();
                nested = type.InnerClasses.Where(x => x.InnerClassFile.DeclaringClass == type).Select(x => new JavaTypeDefinition(module, this, x.InnerClassFile)).Cast<XTypeDefinition>().ToList().AsReadOnly();

                module.Register(this, FullName);
                module.Register(this, type.ClassName);

                foreach(var n in nested)
                    module.Register(n);
            }
コード例 #2
0
            /// <summary>
            /// Default ctor
            /// </summary>
            public JavaTypeDefinition(XModule module, XTypeDefinition declaringType, ClassFile type)
                : base(module, declaringType, false, null)
            {
                this.type  = type;
                fields     = type.Fields.Select(x => new JavaFieldDefinition(this, x)).Cast <XFieldDefinition>().ToList().AsReadOnly();
                methods    = type.Methods.Select(x => new JavaMethodDefinition(this, x)).Cast <XMethodDefinition>().ToList().AsReadOnly();
                interfaces = new List <XTypeReference>();
                nested     = type.InnerClasses.Where(x => x.InnerClassFile.DeclaringClass == type).Select(x => new JavaTypeDefinition(module, this, x.InnerClassFile)).Cast <XTypeDefinition>().ToList().AsReadOnly();

                module.Register(this, FullName);
                module.Register(this, type.ClassName);

                foreach (var n in nested)
                {
                    module.Register(n);
                }
            }
コード例 #3
0
        /// <summary>
        /// Create a synthetic field and add it to the given declaring type.
        /// </summary>
        public static XSyntheticTypeDefinition Create(XModule module, XTypeDefinition declaringType, XSyntheticTypeFlags flags, string @namespace, string name, XTypeReference baseType, string fullScopeId)
        {
            var type = new XSyntheticTypeDefinition(module, declaringType, flags, @namespace, name, baseType, fullScopeId);
            if(declaringType != null)
                declaringType.Add(type);

            module.Register(type);
            return type;
        }
コード例 #4
0
        /// <summary>
        /// Create a synthetic field and add it to the given declaring type.
        /// </summary>
        public static XSyntheticTypeDefinition Create(XModule module, XTypeDefinition declaringType, XSyntheticTypeFlags flags, string @namespace, string name, XTypeReference baseType, string fullScopeId)
        {
            var type = new XSyntheticTypeDefinition(module, declaringType, flags, @namespace, name, baseType, fullScopeId);

            if (declaringType != null)
            {
                declaringType.Add(type);
            }

            module.Register(type);
            return(type);
        }
コード例 #5
0
            /// <summary>
            /// Default ctor
            /// </summary>
            public ILTypeDefinition(XModule module, XTypeDefinition declaringType, TypeDefinition type)
                : base(module, declaringType, type.IsValueType, type.GenericParameters.Select(x => x.Name))
            {
                this.type = type;
                fields = new List<XFieldDefinition>(type.Fields.Count);
                methods = new List<XMethodDefinition>(type.Methods.Count);
                nested = new List<XTypeDefinition>();
                interfaces = new List<XTypeReference>();

                // Add nested types
                foreach (var source in type.NestedTypes/*.Where(t=>t.IsReachable) should we only consider reachables?*/)
                {
                    var nestedType = new ILTypeDefinition(Module, this, source);
                    nested.Add(nestedType);
                    module.Register(nestedType);
                }

                 methodToIdx = type.Methods.Select((m, idx) => new { m, idx }).ToDictionary(k => k.m, k => k.idx);
            }
コード例 #6
0
            /// <summary>
            /// Default ctor
            /// </summary>
            public ILTypeDefinition(XModule module, XTypeDefinition declaringType, TypeDefinition type)
                : base(module, declaringType, type.IsValueType, type.GenericParameters.Select(x => x.Name))
            {
                this.type  = type;
                fields     = new List <XFieldDefinition>(type.Fields.Count);
                methods    = new List <XMethodDefinition>(type.Methods.Count);
                nested     = new List <XTypeDefinition>();
                interfaces = new List <XTypeReference>();

                // Add nested types
                foreach (var source in type.NestedTypes /*.Where(t=>t.IsReachable) should we only consider reachables?*/)
                {
                    var nestedType = new ILTypeDefinition(Module, this, source);
                    nested.Add(nestedType);
                    module.Register(nestedType);
                }

                methodToIdx = type.Methods.Select((m, idx) => new { m, idx }).ToDictionary(k => k.m, k => k.idx);
            }