All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Modules Pages
CallbackStreamBuf.h
Go to the documentation of this file.
1 #ifndef GAUDIPYTHON_CALLBACKSTREAMBUF_H
2 #define GAUDIPYTHON_CALLBACKSTREAMBUF_H
3 // ============================================================================
4 #include "Python.h" //included for the python API
5 // ============================================================================
6 #include <sstream> //included for stringbuf
7 #include <array>
8 // ============================================================================
10 #include "GaudiKernel/Kernel.h"
11 // ============================================================================
12 
13 namespace GaudiPython
14 {
15  int GAUDI_API call_python_method(PyObject* self, const char* method, char* buf);
16 
18  {
19  private:
20  class PyObject_t {
21  PyObject *m_obj;
22  public:
23  PyObject_t( PyObject *obj = nullptr) : m_obj( obj ) { if (m_obj) Py_INCREF(m_obj); }
24  ~PyObject_t() { if (m_obj) Py_DECREF(m_obj); }
25  PyObject *get() { return m_obj; }
26  };
28  std::array<char,512> m_callbackBuff;//used for passing the flushed chars in the python callback
29 
30  public:
31  CallbackStreamBuf(PyObject* self);
32  int sync() override;
33  };
34 }
35 
36 #endif
std::array< char, 512 > m_callbackBuff
GaudiPython.h GaudiPython/GaudiPython.h.
Definition: AlgDecorators.h:37
#define GAUDI_API
Definition: Kernel.h:107
GAUDI_API StatusCode call_python_method(PyObject *self, const char *method)
call the python method
Definition: Algorithm.cpp:29