diff options
author | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-08-25 19:17:29 -0400 |
---|---|---|
committer | Jesse Plamondon-Willard <Pathoschild@users.noreply.github.com> | 2021-08-25 19:17:29 -0400 |
commit | e3b38a70f8d710af07732b325a6013ed18aa0fb0 (patch) | |
tree | b579250f8dff5ba71cffc6d54ed85f4ffa15914e /src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs | |
parent | 5030e965dcfa4b8d9c6ed2285ceed5f7cdc472a9 (diff) | |
download | SMAPI-e3b38a70f8d710af07732b325a6013ed18aa0fb0.tar.gz SMAPI-e3b38a70f8d710af07732b325a6013ed18aa0fb0.tar.bz2 SMAPI-e3b38a70f8d710af07732b325a6013ed18aa0fb0.zip |
reorganize new classes
Diffstat (limited to 'src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs')
-rw-r--r-- | src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs b/src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs new file mode 100644 index 00000000..e2a6d21e --- /dev/null +++ b/src/SMAPI/Framework/ModLoading/Symbols/SymbolReaderProvider.cs @@ -0,0 +1,35 @@ +using System.Collections.Generic; +using System.IO; +using Mono.Cecil; +using Mono.Cecil.Cil; + +namespace StardewModdingAPI.Framework.ModLoading.Symbols +{ + internal class SymbolReaderProvider : ISymbolReaderProvider + { + private readonly ISymbolReaderProvider BaseProvider = new DefaultSymbolReaderProvider(); + + private readonly Dictionary<string, Stream> SymbolMapping = new Dictionary<string, Stream>(); + + public void AddSymbolMapping( string dllName, Stream symbolStream ) + { + this.SymbolMapping.Add( dllName, symbolStream ); + } + + public ISymbolReader GetSymbolReader( ModuleDefinition module, string fileName ) + { + if ( this.SymbolMapping.ContainsKey( module.Name ) ) + return new SymbolReader( module, this.SymbolMapping[ module.Name ] ); + + return this.BaseProvider.GetSymbolReader( module, fileName ); + } + + public ISymbolReader GetSymbolReader( ModuleDefinition module, Stream symbolStream ) + { + if ( this.SymbolMapping.ContainsKey( module.Name ) ) + return new SymbolReader( module, this.SymbolMapping[ module.Name ] ); + + return this.BaseProvider.GetSymbolReader( module, symbolStream ); + } + } +} |