HAL  v4.5.0-133-g64838ea8d
The Hardware Analyzer - a comprehensive reverse engineering and manipulation framework for gate-level netlists.
hal::BasePluginInterface Class Referenceabstract

#include <hal_core/plugin_system/plugin_interface_base.h>

Inheritance diagram for hal::BasePluginInterface:
Inheritance graph
Collaboration diagram for hal::BasePluginInterface:
Collaboration graph

Public Member Functions

 BasePluginInterface ()=default
 
virtual ~BasePluginInterface ()
 
virtual void initialize ()
 
virtual std::string get_name () const =0
 
virtual std::string get_version () const =0
 
virtual std::string get_description () const
 
virtual std::set< std::string > get_dependencies () const
 
template<typename... Args>
void log (const Args &... args) const
 
virtual void on_load ()
 
virtual void on_unload ()
 
virtual void initialize_logging ()
 
virtual std::vector< AbstractExtensionInterface * > get_extensions () const
 
template<typename T >
T * get_first_extension () const
 
void delete_extension (AbstractExtensionInterface *aeif)
 

Protected Attributes

std::vector< AbstractExtensionInterface * > m_extensions
 

Detailed Description

The base class for all HAL plugins. Every plugin has to derive from this class and implement at least get_name and get_version.

Definition at line 58 of file plugin_interface_base.h.

Constructor & Destructor Documentation

◆ BasePluginInterface()

hal::BasePluginInterface::BasePluginInterface ( )
default

◆ ~BasePluginInterface()

hal::BasePluginInterface::~BasePluginInterface ( )
virtual

Definition at line 9 of file plugin_interface_base.cpp.

References m_extensions.

Member Function Documentation

◆ delete_extension()

void hal::BasePluginInterface::delete_extension ( AbstractExtensionInterface *  aeif)

Delete extension instance and free memory

Parameters
aeifThe extenstion instance to be deleted. Nothing will be done if not found in list.

Definition at line 42 of file plugin_interface_base.cpp.

References m_extensions.

Referenced by hal::GexfWriterPlugin::on_unload(), hal::HGLParserPlugin::on_unload(), hal::HGLWriterPlugin::on_unload(), hal::LibertyParserPlugin::on_unload(), hal::VerilogParserPlugin::on_unload(), hal::VerilogWriterPlugin::on_unload(), and hal::VHDLParserPlugin::on_unload().

◆ get_dependencies()

◆ get_description()

◆ get_extensions()

std::vector< AbstractExtensionInterface * > hal::BasePluginInterface::get_extensions ( ) const
virtual

Get GUI/CLI/FAC extension functionality if implemented by derived class

Returns
pointer to instance implementing extensions

Definition at line 37 of file plugin_interface_base.cpp.

References m_extensions.

Referenced by hal::GuiPluginManager::getGuiExtensions(), and hal::GuiPluginEntry::updateFromLoaded().

◆ get_first_extension()

template<typename T >
T* hal::BasePluginInterface::get_first_extension ( ) const
inline

Get first extension of given type T.

Returns
pointer to first extension of type T or nullptr if no such extension exists.

Definition at line 140 of file plugin_interface_base.h.

References hal::T.

Referenced by hal::plugin_manager::get_first_extension().

◆ get_name()

◆ get_version()

◆ initialize()

void hal::BasePluginInterface::initialize ( )
virtual

Plugins utilize two phase construction. Always populate all members etc in the initialize function which is automatically called by plugin_manager::get_plugin_instance()

Reimplemented in hal::Z3UtilsPlugin, hal::PerfTestPlugin, hal::GuiExtensionDemoPlugin, hal::DotViewerPlugin, and hal::ClockTreeExtractorPlugin.

Definition at line 15 of file plugin_interface_base.cpp.

◆ initialize_logging()

void hal::BasePluginInterface::initialize_logging ( )
virtual

Initializes the logging channel(s) of a plugin.
If not overwritten, a logging channel equal to the plugin name is created.

Reimplemented in hal::PluginGui.

Definition at line 57 of file plugin_interface_base.cpp.

References hal::LogManager::add_channel(), hal::LogManager::create_file_sink(), hal::LogManager::create_gui_sink(), hal::LogManager::create_stdout_sink(), hal::LogManager::get_instance(), and get_name().

◆ log()

template<typename... Args>
void hal::BasePluginInterface::log ( const Args &...  args) const
inline

Shorthand for fast text logging.

Parameters
[in]args- The format string, followed by values.

Definition at line 108 of file plugin_interface_base.h.

References log_info.

◆ on_load()

◆ on_unload()

Member Data Documentation

◆ m_extensions


The documentation for this class was generated from the following files: