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));
 }
Exemple #2
0
 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));
 }
Exemple #3
0
 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));
 }
Exemple #4
0
        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();
        }
Exemple #5
0
        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.");
        }
Exemple #6
0
        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);
            }
        }
Exemple #7
0
        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);
            }
        }
Exemple #8
0
        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));
        }
Exemple #10
0
        /// <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);
            }
        }
Exemple #13
0
 public void Init()
 {
     instance = new EngineApi();
 }