SST  7.1.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...
 
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)
 Instatiate a new Module. More...
 
ModuleCreateModuleWithComponent (std::string type, Component *comp, Params &params)
 Instatiate a new Module. More...
 
ModuleCreateCoreModule (std::string type, Params &params)
 Instantiate a new Module from within the SST core. More...
 
ModuleCreateCoreModuleWithComponent (std::string type, Component *comp, Params &params)
 Instantiate a new Module from within the SST core. More...
 
SubComponentCreateSubComponent (std::string type, Component *comp, Params &params)
 Instatiate a new Module. More...
 
Partition::SSTPartitionerCreatePartitioner (std::string name, RankInfo total_ranks, RankInfo my_rank, int verbosity)
 Return partitioner function. More...
 
generateFunction GetGenerator (std::string name)
 Return generator function. More...
 
Statistics::StatisticBaseCreateStatistic (BaseComponent *comp, const std::string &type, const std::string &statName, const std::string &statSubId, Params &params, Statistics::StatisticFieldInfo::fieldType_t fieldType)
 Instatiate 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)
 
Statistics::StatisticOutputCreateStatisticOutput (const std::string &statOutputType, const Params &statOutputParams)
 Attempt to create a new Statistic Output instantiation. More...
 
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...
 
bool DoesSubComponentInfoStatisticNameExist (const std::string &type, const std::string &statisticName)
 Determine if a statistic is defined in a subcomponents ElementInfoStatistic. More...
 
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 FactorygetFactory ()
 

Protected Attributes

Outputout
 

Detailed Description

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

Member Function Documentation

◆ CreateComponent()

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::Simulation::getComponentLinkMap(), SST::Simulation::getSimulation(), SST::Params::popAllowedKeys(), SST::Params::pushAllowedKeys(), and SST::LinkMap::setAllowedPorts().

◆ CreateCoreModule()

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

Instantiate a new Module from within the SST core.

Parameters
type- Name of the module to load (just modulename, not element.modulename)
params- Parameters to pass to the module at constructor time

◆ CreateCoreModuleWithComponent()

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

Instantiate a new Module from within the SST core.

Parameters
type- Name of the module to load (just modulename, not element.modulename)
params- Parameters to pass to the module at constructor time

◆ CreateModule()

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

Instatiate 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().

◆ CreateModuleWithComponent()

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

Instatiate 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::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

◆ CreatePartitioner()

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

◆ CreateStatistic()

StatisticBase * SST::Factory::CreateStatistic ( BaseComponent comp,
const std::string &  type,
const std::string &  statName,
const std::string &  statSubId,
Params params,
Statistics::StatisticFieldInfo::fieldType_t  fieldType 
)

Instatiate 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

◆ CreateStatisticOutput()

StatisticOutput * SST::Factory::CreateStatisticOutput ( const std::string &  statOutputType,
const Params statOutputParams 
)

Attempt to create a new Statistic Output instantiation.

Parameters
statOutputType- The name of the Statistic Output to create (Module Name)
statOutputParams- The params to pass to the statistic output's constructor
Returns
Newly created Statistic Output

◆ CreateSubComponent()

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

Instatiate 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::Params::popAllowedKeys(), and SST::Params::pushAllowedKeys().

◆ DoesComponentInfoStatisticNameExist()

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

◆ DoesSubComponentInfoStatisticNameExist()

bool SST::Factory::DoesSubComponentInfoStatisticNameExist ( 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

◆ DoesSubComponentSlotExist()

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

◆ GetComponentInfoStatisticEnableLevel()

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

◆ GetComponentInfoStatisticUnits()

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

◆ GetGenerator()

generateFunction SST::Factory::GetGenerator ( std::string  name)

Return generator function.

Parameters
name- Fully qualified elementlibname.generator type name

References SST::ElementInfoGenerator::func.

◆ getPythonModule()

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

Return Python Module creation function.

Parameters
name- Fully qualified elementlibname.pythonModName type name

◆ isPortNameValid()

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

◆ RequireEvent()

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

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