public void WriteMethodLookup() { implementation.WriteLine("static MonoMethod* __method = nil;"); implementation.WriteLine("if (!__method) {"); implementation.WriteLineUnindented("#if TOKENLOOKUP"); implementation.Indent++; implementation.WriteLine($"__method = mono_get_method (__{AssemblySafeName}_image, 0x{MetadataToken:X8}, {ObjCTypeName}_class);"); implementation.WriteLineUnindented("#else"); implementation.WriteLine($"const char __method_name [] = \"{ManagedTypeName}:{MonoSignature}\";"); implementation.WriteLine($"__method = mono_embeddinator_lookup_method (__method_name, {ObjCTypeName}_class);"); implementation.Indent--; implementation.WriteLineUnindented("#endif"); implementation.WriteLine("}"); }
void WriteInitialize(string name) { implementation.WriteLine("+ (void) initialize"); implementation.WriteLine("{"); implementation.Indent++; implementation.WriteLine($"if (self != [{name} class])"); implementation.Indent++; implementation.WriteLine("return;"); implementation.Indent--; implementation.WriteLine($"__lookup_assembly_{AssemblyName} ();"); implementation.WriteLineUnindented("#if TOKENLOOKUP"); implementation.WriteLine($"{Name}_class = mono_class_get (__{AssemblyName}_image, 0x{MetadataToken:X8});"); implementation.WriteLineUnindented("#else"); implementation.WriteLine($"{Name}_class = mono_class_from_name (__{AssemblyName}_image, \"{Namespace}\", \"{ManagedName}\");"); implementation.WriteLineUnindented("#endif"); implementation.Indent--; implementation.WriteLine("}"); implementation.WriteLine(); }