- public interface ParameterData {
- Type ParameterType (int pos);
- int Count { get; }
- string ParameterDesc (int pos);
- Parameter.Modifier ParameterModifier (int pos);
+ class PtrHashtable : Hashtable {
+ sealed class PtrComparer : IComparer
+#if NET_2_0
+ , IEqualityComparer
+#endif
+ {
+ private PtrComparer () {}
+
+ public static PtrComparer Instance = new PtrComparer ();
+
+ public int Compare (object x, object y)
+ {
+ if (x == y)
+ return 0;
+ else
+ return 1;
+ }
+#if NET_2_0
+ bool IEqualityComparer.Equals (object x, object y)
+ {
+ return x == y;
+ }
+
+ int IEqualityComparer.GetHashCode (object obj)
+ {
+ return obj.GetHashCode ();
+ }
+#endif
+
+ }
+
+#if NET_2_0
+ public PtrHashtable () : base (PtrComparer.Instance) {}
+#else
+ public PtrHashtable ()
+ {
+ comparer = PtrComparer.Instance;
+ }
+#endif
+
+#if MS_COMPATIBLE
+ //
+ // Workaround System.InvalidOperationException for enums
+ //
+ protected override int GetHash (object key)
+ {
+ TypeBuilder tb = key as TypeBuilder;
+ if (tb != null && tb.BaseType == TypeManager.enum_type && tb.BaseType != null)
+ key = tb.BaseType;
+
+ return base.GetHash (key);
+ }
+#endif