#ifndef GNUNET_MONKEY_ACTION_H
#define GNUNET_MONKEY_ACTION_H
+#include "gdbmi.h"
+
#ifdef __cplusplus
extern "C"
{
#endif
#endif
-int GNUNET_MONKEY_ACTION_report_file();
-int GNUNET_MONKEY_ACTION_report_email();
-int GNUNET_MONKEY_ACTION_rerun_with_valgrind();
-int GNUNET_MONKEY_ACTION_rerun_with_gdb();
-int GNUNET_MONKEY_ACTION_check_bug_redundancy();
+
+/* Debug constants */
+#define DEBUG_MODE_GDB 0
+#define GDB_STATE_STOPPED 1
+#define GDB_STATE_EXIT_NORMALLY 2
+#define GDB_STATE_ERROR 3
+#define DEBUG_MODE_VALGRIND 4
+#define DEBUG_MODE_REPORT_READY 5
+
+
+/**
+ * Context for the Action API
+ */
+struct GNUNET_MONKEY_ACTION_Context
+{
+ const char* binary_name;
+ const char* email_address;
+ const char* expression_database_path;
+ const char* gdb_binary_path;
+ int debug_mode;
+ char* debug_report;
+
+ /* gdb debugging attributes */
+ mi_h *gdb_handle;
+ const char* gdb_in_use;
+ mi_stop* gdb_stop_reason;
+ mi_frames* gdb_frames;
+};
+
+
+int GNUNET_MONKEY_ACTION_report_file(struct GNUNET_MONKEY_ACTION_Context* cntxt, const char* dumpFileName);
+int GNUNET_MONKEY_ACTION_report_email(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_rerun_with_valgrind(void);
+int GNUNET_MONKEY_ACTION_inspect_expression_database(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_rerun_with_gdb(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_format_report(struct GNUNET_MONKEY_ACTION_Context* cntxt);
+int GNUNET_MONKEY_ACTION_check_bug_redundancy(void);
#if 0 /* keep Emacsens' auto-indent happy */