UnityEditor.MonoAOTRegistration.GenerateRegisterClasses C# (CSharp) Method

GenerateRegisterClasses() public static method

public static GenerateRegisterClasses ( HashSet allClasses, TextWriter output ) : void
allClasses HashSet
output System.IO.TextWriter
return void
        public static void GenerateRegisterClasses(HashSet<UnityType> allClasses, TextWriter output)
        {
            output.WriteLine("void RegisterAllClasses() \n{");
            output.WriteLine("\tvoid RegisterAllClassesGranular();");
            output.WriteLine("\tRegisterAllClassesGranular();");
            output.WriteLine("}");
        }

Usage Example

 public static void WriteCPlusPlusFileForStaticAOTModuleRegistration(BuildTarget buildTarget, string file, CrossCompileOptions crossCompileOptions, bool advancedLic, string targetDevice, bool stripping, RuntimeClassRegistry usedClassRegistry, AssemblyReferenceChecker checker)
 {
     using (TextWriter textWriter = new StreamWriter(file))
     {
         string[]             assemblyFileNames   = checker.GetAssemblyFileNames();
         AssemblyDefinition[] assemblyDefinitions = checker.GetAssemblyDefinitions();
         bool      flag      = (crossCompileOptions & CrossCompileOptions.FastICall) != CrossCompileOptions.Dynamic;
         ArrayList arrayList = MonoAOTRegistration.BuildNativeMethodList(assemblyDefinitions);
         if (buildTarget == BuildTarget.iOS)
         {
             textWriter.WriteLine("#include \"RegisterMonoModules.h\"");
             textWriter.WriteLine("#include <stdio.h>");
         }
         textWriter.WriteLine(string.Empty);
         textWriter.WriteLine("#if defined(TARGET_IPHONE_SIMULATOR) && TARGET_IPHONE_SIMULATOR");
         textWriter.WriteLine("\t#define DECL_USER_FUNC(f) void f() __attribute__((weak_import))");
         textWriter.WriteLine("\t#define REGISTER_USER_FUNC(f)\\");
         textWriter.WriteLine("\t\tdo {\\");
         textWriter.WriteLine("\t\tif(f != NULL)\\");
         textWriter.WriteLine("\t\t\tmono_dl_register_symbol(#f, (void*)f);\\");
         textWriter.WriteLine("\t\telse\\");
         textWriter.WriteLine("\t\t\t::printf_console(\"Symbol '%s' not found. Maybe missing implementation for Simulator?\\n\", #f);\\");
         textWriter.WriteLine("\t\t}while(0)");
         textWriter.WriteLine("#else");
         textWriter.WriteLine("\t#define DECL_USER_FUNC(f) void f() ");
         textWriter.WriteLine("\t#if !defined(__arm64__)");
         textWriter.WriteLine("\t#define REGISTER_USER_FUNC(f) mono_dl_register_symbol(#f, (void*)&f)");
         textWriter.WriteLine("\t#else");
         textWriter.WriteLine("\t\t#define REGISTER_USER_FUNC(f)");
         textWriter.WriteLine("\t#endif");
         textWriter.WriteLine("#endif");
         textWriter.WriteLine("extern \"C\"\n{");
         textWriter.WriteLine("\ttypedef void* gpointer;");
         textWriter.WriteLine("\ttypedef int gboolean;");
         if (buildTarget == BuildTarget.iOS)
         {
             textWriter.WriteLine("\tconst char*\t\t\tUnityIPhoneRuntimeVersion = \"{0}\";", Application.unityVersion);
             textWriter.WriteLine("\tvoid\t\t\t\tmono_dl_register_symbol (const char* name, void *addr);");
             textWriter.WriteLine("#if !defined(__arm64__)");
             textWriter.WriteLine("\textern int\t\t\tmono_ficall_flag;");
             textWriter.WriteLine("#endif");
         }
         textWriter.WriteLine("\tvoid\t\t\t\tmono_aot_register_module(gpointer *aot_info);");
         textWriter.WriteLine("#if !(__ORBIS__)");
         textWriter.WriteLine("#define DLL_EXPORT");
         textWriter.WriteLine("#else");
         textWriter.WriteLine("#define DLL_EXPORT __declspec(dllexport)");
         textWriter.WriteLine("#endif");
         textWriter.WriteLine("#if !(TARGET_IPHONE_SIMULATOR)");
         textWriter.WriteLine("\textern gboolean\t\tmono_aot_only;");
         for (int i = 0; i < assemblyFileNames.Length; i++)
         {
             string arg  = assemblyFileNames[i];
             string text = assemblyDefinitions[i].Name.Name;
             text = text.Replace(".", "_");
             text = text.Replace("-", "_");
             text = text.Replace(" ", "_");
             textWriter.WriteLine("\textern gpointer*\tmono_aot_module_{0}_info; // {1}", text, arg);
         }
         textWriter.WriteLine("#endif // !(TARGET_IPHONE_SIMULATOR)");
         foreach (string arg2 in arrayList)
         {
             textWriter.WriteLine("\tDECL_USER_FUNC({0});", arg2);
         }
         textWriter.WriteLine("}");
         textWriter.WriteLine("DLL_EXPORT void RegisterMonoModules()");
         textWriter.WriteLine("{");
         textWriter.WriteLine("#if !(TARGET_IPHONE_SIMULATOR) && !defined(__arm64__)");
         textWriter.WriteLine("\tmono_aot_only = true;");
         if (buildTarget == BuildTarget.iOS)
         {
             textWriter.WriteLine("\tmono_ficall_flag = {0};", (!flag) ? "false" : "true");
         }
         AssemblyDefinition[] array = assemblyDefinitions;
         for (int j = 0; j < array.Length; j++)
         {
             AssemblyDefinition assemblyDefinition = array[j];
             string             text2 = assemblyDefinition.Name.Name;
             text2 = text2.Replace(".", "_");
             text2 = text2.Replace("-", "_");
             text2 = text2.Replace(" ", "_");
             textWriter.WriteLine("\tmono_aot_register_module(mono_aot_module_{0}_info);", text2);
         }
         textWriter.WriteLine("#endif // !(TARGET_IPHONE_SIMULATOR) && !defined(__arm64__)");
         textWriter.WriteLine(string.Empty);
         if (buildTarget == BuildTarget.iOS)
         {
             foreach (string arg3 in arrayList)
             {
                 textWriter.WriteLine("\tREGISTER_USER_FUNC({0});", arg3);
             }
         }
         textWriter.WriteLine("}");
         textWriter.WriteLine(string.Empty);
         AssemblyDefinition assemblyDefinition2 = null;
         for (int k = 0; k < assemblyFileNames.Length; k++)
         {
             if (assemblyFileNames[k] == "UnityEngine.dll")
             {
                 assemblyDefinition2 = assemblyDefinitions[k];
             }
         }
         if (buildTarget == BuildTarget.iOS)
         {
             AssemblyDefinition[] assemblies = new AssemblyDefinition[]
             {
                 assemblyDefinition2
             };
             MonoAOTRegistration.GenerateRegisterInternalCalls(assemblies, textWriter);
             MonoAOTRegistration.ResolveDefinedNativeClassesFromMono(assemblies, usedClassRegistry);
             MonoAOTRegistration.ResolveReferencedUnityEngineClassesFromMono(assemblyDefinitions, assemblyDefinition2, usedClassRegistry);
             if (stripping && usedClassRegistry != null)
             {
                 MonoAOTRegistration.GenerateRegisterClassesForStripping(usedClassRegistry, textWriter);
             }
             else
             {
                 MonoAOTRegistration.GenerateRegisterClasses(usedClassRegistry, textWriter);
             }
         }
         textWriter.Close();
     }
 }
All Usage Examples Of UnityEditor.MonoAOTRegistration::GenerateRegisterClasses