SST  9.0.0
StructuralSimulationToolkit
SST::Factory Class Reference

Class for instantiating Components, Links and the like out of element libraries. More...

#include <factory.h>

Public Member Functions

bool isPortNameValid (const std::string &type, const std::string port_name)
 Get a list of allowed ports for a given component type. More...
 
const Params::KeySet_tgetParamNames (const std::string &type)
 Get a list of allowed param keys for a given component type. More...
 
ComponentCreateComponent (ComponentId_t id, std::string &componentname, Params &params)
 Attempt to create a new Component instantiation. More...
 
void RequireEvent (std::string eventname)
 Ensure that an element library containing the required event is loaded. More...
 
ModuleCreateModule (std::string type, Params &params)
 Instantiate a new Module. More...
 
ModuleCreateModuleWithComponent (std::string type, Component *comp, Params &params)
 Instantiate a new Module. More...
 
SubComponentCreateSubComponent (std::string type, Component *comp, Params &params)
 Instantiate a new Module. More...
 
bool doesSubComponentExist (std::string type)
 
Partition::SSTPartitionerCreatePartitioner (std::string name, RankInfo total_ranks, RankInfo my_rank, int verbosity)
 Return partitioner function. More...
 
template<class Base >
bool isSubComponentLoadableUsingAPI (std::string type)
 Check to see if a given element type is loadable with a particular API. More...
 
template<class Base , class... CtorArgs>
Base * Create (const std::string &type, SST::Params &params, CtorArgs &&...args)
 General function for a given base class. More...
 
template<class T , class... Args>
Statistics::Statistic< T > * CreateStatistic (std::string type, BaseComponent *comp, const std::string &statName, const std::string &stat, Params &params, Args...args)
 Instantiate a new Statistic. More...
 
SSTElementPythonModulegetPythonModule (std::string name)
 Return Python Module creation function. More...
 
bool hasLibrary (std::string elemlib)
 Checks to see if library exists and can be loaded.
 
void requireLibrary (std::string &elemlib)
 
void getLoadedLibraryNames (std::set< std::string > &lib_names)
 
void loadUnloadedLibraries (const std::set< std::string > &lib_names)
 
bool DoesSubComponentSlotExist (const std::string &type, const std::string &slotName)
 Determine if a SubComponentSlot is defined in a components ElementInfoStatistic. More...
 
bool DoesComponentInfoStatisticNameExist (const std::string &type, const std::string &statisticName)
 Determine if a statistic is defined in a components ElementInfoStatistic. More...
 
uint8_t GetComponentInfoStatisticEnableLevel (const std::string &type, const std::string &statisticName)
 Determine if a statistic is defined in a subcomponents ElementInfoStatistic. More...
 
std::string GetComponentInfoStatisticUnits (const std::string &type, const std::string &statisticName)
 Get the units of a statistic defined in the component's ElementInfoStatistic. More...
 

Static Public Member Functions

static FactorygetFactory ()
 

Protected Attributes

Outputout
 

Detailed Description

Class for instantiating Components, Links and the like out of element libraries.

Member Function Documentation

template<class Base , class... CtorArgs>
Base* SST::Factory::Create ( const std::string &  type,
SST::Params params,
CtorArgs &&...  args 
)
inline

General function for a given base class.

Parameters
type
params
argsConstructor arguments

References SST::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

Component * SST::Factory::CreateComponent ( ComponentId_t  id,
std::string &  componentname,
Params params 
)

Attempt to create a new Component instantiation.

Parameters
id- The unique ID of the component instantiation
componentname- The fully qualified elementlibname.componentname type of component
params- The params to pass to the component's constructor
Returns
Newly created component

References SST::Output::fatal(), SST::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

Module * SST::Factory::CreateModule ( std::string  type,
Params params 
)

Instantiate a new Module.

Parameters
type- Fully qualified elementlibname.modulename type
params- Parameters to pass to the Module's constructor

References SST::Output::fatal(), SST::Simulation::getSimulation(), SST::Simulation::getSimulationOutput(), SST::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

Module * SST::Factory::CreateModuleWithComponent ( std::string  type,
Component comp,
Params params 
)

Instantiate a new Module.

Parameters
type- Fully qualified elementlibname.modulename type
comp- Component instance to pass to the Module's constructor
params- Parameters to pass to the Module's constructor

References SST::Output::fatal(), SST::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

Partition::SSTPartitioner * SST::Factory::CreatePartitioner ( std::string  name,
RankInfo  total_ranks,
RankInfo  my_rank,
int  verbosity 
)

Return partitioner function.

Parameters
name- Fully qualified elementlibname.partitioner type name

References SST::Output::fatal().

template<class T , class... Args>
Statistics::Statistic<T>* SST::Factory::CreateStatistic ( std::string  type,
BaseComponent comp,
const std::string &  statName,
const std::string &  stat,
Params params,
Args...  args 
)
inline

Instantiate a new Statistic.

Parameters
comp- Owning component
type- Fully qualified elementlibname.statisticname type
statName- Name of the statistic
statSubId- Name of the sub statistic
params- Parameters to pass to the Statistics's constructor
fieldType- Type of data stored in statistic

References SST::Output::fatal().

SubComponent * SST::Factory::CreateSubComponent ( std::string  type,
Component comp,
Params params 
)

Instantiate a new Module.

Parameters
type- Fully qualified elementlibname.modulename type
comp- Component instance to pass to the SubComponent's constructor
params- Parameters to pass to the SubComponent's constructor

References SST::Output::fatal(), SST::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

bool SST::Factory::DoesComponentInfoStatisticNameExist ( const std::string &  type,
const std::string &  statisticName 
)

Determine if a statistic is defined in a components ElementInfoStatistic.

Parameters
type- The name of the component
statisticName- The name of the statistic
Returns
True if the statistic is defined in the component's ElementInfoStatistic

References SST::Output::fatal().

bool SST::Factory::DoesSubComponentSlotExist ( const std::string &  type,
const std::string &  slotName 
)

Determine if a SubComponentSlot is defined in a components ElementInfoStatistic.

Parameters
type- The name of the component/subcomponent
slotName- The name of the SubComponentSlot
Returns
True if the SubComponentSlot is defined in the component's ELI

References SST::Output::fatal().

uint8_t SST::Factory::GetComponentInfoStatisticEnableLevel ( const std::string &  type,
const std::string &  statisticName 
)

Determine if a statistic is defined in a subcomponents ElementInfoStatistic.

Parameters
type- The name of the subcomponent
statisticName- The name of the statistic
Returns
True if the statistic is defined in the component's ElementInfoStatistic Get the enable level of a statistic defined in the component's ElementInfoStatistic
Parameters
componentname- The name of the component
statisticName- The name of the statistic
Returns
The Enable Level of the statistic from the ElementInfoStatistic

References SST::Output::fatal().

std::string SST::Factory::GetComponentInfoStatisticUnits ( const std::string &  type,
const std::string &  statisticName 
)

Get the units of a statistic defined in the component's ElementInfoStatistic.

Parameters
componentname- The name of the component
statisticName- The name of the statistic
Returns
The units string of the statistic from the ElementInfoStatistic

References SST::Output::fatal().

const Params::KeySet_t & SST::Factory::getParamNames ( const std::string &  type)

Get a list of allowed param keys for a given component type.

Parameters
type- Name of component in lib.name format
Returns
True if this is a valid portname

References SST::Output::fatal().

SSTElementPythonModule * SST::Factory::getPythonModule ( std::string  name)

Return Python Module creation function.

Parameters
name- Fully qualified elementlibname.pythonModName type name
bool SST::Factory::isPortNameValid ( const std::string &  type,
const std::string  port_name 
)

Get a list of allowed ports for a given component type.

Parameters
type- Name of component in lib.name format
Returns
True if this is a valid portname

References SST::Output::fatal().

template<class Base >
bool SST::Factory::isSubComponentLoadableUsingAPI ( std::string  type)
inline

Check to see if a given element type is loadable with a particular API.

Parameters
name- Name of element to check in lib.name format
Returns
True if loadable as the API specified as the template parameter
void SST::Factory::RequireEvent ( std::string  eventname)

Ensure that an element library containing the required event is loaded.

Parameters
eventname- The fully qualified elementlibname.eventname type

Referenced by SST::Simulation::requireEvent().


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