The Gaudi Framework  master (ff829712)
Loading...
Searching...
No Matches
GaudiPython::Helper Struct Reference

#include </builds/gaudi/Gaudi/GaudiPython/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
 
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
 
static IAlgTooltool (IToolSvc *toolsvc, const std::string &type, const std::string &name, IInterface *p, bool cif)
 
static long loadDynamicLib (const std::string &name)
 
static IHistogram1Dhisto1D (IHistogramSvc *hsvc, const std::string &path)
 
static IHistogram2Dhisto2D (IHistogramSvc *hsvc, const std::string &path)
 
static IHistogram3Dhisto3D (IHistogramSvc *hsvc, const std::string &path)
 
static IProfile1Dprofile1D (IHistogramSvc *hsvc, const std::string &path)
 
static IProfile2Dprofile2D (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 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 68 of file Helpers.h.

Constructor & Destructor Documentation

◆ Helper()

GaudiPython::Helper::Helper ( )
inline

Definition at line 103 of file Helpers.h.

103{}

Member Function Documentation

◆ algorithm()

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

Definition at line 109 of file Helpers.h.

109 {
110 return algmgr->algorithm( name, createIf ).get();
111 }
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:82

◆ Array_item()

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

Definition at line 212 of file Helpers.h.

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

◆ Array_length()

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

Definition at line 185 of file Helpers.h.

185 {
186#if PY_MAJOR_VERSION >= 3
187 Py_buffer bufinfo;
188 ( *( self->ob_type->tp_as_buffer->bf_getbuffer ) )( self, &bufinfo, PyBUF_SIMPLE );
189 Py_ssize_t size = bufinfo.len;
190#else
191# if PY_VERSION_HEX < 0x02050000
192 const
193# endif
194 char* buf = 0;
195 Py_ssize_t size = ( *( self->ob_type->tp_as_buffer->bf_getcharbuffer ) )( self, 0, &buf );
196#endif
197 return size / sizeof( T );
198 }

◆ dataobject()

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

Definition at line 113 of file Helpers.h.

113 {
114 DataObject* o;
115 return dpsvc->retrieveObject( path, o ).isSuccess() ? o : nullptr;
116 }
virtual StatusCode retrieveObject(IRegistry *pDirectory, std::string_view path, DataObject *&pObject)=0
Retrieve object identified by its directory entry.
bool isSuccess() const
Definition StatusCode.h:314

◆ 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.

◆ 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}

◆ histo1D()

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

Definition at line 161 of file Helpers.h.

161 {
162 IHistogram1D* h;
163 return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
164 }
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 165 of file Helpers.h.

165 {
166 IHistogram2D* h;
167 return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
168 }

◆ histo3D()

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

Definition at line 169 of file Helpers.h.

169 {
170 IHistogram3D* h;
171 return ( hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
172 }

◆ loadDynamicLib()

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

Definition at line 157 of file Helpers.h.

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

◆ profile1D()

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

Definition at line 173 of file Helpers.h.

173 {
174 IProfile1D* h = 0;
175 return ( hsvc && hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
176 }

◆ profile2D()

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

Definition at line 177 of file Helpers.h.

177 {
178 IProfile2D* h = 0;
179 return ( hsvc && hsvc->findObject( path, h ).isSuccess() ) ? h : nullptr;
180 }

◆ registerObject()

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

Definition at line 118 of file Helpers.h.

118 {
119 return dpsvc->registerObject( path, pObject );
120 }
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 105 of file Helpers.h.

105 {
106 return svcloc->service( name, createif ).get();
107 }
virtual SmartIF< IService > & service(const Gaudi::Utils::TypeNameString &typeName, const bool createIf=true)=0
Returns a smart pointer to a service.

◆ toAddress() [1/2]

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

Definition at line 255 of file Helpers.h.

255 {
256 return v.data();
257 }

◆ toAddress() [2/2]

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

Definition at line 259 of file Helpers.h.

259 {
260 return (T*)a;
261 }

◆ toArray()

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

Definition at line 233 of file Helpers.h.

233 {
234 static PyTypeObject type = PyBuffer_Type;
235 static PySequenceMethods meth = *( PyBuffer_Type.tp_as_sequence );
236#if PY_VERSION_HEX < 0x02050000
237 meth.sq_item = (intargfunc)&Array_item<T>;
238 meth.sq_length = (inquiry)&Array_length<T>;
239#else
240 meth.sq_item = (ssizeargfunc)&Array_item<T>;
241 meth.sq_length = (lenfunc)&Array_length<T>;
242#endif
243 type.tp_as_sequence = &meth;
244 PyObject* buf = PyBuffer_FromReadWriteMemory( ptr, size * sizeof( T ) );
245 buf->ob_type = &type;
246 Py_INCREF( buf->ob_type );
247 return buf;
248 }
static Py_ssize_t Array_length(PyObject *self)
Definition Helpers.h:185
static PyObject * Array_item(PyObject *self, Py_ssize_t idx)
Definition Helpers.h:212

◆ toDoubleArray()

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

Definition at line 252 of file Helpers.h.

252{ return toArray( (double*)ptr, size ); }
static PyObject * toArray(T *ptr, Py_ssize_t size)
Definition Helpers.h:233

◆ toFloatArray()

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

Definition at line 251 of file Helpers.h.

251{ return toArray( (float*)ptr, size ); }

◆ toIntArray()

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

Definition at line 249 of file Helpers.h.

249{ return toArray( (int*)ptr, size ); }

◆ tool()

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

Definition at line 152 of file Helpers.h.

153 {
154 IAlgTool* o;
155 return toolsvc->retrieve( type, name, IAlgTool::interfaceID(), o, p, cif ).isSuccess() ? o : nullptr;
156 }
static const InterfaceID & interfaceID()
Return an instance of InterfaceID identifying the interface.
Definition IInterface.h:234
virtual StatusCode retrieve(std::string_view 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.

◆ toPython() [1/7]

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

Definition at line 206 of file Helpers.h.

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

◆ toPython() [2/7]

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

Definition at line 209 of file Helpers.h.

209{ return PyFloat_FromDouble( *o ); }

◆ toPython() [3/7]

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

Definition at line 208 of file Helpers.h.

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

◆ toPython() [4/7]

static PyObject * GaudiPython::Helper::toPython ( int * 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 207 of file Helpers.h.

207{ return PyInt_FromLong( *o ); }

◆ toPython() [6/7]

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

Definition at line 205 of file Helpers.h.

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

◆ toPython() [7/7]

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

Definition at line 201 of file Helpers.h.

201 {
202 return 0;
203 }

◆ toShortArray()

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

Definition at line 250 of file Helpers.h.

250{ return toArray( (short*)ptr, size ); }

◆ unregisterObject()

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

Definition at line 122 of file Helpers.h.

122 {
123 return dpsvc->unregisterObject( path );
124 }
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: