From 0619812089d54ca89d2c5a81312b99c181510e45 Mon Sep 17 00:00:00 2001 From: Marc Hernandez Date: Sun, 26 May 2024 20:30:53 -0700 Subject: [PATCH] x) Refactor Resource.cs: Change class `Ref` to be abstract, update method signatures, and adjust class inheritance hierarchy. x) Update LoadHolder to be an abstract class with an overridden load method. x) Modify Mgr class initialization and loader handling in Resource.mgr. --- res/Resource.cs | 36 ++++++++++++++++-------------------- 1 file changed, 16 insertions(+), 20 deletions(-) diff --git a/res/Resource.cs b/res/Resource.cs index 65f4431..6d9f08f 100644 --- a/res/Resource.cs +++ b/res/Resource.cs @@ -24,7 +24,7 @@ public interface Res_old } [DebuggerDisplay("Path = {path}")] -public class Ref : lib.I_Serialize +abstract public class Ref : lib.I_Serialize { static public bool s_verboseLogging = false; @@ -47,13 +47,13 @@ public class Ref : lib.I_Serialize _dbgLine = dbgLine; } - virtual public object lookup( + abstract public object lookup( string reason = "", [CallerMemberName] string dbgName = "", [CallerFilePath] string dbgPath = "", [CallerLineNumber] int dbgLine = 0 - ) => default; + ); virtual public void OnChange() @@ -116,12 +116,13 @@ public class Ref : Ref where T : class, new() base( !string.IsNullOrWhiteSpace(filename) ? filename : $"{{{dbgName}_{log.whatFile(dbgPath)}}}" , reason, dbgName, dbgPath, dbgLine ) { if( s_verboseLogging ) log.info( $"Ref {GetType().Name} {GetType().GenericTypeArguments[0]} path {Filename}" ); + m_res = default; } override internal void load() { - m_res = Mgr.load( Filename, _reason, _dbgName, _dbgPath, _dbgLine, _dbgExp ); + m_res = Mgr.load( Filename, _reason, _dbgName, _dbgPath, _dbgLine ); if( s_verboseLogging ) log.info( $"Ref.load {GetType().Name} {GetType().GenericTypeArguments[0]} path {Filename}" ); } @@ -161,23 +162,20 @@ public class Ref : Ref where T : class, new() } [NonSerialized] - protected T m_res; + protected T? m_res; } public class Resource { - static public Mgr mgr; + static public Mgr mgr = new(); } public delegate T Load( string filename ); -class LoadHolder +abstract class LoadHolder { - internal virtual object load() - { - return null; - } + public abstract object load(); } @@ -190,7 +188,7 @@ class LoadHolder : LoadHolder public Load _fnLoad; - internal override object load() + public override object load() { return load(); } @@ -212,9 +210,9 @@ class ResCache where T : class, new() public class Mgr { + static public void startup() { - Resource.mgr = new Mgr(); } static public void register( Load loader ) @@ -266,7 +264,7 @@ public class Mgr var lh = Activator.CreateInstance( lhType, loader ) as LoadHolder; - ImmutableInterlocked.TryAdd( ref Resource.mgr.m_loaders, t, lh ); + ImmutableInterlocked.TryAdd( ref Resource.mgr.m_loaders!, t, lh ); } } return; @@ -319,13 +317,11 @@ public class Mgr } */ - static public T? load( string filename, + static public T load( string filename, string reason = "", [CallerMemberName] string dbgName = "", [CallerFilePath] string dbgPath = "", - [CallerLineNumber] int dbgLine = 0, - [CallerArgumentExpression("fn")] - string dbgExp = default + [CallerLineNumber] int dbgLine = 0 ) where T : class, new() { if( ResCache.s_cache.TryGetValue( filename, out var holder ) ) @@ -373,7 +369,7 @@ public class Mgr { var loader = loaderGen as LoadHolder; - var v = loader._fnLoad( filename ); + var v = loader!._fnLoad( filename ); var weak = new WeakReference( v ); @@ -408,7 +404,7 @@ public class Mgr static ImmDefLoad s_deferredLoad = ImmDefLoad.Empty; - Mgr() + public Mgr() { log.info( $"Creating Res.Mgr" );