X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcpython.h;h=81e580d485c9bd58c625df40b369edd75dd94e75;hb=39771ec2af4559a62bda2c469a2501c6023f551e;hp=3e80cb0c4ee9223dc7a0959db571b6a503a973b3;hpb=593ea76dca367478b92e17f91e663fe7c67b4df9;p=collectd.git diff --git a/src/cpython.h b/src/cpython.h index 3e80cb0c..81e580d4 100644 --- a/src/cpython.h +++ b/src/cpython.h @@ -24,7 +24,11 @@ * Sven Trenkel **/ -/* These two macros are basicly Py_BEGIN_ALLOW_THREADS and Py_BEGIN_ALLOW_THREADS +/* Some python versions don't include this by default. */ + +#include + +/* These two macros are basically Py_BEGIN_ALLOW_THREADS and Py_BEGIN_ALLOW_THREADS * from the other direction. If a Python thread calls a C function * Py_BEGIN_ALLOW_THREADS is used to allow other python threads to run because * we don't intend to call any Python functions. @@ -32,7 +36,7 @@ * These two macros are used whenever a C thread intends to call some Python * function, usually because some registered callback was triggered. * Just like Py_BEGIN_ALLOW_THREADS it opens a block so these macros have to be - * used in pairs. They aquire the GIL, create a new Python thread state and swap + * used in pairs. They acquire the GIL, create a new Python thread state and swap * the current thread state with the new one. This means this thread is now allowed * to execute Python code. */ @@ -155,7 +159,9 @@ static inline PyObject *cpy_string_to_unicode_or_bytes(const char *buf) { #endif } - /* Python object declarations. */ +void cpy_log_exception(const char *context); + +/* Python object declarations. */ typedef struct { PyObject_HEAD /* No semicolon! */ @@ -164,7 +170,6 @@ typedef struct { PyObject *values; /* Sequence */ PyObject *children; /* Sequence */ } Config; - PyTypeObject ConfigType; typedef struct { @@ -176,21 +181,29 @@ typedef struct { char type[DATA_MAX_NAME_LEN]; char type_instance[DATA_MAX_NAME_LEN]; } PluginData; - PyTypeObject PluginDataType; +#define PluginData_New() PyObject_CallFunctionObjArgs((PyObject *) &PluginDataType, (void *) 0) typedef struct { PluginData data; PyObject *values; /* Sequence */ - int interval; + PyObject *meta; /* dict */ + double interval; } Values; - PyTypeObject ValuesType; +#define Values_New() PyObject_CallFunctionObjArgs((PyObject *) &ValuesType, (void *) 0) typedef struct { PluginData data; int severity; char message[NOTIF_MAX_MSG_LEN]; } Notification; - PyTypeObject NotificationType; +#define Notification_New() PyObject_CallFunctionObjArgs((PyObject *) &NotificationType, (void *) 0) + +typedef PyLongObject Signed; +PyTypeObject SignedType; + +typedef PyLongObject Unsigned; +PyTypeObject UnsignedType; +