public static void GenerateFor(string outputDir, EngineApi engineApi, List <EngineFunction> functions) { functions.GroupBy(x => x.Scope) .Select(x => new { Scope = x.Key, Functions = x }) .ToList() .ForEach(x => GenerateFunctionsInScope(outputDir, engineApi, x.Functions, x.Scope)); }
public static void GenerateFor(string outputDir, EngineApi engineApi, List <EngineStruct> structs) { structs.GroupBy(x => x.Scope) .Select(x => new { Scope = x.Key, Structs = x }) .ToList() .ForEach(x => GenerateStructsInScope(outputDir, engineApi, x.Structs, x.Scope)); }
public static void GenerateFor(string outputDir, EngineApi engineApi, List <EngineEnum> enums) { enums.GroupBy(x => x.Scope) .Select(x => new { Scope = x.Key, Enums = x }) .ToList() .ForEach(x => GenerateEnumsInScope(outputDir, engineApi, x.Enums.ToList(), x.Scope)); }
static void Main(string[] args) { //using (IDbConnection db = new SqlConnection("Data Source=Jenkins;Initial Catalog=MMORPG;Integrated Security=True")) //{ // List<Servers> s = new List<Servers>(db.Query<Servers>("Select * from servers")); //} //TableSpecification spec = new TableSpecification(); //spec.AddColumn(new ColumnSpecification()); //spec.AddColumn(new ColumnSpecification()); //spec.AddColumn(new ColumnSpecification()); // //SqlModule sql = new SqlModule(); //sql.ValidateDatabase(spec); // Construct engine Engine engine = new Engine(new EngineConfig("test")); // Create a context int iContextUid = engine.AddApiContext(new ApiContextConfig( new DatabaseAddress("d2sql4.d2.wdm", "northern_ireland_rms_dvl"))); // Get api EngineApi api = engine.GetApi(iContextUid); api.GetContext(); Console.ReadLine(); }
private static void ParseEngineApi() { StreamReader sr = new StreamReader("engineApi.xml"); string content = sr.ReadToEnd(); sr.Close(); EngineApi engineApi = EngineApiParser.Parse(content); Console.WriteLine(engineApi.Enums.Count); Console.WriteLine(engineApi.Structs.Count); Console.WriteLine(engineApi.Functions.Count); Console.WriteLine(engineApi.Classes.Count); foreach (EngineStruct engineStruct in engineApi.Structs) { if (engineStruct.Fields.Count < 1) { Console.WriteLine("No fields defined in struct: " + engineStruct.Name); } } // Careful!!! Don't choose the wrong directory or it might get deleted.. string outputDirectory = "../t3dsharp/T3DSharpFramework/Generated"; if (Directory.Exists(outputDirectory)) { Directory.Delete(outputDirectory, true); } engineApi.Enums .ForEach(e => e.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(e.Docs)).Trim()); engineApi.Structs .ForEach(s => s.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(s.Docs)).Trim()); engineApi.Functions .ForEach(f => f.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(f.Docs)).Trim()); engineApi.Classes .ForEach(c => c.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(c.Docs)).Trim()); engineApi.Classes .ForEach(c => c.Methods.ForEach(m => m.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(m.Docs)).Trim())); engineApi.Classes .ForEach(c => c.Properties.ForEach(p => p.Docs = DotNetXmlDocGenerator.Generate(EngineApiDocStringParser.Parse(p.Docs)).Trim())); EnumGenerator.GenerateFor(outputDirectory, engineApi, engineApi.Enums); StructGenerator.GenerateFor(outputDirectory, engineApi, engineApi.Structs); FunctionGenerator.GenerateFor(outputDirectory, engineApi, engineApi.Functions); ClassGenerator.GenerateFor(outputDirectory, engineApi, engineApi.Classes); PrimitiveSizesGenerator.GenerateFor(outputDirectory, engineApi, engineApi.Primitives); Console.WriteLine("Finished code generation."); }
public static void GenerateFor(string outputDir, EngineApi engineApi, List <EnginePrimitive> primitives) { string output = PrimitiveSizesTemplate.Render(primitives); Console.WriteLine("PrimitiveSizes.cs"); Directory.CreateDirectory(outputDir); using (StreamWriter SW = new StreamWriter($"{outputDir}/PrimitiveSizes.cs")) { SW.Write(output); } }
private static void GenerateStructsInScope(string outputDir, EngineApi engineApi, IEnumerable <EngineStruct> structs, string scope) { scope = string.IsNullOrEmpty(scope) ? "Global" : scope; string output = StructTemplate.Render(structs.ToList(), scope); Console.WriteLine(scope + "_structs.cs"); Directory.CreateDirectory($"{outputDir}/Structs"); using (StreamWriter SW = new StreamWriter($"{outputDir}/Structs/{scope}.cs")) { SW.Write(output); } }
private static void GenerateEnumsInScope(string outputDir, EngineApi engineApi, List <EngineEnum> enums, string scope) { scope = string.IsNullOrEmpty(scope) ? "Global" : scope; string output = EnumTemplate.Render(enums, scope); Console.WriteLine(scope + "_enums.cs"); Directory.CreateDirectory($"{outputDir}/Enums"); using (StreamWriter SW = new StreamWriter($"{outputDir}/Enums/{scope}.cs")) { SW.Write(output); } }
public static void GenerateFor(string outputDir, EngineApi engineApi, List <EngineClass> classes) { List <EngineClass> simObjectClasses = SimObjectTree.BuildAsList(classes); simObjectClasses.ForEach(x => x.Scope = $"Sim{(string.IsNullOrEmpty(x.Scope) ? "" : "." + x.Scope)}"); simObjectClasses.ForEach(x => GenerateFor(outputDir, engineApi, x)); List <EngineClass> otherClasses = classes.Where(c => !simObjectClasses.Any(c2 => c.Name.Equals(c2.Name))) .ToList(); Console.WriteLine("Other classes:"); otherClasses.ForEach(x => Console.WriteLine(x.Name)); Console.WriteLine("End."); otherClasses.ForEach(x => GenerateFor(outputDir, engineApi, x)); }
/// <summary> /// Constructs an instance of the engines api configured to operate within the given context. /// </summary> /// <param name="iApiContextUid">The id of the api context to construct with</param> /// <returns>An api context or null</returns> public EngineApi GetApi(int iApiContextUid) { ApiContext context; if (m_apiContexts.TryGetValue(iApiContextUid, out context)) { EngineApi api = new EngineApi(context, m_engineEvents); m_eventManager.AddEventListener(api, m_iModuleAvailableEventUid); m_eventManager.AddEventListener(api, m_iModuleUnavailableEventUid); m_eventManager.AddEventListener(api, m_iApiConstructedEventUid); m_eventManager.LaunchEvent(m_iApiConstructedEventUid, m_modules); return(api); } return(null); }
private static void GenerateFor(string outputDir, EngineApi engineApi, EngineClass @class) { string scope = (string.IsNullOrEmpty(@class.Scope) ? "Global" : @class.Scope); var scriptObject = new ScriptObject(); scriptObject.Add("class", @class); scriptObject.Add("scope", scope); string output = ClassTemplate.Render(@class, scope); string dir = $"{outputDir}/Classes/{scope.Replace('.', '/')}"; Console.WriteLine($"{dir}/{@class.Name}.cs"); Directory.CreateDirectory(dir); using (StreamWriter SW = new StreamWriter($"{dir}/{@class.Name}.cs") ) { SW.Write(output); } }
private static void GenerateFunctionsInScope(string outputDir, EngineApi engineApi, IEnumerable <EngineFunction> functions, string scope) { scope = (string.IsNullOrEmpty(scope) ? "Global" : scope); int lastSeparatorIndex = scope.LastIndexOf('.'); string scopeClass = scope; if (lastSeparatorIndex > 0) { scopeClass = scope.Substring(lastSeparatorIndex + 1); scope = scope.Substring(0, lastSeparatorIndex); } string output = FunctionTemplate.Render(functions.ToList(), scope, scopeClass); Console.WriteLine($"Functions/{scope}.cs"); string dir = $"{outputDir}/Functions/"; Directory.CreateDirectory(dir); using (StreamWriter SW = new StreamWriter($"{dir}/{scopeClass}.cs")) { SW.Write(output); } }
public void Init() { instance = new EngineApi(); }