FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

GitHub Viewer

#region License /* * Copyright (C) 1999-2023 Pavel Tomin. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; see the file COPYING. If not, write to * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. */ #endregion using Microsoft.Scripting.Hosting; using Reko.Core.Scripts; using System; using System.Collections.Generic; namespace Reko.Scripts.Python { using EventHandlersMap = Dictionary; /// /// Event handlers for processing Reko events in user-defined scripts. /// public class RekoEventsAPI { private readonly Dictionary events; private readonly EventHandlersMap handlers; public RekoEventsAPI(ScriptEngine engine) { events = new Dictionary { {"program_loaded", ScriptEvent.OnProgramLoaded}, {"program_decompiling", ScriptEvent.OnProgramDecompiling}, {"program_scanned", ScriptEvent.OnProgramScanned}, {"program_decompiled", ScriptEvent.OnProgramDecompiled}, }; handlers = new EventHandlersMap(); this.Engine = engine; } public readonly ScriptEngine Engine; public ScriptEvent? GetEventByName(string name) { if (!events.TryGetValue(name, out var eventType)) { return null; } return eventType; } public void AddEventHandler(ScriptEvent @event, Action handler) { if (!handlers.TryGetValue(@event, out var eventHandlers)) { eventHandlers = new List(); handlers[@event] = eventHandlers; } eventHandlers.Add(handler); } public void FireEvent(ScriptEvent @event, object programWrapper) { if (!handlers.TryGetValue(@event, out var eventHandlers)) return; foreach (var eventHandler in eventHandlers) { eventHandler(programWrapper); } } } }

Back | FazBrowse Home | New Git URL