HAL  v4.5.0-83-g30c8f0afc
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(), and hal::dataflow::Result::open_dot_in_viewer().

◆ 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, and hal::DotViewerPlugin.

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: