DUNE-DAQ
DUNE Trigger and Data Acquisition software
Loading...
Searching...
No Matches
dbe::config::api::info::onclass Class Reference

#include <config_api_info.hpp>

Static Public Member Functions

template<typename T>
static T allnames ()
static dunedaq::conffwk::class_t definition (std::string const &cn, bool direct_only)
template<bool SORTED = true>
static std::vector< dbe::inner::configobject::tref > objects (std::string const &cname, bool const keep_inherited=true)
static bool derived (std::string const &fromclass, std::string const &aclass)
template<>
std::vector< dbe::tref > objects (std::string const &cname, bool const keep_inherited)
template<>
std::vector< dbe::tref > objects (std::string const &cname, bool const keep_inherited)

Detailed Description

Definition at line 80 of file config_api_info.hpp.

Member Function Documentation

◆ allnames()

template<typename T>
T dbe::config::api::info::onclass::allnames ( )
inlinestatic

Get a list of all classes defined in the database

Returns

Definition at line 35 of file config_api.hpp.

36{
37 typedef dunedaq::conffwk::fmap<dunedaq::conffwk::fset> type_cmap;
38 type_cmap const& baseclasses = dbaccessor::dbptr()->superclasses();
39
40 T config_class_list;
41
42 std::transform(baseclasses.begin(),
43 baseclasses.end(),
44 std::back_inserter(config_class_list),
45 [](type_cmap::value_type const& element) { return element.first->c_str(); });
46
47 if (not config_class_list.empty()) {
48 std::sort(std::begin(config_class_list), std::end(config_class_list));
49 }
50
51 return config_class_list;
52}
static cptr< dunedaq::conffwk::Configuration > dbptr()

◆ definition()

dunedaq::conffwk::class_t dbe::config::api::info::onclass::definition ( std::string const & cn,
bool direct_only )
static

Get class information from class name

Parameters
cnis the class name to retrieve information for
determinesif class information should include direct-only relation, attribute , sub-class and superclass information
Returns
a class information object

Definition at line 102 of file config_api_info.cpp.

103{
104 try {
105 return dbaccessor::dbptr()->get_class_info(cn, direct_only);
106 } catch (dunedaq::conffwk::NotFound const& Ex) {
107 return dunedaq::conffwk::class_t();
108 }
109}

◆ derived()

bool dbe::config::api::info::onclass::derived ( std::string const & fromclass,
std::string const & aclass )
static

Determine if a class is derived from another

Parameters
fromclassis the classname of the class the we want to see if a class is derived from
aclassis the classname of the candidate class to be derived from inclass
Returns
true if aclass is derived fromclass

Definition at line 72 of file config_api_info.cpp.

73{
74 dunedaq::conffwk::class_t aclassdef{ dbe::config::api::info::onclass::definition(aclass, false) };
75
76 for (std::string const& x : aclassdef.p_superclasses) {
77 if (fromclass == x) {
78 return true;
79 }
80 }
81
82 return false;
83}
static dunedaq::conffwk::class_t definition(std::string const &cn, bool direct_only)
const std::vector< std::string > p_superclasses
Definition Schema.hpp:159

◆ objects() [1/3]

template<>
std::vector< dbe::tref > dbe::config::api::info::onclass::objects ( std::string const & cname,
bool const keep_inherited )
static

Definition at line 48 of file config_api_info.cpp.

54{
55 std::vector<dbe::tref> objectrefs = inner::dbcontroller::gets(cname);
56
57 if (not keep_inherited) {
58 objectrefs.erase(std::remove_if(objectrefs.begin(),
59 objectrefs.end(),
60 [&cname](dbe::tref anobject) { return (anobject.class_name() != cname); }),
61 objectrefs.end());
62 }
63
64 return objectrefs;
65}
static std::vector< configobject::tref > gets(std::string const &cname, std::string const &query="")
inner::configobject::tref tref
Definition tref.hpp:36

◆ objects() [2/3]

template<>
std::vector< dbe::tref > dbe::config::api::info::onclass::objects ( std::string const & cname,
bool const keep_inherited )
static

Definition at line 1 of file config_api_info.cpp.

34{
35 std::vector<dbe::tref> objectrefs = inner::dbcontroller::gets(cname);
36
37 if (not keep_inherited) {
38 objectrefs.erase(std::remove_if(objectrefs.begin(),
39 objectrefs.end(),
40 [&cname](dbe::tref anobject) { return (anobject.class_name() != cname); }),
41 objectrefs.end());
42 }
43
44 std::sort(objectrefs.begin(), objectrefs.end(), SortObjects());
45
46 return objectrefs;
47}

◆ objects() [3/3]

template<bool SORTED = true>
std::vector< dbe::inner::configobject::tref > dbe::config::api::info::onclass::objects ( std::string const & cname,
bool const keep_inherited = true )
static

Retrieve references to config objects of a given class

Parameters
cnameis the class name to retrieve objects for
keep_inheritedif set to false filters out any objects inherited from this class
Returns
a vector of references

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