115 from ctypes
import RTLD_GLOBAL, PyDLL, c_bool, c_char_p, c_int, c_void_p, util
120 class IInterface_p(c_void_p):
122 return "IInterface_p(0x%x)" % (0
if self.value
is None else self.value)
124 self.log = logging.getLogger(
"BootstrapHelper")
125 libname = util.find_library(
"GaudiKernel")
or "libGaudiKernel.so"
126 self.log.debug(
"loading GaudiKernel (%s)", libname)
130 self.lib = gkl = PyDLL(libname, mode=RTLD_GLOBAL)
133 (
"createApplicationMgr", IInterface_p, []),
134 (
"getService", IInterface_p, [IInterface_p, c_char_p]),
135 (
"setProperty", c_bool, [IInterface_p, c_char_p, c_char_p]),
136 (
"getProperty", c_char_p, [IInterface_p, c_char_p]),
137 (
"setOption",
None, [IInterface_p, c_char_p, c_char_p]),
138 (
"ROOT_VERSION_CODE", c_int, []),
141 for name, restype, argtypes
in functions:
142 f = getattr(gkl,
"py_bootstrap_%s" % name)
143 f.restype, f.argtypes = restype, argtypes
146 if name
not in self.__class__.__dict__:
147 setattr(self, name, f)
157 f = getattr(gkl,
"py_bootstrap_fsm_%s" % name)
158 f.restype, f.argtypes = c_bool, [IInterface_p]
159 gkl.py_bootstrap_app_run.restype = c_bool
160 gkl.py_bootstrap_app_run.argtypes = [IInterface_p, c_int]
162 gkl.py_helper_printAlgsSequences.restype =
None
163 gkl.py_helper_printAlgsSequences.argtypes = [IInterface_p]