summaryrefslogtreecommitdiffstats
path: root/src/pysignals.h
diff options
context:
space:
mode:
Diffstat (limited to 'src/pysignals.h')
-rw-r--r--src/pysignals.h44
1 files changed, 44 insertions, 0 deletions
diff --git a/src/pysignals.h b/src/pysignals.h
new file mode 100644
index 0000000..bec72c9
--- /dev/null
+++ b/src/pysignals.h
@@ -0,0 +1,44 @@
+#ifndef _PYSIGNALS_H_
+#define _PYSIGNALS_H_
+#include <Python.h>
+
+/* forward */
+struct _PY_SIGNAL_SPEC_REC;
+
+typedef struct _PY_SIGNAL_REC
+{
+ struct _PY_SIGNAL_SPEC_REC *signal;
+ char *command; /* used for command and variable signal */
+ PyObject *handler;
+ int is_signal;
+} PY_SIGNAL_REC;
+
+typedef enum
+{
+ PSG_COMMAND,
+ PSG_SIGNAL,
+ PSG_ALL,
+} PSG_TYPE;
+
+PY_SIGNAL_REC *pysignals_command_bind(const char *cmd, PyObject *func,
+ const char *category, int priority);
+PY_SIGNAL_REC *pysignals_signal_add(const char *signal, PyObject *func,
+ int priority);
+int pysignals_command_bind_list(GSList **list, const char *command,
+ PyObject *func, const char *category, int priority);
+int pysignals_signal_add_list(GSList **list, const char *signal,
+ PyObject *func, int priority);
+void pysignals_command_unbind(PY_SIGNAL_REC *rec);
+void pysignals_signal_remove(PY_SIGNAL_REC *rec);
+void pysignals_remove_generic(PY_SIGNAL_REC *rec);
+int pysignals_remove_search(GSList **siglist, const char *name,
+ PyObject *func, PSG_TYPE type);
+void pysignals_remove_list(GSList *siglist);
+int pysignals_emit(const char *signal, PyObject *argtup);
+int pysignals_continue(PyObject *argtup);
+int pysignals_register(const char *name, const char *arglist);
+int pysignals_unregister(const char *name);
+void pysignals_init(void);
+void pysignals_deinit(void);
+
+#endif