}\r
}\r
\r
-\r
/// <summary>\r
/// </summary>\r
/// <param name="cg"></param>\r
{\r
codgen = cg;\r
\r
+ TypeBuilder.CreateType();\r
+ cg.TypeManager[name] = TypeBuilder;\r
+\r
+ if (methods != null) {\r
+ foreach (Method m in methods) \r
+ m.Resolve (this);\r
+ }\r
+\r
if (methods != null) {\r
foreach (Method m in methods) {\r
m.Emit (this);\r
if (m.IsEntryPoint)\r
- cg.SetEntryPoint (m.Info);\r
+ cg.SetEntryPoint (m.Builder);\r
}\r
- }\r
- \r
- TypeBuilder.CreateType();\r
+ } \r
}\r
+ \r
+ // This can be removed when System.Reflection.Emit.TypeBuilder.GetMethod is implemented\r
+ // TODO: This function needs allot of work\r
+ public MethodInfo GetMethod (string method_name, BindingFlags binding_flags,\r
+ Type[] param_type_list)\r
+ {\r
+ foreach (Method method in methods) {\r
+ if (method.Name != method_name)\r
+ continue;\r
+ ParameterInfo[] param_info = method.Builder.GetParameters ();\r
+ if (param_info == null) {\r
+ if (param_type_list.Length == 0)\r
+ return method.Builder;\r
+ else\r
+ continue;\r
+ }\r
+ int size = param_info.Length;\r
+ if (param_type_list.Length != size)\r
+ continue;\r
+ for (int i=0; i<size; i++) {\r
+ if (param_type_list[i] != param_info[i].ParameterType)\r
+ goto end; \r
+ }\r
\r
+ return method.Builder;\r
+ end: continue;\r
+ }\r
+ \r
+ return null;\r
+ }\r
}\r
}\r
\r