From 0a4bbce3f2c38a37d4fbcd25780cfaa58788bd86 Mon Sep 17 00:00:00 2001 From: YoshiRulz Date: Sun, 28 Nov 2021 03:29:47 +1000 Subject: [PATCH] Some additions to ReflectionCache source generator --- .../ReflectionCacheGenerator.cs | 14 +++++++++++++- References/BizHawk.SrcGen.ReflectionCache.dll | Bin 11264 -> 12288 bytes 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs b/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs index c07bda0797..6eac7ebaf7 100644 --- a/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs +++ b/ExternalProjects/BizHawk.SrcGen.ReflectionCache/ReflectionCacheGenerator.cs @@ -64,15 +64,19 @@ namespace BizHawk.SrcGen.ReflectionCache var src = $@"#nullable enable using System; +using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; {(nSpace == "BizHawk.Common" ? string.Empty : "\nusing BizHawk.Common;")} +using BizHawk.Common.StringExtensions; namespace {nSpace} {{ public static class ReflectionCache {{ + private const string EMBED_PREFIX = ""{nSpace}.""; + private static Type[]? _types = null; private static readonly Assembly Asm = typeof({nSpace}.ReflectionCache).Assembly; @@ -81,11 +85,19 @@ namespace {nSpace} public static Type[] Types => _types ??= Asm.GetTypesWithoutLoadErrors().ToArray(); + public static IEnumerable EmbeddedResourceList(string extraPrefix) + {{ + var fullPrefix = EMBED_PREFIX + extraPrefix; + return Asm.GetManifestResourceNames().Where(s => s.StartsWith(fullPrefix)).Select(s => s.RemovePrefix(fullPrefix)); + }} + + public static IEnumerable EmbeddedResourceList() + => EmbeddedResourceList(string.Empty); /// not found public static Stream EmbeddedResourceStream(string embedPath) {{ - var fullPath = $""{nSpace}.{{embedPath}}""; + var fullPath = EMBED_PREFIX + embedPath; return Asm.GetManifestResourceStream(fullPath) ?? throw new ArgumentException($""resource at {{fullPath}} not found"", nameof(embedPath)); }} }} diff --git a/References/BizHawk.SrcGen.ReflectionCache.dll b/References/BizHawk.SrcGen.ReflectionCache.dll index eec0b87e340f376357598eb0d46cfa0d4683c69b..961d13f4c7e89fd63a3288b0f1fcb842dca292e1 100644 GIT binary patch delta 1516 zcma)6T}+!*7=F(A+K*8P6vztn2fw!apn%l5WlXaT(2XJqj1C5yTNcOPa83%g#h?VN zSy+tm!sbLxNVW_7OI*CrFLJeAIAgXOiE($vEL#XSF7YQZM$s^zuXcz7(W24_UQE*eFHS`u|4s&0r-^)eak?v2bBn`@q&N&aYMYAe-km{mYU9f0+lS?_-N7v|pYN(Ja*X54DYF(V6HYNxX|z=U;|?wBp3m#)p0 zbCWa7&!MmD^=i@CEvsGXXXj&&M^j8u&)94YH8SEORYQ$7!DP7S^#M)J*hCX1Q8{Ci ztqV1z$GnCM2>174gds38ggg2>4{%QhtSkDI^akCyLG=(yVL}sb?9FLqtmmP^{>o;2 ziG=VVfTYmzhVwYrKQLomF1#aJvQ^jhWl@G*j0HGX^_8xp4Eu80S=8bi+S)hS%F&&- zEnpSaT2Y&}`<5ujoLCXVFtinM25-p~k>Uz@oU4$wRg-5a8#yE_Ls*bu^+M?`ant&+ zRC9?t>SFaVb3Z2VJjW=8k;Z9i38WB32ayD4lGw0{dLL3w@5f?H&3hYKqv)frZAoAZ z?U<%!d#5(e?}3XWfkBMZlENgVVM+#&d0#DipKBY=-;^en+Qep%uNzNtJ%DErM=zxq zI&qYK`#3{nxEw`DP5A0n%$JqtzEG2OhV{E|K&T48VRrIB0#mt*le~5)m)zd_E@@GJ z2Et8U4A;Ioa-Yp$n07+;**MoxoTA^f>Z&pKZ)o{o9vo^TJ^r2Nd`-tI2R8~6K|PCo z1kcjjX18Op6K&yYx4|y-AT4QXM;J$%o)Jbgm229j_{d{3^^xOlGyloeOWQch{^AY_ zn~y%2(C%X)$E+&xoBzMGmG??ppJynvld{Wh-m`7)dz5V(=kFwqmzc;Nt1IxRc;vt8 zJI?NoVuZ;I+Lf`+*PIb<&)D=QbN&x{-aGNN@6)S8*Hx9VCgQ3hm~v}+dDj+wYkB5X zS+Ygyn)P-tBt7HWyYmp;amjzHt3PdG0S1Pgo>MO UR!QxeCVy(S${KzY+3f{?0ePN2XaE2J delta 858 zcmXX^T}YEr7=F(Aw&VO9`zxn&TW#Nd)m)ZkMbV#$8AY>FGAUMO^h2gIDHzHuiin8D zAtI?REQpi}`plcCB#P)FgS;sb>85V0yD+id%^i5pd7g*oc@O6&ok;J$aYg%}Cq5xR zzCrU9v1%Ylf>;n^b(!H7%hXn2cUDLMf0T@WkvR>RiH~jp_DMfqCR<};L3c`6&2XBDxYC^bskC<)=`)K zM)dMBX2S-eO|T*a#c#t*j@c2BO@+-R0@sXfOyDm%SuNh7n>pb{ul};|AKQ4j^rH~4 zV@3A0a1n#}POKrvGNqGZf;q4^#}=FpwB?;)d}jJ=(Pl+%ww5kc_(k00KHf&NpF7ac z0$jr&59II`*==3T#`T9*MP)DKi0goCEPL#6sZi00!#Ir&^q`ASJ0Tx1P$(1blk%L$ zBATFo)-4ZA7j2CH1gHQkfO+G9HIFr;?&|Sj-wBneo#BbY&>wpV~O$Gd*bic$uEIfwo^_9du&`Nig3hDqS%oh;1-kK64JQyM91J=uw8LZ*D*q6 zqEBlI%IguQ&vO^|$Me6Jy26vizKq|=Ep__asLFIp#jL`sYjk_;C(Be9{0G&2y8i$G