private CefApiDeclarations BuildTypes() { var structs = new List <CefStructType>(); var enums = new List <CefEnumType>(); var stringCollectionTypes = new List <StringCollectionType>(); List <CefExportFunction> stringCollectionFunctions = new List <CefExportFunction>(); List <CefExportFunction> functions = new List <CefExportFunction>(); apiTypes = new SortedDictionary <string, ApiType>(); AddType(new ApiType("void")); AddType(new CefBaseType()); AddType(new CefBasePtrType()); AddType(new CefColorType()); AddType(new CefColorRefType()); AddType(new BooleanInteger()); AddType(new BooleanIntegerOutType()); AddType(new OpaquePtrType("XDisplay")); AddType(new CefPlatformBasePtrType("cef_window_info_t*")); AddType(new CefPlatformBasePtrType("cef_main_args_t*")); AddType(new CefStringType()); AddType(new CefStringPtrType()); AddType(new CefStringUserFreeType()); NumericType.CreateAll(this); var bTypes = AssemblyResources.GetLines("BlittableTypes.txt"); foreach (var bt in bTypes) { var def = bt.Split('|'); if (def.Length == 2 && def[0].Length > 0 && def[1].Length > 0) { AddType(new BlittableType(def[0], def[1])); } } AddType(new VoidPtrPtrType()); foreach (var ed in apiData.CefEnums) { var t = new CefEnumType(ed); AddType(t); enums.Add(t); } foreach (var sd in apiData.CefStructs) { if (!apiTypes.Keys.Contains(sd.Name)) { var structName = sd.Name.Substring(0, sd.Name.Length - 2); var t = new CefStructType(structName, sd.Comments); AddType(t); structs.Add(t); } } foreach (var sd in apiData.CefStructsWindows) { var structName = sd.Name.Substring(0, sd.Name.Length - 2); var t = new CefPlatformStructType(structName, sd.Comments, CefPlatform.Windows); AddType(t); structs.Add(t); } foreach (var sd in apiData.CefStructsLinux) { var structName = sd.Name.Substring(0, sd.Name.Length - 2); var t = new CefPlatformStructType(structName, sd.Comments, CefPlatform.Linux); AddType(t); structs.Add(t); } stringCollectionTypes.Add(new CefStringListType()); stringCollectionTypes.Add(new CefStringMapType()); stringCollectionTypes.Add(new CefStringMultimapType()); foreach (var t in stringCollectionTypes) { AddType(t); } foreach (var sd in apiData.CefStructs) { var t = apiTypes[sd.Name]; if (t.IsCefStructType) { t.AsCefStructType.SetMembers(sd, this); } } foreach (var sd in apiData.CefStructsWindows) { var t = apiTypes[sd.Name.Substring(0, sd.Name.Length - 2) + "_windows"]; t.AsCefStructType.SetMembers(sd, this); } foreach (var sd in apiData.CefStructsLinux) { var t = apiTypes[sd.Name.Substring(0, sd.Name.Length - 2) + "_linux"]; t.AsCefStructType.SetMembers(sd, this); } foreach (var fd in apiData.CefStringCollectionFunctions) { stringCollectionFunctions.Add(new CefExportFunction(null, fd, this)); } foreach (var fd in apiData.CefFunctions) { var f = new CefExportFunction(null, fd, this); functions.Add(f); } if (apiData.CefFunctionsWindows.Count > 0) { System.Diagnostics.Debugger.Break(); } foreach (var fd in apiData.CefFunctionsLinux) { var f = new CefExportFunction(null, fd, this, CefPlatform.Linux); functions.Add(f); } functions.Sort(new CefExportFunction.Comparer()); structs.Sort(new ApiType.Comparer()); enums.Sort(new ApiType.Comparer()); var decl = new CefApiDeclarations(functions.ToArray(), structs.ToArray(), enums.ToArray(), stringCollectionTypes.ToArray(), stringCollectionFunctions.ToArray()); return(decl); }