Manager of a hierarchy of Component objects.
A Manager should be the top-level Component of any hierarchy of Components. It is primarily responsible for handling the setting of Parameter values via the command-line or otherwise.
Users should only need to construct a Manager (including Engine, which derives from Manager), add any Component to it, and then call init() on the Manager, which will parse all command line options, bind them to the relevant Parameters, and call init() on all subComponents (which in turn calls init() on all of their subComponents, etc.). See the documentation of Component for more information about the init() flow.
The parameter nickname
is not internally used by the Manager. It can be set, for example, in initscript.cfg to a different value for each camera, in systems that use multiple JeVois cameras connected to a single USB bus.
Definition at line 72 of file Manager.H.
|
|
| Manager (std::string const &instance="TheManager") |
| Constructor without command-line args.
|
|
| Manager (int argc, char const *argv[], std::string const &instance="TheManager") |
| Constructor.
|
|
void | setCommandLineArgs (int argc, char const *argv[]) |
| Set the command-line arguments, call this before start() if args were not passed at construction.
|
|
virtual | ~Manager () |
| Destructor.
|
|
|
template<class Comp , typename... Args> |
std::shared_ptr< Comp > | addComponent (std::string const &instanceName, Args &&...args) |
| Pseudo-constructor: construct a top-level Component.
|
|
template<class Comp , typename... Args> |
std::shared_ptr< Comp > | addSubComponent (std::string const &instanceName, Args &&...args)=delete |
| Use addComponent() on the Manager as opposed to jevois::Component::addSubComponent()
|
|
template<class Comp > |
void | removeComponent (std::shared_ptr< Comp > &component) |
| Remove a top-level Component from the Manager, by shared_ptr.
|
|
template<class Comp > |
void | removeSubComponent (std::shared_ptr< Comp > &component)=delete |
| Use removeComponent() on the Manager as opposed to jevois::Component::removeSubComponent()
|
|
void | removeComponent (std::string const &instanceName, bool warnIfNotFound=true) |
| Remove a top-level Component from the Manager, by instance name.
|
|
void | removeSubComponent (std::string const &instanceName, bool warnIfNotFound)=delete |
| Use removeComponent() on the Manager as opposed to jevois::Component::removeSubComponent()
|
|
template<class Comp = jevois::Component> |
std::shared_ptr< Comp > | getComponent (std::string const &instanceName) const |
| Get a top-level component by instance name.
|
|
template<class Comp > |
std::shared_ptr< Comp > | getSubComponent (std::string const &instanceName) const =delete |
| Use getComponent() on the Manager as opposed to jevois::Component::getSubComponent()
|
|
|
std::vector< std::string > const & | remainingArgs () const |
| Get the remaining arguments that were not parsed by the command line.
|
|
| Component (std::string const &instance) |
| Constructor.
|
|
virtual | ~Component () |
| Virtual destructor for safe inheritance.
|
|
template<class Comp , typename... Args> |
std::shared_ptr< Comp > | addSubComponent (std::string const &instance, Args &&...args) |
| Pseudo-constructor: construct and add another component as a subcomponent of this one.
|
|
template<class Comp > |
void | removeSubComponent (std::shared_ptr< Comp > &component) |
| Remove a sub-Component from this Component, by shared_ptr.
|
|
void | removeSubComponent (std::string const &instance, bool warnIfNotFound=true) |
| Remove a sub-Component from this Component, by instance name.
|
|
template<class Comp = jevois::Component> |
std::shared_ptr< Comp > | getSubComponent (std::string const &instance) const |
| Get a sub-component by instance name.
|
|
bool | isTopLevel () const |
| Returns true if this component is top-level, i.e., its parent is jevois::Manager.
|
|
bool | initialized () const |
| Has this component been initialized yet?
|
|
std::string const & | className () const |
| The class name of this component.
|
|
std::string const & | instanceName () const |
| The instance name of this component.
|
|
template<typename T > |
std::vector< std::string > | setParamVal (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value.
|
|
template<typename T > |
void | setParamValUnique (std::string const ¶mdescriptor, T const &val) |
| Set a parameter value, simple version assuming only one parameter match.
|
|
template<typename T > |
std::vector< std::pair< std::string, T > > | getParamVal (std::string const ¶mdescriptor) const |
| Get parameter(s) value(s) by descriptor.
|
|
template<typename T > |
T | getParamValUnique (std::string const ¶mdescriptor) const |
| Get a parameter value, simple version assuming only one parameter match.
|
|
std::vector< std::string > | setParamString (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value, by string.
|
|
void | setParamStringUnique (std::string const ¶mdescriptor, std::string const &val) |
| Set a parameter value by string, simple version assuming only one parameter match.
|
|
std::vector< std::pair< std::string, std::string > > | getParamString (std::string const ¶mdescriptor) const |
| Get a parameter value, by string.
|
|
std::string | getParamStringUnique (std::string const ¶mdescriptor) const |
| Get a parameter value by string, simple version assuming only one parameter match.
|
|
void | freezeParam (std::string const ¶mdescriptor, bool doit) |
| Freeze/unfreeze a parameter, by name, see ParameterBase::freeze()
|
|
void | freezeAllParams (bool doit) |
| Freeze all parameters.
|
|
std::string | descriptor () const |
| Get our full descriptor (including all parents) as [Instancename]:[...]:[...].
|
|
void | setParamsFromFile (std::string const &filename) |
| Set some parameters from a file.
|
|
std::istream & | setParamsFromStream (std::istream &is, std::string const &absfile) |
| Set some parameters from an open stream.
|
|
virtual void | paramInfo (std::shared_ptr< UserInterface > s, std::map< std::string, std::string > &categs, bool skipFrozen, std::string const &cname="", std::string const &pfx="") |
| Get machine-oriented descriptions of all parameters.
|
|
void | foreachParam (std::function< void(std::string const &compname, ParameterBase *p)> func, std::string const &cname="") |
| Run a function on every param we hold.
|
|
template<typename T > |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T , template< typename > class ValidValuesSpec> |
std::shared_ptr< DynamicParameter< T > > | addDynamicParameter (std::string const &name, std::string const &description, T const &defaultValue, ValidValuesSpec< T > const &validValuesSpec, ParameterCategory const &category) |
| Add a new parameter after the Component has already been constructed.
|
|
template<typename T > |
void | setDynamicParameterCallback (std::string const &name, std::function< void(T const &)> cb, bool callnow=true) |
| Register a callback with a previously created dynamic parameter.
|
|
void | removeDynamicParameter (std::string const &name, bool throw_if_not_found=true) |
| Remove a previously added dynamic parameter.
|
|
void | setPath (std::string const &path) |
| Assign a filesystem path to this component.
|
|
std::filesystem::path | absolutePath (std::filesystem::path const &path="") |
| If given path is relative (not starting with /), prepend the Component path to it.
|
|
virtual | ~ParameterRegistry () |
| Virtual destructor for safe inheritance.
|
|