The Gaudi Framework  v33r0 (d5ea422b)
GaudiPython::Helper Struct Reference

#include <GaudiPython/Helpers.h>

Public Member Functions

 Helper ()
 

Static Public Member Functions

static IServiceservice (ISvcLocator *svcloc, const std::string &name, bool createif=false)
 
static IAlgorithmalgorithm (IAlgManager *algmgr, const std::string &name, const bool createIf=false)
 
static DataObjectdataobject (IDataProviderSvc *dpsvc, const std::string &path)
 
static StatusCode registerObject (IDataProviderSvc *dpsvc, const std::string &path, DataObject *pObject)
 
static StatusCode unregisterObject (IDataProviderSvc *dpsvc, const std::string &path)
 
static GAUDI_API DataObjectfindobject (IDataProviderSvc *dpsvc, const std::string &path)
 simple wrapper for IDataProviderSvc::findObject The methdod does NOT trigger the loading the object from tape or Data-On-Demand action More...
 
static GAUDI_API DataObjectgetobject (IDataProviderSvc *dpsvc, const std::string &path, const bool retrieve=true, const bool disableDoD=false)
 the generic function to get object from TES More...
 
static IAlgTooltool (IToolSvc *toolsvc, const std::string &type, const std::string &name, IInterface *p, bool cif)
 
static long loadDynamicLib (const std::string &name)
 
static IHistogram1D * histo1D (IHistogramSvc *hsvc, const std::string &path)
 
static IHistogram2D * histo2D (IHistogramSvc *hsvc, const std::string &path)
 
static IHistogram3D * histo3D (IHistogramSvc *hsvc, const std::string &path)
 
static IProfile1D * profile1D (IHistogramSvc *hsvc, const std::string &path)
 
static IProfile2D * profile2D (IHistogramSvc *hsvc, const std::string &path)
 
template<class T >
static PyObject * toArray (T *ptr, Py_ssize_t size)
 
static PyObject * toIntArray (void *ptr, Py_ssize_t size)
 
static PyObject * toShortArray (void *ptr, Py_ssize_t size)
 
static PyObject * toFloatArray (void *ptr, Py_ssize_t size)
 
static PyObject * toDoubleArray (void *ptr, Py_ssize_t size)
 
template<class T >
static T * toAddress (std::vector< T > &v)
 
template<class T >
static T * toAddress (void *a)
 
static StatusCode setPropertyFromString (Gaudi::Details::PropertyBase &p, const std::string &s)
 

Static Private Member Functions

template<class T >
static Py_ssize_t Array_length (PyObject *self)
 
template<class T >
static PyObject * toPython (T *)
 
static PyObject * toPython (int *o)
 
static PyObject * toPython (short *o)
 
static PyObject * toPython (char *o)
 
static PyObject * toPython (long *o)
 
static PyObject * toPython (float *o)
 
static PyObject * toPython (double *o)
 
template<class T >
static PyObject * Array_item (PyObject *self, Py_ssize_t idx)
 

Detailed Description

Definition at line 97 of file Helpers.h.

Constructor & Destructor Documentation

◆ Helper()

GaudiPython::Helper::Helper ( )
inline

Definition at line 101 of file Helpers.h.

101 {}

Member Function Documentation

◆ algorithm()

static IAlgorithm* GaudiPython::Helper::algorithm ( IAlgManager algmgr,
const std::string name,
const bool  createIf = false 
)
inlinestatic

Definition at line 107 of file Helpers.h.

107  {
108  return algmgr->algorithm( name, createIf ).get();
109  }
virtual SmartIF< IAlgorithm > & algorithm(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true)=0
Returns a smart pointer to a service.
TYPE * get() const
Get interface pointer.
Definition: SmartIF.h:86

◆ Array_item()

template<class T >
static PyObject* GaudiPython::Helper::Array_item ( PyObject *  self,
Py_ssize_t  idx 
)
inlinestaticprivate

Definition at line 210 of file Helpers.h.

210  {
211 #if PY_VERSION_HEX < 0x02050000
212  const
213 #endif
214  char* buf = nullptr;
215 #if PY_MAJOR_VERSION >= 3
216  Py_buffer bufinfo;
217  ( *( self->ob_type->tp_as_buffer->bf_getbuffer ) )( self, &bufinfo, PyBUF_SIMPLE );
218  Py_ssize_t size = bufinfo.len;
219 #else
220  Py_ssize_t size = ( *( self->ob_type->tp_as_buffer->bf_getcharbuffer ) )( self, 0, &buf );
221 #endif
222  if ( idx < 0 || idx >= size / int( sizeof( T ) ) ) {
223  PyErr_SetString( PyExc_IndexError, "buffer index out of range" );
224  return nullptr;
225  }
226  return toPython( (T*)buf + idx );
227  }
constexpr auto size(const T &, Args &&...) noexcept
static PyObject * toPython(T *)
Definition: Helpers.h:199
int Py_ssize_t
For compatibility with Python 2.4 and 2.5.
Definition: Helpers.h:81

◆ Array_length()

template<class T >
static Py_ssize_t GaudiPython::Helper::Array_length ( PyObject *  self)
inlinestaticprivate

Definition at line 183 of file Helpers.h.

183  {
184 #if PY_MAJOR_VERSION >= 3
185  Py_buffer bufinfo;
186  ( *( self->ob_type->tp_as_buffer->bf_getbuffer ) )( self, &bufinfo, PyBUF_SIMPLE );
187  Py_ssize_t size = bufinfo.len;
188 #else
189 # if PY_VERSION_HEX < 0x02050000
190  const
191 # endif
192  char* buf = 0;
193  Py_ssize_t size = ( *( self->ob_type->tp_as_buffer->bf_getcharbuffer ) )( self, 0, &buf );
194 #endif
195  return size / sizeof( T );
196  }
constexpr auto size(const T &, Args &&...) noexcept
int Py_ssize_t
For compatibility with Python 2.4 and 2.5.
Definition: Helpers.h:81

◆ dataobject()

static DataObject* GaudiPython::Helper::dataobject ( IDataProviderSvc dpsvc,
const std::string path 
)
inlinestatic

Definition at line 111 of file Helpers.h.

111  {
112  DataObject* o;
113  return dpsvc->retrieveObject( path, o ).isSuccess() ? o : nullptr;
114  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:40

◆ findobject()

DataObject * GaudiPython::Helper::findobject ( IDataProviderSvc dpsvc,
const std::string path 
)
static

simple wrapper for IDataProviderSvc::findObject The methdod does NOT trigger the loading the object from tape or Data-On-Demand action

See also
IDataProviderSvc
IDataProviderSvc::findObject
Parameters
psvc(INPUT) pointer to Data ProviderService
paththe full path in TES
Returns
the object
Author
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@n.nosp@m.ikhe.nosp@m.f.nl
Date
2009-10-09

Definition at line 51 of file Helpers.cpp.

51  {
52  DataObject* o = nullptr;
53  if ( !dpsvc ) { return nullptr; } // RETURN
54  StatusCode sc = dpsvc->findObject( path, o ); // NB!
55  return sc.isSuccess() ? o : nullptr; // RETURN
56 }
virtual StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Find object identified by its directory entry.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
bool isSuccess() const
Definition: StatusCode.h:361
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:40

◆ getobject()

DataObject * GaudiPython::Helper::getobject ( IDataProviderSvc dpsvc,
const std::string path,
const bool  retrieve = true,
const bool  disableDoD = false 
)
static

the generic function to get object from TES

See also
IDataProviderSvc
IDataProviderSvc::findObject
IDataProviderSvc::retriveObject
Parameters
psvc(INPUT) pointer to Data ProviderService
paththe full path in TES
rerieve(INPUT) retrieve or find object ?
disableDoD(INPUT) disable 'on-demand-actions' ?
Author
Vanya BELYAEV Ivan..nosp@m.Bely.nosp@m.aev@n.nosp@m.ikhe.nosp@m.f.nl
Date
2009-10-09

Definition at line 119 of file Helpers.cpp.

120  {
121  if ( !dpsvc ) { return nullptr; } // RETURN 0
122  // create the sentry:
123  Disabler sentry( dpsvc, disable );
124  //
125  DataObject* result = nullptr;
126  //
127  StatusCode sc = retrieve ? dpsvc->retrieveObject( path, result ) : dpsvc->findObject( path, result );
128  //
129  return sc.isSuccess() ? result : nullptr;
130 }
virtual StatusCode findObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Find object identified by its directory entry.
This class is used for returning status codes from appropriate routines.
Definition: StatusCode.h:61
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
A DataObject is the base class of any identifiable object on any data store.
Definition: DataObject.h:40

◆ histo1D()

static IHistogram1D* GaudiPython::Helper::histo1D ( IHistogramSvc hsvc,
const std::string path 
)
inlinestatic

Definition at line 159 of file Helpers.h.

159  {
160  IHistogram1D* h;
161  return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
162  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode findObject(const std::string &fullPath, AIDA::IHistogram1D *&h1dObj)=0

◆ histo2D()

static IHistogram2D* GaudiPython::Helper::histo2D ( IHistogramSvc hsvc,
const std::string path 
)
inlinestatic

Definition at line 163 of file Helpers.h.

163  {
164  IHistogram2D* h;
165  return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
166  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode findObject(const std::string &fullPath, AIDA::IHistogram1D *&h1dObj)=0

◆ histo3D()

static IHistogram3D* GaudiPython::Helper::histo3D ( IHistogramSvc hsvc,
const std::string path 
)
inlinestatic

Definition at line 167 of file Helpers.h.

167  {
168  IHistogram3D* h;
169  return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
170  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode findObject(const std::string &fullPath, AIDA::IHistogram1D *&h1dObj)=0

◆ loadDynamicLib()

static long GaudiPython::Helper::loadDynamicLib ( const std::string name)
inlinestatic

Definition at line 155 of file Helpers.h.

155  {
156  void* h;
157  return System::loadDynamicLib( name, &h );
158  }
GAUDI_API unsigned long loadDynamicLib(const std::string &name, ImageHandle *handle)
Load dynamic link library.
Definition: System.cpp:145

◆ profile1D()

static IProfile1D* GaudiPython::Helper::profile1D ( IHistogramSvc hsvc,
const std::string path 
)
inlinestatic

Definition at line 171 of file Helpers.h.

171  {
172  IProfile1D* h = 0;
173  return ( hsvc && hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
174  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode findObject(const std::string &fullPath, AIDA::IHistogram1D *&h1dObj)=0

◆ profile2D()

static IProfile2D* GaudiPython::Helper::profile2D ( IHistogramSvc hsvc,
const std::string path 
)
inlinestatic

Definition at line 175 of file Helpers.h.

175  {
176  IProfile2D* h = 0;
177  return ( hsvc && hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
178  }
bool isSuccess() const
Definition: StatusCode.h:361
virtual StatusCode findObject(const std::string &fullPath, AIDA::IHistogram1D *&h1dObj)=0

◆ registerObject()

static StatusCode GaudiPython::Helper::registerObject ( IDataProviderSvc dpsvc,
const std::string path,
DataObject pObject 
)
inlinestatic

Definition at line 116 of file Helpers.h.

116  {
117  return dpsvc->registerObject( path, pObject );
118  }
StatusCode registerObject(std::string_view fullPath, DataObject *pObject)
Register object with the data store.

◆ service()

static IService* GaudiPython::Helper::service ( ISvcLocator svcloc,
const std::string name,
bool  createif = false 
)
inlinestatic

Definition at line 103 of file Helpers.h.

103  {
104  return svcloc->service( name, createif ).get();
105  }
StatusCode service(const Gaudi::Utils::TypeNameString &name, T *&svc, bool createIf=true)
Templated method to access a service by name.
Definition: ISvcLocator.h:86

◆ setPropertyFromString()

static StatusCode GaudiPython::Helper::setPropertyFromString ( Gaudi::Details::PropertyBase p,
const std::string s 
)
inlinestatic

Definition at line 262 of file Helpers.h.

262  {
263  return p.fromString( s );
264  }
virtual StatusCode fromString(const std::string &value)=0
string -> value
string s
Definition: gaudirun.py:328

◆ toAddress() [1/2]

template<class T >
static T* GaudiPython::Helper::toAddress ( std::vector< T > &  v)
inlinestatic

Definition at line 253 of file Helpers.h.

253  {
254  return v.data();
255  }
T data(T... args)

◆ toAddress() [2/2]

template<class T >
static T* GaudiPython::Helper::toAddress ( void *  a)
inlinestatic

Definition at line 257 of file Helpers.h.

257  {
258  return (T*)a;
259  }

◆ toArray()

template<class T >
template PyObject * GaudiPython::Helper::toArray ( T *  ptr,
Py_ssize_t  size 
)
inlinestatic

Definition at line 231 of file Helpers.h.

231  {
232  static PyTypeObject type = PyBuffer_Type;
233  static PySequenceMethods meth = *( PyBuffer_Type.tp_as_sequence );
234 #if PY_VERSION_HEX < 0x02050000
235  meth.sq_item = (intargfunc)&Array_item<T>;
236  meth.sq_length = (inquiry)&Array_length<T>;
237 #else
238  meth.sq_item = (ssizeargfunc)&Array_item<T>;
239  meth.sq_length = (lenfunc)&Array_length<T>;
240 #endif
241  type.tp_as_sequence = &meth;
242  PyObject* buf = PyBuffer_FromReadWriteMemory( ptr, size * sizeof( T ) );
243  buf->ob_type = &type;
244  Py_INCREF( buf->ob_type );
245  return buf;
246  }
constexpr auto size(const T &, Args &&...) noexcept

◆ toDoubleArray()

static PyObject* GaudiPython::Helper::toDoubleArray ( void *  ptr,
Py_ssize_t  size 
)
inlinestatic

Definition at line 250 of file Helpers.h.

250 { return toArray( (double*)ptr, size ); }
constexpr auto size(const T &, Args &&...) noexcept
static PyObject * toArray(T *ptr, Py_ssize_t size)
Definition: Helpers.h:231

◆ toFloatArray()

static PyObject* GaudiPython::Helper::toFloatArray ( void *  ptr,
Py_ssize_t  size 
)
inlinestatic

Definition at line 249 of file Helpers.h.

249 { return toArray( (float*)ptr, size ); }
constexpr auto size(const T &, Args &&...) noexcept
static PyObject * toArray(T *ptr, Py_ssize_t size)
Definition: Helpers.h:231

◆ toIntArray()

static PyObject* GaudiPython::Helper::toIntArray ( void *  ptr,
Py_ssize_t  size 
)
inlinestatic

Definition at line 247 of file Helpers.h.

247 { return toArray( (int*)ptr, size ); }
constexpr auto size(const T &, Args &&...) noexcept
static PyObject * toArray(T *ptr, Py_ssize_t size)
Definition: Helpers.h:231

◆ tool()

static IAlgTool* GaudiPython::Helper::tool ( IToolSvc toolsvc,
const std::string type,
const std::string name,
IInterface p,
bool  cif 
)
inlinestatic

Definition at line 150 of file Helpers.h.

151  {
152  IAlgTool* o;
153  return toolsvc->retrieve( type, name, IAlgTool::interfaceID(), o, p, cif ).isSuccess() ? o : nullptr;
154  }
virtual StatusCode retrieve(const std::string &type, const InterfaceID &iid, IAlgTool *&tool, const IInterface *parent=0, bool createIf=true)=0
Retrieve tool with tool dependent part of the name automatically assigned.
bool isSuccess() const
Definition: StatusCode.h:361
The interface implemented by the AlgTool base class.
Definition: IAlgTool.h:33
static const InterfaceID & interfaceID()
Return an instance of InterfaceID identifying the interface.
Definition: IInterface.h:263

◆ toPython() [1/7]

template<class T >
static PyObject* GaudiPython::Helper::toPython ( T *  )
inlinestaticprivate

Definition at line 199 of file Helpers.h.

199  {
200  return 0;
201  }

◆ toPython() [2/7]

static PyObject* GaudiPython::Helper::toPython ( int *  o)
inlinestaticprivate

Definition at line 202 of file Helpers.h.

202 { return PyInt_FromLong( (long)*o ); }

◆ toPython() [3/7]

static PyObject* GaudiPython::Helper::toPython ( short *  o)
inlinestaticprivate

Definition at line 203 of file Helpers.h.

203 { return PyInt_FromLong( (long)*o ); }

◆ toPython() [4/7]

static PyObject* GaudiPython::Helper::toPython ( char *  o)
inlinestaticprivate

Definition at line 204 of file Helpers.h.

204 { return PyInt_FromLong( (long)*o ); }

◆ toPython() [5/7]

static PyObject* GaudiPython::Helper::toPython ( long *  o)
inlinestaticprivate

Definition at line 205 of file Helpers.h.

205 { return PyInt_FromLong( *o ); }

◆ toPython() [6/7]

static PyObject* GaudiPython::Helper::toPython ( float *  o)
inlinestaticprivate

Definition at line 206 of file Helpers.h.

206 { return PyFloat_FromDouble( (double)*o ); }

◆ toPython() [7/7]

static PyObject* GaudiPython::Helper::toPython ( double *  o)
inlinestaticprivate

Definition at line 207 of file Helpers.h.

207 { return PyFloat_FromDouble( *o ); }

◆ toShortArray()

static PyObject* GaudiPython::Helper::toShortArray ( void *  ptr,
Py_ssize_t  size 
)
inlinestatic

Definition at line 248 of file Helpers.h.

248 { return toArray( (short*)ptr, size ); }
constexpr auto size(const T &, Args &&...) noexcept
static PyObject * toArray(T *ptr, Py_ssize_t size)
Definition: Helpers.h:231

◆ unregisterObject()

static StatusCode GaudiPython::Helper::unregisterObject ( IDataProviderSvc dpsvc,
const std::string path 
)
inlinestatic

Definition at line 120 of file Helpers.h.

120  {
121  return dpsvc->unregisterObject( path );
122  }
virtual StatusCode unregisterObject(std::string_view fullPath)=0
Unregister object from the data store.

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