[prev in list] [next in list] [prev in thread] [next in thread] 

List:       mono-patches
Subject:    [Mono-patches] r36855 - trunk/mcs/class/corlib/System.Reflection
From:       "Martin Baulig" <martin () mono-cvs ! ximian ! com>
Date:       2004-11-30 19:31:02
Message-ID: 20041130193102.9D2DB94764 () mono-cvs ! ximian ! com
[Download RAW message or body]

Author: martin
Date: 2004-11-30 14:31:01 -0500 (Tue, 30 Nov 2004)
New Revision: 36855

Added:
   trunk/mcs/class/corlib/System.Reflection/MonoGenericClass.cs
Removed:
   trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs
Modified:
   trunk/mcs/class/corlib/System.Reflection/ChangeLog
Log:
2004-11-30  Martin Baulig  <martin@ximian.com>

	* MonoGenericInst.cs: Renamed to MonoGenericClass.cs and also
	renamed the class from `MonoGenericInst' to `MonoGenericClass'.



Modified: trunk/mcs/class/corlib/System.Reflection/ChangeLog
===================================================================
--- trunk/mcs/class/corlib/System.Reflection/ChangeLog	2004-11-30 19:30:22 UTC (rev \
                36854)
+++ trunk/mcs/class/corlib/System.Reflection/ChangeLog	2004-11-30 19:31:01 UTC (rev \
36855) @@ -1,3 +1,8 @@
+2004-11-30  Martin Baulig  <martin@ximian.com>
+
+	* MonoGenericInst.cs: Renamed to MonoGenericClass.cs and also
+	renamed the class from `MonoGenericInst' to `MonoGenericClass'.
+
 2004-11-05  Zoltan Varga  <vargaz@freemail.hu>
 
 	* AssemblyName.cs (FullName): Omit default values from full name.

Copied: trunk/mcs/class/corlib/System.Reflection/MonoGenericClass.cs (from rev 36843, \
trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs) \
                ===================================================================
--- trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs	2004-11-30 13:20:19 \
                UTC (rev 36843)
+++ trunk/mcs/class/corlib/System.Reflection/MonoGenericClass.cs	2004-11-30 19:31:01 \
UTC (rev 36855) @@ -0,0 +1,492 @@
+//
+// System.MonoType
+//
+// Sean MacIsaac (macisaac@ximian.com)
+// Paolo Molaro (lupus@ximian.com)
+// Patrik Torstensson (patrik.torstensson@labs2.com)
+//
+// (C) 2001 Ximian, Inc.
+//
+
+//
+// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
+//
+// Permission is hereby granted, free of charge, to any person obtaining
+// a copy of this software and associated documentation files (the
+// "Software"), to deal in the Software without restriction, including
+// without limitation the rights to use, copy, modify, merge, publish,
+// distribute, sublicense, and/or sell copies of the Software, and to
+// permit persons to whom the Software is furnished to do so, subject to
+// the following conditions:
+// 
+// The above copyright notice and this permission notice shall be
+// included in all copies or substantial portions of the Software.
+// 
+// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
+// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
+// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
+// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+//
+
+using System.Reflection;
+using System.Reflection.Emit;
+using System.Collections;
+using System.Runtime.CompilerServices;
+using System.Globalization;
+using System.Runtime.Serialization;
+
+namespace System.Reflection
+{
+	internal class MonoGenericClass : MonoType
+	{
+		protected Type generic_type;
+		bool initialized;
+
+		[MonoTODO]
+		internal MonoGenericClass ()
+			: base (null)
+		{
+			// this should not be used
+			throw new InvalidOperationException ();
+		}
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern void initialize (MethodInfo[] methods, ConstructorInfo[] ctors, \
FieldInfo[] fields, PropertyInfo[] properties, EventInfo[] events); +
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern MethodInfo[] GetMethods_internal (Type reflected_type);
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern ConstructorInfo[] GetConstructors_internal (Type reflected_type);
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern FieldInfo[] GetFields_internal (Type reflected_type);
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern PropertyInfo[] GetProperties_internal (Type reflected_type);
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern EventInfo[] GetEvents_internal (Type reflected_type);
+
+		private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
+		BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
+
+		EventInfo[] get_event_info ()
+		{
+			if (generic_type is TypeBuilder)
+				return ((TypeBuilder) generic_type).GetEvents_internal (flags);
+			else
+				return generic_type.GetEvents (flags);
+		}
+
+		void initialize ()
+		{
+			if (initialized)
+				return;
+
+			MonoGenericClass parent = GetParentType ();
+			if (parent != null)
+				parent.initialize ();
+
+			initialize (generic_type.GetMethods (flags),
+				    generic_type.GetConstructors (flags),
+				    generic_type.GetFields (flags),
+				    generic_type.GetProperties (flags),
+				    get_event_info ());
+
+			initialized = true;
+		}
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern MonoGenericClass GetParentType ();
+
+		[MethodImplAttribute(MethodImplOptions.InternalCall)]
+		protected extern MonoGenericClass[] GetInterfaces_internal ();
+
+		public override Type BaseType {
+			get {
+				MonoGenericClass parent = GetParentType ();
+				return parent != null ? parent : generic_type.BaseType;
+			}
+		}
+
+		public override Type[] GetInterfaces ()
+		{
+			return GetInterfaces_internal ();
+		}
+
+		protected override bool IsValueTypeImpl ()
+		{
+			return generic_type.IsValueType;
+		}
+
+		public override MethodInfo[] GetMethods (BindingFlags bf)
+		{
+			ArrayList l = new ArrayList ();
+
+			//
+			// Walk up our class hierarchy and retrieve methods from our
+			// parent classes.
+			//
+
+			Type current_type = this;
+			do {
+				MonoGenericClass gi = current_type as MonoGenericClass;
+				if (gi != null)
+					l.AddRange (gi.GetMethods_impl (bf, this));
+				else if (current_type is TypeBuilder)
+					l.AddRange (current_type.GetMethods (bf));
+				else {
+					// If we encounter a `MonoType', its
+					// GetMethodsByName() will return all the methods
+					// from its parent type(s), so we can stop here.
+					MonoType mt = (MonoType) current_type;
+					l.AddRange (mt.GetMethodsByName (null, bf, false, this));
+					break;
+				}
+
+				if ((bf & BindingFlags.DeclaredOnly) != 0)
+					break;
+				current_type = current_type.BaseType;
+			} while (current_type != null);
+
+			MethodInfo[] result = new MethodInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		protected MethodInfo[] GetMethods_impl (BindingFlags bf, Type reftype)
+		{
+			ArrayList l = new ArrayList ();
+			bool match;
+			MethodAttributes mattrs;
+
+			initialize ();
+
+			MethodInfo[] methods = GetMethods_internal (reftype);
+
+			for (int i = 0; i < methods.Length; i++) {
+				MethodInfo c = methods [i];
+
+				match = false;
+				mattrs = c.Attributes;
+				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
+					if ((bf & BindingFlags.Public) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.NonPublic) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				match = false;
+				if ((mattrs & MethodAttributes.Static) != 0) {
+					if ((bf & BindingFlags.Static) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.Instance) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				l.Add (c);
+			}
+			MethodInfo[] result = new MethodInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		public override ConstructorInfo[] GetConstructors (BindingFlags bf)
+		{
+			ArrayList l = new ArrayList ();
+
+			Type current_type = this;
+			do {
+				MonoGenericClass gi = current_type as MonoGenericClass;
+				if (gi != null)
+					l.AddRange (gi.GetConstructors_impl (bf, this));
+				else if (current_type is TypeBuilder)
+					l.AddRange (current_type.GetConstructors (bf));
+				else {
+					MonoType mt = (MonoType) current_type;
+					l.AddRange (mt.GetConstructors_internal (bf, this));
+					break;
+				}
+
+				if ((bf & BindingFlags.DeclaredOnly) != 0)
+					break;
+				current_type = current_type.BaseType;
+			} while (current_type != null);
+
+			ConstructorInfo[] result = new ConstructorInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		protected ConstructorInfo[] GetConstructors_impl (BindingFlags bf, Type reftype)
+		{
+			ArrayList l = new ArrayList ();
+			bool match;
+			MethodAttributes mattrs;
+
+			initialize ();
+
+			ConstructorInfo[] ctors = GetConstructors_internal (reftype);
+
+			for (int i = 0; i < ctors.Length; i++) {
+				ConstructorInfo c = ctors [i];
+
+				match = false;
+				mattrs = c.Attributes;
+				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
+					if ((bf & BindingFlags.Public) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.NonPublic) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				match = false;
+				if ((mattrs & MethodAttributes.Static) != 0) {
+					if ((bf & BindingFlags.Static) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.Instance) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				l.Add (c);
+			}
+
+			ConstructorInfo[] result = new ConstructorInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		public override FieldInfo[] GetFields (BindingFlags bf)
+		{
+			ArrayList l = new ArrayList ();
+
+			Type current_type = this;
+			do {
+				MonoGenericClass gi = current_type as MonoGenericClass;
+				if (gi != null)
+					l.AddRange (gi.GetFields_impl (bf, this));
+				else if (current_type is TypeBuilder)
+					l.AddRange (current_type.GetFields (bf));
+				else {
+					MonoType mt = (MonoType) current_type;
+					l.AddRange (mt.GetFields_internal (bf, this));
+					break;
+				}
+
+				if ((bf & BindingFlags.DeclaredOnly) != 0)
+					break;
+				current_type = current_type.BaseType;
+			} while (current_type != null);
+
+			FieldInfo[] result = new FieldInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		protected FieldInfo[] GetFields_impl (BindingFlags bf, Type reftype)
+		{
+			ArrayList l = new ArrayList ();
+			bool match;
+			FieldAttributes fattrs;
+
+			initialize ();
+
+			FieldInfo[] fields = GetFields_internal (reftype);
+
+			for (int i = 0; i < fields.Length; i++) {
+				FieldInfo c = fields [i];
+
+				match = false;
+				fattrs = c.Attributes;
+				if ((fattrs & FieldAttributes.FieldAccessMask) == FieldAttributes.Public) {
+					if ((bf & BindingFlags.Public) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.NonPublic) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				match = false;
+				if ((fattrs & FieldAttributes.Static) != 0) {
+					if ((bf & BindingFlags.Static) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.Instance) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				l.Add (c);
+			}
+			FieldInfo[] result = new FieldInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		public override PropertyInfo[] GetProperties (BindingFlags bf)
+		{
+			ArrayList l = new ArrayList ();
+
+			Type current_type = this;
+			do {
+				MonoGenericClass gi = current_type as MonoGenericClass;
+				if (gi != null)
+					l.AddRange (gi.GetProperties_impl (bf, this));
+				else if (current_type is TypeBuilder)
+					l.AddRange (current_type.GetProperties (bf));
+				else {
+					MonoType mt = (MonoType) current_type;
+					l.AddRange (mt.GetPropertiesByName (null, bf, false, this));
+					break;
+				}
+
+				if ((bf & BindingFlags.DeclaredOnly) != 0)
+					break;
+				current_type = current_type.BaseType;
+			} while (current_type != null);
+
+			PropertyInfo[] result = new PropertyInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		protected PropertyInfo[] GetProperties_impl (BindingFlags bf, Type reftype)
+		{
+			ArrayList l = new ArrayList ();
+			bool match;
+			MethodAttributes mattrs;
+			MethodInfo accessor;
+
+			initialize ();
+
+			PropertyInfo[] properties = GetProperties_internal (reftype);
+
+			for (int i = 0; i < properties.Length; i++) {
+				PropertyInfo c = properties [i];
+
+				match = false;
+				accessor = c.GetGetMethod (true);
+				if (accessor == null)
+					accessor = c.GetSetMethod (true);
+				if (accessor == null)
+					continue;
+				mattrs = accessor.Attributes;
+				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
+					if ((bf & BindingFlags.Public) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.NonPublic) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				match = false;
+				if ((mattrs & MethodAttributes.Static) != 0) {
+					if ((bf & BindingFlags.Static) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.Instance) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				l.Add (c);
+			}
+			PropertyInfo[] result = new PropertyInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		public override EventInfo[] GetEvents (BindingFlags bf)
+		{
+			ArrayList l = new ArrayList ();
+
+			Type current_type = this;
+			do {
+				MonoGenericClass gi = current_type as MonoGenericClass;
+				if (gi != null)
+					l.AddRange (gi.GetEvents_impl (bf, this));
+				else if (current_type is TypeBuilder)
+					l.AddRange (current_type.GetEvents (bf));
+				else {
+					MonoType mt = (MonoType) current_type;
+					l.AddRange (mt.GetEvents (bf));
+					break;
+				}
+
+				if ((bf & BindingFlags.DeclaredOnly) != 0)
+					break;
+				current_type = current_type.BaseType;
+			} while (current_type != null);
+
+			EventInfo[] result = new EventInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		protected EventInfo[] GetEvents_impl (BindingFlags bf, Type reftype)
+		{
+			ArrayList l = new ArrayList ();
+			bool match;
+			MethodAttributes mattrs;
+			MethodInfo accessor;
+
+			initialize ();
+
+			EventInfo[] events = GetEvents_internal (reftype);
+
+			for (int i = 0; i < events.Length; i++) {
+				EventInfo c = events [i];
+
+				match = false;
+				accessor = c.GetAddMethod (true);
+				if (accessor == null)
+					accessor = c.GetRemoveMethod (true);
+				if (accessor == null)
+					continue;
+				mattrs = accessor.Attributes;
+				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
+					if ((bf & BindingFlags.Public) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.NonPublic) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				match = false;
+				if ((mattrs & MethodAttributes.Static) != 0) {
+					if ((bf & BindingFlags.Static) != 0)
+						match = true;
+				} else {
+					if ((bf & BindingFlags.Instance) != 0)
+						match = true;
+				}
+				if (!match)
+					continue;
+				l.Add (c);
+			}
+			EventInfo[] result = new EventInfo [l.Count];
+			l.CopyTo (result);
+			return result;
+		}
+
+		public override Type[] GetNestedTypes (BindingFlags bf)
+		{
+			return generic_type.GetNestedTypes (bf);
+		}
+	}
+}

Deleted: trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs
===================================================================
--- trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs	2004-11-30 19:30:22 \
                UTC (rev 36854)
+++ trunk/mcs/class/corlib/System.Reflection/MonoGenericInst.cs	2004-11-30 19:31:01 \
UTC (rev 36855) @@ -1,492 +0,0 @@
-//
-// System.MonoType
-//
-// Sean MacIsaac (macisaac@ximian.com)
-// Paolo Molaro (lupus@ximian.com)
-// Patrik Torstensson (patrik.torstensson@labs2.com)
-//
-// (C) 2001 Ximian, Inc.
-//
-
-//
-// Copyright (C) 2004 Novell, Inc (http://www.novell.com)
-//
-// Permission is hereby granted, free of charge, to any person obtaining
-// a copy of this software and associated documentation files (the
-// "Software"), to deal in the Software without restriction, including
-// without limitation the rights to use, copy, modify, merge, publish,
-// distribute, sublicense, and/or sell copies of the Software, and to
-// permit persons to whom the Software is furnished to do so, subject to
-// the following conditions:
-// 
-// The above copyright notice and this permission notice shall be
-// included in all copies or substantial portions of the Software.
-// 
-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-//
-
-using System.Reflection;
-using System.Reflection.Emit;
-using System.Collections;
-using System.Runtime.CompilerServices;
-using System.Globalization;
-using System.Runtime.Serialization;
-
-namespace System.Reflection
-{
-	internal class MonoGenericInst : MonoType
-	{
-		protected Type generic_type;
-		bool initialized;
-
-		[MonoTODO]
-		internal MonoGenericInst ()
-			: base (null)
-		{
-			// this should not be used
-			throw new InvalidOperationException ();
-		}
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern void initialize (MethodInfo[] methods, ConstructorInfo[] ctors, \
                FieldInfo[] fields, PropertyInfo[] properties, EventInfo[] events);
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern MethodInfo[] GetMethods_internal (Type reflected_type);
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern ConstructorInfo[] GetConstructors_internal (Type reflected_type);
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern FieldInfo[] GetFields_internal (Type reflected_type);
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern PropertyInfo[] GetProperties_internal (Type reflected_type);
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern EventInfo[] GetEvents_internal (Type reflected_type);
-
-		private const BindingFlags flags = BindingFlags.Public | BindingFlags.NonPublic |
-		BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly;
-
-		EventInfo[] get_event_info ()
-		{
-			if (generic_type is TypeBuilder)
-				return ((TypeBuilder) generic_type).GetEvents_internal (flags);
-			else
-				return generic_type.GetEvents (flags);
-		}
-
-		void initialize ()
-		{
-			if (initialized)
-				return;
-
-			MonoGenericInst parent = GetParentType ();
-			if (parent != null)
-				parent.initialize ();
-
-			initialize (generic_type.GetMethods (flags),
-				    generic_type.GetConstructors (flags),
-				    generic_type.GetFields (flags),
-				    generic_type.GetProperties (flags),
-				    get_event_info ());
-
-			initialized = true;
-		}
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern MonoGenericInst GetParentType ();
-
-		[MethodImplAttribute(MethodImplOptions.InternalCall)]
-		protected extern MonoGenericInst[] GetInterfaces_internal ();
-
-		public override Type BaseType {
-			get {
-				MonoGenericInst parent = GetParentType ();
-				return parent != null ? parent : generic_type.BaseType;
-			}
-		}
-
-		public override Type[] GetInterfaces ()
-		{
-			return GetInterfaces_internal ();
-		}
-
-		protected override bool IsValueTypeImpl ()
-		{
-			return generic_type.IsValueType;
-		}
-
-		public override MethodInfo[] GetMethods (BindingFlags bf)
-		{
-			ArrayList l = new ArrayList ();
-
-			//
-			// Walk up our class hierarchy and retrieve methods from our
-			// parent classes.
-			//
-
-			Type current_type = this;
-			do {
-				MonoGenericInst gi = current_type as MonoGenericInst;
-				if (gi != null)
-					l.AddRange (gi.GetMethods_impl (bf, this));
-				else if (current_type is TypeBuilder)
-					l.AddRange (current_type.GetMethods (bf));
-				else {
-					// If we encounter a `MonoType', its
-					// GetMethodsByName() will return all the methods
-					// from its parent type(s), so we can stop here.
-					MonoType mt = (MonoType) current_type;
-					l.AddRange (mt.GetMethodsByName (null, bf, false, this));
-					break;
-				}
-
-				if ((bf & BindingFlags.DeclaredOnly) != 0)
-					break;
-				current_type = current_type.BaseType;
-			} while (current_type != null);
-
-			MethodInfo[] result = new MethodInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		protected MethodInfo[] GetMethods_impl (BindingFlags bf, Type reftype)
-		{
-			ArrayList l = new ArrayList ();
-			bool match;
-			MethodAttributes mattrs;
-
-			initialize ();
-
-			MethodInfo[] methods = GetMethods_internal (reftype);
-
-			for (int i = 0; i < methods.Length; i++) {
-				MethodInfo c = methods [i];
-
-				match = false;
-				mattrs = c.Attributes;
-				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
-					if ((bf & BindingFlags.Public) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.NonPublic) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				match = false;
-				if ((mattrs & MethodAttributes.Static) != 0) {
-					if ((bf & BindingFlags.Static) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.Instance) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				l.Add (c);
-			}
-			MethodInfo[] result = new MethodInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		public override ConstructorInfo[] GetConstructors (BindingFlags bf)
-		{
-			ArrayList l = new ArrayList ();
-
-			Type current_type = this;
-			do {
-				MonoGenericInst gi = current_type as MonoGenericInst;
-				if (gi != null)
-					l.AddRange (gi.GetConstructors_impl (bf, this));
-				else if (current_type is TypeBuilder)
-					l.AddRange (current_type.GetConstructors (bf));
-				else {
-					MonoType mt = (MonoType) current_type;
-					l.AddRange (mt.GetConstructors_internal (bf, this));
-					break;
-				}
-
-				if ((bf & BindingFlags.DeclaredOnly) != 0)
-					break;
-				current_type = current_type.BaseType;
-			} while (current_type != null);
-
-			ConstructorInfo[] result = new ConstructorInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		protected ConstructorInfo[] GetConstructors_impl (BindingFlags bf, Type reftype)
-		{
-			ArrayList l = new ArrayList ();
-			bool match;
-			MethodAttributes mattrs;
-
-			initialize ();
-
-			ConstructorInfo[] ctors = GetConstructors_internal (reftype);
-
-			for (int i = 0; i < ctors.Length; i++) {
-				ConstructorInfo c = ctors [i];
-
-				match = false;
-				mattrs = c.Attributes;
-				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
-					if ((bf & BindingFlags.Public) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.NonPublic) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				match = false;
-				if ((mattrs & MethodAttributes.Static) != 0) {
-					if ((bf & BindingFlags.Static) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.Instance) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				l.Add (c);
-			}
-
-			ConstructorInfo[] result = new ConstructorInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		public override FieldInfo[] GetFields (BindingFlags bf)
-		{
-			ArrayList l = new ArrayList ();
-
-			Type current_type = this;
-			do {
-				MonoGenericInst gi = current_type as MonoGenericInst;
-				if (gi != null)
-					l.AddRange (gi.GetFields_impl (bf, this));
-				else if (current_type is TypeBuilder)
-					l.AddRange (current_type.GetFields (bf));
-				else {
-					MonoType mt = (MonoType) current_type;
-					l.AddRange (mt.GetFields_internal (bf, this));
-					break;
-				}
-
-				if ((bf & BindingFlags.DeclaredOnly) != 0)
-					break;
-				current_type = current_type.BaseType;
-			} while (current_type != null);
-
-			FieldInfo[] result = new FieldInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		protected FieldInfo[] GetFields_impl (BindingFlags bf, Type reftype)
-		{
-			ArrayList l = new ArrayList ();
-			bool match;
-			FieldAttributes fattrs;
-
-			initialize ();
-
-			FieldInfo[] fields = GetFields_internal (reftype);
-
-			for (int i = 0; i < fields.Length; i++) {
-				FieldInfo c = fields [i];
-
-				match = false;
-				fattrs = c.Attributes;
-				if ((fattrs & FieldAttributes.FieldAccessMask) == FieldAttributes.Public) {
-					if ((bf & BindingFlags.Public) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.NonPublic) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				match = false;
-				if ((fattrs & FieldAttributes.Static) != 0) {
-					if ((bf & BindingFlags.Static) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.Instance) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				l.Add (c);
-			}
-			FieldInfo[] result = new FieldInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		public override PropertyInfo[] GetProperties (BindingFlags bf)
-		{
-			ArrayList l = new ArrayList ();
-
-			Type current_type = this;
-			do {
-				MonoGenericInst gi = current_type as MonoGenericInst;
-				if (gi != null)
-					l.AddRange (gi.GetProperties_impl (bf, this));
-				else if (current_type is TypeBuilder)
-					l.AddRange (current_type.GetProperties (bf));
-				else {
-					MonoType mt = (MonoType) current_type;
-					l.AddRange (mt.GetPropertiesByName (null, bf, false, this));
-					break;
-				}
-
-				if ((bf & BindingFlags.DeclaredOnly) != 0)
-					break;
-				current_type = current_type.BaseType;
-			} while (current_type != null);
-
-			PropertyInfo[] result = new PropertyInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		protected PropertyInfo[] GetProperties_impl (BindingFlags bf, Type reftype)
-		{
-			ArrayList l = new ArrayList ();
-			bool match;
-			MethodAttributes mattrs;
-			MethodInfo accessor;
-
-			initialize ();
-
-			PropertyInfo[] properties = GetProperties_internal (reftype);
-
-			for (int i = 0; i < properties.Length; i++) {
-				PropertyInfo c = properties [i];
-
-				match = false;
-				accessor = c.GetGetMethod (true);
-				if (accessor == null)
-					accessor = c.GetSetMethod (true);
-				if (accessor == null)
-					continue;
-				mattrs = accessor.Attributes;
-				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
-					if ((bf & BindingFlags.Public) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.NonPublic) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				match = false;
-				if ((mattrs & MethodAttributes.Static) != 0) {
-					if ((bf & BindingFlags.Static) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.Instance) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				l.Add (c);
-			}
-			PropertyInfo[] result = new PropertyInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		public override EventInfo[] GetEvents (BindingFlags bf)
-		{
-			ArrayList l = new ArrayList ();
-
-			Type current_type = this;
-			do {
-				MonoGenericInst gi = current_type as MonoGenericInst;
-				if (gi != null)
-					l.AddRange (gi.GetEvents_impl (bf, this));
-				else if (current_type is TypeBuilder)
-					l.AddRange (current_type.GetEvents (bf));
-				else {
-					MonoType mt = (MonoType) current_type;
-					l.AddRange (mt.GetEvents (bf));
-					break;
-				}
-
-				if ((bf & BindingFlags.DeclaredOnly) != 0)
-					break;
-				current_type = current_type.BaseType;
-			} while (current_type != null);
-
-			EventInfo[] result = new EventInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		protected EventInfo[] GetEvents_impl (BindingFlags bf, Type reftype)
-		{
-			ArrayList l = new ArrayList ();
-			bool match;
-			MethodAttributes mattrs;
-			MethodInfo accessor;
-
-			initialize ();
-
-			EventInfo[] events = GetEvents_internal (reftype);
-
-			for (int i = 0; i < events.Length; i++) {
-				EventInfo c = events [i];
-
-				match = false;
-				accessor = c.GetAddMethod (true);
-				if (accessor == null)
-					accessor = c.GetRemoveMethod (true);
-				if (accessor == null)
-					continue;
-				mattrs = accessor.Attributes;
-				if ((mattrs & MethodAttributes.MemberAccessMask) == MethodAttributes.Public) {
-					if ((bf & BindingFlags.Public) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.NonPublic) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				match = false;
-				if ((mattrs & MethodAttributes.Static) != 0) {
-					if ((bf & BindingFlags.Static) != 0)
-						match = true;
-				} else {
-					if ((bf & BindingFlags.Instance) != 0)
-						match = true;
-				}
-				if (!match)
-					continue;
-				l.Add (c);
-			}
-			EventInfo[] result = new EventInfo [l.Count];
-			l.CopyTo (result);
-			return result;
-		}
-
-		public override Type[] GetNestedTypes (BindingFlags bf)
-		{
-			return generic_type.GetNestedTypes (bf);
-		}
-	}
-}

_______________________________________________
Mono-patches maillist  -  Mono-patches@ximian.com
http://lists.ximian.com/mailman/listinfo/mono-patches


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic