Compare commits
2 Commits
7a0ad7e968
...
d986670268
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d986670268 | ||
|
|
30cdc7a23d |
@@ -6,9 +6,11 @@
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACollectionBase_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fa6227be3686afd1e7a497da15c9371b4dc2c39126852fbc263d51ab206739b_003FCollectionBase_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACSharpCodeGenerator_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4aa9136c27fa69d6c91e9d8679c1a1d4b7aabee06e20d4405ee3d91ee05048f0_003FCSharpCodeGenerator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ACSharpCodeGenerator_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F4aa9136c27fa69d6c91e9d8679c1a1d4b7aabee06e20d4405ee3d91ee05048f0_003FCSharpCodeGenerator_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ADefaultInterpolatedStringHandler_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fc1c946eaa6d8ddaaea1b63e936ca8ed2791d9316c5b025a41d445891e8a59ecd_003FDefaultInterpolatedStringHandler_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AList_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fb7208b3f72528d22781d25fde9a55271bdf2b5aade4f03b1324579a25493cd8_003FList_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ARuntimeType_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F0beb96d31db641cf82014cb1a758a330b2dc00_003F5b_003F039af867_003FRuntimeType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003ASortedDictionary_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Febdb3cec3b3875204585daa9fc42159a24cae33b2087ff4dc114d0e6a5a3e9_003FSortedDictionary_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AStringBuilder_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fc6a25ea096494870a1dd94f188bc2634db58c9faa8b319e415cadf49b913d1a_003FStringBuilder_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003F2c8e7ca976f350cba9836d5565dac56b11e0b56656fa786460eb1395857a6fa_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AThrowHelper_002Ecs_002Fl_003A_002E_002E_003F_002E_002E_003F_002Econfig_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FDecompilerCache_003Fdecompiler_003F0beb96d31db641cf82014cb1a758a330b2dc00_003F3e_003F433607bb_003FThrowHelper_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
<s:String x:Key="/Default/CodeInspection/ExcludedFiles/FilesAndFoldersToSkip2/=7020124F_002D9FFC_002D4AC3_002D8F3D_002DAAB8E0240759_002Ff_003AType_002Ecs_002Fl_003AC_0021_003FUsers_003Fairon_003FAppData_003FRoaming_003FJetBrains_003FRider2024_002E3_003Fresharper_002Dhost_003FSourcesCache_003Fe7dbd6fe331ff9a3c4b24dd470ec1f19a71b7c5acf258b81ae7f761cd2b319b_003FType_002Ecs/@EntryIndexedValue">ForceIncluded</s:String>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<Nullable>disable</Nullable>
|
||||
<RootNamespace>CodeGenerator</RootNamespace>
|
||||
<OutputType>Exe</OutputType>
|
||||
<LangVersion>9</LangVersion>
|
||||
<LangVersion>default</LangVersion>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
||||
@@ -1,10 +1,13 @@
|
||||
using System;
|
||||
using System.CodeDom;
|
||||
using System.CodeDom.Compiler;
|
||||
using System.Collections.Concurrent;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using Kaitai;
|
||||
using Microsoft.CSharp;
|
||||
|
||||
@@ -25,28 +28,81 @@ namespace CodeGenerator {
|
||||
private static readonly string[] ListMarkerStr = {"list", "array"};
|
||||
private static readonly string[] ListLenghtStr = {"num", "len", "size"};
|
||||
|
||||
private static ConcurrentQueue<Tuple<string, LogType>> _logQueue = new();
|
||||
|
||||
enum LogType {
|
||||
Info,
|
||||
Warning,
|
||||
Error
|
||||
}
|
||||
|
||||
private static void Log(string message) {
|
||||
Sb.AppendLine(message);
|
||||
Console.WriteLine(message);
|
||||
private static void LogNow(string message, LogType type = LogType.Info) {
|
||||
string msg = $"{DateTime.Now:yy-MM-dd HH:mm:ss}|{type.ToString()}|{message}";
|
||||
lock (Sb){ Sb.AppendLine(msg); }
|
||||
Console.WriteLine(msg);
|
||||
}
|
||||
|
||||
private static void Log(string message, LogType type = LogType.Info) {
|
||||
_logQueue.Enqueue(new (message, type));
|
||||
}
|
||||
|
||||
public static void Main(string[] args) {
|
||||
Log("Reading blend file");
|
||||
ReadBlendFile();
|
||||
LogNow("Setting up logger...");
|
||||
Stopwatch sw = new();
|
||||
sw.Start();
|
||||
long start = 0;
|
||||
|
||||
bool loggerExit = false;
|
||||
Thread logger = new(() => {
|
||||
start = sw.ElapsedTicks;
|
||||
LogNow($"Logger started! In {sw.ElapsedMilliseconds}ms");
|
||||
// ReSharper disable once AccessToModifiedClosure LoopVariableIsNeverChangedInsideLoop
|
||||
while (!loggerExit || !_logQueue.IsEmpty)
|
||||
if (_logQueue.TryDequeue(out var msg))
|
||||
LogNow(msg.Item1, msg.Item2);
|
||||
|
||||
LogNow("Logger exiting...");
|
||||
});
|
||||
logger.Start();
|
||||
|
||||
var initTime = sw.ElapsedTicks;
|
||||
|
||||
Log("Reading blend file");
|
||||
sw.Restart();
|
||||
ReadBlendFile();
|
||||
var readTime = sw.ElapsedTicks;
|
||||
|
||||
Log("Generating C# code...");
|
||||
|
||||
Log("Pass 1: Generating types");
|
||||
sw.Restart();
|
||||
CodeNamespace ns = GenerateTypes(out var rootNs);
|
||||
var genTime = sw.ElapsedTicks;
|
||||
|
||||
sw.Restart();
|
||||
Log("Pass 2: Writing out code");
|
||||
OutputCodeFiles(ns);
|
||||
OutputCodeFiles(rootNs, false);
|
||||
|
||||
var writeTime = sw.ElapsedTicks;
|
||||
sw.Stop();
|
||||
|
||||
Log("Finished generating C# code!");
|
||||
File.AppendAllText("Log.txt", Sb.ToString());
|
||||
Log($"""
|
||||
Timings:
|
||||
Initialization: {(decimal)initTime/ TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
Logger Startup: {(decimal)start / TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
Reading: {(decimal)readTime/ TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
Generating: {(decimal)genTime/ TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
Writing: {(decimal)writeTime/ TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
----------------------------
|
||||
Total: {(decimal)(initTime+readTime+genTime+writeTime) / TimeSpan.TicksPerMillisecond,10:N4} ms
|
||||
""");
|
||||
loggerExit = true;
|
||||
while(logger.IsAlive) { }
|
||||
Thread.Sleep(1000);
|
||||
lock (Sb) {
|
||||
File.AppendAllText("Log.txt", Sb.ToString());
|
||||
}
|
||||
}
|
||||
|
||||
private static void ReadBlendFile() {
|
||||
|
||||
Reference in New Issue
Block a user