X-Git-Url: https://git.octo.it/?a=blobdiff_plain;f=src%2Fcpython.h;h=070d33af9e61df3a6abe968a223bc5533985f227;hb=a349e06f0c4e2c853eced8a2621f52ee712b6e0c;hp=4b8aa72143167864ff575147c5ef19949997ab50;hpb=c1219a1c9db2e8400e2ee94b87f86ccd441485d5;p=collectd.git diff --git a/src/cpython.h b/src/cpython.h index 4b8aa721..070d33af 100644 --- a/src/cpython.h +++ b/src/cpython.h @@ -21,14 +21,14 @@ * DEALINGS IN THE SOFTWARE. * * Authors: - * Sven Trenkel + * Sven Trenkel **/ /* Some python versions don't include this by default. */ #include -/* These two macros are basicly Py_BEGIN_ALLOW_THREADS and Py_BEGIN_ALLOW_THREADS +/* 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. @@ -36,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. */ @@ -52,32 +52,6 @@ PyGILState_Release(gil_state);\ } -/* Python 2.4 has this macro, older versions do not. */ -#ifndef Py_VISIT -#define Py_VISIT(o) do {\ - int _vret;\ - if ((o) != NULL) {\ - _vret = visit((o), arg);\ - if (_vret != 0)\ - return _vret;\ - }\ -} while (0) -#endif - -/* Python 2.4 has this macro, older versions do not. */ -#ifndef Py_CLEAR -#define Py_CLEAR(o) do {\ - PyObject *tmp = o;\ - (o) = NULL;\ - Py_XDECREF(tmp);\ -} while (0) -#endif - -/* Python 2.4 has this macro, older versions do not. */ -#ifndef Py_RETURN_NONE -# define Py_RETURN_NONE return Py_INCREF(Py_None), Py_None -#endif - /* This macro is a shortcut for calls like * x = PyObject_Repr(x); * This can't be done like this example because this would leak @@ -111,10 +85,10 @@ } while (0) static inline void CPY_STRCAT(PyObject **a, PyObject *b) { PyObject *ret; - + if (!a || !*a) return; - + ret = PyUnicode_Concat(*a, b); Py_DECREF(*a); *a = ret; @@ -156,7 +130,7 @@ static inline PyObject *cpy_string_to_unicode_or_bytes(const char *buf) { return PyBytes_FromString(buf); #else return PyString_FromString(buf); -#endif +#endif } void cpy_log_exception(const char *context); @@ -170,7 +144,7 @@ typedef struct { PyObject *values; /* Sequence */ PyObject *children; /* Sequence */ } Config; -PyTypeObject ConfigType; +extern PyTypeObject ConfigType; typedef struct { PyObject_HEAD /* No semicolon! */ @@ -181,7 +155,7 @@ typedef struct { char type[DATA_MAX_NAME_LEN]; char type_instance[DATA_MAX_NAME_LEN]; } PluginData; -PyTypeObject PluginDataType; +extern PyTypeObject PluginDataType; #define PluginData_New() PyObject_CallFunctionObjArgs((PyObject *) &PluginDataType, (void *) 0) typedef struct { @@ -190,7 +164,7 @@ typedef struct { PyObject *meta; /* dict */ double interval; } Values; -PyTypeObject ValuesType; +extern PyTypeObject ValuesType; #define Values_New() PyObject_CallFunctionObjArgs((PyObject *) &ValuesType, (void *) 0) typedef struct { @@ -198,12 +172,12 @@ typedef struct { int severity; char message[NOTIF_MAX_MSG_LEN]; } Notification; -PyTypeObject NotificationType; +extern PyTypeObject NotificationType; #define Notification_New() PyObject_CallFunctionObjArgs((PyObject *) &NotificationType, (void *) 0) typedef PyLongObject Signed; -PyTypeObject SignedType; +extern PyTypeObject SignedType; typedef PyLongObject Unsigned; -PyTypeObject UnsignedType; +extern PyTypeObject UnsignedType;