17 #ifndef SDF_PLUGIN_HH_
18 #define SDF_PLUGIN_HH_
35 #pragma warning(disable: 4251)
41 inline namespace SDF_VERSION_NAMESPACE {
68 public:
Plugin(
const std::string &_filename,
const std::string &_name,
69 const std::string &_xmlContent =
"");
80 const std::string &_name,
81 const std::string &_xmlContent =
"");
95 public:
const std::string &
Name()
const;
101 public:
void SetName(
const std::string &_name);
114 public:
const std::vector<sdf::ElementPtr> &
Contents()
const;
148 const std::string _content);
204 return _out << _plugin.
ToElement()->ToString(
"");
213 std::ostringstream stream;
214 stream <<
"<sdf version='" << SDF_VERSION <<
"'>";
215 stream << std::string(std::istreambuf_iterator<char>(_in), {});
225 _plugin.
Load(sdfParsed->Root()->GetFirstElement());
237 private:
void Init(
sdf::Errors &_errors,
const std::string &_filename,
238 const std::string &_name,
const std::string &_xmlContent);
241 private: std::unique_ptr<sdf::PluginPrivate> dataPtr;
const std::vector< sdf::ElementPtr > & Contents() const
Get the plugin contents.
sdf::ElementPtr ToElement() const
Create and return an SDF element filled with data from this plugin.
void SetFilename(const std::string &_filename)
Set the filename of the shared library.
friend std::ostream & operator<<(std::ostream &_out, const sdf::Plugin &_plugin)
Output stream operator for a Plugin.
Definition: Plugin.hh:201
bool InsertContent(const std::string _content)
Insert XML content into this plugin.
sdf::ElementPtr Element() const
Get a pointer to the SDF element that was used during load.
void ClearContents()
Remove the contents of the plugin, this is everything that is a child element of the <plugin>.
Plugin & operator=(Plugin &&_plugin) noexcept
Move assignment operator.
sdf::ElementPtr ToElement(sdf::Errors &_errors) const
Create and return an SDF element filled with data from this plugin.
Plugin(const std::string &_filename, const std::string &_name, const std::string &_xmlContent="")
A constructor that initializes the plugin's filename, name, and optionally the content.
void InsertContent(sdf::Errors &_errors, const sdf::ElementPtr _elem)
Insert an element into the plugin content.
bool operator!=(const Plugin &_plugin) const
Plugin inequality operator.
const std::string & Filename() const
Get the filename of the shared library.
~Plugin()
Default destructor.
Plugin(Plugin &&_plugin) noexcept
Move constructor.
bool InsertContent(sdf::Errors &_errors, const std::string _content)
Insert XML content into this plugin.
bool operator==(const Plugin &_plugin) const
Plugin equality operator.
Errors Load(ElementPtr _sdf)
Load the plugin based on a element pointer.
void SetName(const std::string &_name)
Set the name of the plugin.
Plugin()
Default constructor.
void InsertContent(const sdf::ElementPtr _elem)
Insert an element into the plugin content.
const std::string & Name() const
Get the name of the plugin.
friend std::istream & operator>>(std::istream &_in, sdf::Plugin &_plugin)
Input stream operator for a Plugin.
Definition: Plugin.hh:210
Plugin & operator=(const Plugin &_plugin)
Copy assignment operator.
Plugin(const Plugin &_plugin)
Copy constructor.
Plugin(sdf::Errors &_errors, const std::string &_filename, const std::string &_name, const std::string &_xmlContent="")
A constructor that initializes the plugin's filename, name, and optionally the content.
Base SDF class.
Definition: SDFImpl.hh:167
GZ_SDFORMAT_VISIBLE bool init(SDFPtr _sdf)
Initialize the SDF interface from the embedded root spec file.
GZ_SDFORMAT_VISIBLE bool readString(const std::string &_xmlString, SDFPtr _sdf, Errors &_errors)
Populate the SDF values from a string.
std::shared_ptr< SDF > SDFPtr
Definition: SDFImpl.hh:52
std::vector< Plugin > Plugins
A vector of Plugin.
Definition: Plugin.hh:245
std::vector< Error > Errors
A vector of Error.
Definition: Types.hh:95
std::shared_ptr< Element > ElementPtr
Definition: Element.hh:55
namespace for Simulation Description Format parser
Definition: Actor.hh:35
#define SDFORMAT_VISIBLE
Use to represent "symbol visible" if supported.
Definition: system_util.hh:25