private void GenerateInterface(Interface x)
{
TypeNode newClass = Templates.GetTypeTemplateByName("Interface");
Replacer.Replace(newClass, newClass.Name, x.Name);
TypeNode createMethods = (TypeNode)Templates.GetMemberByName(newClass.Members, "CreateMethods");
for (int i = 0; i < x.Members.Count; i++)
{
ZMethod zMethod = x.Members[i] as ZMethod;
Debug.Assert(zMethod != null);
Class methodClass = GenerateInterfaceMethod(zMethod);
newClass.Members.Add(methodClass);
methodClass.DeclaringType = newClass;
methodClass.Flags = (methodClass.Flags & ~TypeFlags.VisibilityMask) | TypeFlags.NestedFamORAssem;
TypeNode tn = Templates.GetTypeTemplateByName("InterfaceExtras");
Method member = (Method)Templates.GetMemberByName(tn.Members, "__CreateInterfaceMethod");
member.Name = new Identifier("Create" + methodClass.Name.Name);
Replacer.Replace(member, new Identifier("__InterfaceMethod"), methodClass.Name);
member.DeclaringType = createMethods;
createMethods.Members.Add(member);
}
// Add the emitted class to our Zing application class
InstallType(newClass);
}