OpenSWMM Engine  6.0.0-alpha.1
Data-oriented, plugin-extensible SWMM Engine (6.0.0-alpha.1)
Loading...
Searching...
No Matches
IPluginComponentInfo.hpp
Go to the documentation of this file.
1
33#ifndef OPENSWMM_IPLUGIN_COMPONENT_INFO_HPP
34#define OPENSWMM_IPLUGIN_COMPONENT_INFO_HPP
35
36#include <string>
37#include <vector>
38#include "PluginState.hpp"
39
40namespace openswmm {
41
42/* Forward declarations */
43class IOutputPlugin;
44class IReportPlugin;
45
58public:
59 virtual ~IPluginComponentInfo() = default;
60
61 // -----------------------------------------------------------------------
62 // Identity & metadata
63 // -----------------------------------------------------------------------
64
69 virtual std::string id() const = 0;
70
75 virtual std::string caption() const = 0;
76
80 virtual std::string description() const = 0;
81
86 virtual std::string version() const = 0;
87
92 virtual std::string vendor() const = 0;
93
98 virtual std::string url() const = 0;
99
104 virtual std::vector<std::string> tags() const { return {}; }
105
106 // -----------------------------------------------------------------------
107 // Licensing
108 // -----------------------------------------------------------------------
109
115 virtual std::string license_type() const = 0;
116
122 virtual std::string license_text() const = 0;
123
124 // -----------------------------------------------------------------------
125 // Capability queries
126 // -----------------------------------------------------------------------
127
133 virtual bool provides_output() const = 0;
134
140 virtual bool provides_report() const = 0;
141
142 // -----------------------------------------------------------------------
143 // Factory methods
144 // -----------------------------------------------------------------------
145
155 virtual IOutputPlugin* create_output_plugin() const { return nullptr; }
156
164 virtual IReportPlugin* create_report_plugin() const { return nullptr; }
165};
166
167// ---------------------------------------------------------------------------
168// C factory function signature that plugin .so/.dylib/.dll must export
169// ---------------------------------------------------------------------------
170
188
189} /* namespace openswmm */
190
191#endif /* OPENSWMM_IPLUGIN_COMPONENT_INFO_HPP */
Plugin lifecycle state enumerator.
Interface for output-writing plugins.
Definition IOutputPlugin.hpp:57
Describes a plugin component: metadata, capabilities, and factory methods.
Definition IPluginComponentInfo.hpp:57
virtual std::vector< std::string > tags() const
Additional tags or keywords for discovery.
Definition IPluginComponentInfo.hpp:104
virtual std::string description() const =0
Detailed description of what this plugin does.
virtual IReportPlugin * create_report_plugin() const
Create a new IReportPlugin instance.
Definition IPluginComponentInfo.hpp:164
virtual ~IPluginComponentInfo()=default
virtual bool provides_report() const =0
Returns true if this plugin provides an IReportPlugin instance.
virtual std::string url() const =0
URL to the plugin's home page or documentation.
virtual bool provides_output() const =0
Returns true if this plugin provides an IOutputPlugin instance.
virtual std::string id() const =0
Unique plugin identifier in reverse-DNS notation.
virtual std::string caption() const =0
Human-readable display name of the plugin.
virtual IOutputPlugin * create_output_plugin() const
Create a new IOutputPlugin instance.
Definition IPluginComponentInfo.hpp:155
virtual std::string license_text() const =0
Full license text for this plugin.
virtual std::string license_type() const =0
SPDX license identifier for this plugin.
virtual std::string vendor() const =0
Vendor / author name.
virtual std::string version() const =0
Plugin version string (Semantic Versioning recommended).
Interface for report-writing plugins.
Definition IReportPlugin.hpp:45
Definition Controls.cpp:24
IPluginComponentInfo *(*)() PluginInfoFactory
Typedef for the C factory function that plugin libraries must export.
Definition IPluginComponentInfo.hpp:187