本文整理汇总了C#中CodeGenContext.Close方法的典型用法代码示例。如果您正苦于以下问题:C# CodeGenContext.Close方法的具体用法?C# CodeGenContext.Close怎么用?C# CodeGenContext.Close使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CodeGenContext
的用法示例。
在下文中一共展示了CodeGenContext.Close方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: GenerateClassForFile
private PERWAPI.ClassDef GenerateClassForFile(CodeGenContext context, string file_name, bool autoLoad, List<SOURCEFILE> files) {
if (fileClass == null)
CreateClassForFile(context, file_name);
// internal static object Load(object recv, Caller caller, Proc block)
LoadMethod = context.CreateMethod(fileClass, MethAttr.PublicStatic, "Load", PrimitiveType.Object, new Param[] { new Param(ParamAttr.Default, "recv", PrimitiveType.Object), new Param(ParamAttr.Default, "caller", Runtime.FrameRef) });
LoadMethod.startMethod(location);
AddScopeLocals(LoadMethod);
AddScopeBody(LoadMethod);
LoadMethod.ReleaseLocal(0, true);
// }
LoadMethod.Close();
if (autoLoad) {
// accessing this field should trigger the .cctor to load the main source file
CodeGenContext.AddField(fileClass, FieldAttr.PublicStatic, "loaded", PrimitiveType.Boolean);
// public static .cctor() {
CodeGenContext cctor = context.CreateStaticConstructor(fileClass);
// register other ruby source files in assembly so that they can be loaded if requested
foreach (SOURCEFILE f in files) {
if (f.fileClass == null)
f.CreateClassForFile(context, File.stripExtension(f.location.file));
// Ruby.Runtime.Program.AddProgram(filename, fileClass);
cctor.ldstr(File.stripExtension(f.location.file));
cctor.ldtoken(f.fileClass);
cctor.call(Runtime.SystemType.GetTypeFromHandle);
cctor.call(Runtime.Program.AddProgram);
}
// Load(Object.ruby_top_self, null);
cctor.ldsfld(Runtime.Object.ruby_top_self);
cctor.ldnull();
cctor.call(LoadMethod.Method);
cctor.pop();
cctor.ret();
// }
cctor.Close();
}
return fileClass;
}