DUNE-DAQ
DUNE Trigger and Data Acquisition software
Toggle main menu visibility
Loading...
Searching...
No Matches
dunedaq
sourcecode
oksdalgen
apps
class_info.hpp
Go to the documentation of this file.
1
//
2
// DUNE DAQ modification notice:
3
// This file has been modified from the original ATLAS genconfig source for the DUNE DAQ project.
4
// Fork baseline commit: genconfig-03-10-00 (2021-04-26).
5
// Renamed since fork: yes (from src/class_info.h to apps/class_info.hpp).
6
//
7
8
#ifndef __OKSDALGEN_CLASS_INFO__
9
#define __OKSDALGEN_CLASS_INFO__
10
11
#include "
oks/class.hpp
"
12
13
#include <map>
14
#include <ostream>
15
#include <set>
16
#include <string>
17
18
namespace
dunedaq
{
19
namespace
oksdalgen
{
20
21
class
ClassInfo
22
{
23
24
public
:
25
struct
SortByName
26
{
27
bool
operator()
(
const
oks::OksClass
* c1,
const
oks::OksClass
* c2)
const
{
return
c1->
get_name
() < c2->
get_name
(); }
28
};
29
30
typedef
std::map<const oks::OksClass*, ClassInfo, SortByName>
Map
;
31
32
ClassInfo
() {};
33
34
ClassInfo
(
const
std::string& cpp_ns_name,
const
std::string& dir_prefix)
35
:
p_namespace
(cpp_ns_name)
36
,
p_include_prefix
(dir_prefix) {};
37
38
const
std::string&
get_namespace
()
const
{
return
p_namespace
; }
39
const
std::string&
get_include_prefix
()
const
{
return
p_include_prefix
; }
40
41
private
:
42
std::string
p_namespace
;
43
std::string
p_include_prefix
;
44
};
45
46
struct
NameSpaceInfo
47
{
48
std::set<std::string>
m_classes
;
49
std::map<std::string, NameSpaceInfo>
m_nested
;
50
51
bool
empty
()
const
{
return
(
m_classes
.empty() &&
m_nested
.empty()); }
52
53
void
add
(
const
std::string& ns_name,
const
std::string& class_name)
54
{
55
if
(!ns_name.empty()) {
56
std::string::size_type idx = ns_name.find_first_of(
':'
);
57
NameSpaceInfo
& ns =
m_nested
[ns_name.substr(0, idx)];
58
if
(idx != std::string::npos)
59
ns.
add
(ns_name.substr(ns_name.find_first_not_of(
':'
, idx)), class_name);
60
else
61
ns.
add
(
""
, class_name);
62
}
else
63
m_classes
.insert(class_name);
64
}
65
66
void
print
(std::ostream& s,
int
level)
const
67
{
68
std::string dx(level * 2,
' '
);
69
70
for
(
const
auto
& x :
m_nested
) {
71
s << dx <<
"namespace "
<< x.first <<
" {\n"
;
72
x.second.print(s, level + 1);
73
s << dx <<
"}\n"
;
74
}
75
76
for
(
const
auto
& x :
m_classes
)
77
s << dx <<
"class "
<< x <<
";\n"
;
78
}
79
};
80
81
}
// namespace oksdalgen
82
}
// namespace dunedaq
83
#endif
class.hpp
dunedaq::oks::OksClass
The OKS class.
Definition
class.hpp:223
dunedaq::oks::OksClass::get_name
const std::string & get_name() const noexcept
Definition
class.hpp:374
dunedaq::oksdalgen::ClassInfo::ClassInfo
ClassInfo(const std::string &cpp_ns_name, const std::string &dir_prefix)
Definition
class_info.hpp:34
dunedaq::oksdalgen::ClassInfo::p_include_prefix
std::string p_include_prefix
Definition
class_info.hpp:43
dunedaq::oksdalgen::ClassInfo::ClassInfo
ClassInfo()
Definition
class_info.hpp:32
dunedaq::oksdalgen::ClassInfo::get_namespace
const std::string & get_namespace() const
Definition
class_info.hpp:38
dunedaq::oksdalgen::ClassInfo::p_namespace
std::string p_namespace
Definition
class_info.hpp:42
dunedaq::oksdalgen::ClassInfo::Map
std::map< const oks::OksClass *, ClassInfo, SortByName > Map
Definition
class_info.hpp:30
dunedaq::oksdalgen::ClassInfo::get_include_prefix
const std::string & get_include_prefix() const
Definition
class_info.hpp:39
dunedaq::oksdalgen
Definition
class_info.hpp:19
dunedaq
The DUNE-DAQ namespace.
Definition
cib_utilities.cpp:5
dunedaq::oksdalgen::ClassInfo::SortByName
Definition
class_info.hpp:26
dunedaq::oksdalgen::ClassInfo::SortByName::operator()
bool operator()(const oks::OksClass *c1, const oks::OksClass *c2) const
Definition
class_info.hpp:27
dunedaq::oksdalgen::NameSpaceInfo
Definition
class_info.hpp:47
dunedaq::oksdalgen::NameSpaceInfo::print
void print(std::ostream &s, int level) const
Definition
class_info.hpp:66
dunedaq::oksdalgen::NameSpaceInfo::m_nested
std::map< std::string, NameSpaceInfo > m_nested
Definition
class_info.hpp:49
dunedaq::oksdalgen::NameSpaceInfo::m_classes
std::set< std::string > m_classes
Definition
class_info.hpp:48
dunedaq::oksdalgen::NameSpaceInfo::empty
bool empty() const
Definition
class_info.hpp:51
dunedaq::oksdalgen::NameSpaceInfo::add
void add(const std::string &ns_name, const std::string &class_name)
Definition
class_info.hpp:53
Generated on
for DUNE-DAQ by
1.18.0