The repository of 'rootmap' files (location, content,...) and a set of
operations one can apply on them (load dict, query dicts,...)
Definition at line 41 of file Control/AthenaServices/python/Dso.py.
◆ __init__()
def python.Dso.DsoDb.__init__ |
( |
|
self | ) |
|
Definition at line 46 of file Control/AthenaServices/python/Dso.py.
47 super(DsoDb, self).
__init__(
'AthenaDsoDb')
48 import AthenaCommon.Logging
49 self.msg = AthenaCommon.Logging.logging.getLogger(
"AthenaDsoDb")
53 for k,v
in _aliases.iteritems():
55 self.db[k] = self.db[v]
57 self.msg.
info(
"could not install alias [%s] -> [%s]", k,v)
61 self._rflx_type = cppyy.gbl.RootType.ByName
◆ has_type()
def python.Dso.DsoDb.has_type |
( |
|
self, |
|
|
|
typename |
|
) |
| |
Definition at line 64 of file Control/AthenaServices/python/Dso.py.
64 def has_type (self, typename):
66 if typename
in _cpp_builtins:
69 typename = self._to_rootmap_name (typename)
70 return self.db.has_key (typename)
or \
71 self.pf.has_key (typename)
◆ load_type()
def python.Dso.DsoDb.load_type |
( |
|
self, |
|
|
|
typename |
|
) |
| |
Definition at line 73 of file Control/AthenaServices/python/Dso.py.
73 def load_type (self, typename):
74 rflx_type = self.rflx_type(typename)
75 if not(rflx_type
is None):
76 rflx_name = rflx_type.Name(RflxEnums.DICTSCOPE)
◆ rflx_type()
def python.Dso.DsoDb.rflx_type |
( |
|
self, |
|
|
|
typename |
|
) |
| |
Definition at line 81 of file Control/AthenaServices/python/Dso.py.
81 def rflx_type(self, typename):
82 _rootmap_name = self._to_rootmap_name (typename)
83 _rflx_name = self._to_rflx_name (typename)
84 self.msg.
verbose(
"------- loading type [%s]...", typename)
87 if typename
in _cpp_builtins:
88 self.msg.
verbose(
" ==> [ok] (builtin)")
89 return self._rflx_type (_rflx_name)
91 if not self.has_type (_rootmap_name):
92 self.msg.
verbose(
" ==> [err] (no '%s')",_rootmap_name)
94 libs = (self.db.
get(_rootmap_name)
or
95 self.pf.
get(_rootmap_name))
96 if libs
is None or len(libs) <= 0:
98 from ctypes
import cdll
99 _load = cdll.LoadLibrary
100 from cppyy
import loadDict
as _load
103 _load (os.path.basename(lib.strip()))
104 self.msg.
verbose(
"... %s [done]",lib)
109 rflx_type = self._rflx_type (_rflx_name)
110 if rflx_type.Name() !=
'':
◆ visit()
def python.Dso.DsoDb.visit |
( |
|
self, |
|
|
|
typename, |
|
|
|
visitor = None , |
|
|
|
ctx = None |
|
) |
| |
Definition at line 115 of file Control/AthenaServices/python/Dso.py.
115 def visit(self, typename, visitor=None, ctx=None):
116 self.msg.
verbose(
"=== visiting %s", typename)
119 if isinstance (typename, str):
120 rflx_type = self.load_type (typename)
121 typename = rflx_type.Name (RflxEnums.DICTSCOPE)
126 self.msg.
verbose(
"**warning** no dict for [%s] !!", typename)
133 if rflx_type.IsClass()
or rflx_type.IsStruct():
134 for i
in range(rflx_type.BaseSize()):
135 itype = rflx_type.BaseAt(i).ToType()
136 itype_name = itype.Name(RflxEnums.DICTSCOPE)
137 if itype_name !=
'' and not (itype_name
in ctx):
138 self.load_type (itype_name)
140 ctx.update (self.visit (itype, visitor, ctx))
142 for i
in range(rflx_type.DataMemberSize()):
143 itype = rflx_type.DataMemberAt (i).TypeOf()
144 itype = itype.RawType()
if itype.IsPointer()
else itype
145 itype_name = itype.Name(RflxEnums.DICTSCOPE)
146 if itype_name !=
'' and not (itype_name
in ctx):
147 self.load_type (itype_name)
150 itype = rflx_type.DataMemberAt (i).TypeOf()
151 itype_name = itype.Name(RflxEnums.DICTSCOPE)
152 ctx.update (self.visit (itype, visitor, ctx))
◆ _rflx_type
python.Dso.DsoDb._rflx_type |
|
private |
◆ msg
The documentation for this class was generated from the following file:
constexpr std::enable_if_t< is_bitmask_v< E >, E & > set(E &lhs, E rhs)
Convenience function to set bits in a class enum bitmask.