// </summary>
public sealed class RootTypes : TypeContainer
{
+ // TODO: It'd be so nice to have generics
+ Hashtable anonymous_types;
+
public RootTypes ()
: base (null, null, MemberName.Null, null, Kind.Root)
{
types = new ArrayList ();
+ anonymous_types = new Hashtable ();
+ }
+
+ public void AddAnonymousType (AnonymousTypeClass type)
+ {
+ ArrayList existing = (ArrayList)anonymous_types [type.Parameters.Count];
+ if (existing == null) {
+ existing = new ArrayList ();
+ anonymous_types.Add (type.Parameters.Count, existing);
+ }
+ existing.Add (type);
}
public override bool IsClsComplianceRequired ()
return true;
}
+ public AnonymousTypeClass GetAnonymousType (ArrayList parameters)
+ {
+ ArrayList candidates = (ArrayList) anonymous_types [parameters.Count];
+ if (candidates == null)
+ return null;
+
+ int i;
+ foreach (AnonymousTypeClass at in candidates) {
+ for (i = 0; i < parameters.Count; ++i) {
+ if (!parameters [i].Equals (at.Parameters [i]))
+ break;
+ }
+
+ if (i == parameters.Count)
+ return at;
+ }
+
+ return null;
+ }
+
public override bool GetClsCompliantAttributeValue ()
{
return CodeGen.Assembly.IsClsCompliant;
return true;
}
- public override TypeContainer AddPartial (TypeContainer nextPart, bool is_interface)
+ public override TypeContainer AddPartial (TypeContainer nextPart)
{
- return AddPartial (nextPart, nextPart.Name, is_interface);
+ return AddPartial (nextPart, nextPart.Name);
}
}
throw new InternalErrorException ("should not be called");
}
- public override MemberList FindMembers (MemberTypes mt, BindingFlags bf, MemberFilter filter, object criteria)
- {
- throw new InternalErrorException ("should not be called");
- }
-
public override MemberCache MemberCache {
get { return PartialContainer.MemberCache; }
}