Code

Merge remote-tracking branch 'github/pr/387'
[collectd.git] / src / cpython.h
index 3e80cb0c4ee9223dc7a0959db571b6a503a973b3..4b8aa72143167864ff575147c5ef19949997ab50 100644 (file)
  *   Sven Trenkel <collectd at semidefinite.de>  
  **/
 
+/* Some python versions don't include this by default. */
+
+#include <longintrepr.h>
+
 /* These two macros are basicly 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
@@ -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;
+