]> git.siccegge.de Git - frida/frida.git/blobdiff - src/bindings/Guile.hxx
Make signals from geiser work
[frida/frida.git] / src / bindings / Guile.hxx
index 7c45a9549c56fa52b822db552223ba47a2e1d88d..244bb1cc07ab620119e2f941f658453b26f6ff07 100644 (file)
@@ -2,10 +2,15 @@
 #define INCLUDE__Guile_hxx_
 
 #include <libguile.h>
+#include <log4cxx/logger.h>
 
+#include "qt.hxx"
 #include "Interpreter.hxx"
 
-class GuileInterpreter : public Interpreter {
+class GuileInterpreter : public QObject, public Interpreter {
+    Q_OBJECT
+    Q_PLUGIN_METADATA(IID "xyz.frida.Interpreter")
+    Q_INTERFACES(Interpreter)
 public:
        GuileInterpreter();
 
@@ -21,8 +26,26 @@ public:
 
        std::string fileExtension() const {return "scm";}
 private:
+       int evaluateWithErrorHandling(SCM (*fun)(void *),
+                                     void* data,
+                                     std::ostream& stdout,
+                                     std::ostream& stderr,
+                                     std::string& result);
+
        SCM guile_output_port;
        SCM guile_error_port;
+       log4cxx::LoggerPtr logger;
 };
 
+namespace guile {
+       class Geiser : public QThread {
+               Q_OBJECT
+       public:
+               Geiser(QObject* parent) : QThread(parent) {}
+       private:
+               void run() Q_DECL_OVERRIDE;
+       };
+}
+
+
 #endif /* INCLUDE__Guile_hxx_ */