12#ifndef WSFEXTENSIONLIST_HPP
13#define WSFEXTENSIONLIST_HPP
15#include "wsf_export.h"
66 using ExtensionMap = std::map<std::string, std::unique_ptr<WsfExtension>>;
72 void AddExtension(
const std::string& aName, std::unique_ptr<WsfExtension> aExtensionPtr);
78 std::vector<WsfExtension*> GetExtensionsInOrder()
const;
84 void AddDependency(
const std::string& aExtensionName,
const std::string& aDependsOnExtensionName,
bool aRequired);
96 void SortExtensions();
100 bool SortExtensionsP(
const std::set<std::string>& aAllExtensionNames,
101 std::vector<std::string>& aNewOrder,
102 std::set<std::string>& aIncludedExtensions,
103 std::set<std::string>& aExtensionsAdding,
104 const std::string& aExtensionToAdd,
107 DependencyList mDependencies;
108 std::vector<std::string> mExtensionOrder;
109 ExtensionMap mExtensions;
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
~WsfDuplicateExtension() override=default
WsfDuplicateExtension(const std::string &aName)
Definition WsfExtensionList.cpp:150
WsfException(const std::string &aWhat) noexcept
Definition WsfException.hpp:24
const ExtensionMap & GetExtensions() const
Definition WsfExtensionList.hpp:79
void AddExtension(const std::string &aName, std::unique_ptr< WsfExtension > aExtensionPtr)
Definition WsfExtensionList.cpp:20
WsfExtension & GetExtension(const std::string &aName) const
Definition WsfExtensionList.cpp:49
const_iterator end() const
Definition WsfExtensionList.hpp:91
WsfExtensionList & operator=(const WsfExtensionList &)=delete
WsfExtension * FindExtension(const std::string &aName) const
Definition WsfExtensionList.cpp:34
ExtensionMap::const_iterator const_iterator
Definition WsfExtensionList.hpp:68
std::vector< std::pair< std::string, Dependency > > DependencyList
Definition WsfExtensionList.hpp:65
~WsfExtensionList()=default
const DependencyList & GetDependencies() const
Definition WsfExtensionList.hpp:85
const_iterator begin() const
Definition WsfExtensionList.hpp:90
ExtensionMap::iterator iterator
Definition WsfExtensionList.hpp:67
WsfExtensionList(const WsfExtensionList &)=delete
std::map< std::string, std::unique_ptr< WsfExtension > > ExtensionMap
Definition WsfExtensionList.hpp:66
const std::vector< std::string > & GetExtensionOrder() const
Definition WsfExtensionList.hpp:77
WsfExtensionList()=default
The base class for application, scenario and simulation extensions.
Definition WsfExtension.hpp:25
WsfUnknownExtension(const std::string &aName)
Definition WsfExtensionList.cpp:156
~WsfUnknownExtension() override=default
Definition WsfExtensionList.hpp:56
std::string mExtensionName
The name of the dependency extension.
Definition WsfExtensionList.hpp:58
bool mRequired
Definition WsfExtensionList.hpp:62