/// <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); }
/// <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); } }
/// <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; }
/// <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); }
/// <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); }
/// <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); }