1 /* -*- Mode: C; indent-tabs-mode: t; c-basic-offset: 4; tab-width: 4 -*- */
2 /*
3  *  ianjuta-debugger.h -- Autogenerated from libanjuta.idl
4  *
5  *  This program is free software; you can redistribute it and/or modify
6  *  it under the terms of the GNU General Public License as published by
7  *  the Free Software Foundation; either version 2 of the License, or
8  *  (at your option) any later version.
9  *
10  *  This program is distributed in the hope that it will be useful,
11  *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12  *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13  *  GNU Library General Public License for more details.
14  *
15  *  You should have received a copy of the GNU General Public License
16  *  along with this program; if not, write to the Free Software
17  *  Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  */
19 
20 #ifndef _IANJUTA_DEBUGGER_H_
21 #define _IANJUTA_DEBUGGER_H_
22 
23 #include <glib-object.h>
24 #include <libanjuta/interfaces/ianjuta-message-view.h>
25 #include <sys/types.h>
26 #include <gio/gio.h>
27 
28 G_BEGIN_DECLS
29 
30 #define IANJUTA_TYPE_DEBUGGER (ianjuta_debugger_get_type ())
31 #define IANJUTA_DEBUGGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), IANJUTA_TYPE_DEBUGGER, IAnjutaDebugger))
32 #define IANJUTA_IS_DEBUGGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), IANJUTA_TYPE_DEBUGGER))
33 #define IANJUTA_DEBUGGER_GET_IFACE(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), IANJUTA_TYPE_DEBUGGER, IAnjutaDebuggerIface))
34 
35 #define IANJUTA_TYPE_DEBUGGER_ERROR (ianjuta_debugger_error_get_type())
36 #define IANJUTA_TYPE_DEBUGGER_OUTPUT_TYPE (ianjuta_debugger_output_type_get_type())
37 #define IANJUTA_TYPE_DEBUGGER_STATE (ianjuta_debugger_state_get_type())
38 
39 #define IANJUTA_DEBUGGER_ERROR ianjuta_debugger_error_quark()
40 
41 typedef struct _IAnjutaDebugger IAnjutaDebugger;
42 typedef struct _IAnjutaDebuggerIface IAnjutaDebuggerIface;
43 
44 /* Types */
45 /**
46  * IAnjutaDebuggerError:
47  * @IANJUTA_DEBUGGER_OK: No error
48  * @IANJUTA_DEBUGGER_NOT_READY: Debugger is not ready to execute the command
49  * @IANJUTA_DEBUGGER_NOT_RUNNING: Debugger is not is running state
50  * @IANJUTA_DEBUGGER_NOT_STOPPED: Debugger is not is stopped state
51  * @IANJUTA_DEBUGGER_NOT_LOADED: Debugger is not is loaded state
52  * @IANJUTA_DEBUGGER_NOT_STARTED: Debugger is not in started state
53  * @IANJUTA_DEBUGGER_NOT_CONNECTED: Debugger is not connected:
54  * @IANJUTA_DEBUGGER_NOT_IMPLEMENTED: Corresponding function is not implemented
55  * @IANJUTA_DEBUGGER_CANCEL: Operation has been cancelled
56  * @IANJUTA_DEBUGGER_UNABLE_TO_CREATE_VARIABLE: Debugger cannot create variable
57  * @IANJUTA_DEBUGGER_UNABLE_TO_ACCESS_MEMORY: Debugger cannot access memory
58  * @IANJUTA_DEBUGGER_UNABLE_TO_OPEN_FILE: Debugger cannot open file
59  * @IANJUTA_DEBUGGER_UNSUPPORTED_FILE_TYPE: Debugger cannot debug such file
60  * @IANJUTA_DEBUGGER_UNSUPPORTED_VERSION: Debugger is too old
61  * @IANJUTA_DEBUGGER_UNABLE_TO_FIND_DEBUGGER: Debugger cannot be found
62  * @IANJUTA_DEBUGGER_ALREADY_DONE: Command has already been executed
63  * @IANJUTA_DEBUGGER_PROGRAM_NOT_FOUND: Program cannot be found
64  * @IANJUTA_DEBUGGER_UNABLE_TO_CONNECT: Unable to connect to debugger
65  * @IANJUTA_DEBUGGER_UNKNOWN_ERROR: Unknown error
66  * @IANJUTA_DEBUGGER_OTHER_ERROR: other error
67  *
68  * This enumeration is used to defined the error returned by the debugger
69  * backend.
70  */
71 typedef enum {
72 	IANJUTA_DEBUGGER_OK              =  0,
73 	IANJUTA_DEBUGGER_NOT_READY,
74 	IANJUTA_DEBUGGER_NOT_RUNNING,
75 	IANJUTA_DEBUGGER_NOT_STOPPED,
76 	IANJUTA_DEBUGGER_NOT_LOADED,
77 	IANJUTA_DEBUGGER_NOT_STARTED,
78 	IANJUTA_DEBUGGER_NOT_CONNECTED,
79 	IANJUTA_DEBUGGER_NOT_IMPLEMENTED,
80 	IANJUTA_DEBUGGER_CANCEL,
81 	IANJUTA_DEBUGGER_UNABLE_TO_CREATE_VARIABLE,
82 	IANJUTA_DEBUGGER_UNABLE_TO_ACCESS_MEMORY,
83 	IANJUTA_DEBUGGER_UNABLE_TO_OPEN_FILE,
84 	IANJUTA_DEBUGGER_UNSUPPORTED_FILE_TYPE,
85 	IANJUTA_DEBUGGER_UNSUPPORTED_VERSION,
86 	IANJUTA_DEBUGGER_UNABLE_TO_FIND_DEBUGGER,
87 	IANJUTA_DEBUGGER_ALREADY_DONE,
88 	IANJUTA_DEBUGGER_PROGRAM_NOT_FOUND,
89 	IANJUTA_DEBUGGER_UNABLE_TO_CONNECT,
90 	IANJUTA_DEBUGGER_UNKNOWN_ERROR,
91 	IANJUTA_DEBUGGER_OTHER_ERROR
92 } IAnjutaDebuggerError;
93 
94 /**
95  * IAnjutaDebuggerOutputType:
96  * @IANJUTA_DEBUGGER_OUTPUT: Output from debugger
97  * @IANJUTA_DEBUGGER_WARNING_OUTPUT: Warning from debugger
98  * @IANJUTA_DEBUGGER_ERROR_OUTPUT: Error from debugger
99  * @IANJUTA_DEBUGGER_INFO_OUTPUT: Additional message from debugger
100  *
101  * This enumeration is used to defined the kind of output in
102  * #IAnjutaDebuggerOutputCallback
103  */
104 typedef enum {
105 	IANJUTA_DEBUGGER_OUTPUT,
106 	IANJUTA_DEBUGGER_WARNING_OUTPUT,
107 	IANJUTA_DEBUGGER_ERROR_OUTPUT,
108 	IANJUTA_DEBUGGER_INFO_OUTPUT
109 } IAnjutaDebuggerOutputType;
110 
111 /**
112  * IAnjutaDebuggerState:
113  * @IANJUTA_DEBUGGER_BUSY: Debugger is executing a command, it can enter in another
114  *                         at the end of the command.
115  * @IANJUTA_DEBUGGER_STOPPED: Debugger is stopped.
116  * @IANJUTA_DEBUGGER_STARTED: Debugger is started but no program is loaded.
117  * @IANJUTA_DEBUGGER_PROGRAM_LOADED: Debugger is started and has a program loaded.
118  * @IANJUTA_DEBUGGER_PROGRAM_STOPPED: Debugger is started and has a program stopped.
119  * @IANJUTA_DEBUGGER_PROGRAM_RUNNING: Debugger is started and has a program running.
120  *
121  * This enumeration is used to defined the different state of the debugger.
122  */
123 typedef enum {
124 	IANJUTA_DEBUGGER_BUSY,
125 	IANJUTA_DEBUGGER_STOPPED,
126 	IANJUTA_DEBUGGER_STARTED,
127 	IANJUTA_DEBUGGER_PROGRAM_LOADED,
128 	IANJUTA_DEBUGGER_PROGRAM_STOPPED,
129 	IANJUTA_DEBUGGER_PROGRAM_RUNNING
130 } IAnjutaDebuggerState;
131 
132 /**
133  * IAnjutaDebuggerFrame:
134  * @thread: Thread identifier.
135  * @level: Level of the frame, 0 is the topmost one.
136  * @args: List of argument of the caller.
137  * @file: Source file name where is the program counter.
138  * @line: Line number in the file above.
139  * @function: Function name where is the program counter.
140  * @library: Library name where is the program counter.
141  * @address: Address of the program counter.
142  *
143  * This structure keeps all information about a stack frame.
144  */
145 typedef struct _IAnjutaDebuggerFrame IAnjutaDebuggerFrame;
146 struct _IAnjutaDebuggerFrame {
147 	gint thread;
148 	guint level;
149 	gchar *args;
150 	gchar *file;
151 	guint line;
152 	gchar *function;
153 	gchar *library;
154 	gulong address;
155 };
156 
157 /**
158  * IAnjutaDebuggerCallback:
159  * @data: data
160  * @user_data: user data passed to the function
161  * @err: error
162  *
163  * This callback function is used only by #ianjuta_debugger_callback with a
164  * NULL data.
165  */
166 typedef void (*IAnjutaDebuggerCallback) (const gpointer data, gpointer user_data, GError* err);
167 
168 /**
169  * IAnjutaDebuggerGListCallback:
170  * @list: (element-type any): list of data
171  * @user_data: user data passed to the function
172  * @err: error
173  *
174  * This callback function is used by several debugger functions. Depending on
175  * the function, the kind of elements in the list is different. It is a string
176  * for #ianjuta_debugger_list_local or a #IAnjutaDebuggerFrame for
177  * #ianjuta_debugger_list_frame.
178  */
179 typedef void (*IAnjutaDebuggerGListCallback) (const GList* list, gpointer user_data, GError* err);
180 
181 /**
182  * IAnjutaDebuggerGCharCallback:
183  * @value: string
184  * @user_data: user data
185  * @err: error
186  *
187  * This callback function is used by several debugger functions. The data is
188  * a string
189  */
190 typedef void (*IAnjutaDebuggerGCharCallback) (const gchar *value, gpointer user_data, GError* err);
191 
192 /**
193  * IAnjutaDebuggerOutputCallback:
194  * @type: kind of output
195  * @output: string
196  * @user_data: user data
197  *
198  * This callback function is used only by #ianjuta_debugger_callback with a
199  * NULL data.
200  */
201 typedef void (*IAnjutaDebuggerOutputCallback) (IAnjutaDebuggerOutputType type, const gchar *output, gpointer user_data);
202 
203 
204 
205 struct _IAnjutaDebuggerIface {
206 	GTypeInterface g_iface;
207 
208 	/* Signal */
209 	void (*debugger_ready) (IAnjutaDebugger *obj, IAnjutaDebuggerState state);
210 	/* Signal */
211 	void (*debugger_started) (IAnjutaDebugger *obj);
212 	/* Signal */
213 	void (*debugger_stopped) (IAnjutaDebugger *obj, GError *err);
214 	/* Signal */
215 	void (*frame_changed) (IAnjutaDebugger *obj, guint frame,  gint thread);
216 	/* Signal */
217 	void (*program_exited) (IAnjutaDebugger *obj);
218 	/* Signal */
219 	void (*program_loaded) (IAnjutaDebugger *obj);
220 	/* Signal */
221 	void (*program_moved) (IAnjutaDebugger *obj, gint pid,  gint tid,  gulong address,  const gchar* file,  guint line);
222 	/* Signal */
223 	void (*program_running) (IAnjutaDebugger *obj);
224 	/* Signal */
225 	void (*program_stopped) (IAnjutaDebugger *obj);
226 	/* Signal */
227 	void (*sharedlib_event) (IAnjutaDebugger *obj);
228 	/* Signal */
229 	void (*signal_received) (IAnjutaDebugger *obj, const gchar* name,  const gchar* description);
230 
231 	gboolean (*abort) (IAnjutaDebugger *obj, GError **err);
232 	gboolean (*attach) (IAnjutaDebugger *obj, pid_t pid, const GList* source_search_directories, GError **err);
233 	gboolean (*callback) (IAnjutaDebugger *obj, IAnjutaDebuggerCallback callback,  gpointer user_data, GError **err);
234 	gboolean (*connect) (IAnjutaDebugger *obj, const gchar *server,  const gchar *args,  gboolean terminal,  gboolean stop, GError **err);
235 	void (*disable_log) (IAnjutaDebugger *obj, GError **err);
236 	gboolean (*dump_stack_trace) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
237 	void (*enable_log) (IAnjutaDebugger *obj, IAnjutaMessageView *log, GError **err);
238 	gboolean (*evaluate) (IAnjutaDebugger *obj, const gchar* name,  const gchar* value,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
239 	gboolean (*exit) (IAnjutaDebugger *obj, GError **err);
240 	IAnjutaDebuggerState (*get_state) (IAnjutaDebugger *obj, GError **err);
241 	gboolean (*handle_signal) (IAnjutaDebugger *obj, const gchar *name,  gboolean stop,  gboolean print,  gboolean ignore, GError **err);
242 	gboolean (*info_args) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
243 	gboolean (*info_frame) (IAnjutaDebugger *obj, guint frame,  IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
244 	gboolean (*info_program) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
245 	gboolean (*info_sharedlib) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
246 	gboolean (*info_signal) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
247 	gboolean (*info_target) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
248 	gboolean (*info_thread) (IAnjutaDebugger *obj, gint thread,  IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
249 	gboolean (*info_udot) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
250 	gboolean (*info_variables) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
251 	gboolean (*inspect) (IAnjutaDebugger *obj, const gchar* name,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
252 	gboolean (*interrupt) (IAnjutaDebugger *obj, GError **err);
253 	gboolean (*list_argument) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
254 	gboolean (*list_frame) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
255 	gboolean (*list_local) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
256 	gboolean (*list_thread) (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
257 	gboolean (*load) (IAnjutaDebugger *obj, const gchar *file,  const gchar *mime_type, const GList* source_search_directories, GError **err);
258 	gboolean (*print) (IAnjutaDebugger *obj, const gchar *name,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
259 	gboolean (*quit) (IAnjutaDebugger *obj, GError **err);
260 	gboolean (*run) (IAnjutaDebugger *obj, GError **err);
261 	gboolean (*run_from) (IAnjutaDebugger *obj, const gchar *file,  gint line, GError **err);
262 	gboolean (*run_to) (IAnjutaDebugger *obj, const gchar* file,  gint line, GError **err);
263 	gboolean (*send_command) (IAnjutaDebugger *obj, const gchar *command, GError **err);
264 	gboolean (*set_environment) (IAnjutaDebugger *obj, gchar **env, GError **err);
265 	gboolean (*set_frame) (IAnjutaDebugger *obj, guint frame, GError **err);
266 	gboolean (*set_thread) (IAnjutaDebugger *obj, gint thread, GError **err);
267 	gboolean (*set_working_directory) (IAnjutaDebugger *obj, const gchar *dir, GError **err);
268 	gboolean (*start) (IAnjutaDebugger *obj, const gchar *args,  gboolean terminal,  gboolean stop, GError **err);
269 	gboolean (*step_in) (IAnjutaDebugger *obj, GError **err);
270 	gboolean (*step_out) (IAnjutaDebugger *obj, GError **err);
271 	gboolean (*step_over) (IAnjutaDebugger *obj, GError **err);
272 	gboolean (*unload) (IAnjutaDebugger *obj, GError **err);
273 
274 };
275 
276 GType ianjuta_debugger_error_get_type (void);
277 GType ianjuta_debugger_output_type_get_type (void);
278 GType ianjuta_debugger_state_get_type (void);
279 
280 GQuark ianjuta_debugger_error_quark     (void);
281 GType  ianjuta_debugger_get_type        (void);
282 
283 gboolean ianjuta_debugger_abort (IAnjutaDebugger *obj, GError **err);
284 
285 gboolean ianjuta_debugger_attach (IAnjutaDebugger *obj, pid_t pid, const GList* source_search_directories, GError **err);
286 
287 gboolean ianjuta_debugger_callback (IAnjutaDebugger *obj, IAnjutaDebuggerCallback callback,  gpointer user_data, GError **err);
288 
289 gboolean ianjuta_debugger_connect (IAnjutaDebugger *obj, const gchar *server,  const gchar *args,  gboolean terminal,  gboolean stop, GError **err);
290 
291 void ianjuta_debugger_disable_log (IAnjutaDebugger *obj, GError **err);
292 
293 gboolean ianjuta_debugger_dump_stack_trace (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
294 
295 void ianjuta_debugger_enable_log (IAnjutaDebugger *obj, IAnjutaMessageView *log, GError **err);
296 
297 gboolean ianjuta_debugger_evaluate (IAnjutaDebugger *obj, const gchar* name,  const gchar* value,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
298 
299 gboolean ianjuta_debugger_exit (IAnjutaDebugger *obj, GError **err);
300 
301 IAnjutaDebuggerState ianjuta_debugger_get_state (IAnjutaDebugger *obj, GError **err);
302 
303 gboolean ianjuta_debugger_handle_signal (IAnjutaDebugger *obj, const gchar *name,  gboolean stop,  gboolean print,  gboolean ignore, GError **err);
304 
305 gboolean ianjuta_debugger_info_args (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
306 
307 gboolean ianjuta_debugger_info_frame (IAnjutaDebugger *obj, guint frame,  IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
308 
309 gboolean ianjuta_debugger_info_program (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
310 
311 gboolean ianjuta_debugger_info_sharedlib (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
312 
313 gboolean ianjuta_debugger_info_signal (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
314 
315 gboolean ianjuta_debugger_info_target (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
316 
317 gboolean ianjuta_debugger_info_thread (IAnjutaDebugger *obj, gint thread,  IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
318 
319 gboolean ianjuta_debugger_info_udot (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
320 
321 gboolean ianjuta_debugger_info_variables (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
322 
323 gboolean ianjuta_debugger_inspect (IAnjutaDebugger *obj, const gchar* name,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
324 
325 gboolean ianjuta_debugger_interrupt (IAnjutaDebugger *obj, GError **err);
326 
327 gboolean ianjuta_debugger_list_argument (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
328 
329 gboolean ianjuta_debugger_list_frame (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
330 
331 gboolean ianjuta_debugger_list_local (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
332 
333 gboolean ianjuta_debugger_list_thread (IAnjutaDebugger *obj, IAnjutaDebuggerGListCallback callback,  gpointer user_data, GError **err);
334 
335 gboolean ianjuta_debugger_load (IAnjutaDebugger *obj, const gchar *file,  const gchar *mime_type, const GList* source_search_directories, GError **err);
336 
337 gboolean ianjuta_debugger_print (IAnjutaDebugger *obj, const gchar *name,  IAnjutaDebuggerGCharCallback callback,  gpointer user_data, GError **err);
338 
339 gboolean ianjuta_debugger_quit (IAnjutaDebugger *obj, GError **err);
340 
341 gboolean ianjuta_debugger_run (IAnjutaDebugger *obj, GError **err);
342 
343 gboolean ianjuta_debugger_run_from (IAnjutaDebugger *obj, const gchar *file,  gint line, GError **err);
344 
345 gboolean ianjuta_debugger_run_to (IAnjutaDebugger *obj, const gchar* file,  gint line, GError **err);
346 
347 gboolean ianjuta_debugger_send_command (IAnjutaDebugger *obj, const gchar *command, GError **err);
348 
349 gboolean ianjuta_debugger_set_environment (IAnjutaDebugger *obj, gchar **env, GError **err);
350 
351 gboolean ianjuta_debugger_set_frame (IAnjutaDebugger *obj, guint frame, GError **err);
352 
353 gboolean ianjuta_debugger_set_thread (IAnjutaDebugger *obj, gint thread, GError **err);
354 
355 gboolean ianjuta_debugger_set_working_directory (IAnjutaDebugger *obj, const gchar *dir, GError **err);
356 
357 gboolean ianjuta_debugger_start (IAnjutaDebugger *obj, const gchar *args,  gboolean terminal,  gboolean stop, GError **err);
358 
359 gboolean ianjuta_debugger_step_in (IAnjutaDebugger *obj, GError **err);
360 
361 gboolean ianjuta_debugger_step_out (IAnjutaDebugger *obj, GError **err);
362 
363 gboolean ianjuta_debugger_step_over (IAnjutaDebugger *obj, GError **err);
364 
365 gboolean ianjuta_debugger_unload (IAnjutaDebugger *obj, GError **err);
366 
367 
368 G_END_DECLS
369 
370 #endif
371