SST  11.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_t & getParamNames (const std::string &type)
 Get a list of allowed param keys for a given component type. More...
 
Component * CreateComponent (ComponentId_t id, const std::string &componentname, Params &params)
 Attempt to create a new Component instantiation. More...
 
void RequireEvent (const std::string &eventname)
 Ensure that an element library containing the required event is loaded. More...
 
Module * CreateModule (const std::string &type, Params &params)
 Instantiate a new Module. More...
 
Module * CreateModuleWithComponent (const std::string &type, Component *comp, Params &params)
 Instantiate a new Module. More...
 
bool doesSubComponentExist (const std::string &type)
 
Partition::SSTPartitioner * CreatePartitioner (const std::string &name, RankInfo total_ranks, RankInfo my_rank, int verbosity)
 Return partitioner function. More...
 
template<class Base >
bool isSubComponentLoadableUsingAPI (const 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 (const std::string &type, BaseComponent *comp, const std::string &statName, const std::string &stat, Params &params, Args...args)
 Instantiate a new Statistic. More...
 
SSTElementPythonModule * getPythonModule (const std::string &name)
 Return Python Module creation function. More...
 
bool hasLibrary (const std::string &elemlib, std::ostream &err_os)
 hasLibrary Checks to see if library exists and can be loaded More...
 
void requireLibrary (const std::string &elemlib, std::ostream &err_os)
 
void requireLibrary (const std::string &elemlib)
 requireLibrary Throws away error messages More...
 
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...
 
const std::vector< std::string > & GetValidStatistics (const std::string &compType)
 
uint8_t GetComponentInfoStatisticEnableLevel (const std::string &type, const std::string &statisticName)
 Get the enable level of a statistic defined in the component's 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 Factory * getFactory ()
 

Protected Attributes

Output & out
 

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,
const 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 ( const 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 ( const 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 ( const 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 ( const 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().

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
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 
)

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 ( const std::string &  name)

Return Python Module creation function.

Parameters
name- Fully qualified elementlibname.pythonModName type name
bool SST::Factory::hasLibrary ( const std::string &  elemlib,
std::ostream &  err_os 
)

hasLibrary Checks to see if library exists and can be loaded

Parameters
elemlib
err_osStream to print error messages to
Returns
whether the library was found
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 ( const 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 ( const 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_impl::requireEvent().

void SST::Factory::requireLibrary ( const std::string &  elemlib)

requireLibrary Throws away error messages

Parameters
elemlib

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