22 #define registerApp(name) AppFactory::instance().reg<name>(#name) 45 return std::make_shared<T>(params);
73 std::unique_ptr<Parser> parser,
74 MPI_Comm comm_word = MPI_COMM_WORLD);
83 MPI_Comm comm_word = MPI_COMM_WORLD);
90 void reg(
const std::string &
name);
107 const std::string &
name,
109 MPI_Comm COMM_WORLD_IN);
151 template <
typename T>
bool isRegistered(const std::string &app_name) const
Returns a Boolean indicating whether an application type has been registered.
std::string name(const ElemQuality q)
MooseAppPtr createShared(const std::string &app_type, const std::string &name, InputParameters parameters, MPI_Comm COMM_WORLD_IN)
Build an application object (must be registered)
virtual MooseAppPtr build(const InputParameters ¶ms)=0
InputParameters validParams()
static InputParameters validParams()
std::shared_ptr< MooseApp > MooseAppPtr
alias to wrap shared pointer type
const auto & registeredObjects() const
Returns a reference to the map from names to AppFactoryBuildInfo pointers.
Generic AppFactory class for building Application objects.
AppFactoryBuildInfoMap _name_to_build_info
virtual InputParameters buildParameters()=0
std::size_t createdAppCount(const std::string &app_type) const
std::size_t _app_creation_count
void reg(const std::string &name)
Register a new object.
static AppFactory & instance()
Get the instance of the AppFactory.
static MooseAppPtr createAppShared(const std::string &default_app_type, int argc, char **argv, std::unique_ptr< Parser > parser, MPI_Comm comm_word=MPI_COMM_WORLD)
Helper function for creating a MooseApp from command-line arguments and a Parser. ...
virtual InputParameters buildParameters() override
const AppFactoryBuildInfoMap & registeredObjectBuildInfos() const
Returns the map of object name to a function pointer for building said object's input parameters...
virtual MooseAppPtr build(const InputParameters ¶ms) override
Registry & operator=(AppFactory const &)=delete
InputParameters getValidParams(const std::string &name)
Get valid parameters for the object.
std::map< std::string, std::unique_ptr< AppFactoryBuildInfoBase > > AppFactoryBuildInfoMap
The registry is used as a global singleton to collect information on all available MooseObject and Ac...
Polymorphic data structure with parameter and object build access.
virtual ~AppFactoryBuildInfoBase()=default