public void GenerateAssemblyFile() { using (var fs = GenerateOutputFile("CefAssembly.cs")) { using (var cs = new CSharpCodeWriter(fs)) { cs.WriteDefaultUsingDirectives(); cs.BeginNamespace(_settings.Namespace); cs.BeginClass("CefAssembly", false); cs.WriteLine("public const string Name = \"libcef.dll\";"); cs.EndClass(); cs.EndNamespace(); } } }
private void GenerateStruct(CSharpCodeWriter cw, IEnumerable<string> structs, string prefix = "", string className = "") { var delegates = new List<string>(); foreach (var @struct in structs) { var name = CSharpCodeConverter.ExtractStructName(@struct); cw.BeginStruct(prefix + name); var members = FindStructMembers(@struct); foreach (var member in members) { IEnumerable<string> attributes; bool isFunctionPointer; var convertedMember = CSharpCodeConverter.ConvertMember(member, out isFunctionPointer, out attributes); foreach (var attribute in attributes) { cw.Write(attribute); } cw.WriteLine(convertedMember); if (isFunctionPointer) { delegates.Add(member); } } cw.EndStruct(); cw.WriteLine(string.Empty); } var container = className + "Delegates"; cw.BeginClass(container); foreach (var @delegate in delegates) { string name; var @d = CSharpCodeConverter.CreateDelegate(@delegate, out name).Trim(); var original = name; var number = 1; while (_delegateArchive.ContainsKey(name)) { var c = number.ToString().First(); name = name.TrimEnd(c) + (number+=1); } if (_delegateArchive.ContainsKey(name)) continue; @d = @d.Replace(original, name); cw.WriteLine(@d); _delegateArchive.Add(name, @d); } cw.EndClass(); }
private static void GenerateClass(CSharpCodeWriter cw, IEnumerable<string> methods, string name, string suffix) { cw.BeginClass(name.Split('.')[0], true, suffix); var enumerable = methods as string[] ?? methods.ToArray(); foreach (var method in enumerable) { cw.WriteMethod(method); if (enumerable.Last() != method) { cw.WriteLine(string.Empty); } } cw.EndClass(); }